- Joined
- Oct 26, 2012
- Messages
- 2,357
- Reaction score
- 1,086
I love it, if you want a CMS let me know.
I wont be doing anything until tomorrow afternoon/evening as I'm going to attend a concert and I'll be staying in an appartment there until tomorrow. Tomorrow I'll continue development.
My idea is to use Habbo's 2006 layout as CMS. Any help is appreciated. I wasnt really planning to make one myself anytime soon; emulator is much more important for me now.
Oh HoloCMS hahahahahah, gasgsggs;.
#ontopic Glaceon thanks for the Habbo Scripts will give a look probably today.
Not HoloCMS style, that style is 2007-2008. I mean HabbsiteCMS style.
Why a v14 style? Habbo Beta it's v36 - v44 style... HoloCMS... noah?
Tomorrow, or ask Boraida, or look atThis uses the banner for the handshake process, and can you also upload the SWF?
Because its a better style IMO.. but i don't really mind.
If you find the proper HTML / CSS / JS I'll write a simple one up.
I dont have a full style. I believe Zabboweb (if thats the correct name, dont remember) has the css/images/js. And for the html web.archive.org. I can try to create the layout today if I get time. Thanks for your offer anyways!
web.archive.org for HTML pages.. really? o.o', anyways, opening scripts now to give a check about encryption. I will stay you updated.
I hope that was a joke - web.archive.org is a website where you can visit archived pages, and you can view the source of webpages, but yeah everything you need to be logged in for you can't really do as you can't login.
Also, thanks for that, you can update on this thread or send via Skype any updates.
Rather talking with you at Discord, it's better.
#analysis update
1. I didn't found anything RSA related either RC4.. Only a string with the value RC4. I think that era the encryption was utf-8 > bits, and only that. Will give a better check.
Observation.: Can you tell me the CORS Handshake Packet ID?
package _-0RY{
import _-1Sk._SafeStr_1769;
import _-1Sk._SafeStr_1558;
import _-1Sk._SafeStr_1766;
import flash.utils.ByteArray;
public class _SafeStr_1770 extends _SafeStr_1769 implements _SafeStr_1558 {
private static const _SafeStr_4406:uint = 64;
private static const _SafeStr_4407:String = "mWxFRJnGJ5T9Si0OMVvEBBm8laihXkN8GmH6fuv7ldZhLyGRRKCcGzziPYBaJom";
private static const _SafeStr_4408:int = 52;
private static const _SafeStr_4409:String = "NV6VVFPoC7FLDlzDUri3qcOAg9cRoFOmsYR9ffDGy5P8HfF6eekX40SFSVfJ1mDb3lcpYRqdg28sp61eHkPukKbqTu1JsVEKiRavi04YtSzUsLXaYSa5BEGwg5G2OF";
private static const _SafeStr_4410:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
private var _SafeStr_4411:_SafeStr_1771;
private var _SafeStr_4412:_SafeStr_1558;
public function _SafeStr_1770(_arg_1:_SafeStr_1558, _arg_2:_SafeStr_1771){
_SafeStr_4412 = _arg_1;
_SafeStr_4411 = _arg_2;
}
public static function _SafeStr_4413(_arg_1:int):int{
var _local_2:int = (_arg_1 % 4);
switch (_local_2){
case 0:
return (((_arg_1 / 4) * 3));
case 2:
return (((((_arg_1 - 2) / 4) * 3) + 1));
case 3:
return (((((_arg_1 - 3) / 4) * 3) + 2));
};
return (0);
}
public static function _SafeStr_4414(_arg_1:int):int{
var _local_2:int = (_arg_1 % 3);
switch (_local_2){
case 0:
return (((_arg_1 / 3) * 4));
case 1:
return (((((_arg_1 - 1) / 3) * 4) + 2));
case 2:
return (((((_arg_1 - 2) / 3) * 4) + 3));
};
return (0);
}
override public function init(_arg_1:ByteArray):void{
var _local_2:int;
var _local_3:ByteArray = _SafeStr_1766._SafeStr_4415(_SafeStr_4407);
var _local_4:int;
while (_local_4 < _arg_1.length) {
_arg_1[_local_4] = (_arg_1[_local_4] ^ _local_3[_local_2]);
_local_2 = (((_local_2)>=(_local_3.length - 1)) ? 0 : (_local_2 + 1));
_local_4++;
};
super.init(_arg_1);
var _local_5:ByteArray = _SafeStr_1766._SafeStr_4415(_SafeStr_4409);
var _local_6:int;
while (_local_6 < _SafeStr_4408) {
super._SafeStr_4416(_local_5, true);
_local_6++;
};
}
override public function _SafeStr_4416(_arg_1:ByteArray, _arg_2:Boolean=false):ByteArray{
var _local_3:ByteArray;
var _local_4:String;
var _local_5:ByteArray;
var _local_6:int;
var _local_7:ByteArray;
var _local_8:ByteArray;
var _local_9:int;
var _local_10:int;
var _local_11:int;
if (_SafeStr_4412 != null){
_local_7 = new ByteArray();
_local_8 = new ByteArray();
_local_6 = (_SafeStr_4411._SafeStr_4417() % 5);
_local_9 = (_arg_1.length - 3);
_local_10 = (_local_6 + _local_9);
_local_11 = _SafeStr_1770._SafeStr_4414(_local_10);
_local_7.writeByte(Math.floor((Math.random() * 0xFF)));
_local_7.writeByte((_SafeStr_4406 | ((_local_11 >> 12) & 63)));
_local_7.writeByte((_SafeStr_4406 | ((_local_11 >> 6) & 63)));
_local_7.writeByte((_SafeStr_4406 | (63 & _local_11)));
_local_5 = _SafeStr_4412._SafeStr_4416(_local_7, true);
while (_local_8.length < _local_6) {
_local_8.writeByte(Math.floor((Math.random() * 0xFF)));
};
_local_8.position = _local_6;
_local_8.writeBytes(_arg_1, 3);
_local_3 = super._SafeStr_4416(_local_8, true);
_local_4 = _SafeStr_2134._SafeStr_4418(_local_3, 0, false);
_local_5.position = _local_5.length;
_local_5.writeBytes(_SafeStr_1766._SafeStr_4415(_local_4));
}
else {
_local_3 = super._SafeStr_4416(_arg_1, true);
_local_4 = _SafeStr_2134._SafeStr_4418(_local_3, 0, false);
_local_5 = _SafeStr_1766._SafeStr_4415(_local_4);
};
return (_local_5);
}
override protected function _SafeStr_4419(_arg_1:Array, _arg_2:int, _arg_3:int):void{
var _local_4:int;
var _local_5:int;
var _local_6:int;
if ((_arg_2 & 63) == 63){
_local_4 = (((_arg_2 + 67) * 297) & 0xFF);
_local_5 = ((_arg_3 + _arg_1[_local_4]) & 0xFF);
_local_6 = _arg_1[_local_4];
_arg_1[_local_4] = _arg_1[_local_5];
_arg_1[_local_5] = _local_6;
};
}
}
}
package _-0RY{
import flash.utils.ByteArray;
public class _SafeStr_2134 {
public static const _SafeStr_4424:uint = 76;
private static const _SafeStr_4410:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
public static function _SafeStr_4418(_arg_1:ByteArray, _arg_2:uint=76, _arg_3:Boolean=true):String{
var _local_5:uint;
var _local_6:uint;
var _local_7:uint;
var _local_8:int;
var _local_9:uint;
var _local_10:int;
var _local_11:uint;
var _local_12:uint;
var _local_13:int;
var _local_14:String;
_arg_2 = Math.min(_arg_2, _SafeStr_4424);
var _local_4 = "";
_arg_1.position = 0;
while (_arg_1.bytesAvailable) {
_local_5 = 0;
_local_6 = 16;
_local_7 = 0;
_local_8 = 0;
while (_local_8 < 3) {
if (_arg_1.bytesAvailable){
_local_11 = _arg_1.readUnsignedByte();
_local_5 = (_local_5 + (_local_11 << _local_6));
}
else {
_local_7++;
};
_local_6 = (_local_6 - 8);
_local_8++;
};
_local_6 = 18;
_local_9 = (4 - _local_7);
_local_10 = 0;
while (_local_10 < _local_9) {
_local_12 = ((_local_5 >> _local_6) & 63);
_local_4 = (_local_4 + _SafeStr_4410.charAt(_local_12));
_local_6 = (_local_6 - 6);
_local_10++;
};
if ((((_local_7 > 0)) && (_arg_3))){
_local_13 = 0;
while (_local_13 < _local_7) {
_local_4 = (_local_4 + "=");
_local_13++;
};
};
};
if (_arg_2 > 0){
_local_14 = _local_4;
_local_4 = "";
while (_local_14.length > _arg_2) {
_local_4 = (_local_4 + (_local_14.substr(0, _arg_2) + "\n"));
_local_14 = _local_14.substr(_arg_2);
};
if (_local_14.length > 0){
_local_4 = (_local_4 + _local_14);
};
};
return (_local_4);
}
public static function _SafeStr_4425(_arg_1:String, _arg_2:uint=76, _arg_3:Boolean=true):String{
_arg_2 = Math.min(_arg_2, _SafeStr_4424);
var _local_4 = "";
var _local_5:ByteArray = new ByteArray();
_local_5.writeMultiByte(_arg_1, "iso-8859-1");
_local_5.position = 0;
return (_SafeStr_4418(_local_5, _arg_2, _arg_3));
}
public static function _SafeStr_4426(_arg_1:String):String{
var _local_4:uint;
var _local_5:uint;
var _local_6:uint;
var _local_7:int;
var _local_8:int;
var _local_9:uint;
var _local_10:String;
var _local_11:int;
var _local_12:uint;
_arg_1 = _arg_1.replace(/\s/g, "");
var _local_2 = "";
var _local_3:int;
while (_local_3 < _arg_1.length) {
_local_4 = 0;
_local_5 = 18;
_local_6 = 0;
_local_7 = 0;
while (_local_7 < 4) {
_local_9 = (_local_3 + _local_7);
_local_10 = _arg_1.charAt(_local_9);
_local_11 = _SafeStr_4410.indexOf(_local_10);
if (_local_11 > -1){
_local_4 = (_local_4 + (_local_11 << _local_5));
}
else {
_local_6++;
};
_local_5 = (_local_5 - 6);
_local_7++;
};
_local_5 = 16;
_local_8 = 0;
while (_local_8 < (3 - _local_6)) {
_local_12 = ((_local_4 >> _local_5) & 0xFF);
_local_2 = (_local_2 + String.fromCharCode(_local_12));
_local_5 = (_local_5 - 8);
_local_8++;
};
_local_3 = (_local_3 + 3);
_local_3++;
};
return (_local_2);
}
}
}//package _-0RY
package _-1-S{
import flash.events.EventDispatcher;
import com.sulake.core.runtime.IDisposable;
import flash.net.Socket;
import _-1Sk._SafeStr_1558;
import flash.utils.ByteArray;
import com.sulake.core.utils._SafeStr_1554;
import com.sulake.core.communication._SafeStr_1068;
import flash.utils.Timer;
import _-1ai._SafeStr_1559;
import com.sulake.core.communication.messages._SafeStr_2210;
import com.sulake.core.communication.messages.MessageClassManager;
import flash.events.TimerEvent;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.events.IOErrorEvent;
import com.sulake.core.communication.messages.IMessageComposer;
import flash.system.Security;
import com.sulake.core.communication.messages.IMessageEvent;
import com.sulake.core.communication.messages._SafeStr_611;
import com.sulake.core.communication.messages._SafeStr_9;
import com.sulake.core.communication.messages._SafeStr_2211;
import com.sulake.core.communication.messages._SafeStr_1560;
public class _SafeStr_1800 extends EventDispatcher implements _SafeStr_612, IDisposable {
private var _SafeStr_2574:Boolean = false;
private var _SafeStr_5722:Socket;
private var _SafeStr_5723:_SafeStr_1558;
private var _SafeStr_5724:ByteArray;
private var _SafeStr_5725:_SafeStr_1554;
private var _SafeStr_2643:String;
private var _SafeStr_5726:_SafeStr_1068;
private var _SafeStr_5727:Timer;
private var _SafeStr_5728:_SafeStr_1559;
private var _SafeStr_5729:_SafeStr_2210;
public function _SafeStr_1800(_arg_1:String, _arg_2:_SafeStr_1068){
_SafeStr_2643 = _arg_1;
_SafeStr_5726 = _arg_2;
_SafeStr_5724 = new ByteArray();
_SafeStr_5729 = new MessageClassManager();
_SafeStr_5722 = new Socket();
_SafeStr_5727 = new Timer(5000, 1);
_SafeStr_5727.addEventListener(TimerEvent.TIMER, _SafeStr_5730);
_SafeStr_5722.addEventListener(Event.CONNECT, _SafeStr_5731);
_SafeStr_5722.addEventListener(Event.COMPLETE, _SafeStr_4043);
_SafeStr_5722.addEventListener(Event.CLOSE, _SafeStr_4565);
_SafeStr_5722.addEventListener(ProgressEvent.SOCKET_DATA, _SafeStr_5732);
_SafeStr_5722.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _SafeStr_5733);
_SafeStr_5722.addEventListener(IOErrorEvent.IO_ERROR, _SafeStr_5734);
}
public function _SafeStr_5735(_arg_1:ByteArray, _arg_2:Boolean=true):Boolean{
if (_SafeStr_5723 != null){
if (_arg_2){
};
};
return (false);
}
private function _SafeStr_5730(_arg_1:TimerEvent):void{
_SafeStr_5727.stop();
Logger.log("[SocketConnection] TimeOut Error");
var _local_2:IOErrorEvent = new IOErrorEvent(IOErrorEvent.IO_ERROR);
_local_2.text = "[Habbo] Socket Timeout Error (5000ms). Possible Firewall prevention.";
dispatchEvent(_local_2);
}
public function _SafeStr_5736(_arg_1:_SafeStr_1558):void{
_SafeStr_5723 = _arg_1;
}
private function _SafeStr_5733(_arg_1:SecurityErrorEvent):void{
_SafeStr_5727.stop();
Logger.log(("[SocketConnection] Security Error: " + _arg_1.text));
dispatchEvent(_arg_1);
}
private function _SafeStr_5731(_arg_1:Event):void{
Logger.log("[SocketConnection] Connected");
_SafeStr_5727.stop();
dispatchEvent(_arg_1);
}
public function send(_arg_1:IMessageComposer, _arg_2:int=-1):Boolean{
var _local_3:ByteArray = new ByteArray();
var _local_4:int = this._SafeStr_5729._SafeStr_5737(_arg_1);
if (_local_4 < 0){
Logger.log(("Could not find registered message composer for " + _arg_1));
return (false);
};
var _local_5:ByteArray = _SafeStr_5728._SafeStr_4865._SafeStr_4425(_local_4, _arg_1._SafeStr_3538(), _arg_2);
if (_SafeStr_5725){
_SafeStr_5725["last_sent_message_time"] = new Date().getTime();
_SafeStr_5725["last_sent_message_data"] = _local_5;
};
if (_SafeStr_5723 != null){
_local_3 = _SafeStr_5723._SafeStr_4416(_local_5);
}
else {
_local_3 = _local_5;
};
Logger.log(("<< [SOCKET]: " + [_local_4, _arg_1._SafeStr_3538(), "->", _local_3]));
if (_SafeStr_5722.connected){
_SafeStr_5722.writeBytes(_local_3);
_SafeStr_5722.flush();
}
else {
Logger.log("[SOCKET] Not connected.");
return (false);
};
return (true);
}
public function init(_arg_1:String, _arg_2:uint=0):Boolean{
if (_SafeStr_5725){
_SafeStr_5725["host_name"] = _arg_1;
_SafeStr_5725["host_port"] = _arg_2;
};
Security.loadPolicyFile(((("xmlsocket://" + _arg_1) + ":") + _arg_2));
_SafeStr_5727.start();
_SafeStr_5722.connect(_arg_1, _arg_2);
return (true);
}
public function _SafeStr_5738(_arg_1:IMessageEvent):void{
_SafeStr_5726._SafeStr_5739(_SafeStr_2643, _arg_1);
}
private function _SafeStr_5732(_arg_1:ProgressEvent):void{
var _local_5:Array;
var _local_6:int;
var _local_7:ByteArray;
var _local_8:Array;
var _local_9:Array;
var _local_10:Class;
var _local_11:IMessageEvent;
var _local_12:Array;
var _local_13:Class;
var _local_14:ByteArray;
var _local_15:_SafeStr_611;
var _local_16:_SafeStr_9;
var _local_17:ByteArray;
while (_SafeStr_5722.bytesAvailable > 0) {
_SafeStr_5724.writeByte(_SafeStr_5722.readUnsignedByte());
};
Logger.log((">>[SOCKET]: " + _SafeStr_5724.toString()));
var _local_2:Array = new Array();
var _local_3:uint = _SafeStr_5728._SafeStr_4863(_SafeStr_5724, _local_2);
var _local_4:Number = new Date().getTime();
for each (_local_5 in _local_2) {
_local_6 = (_local_5[0] as int);
_local_7 = (_local_5[1] as ByteArray);
if (_SafeStr_5725){
_SafeStr_5725["last_received_message_time"] = _local_4;
_SafeStr_5725["last_received_message_data"] = ((_local_6 + " ") + _local_7);
};
Logger.log((((">>[SocketConnection] Received message id: " + _local_6) + " data: ") + _local_7.toString()));
_local_8 = _SafeStr_5729._SafeStr_5740(_local_6);
_local_9 = new Array();
for each (_local_10 in _local_8) {
_local_12 = _SafeStr_5726._SafeStr_5741(this, _local_10);
_local_9 = _local_9.concat(_local_12);
};
if (_local_9.length == 0){
Logger.log((">>[SocketConnection] No message event listeners defined for id: " + _local_6));
};
for each (_local_11 in _local_9) {
_local_13 = _local_11._SafeStr_5742;
if (_local_13 == null){
Logger.log((">>[SocketConnection] Message Event Has no parser defined, use annotation?: " + [_local_6, _local_11]));
}
else {
_local_14 = new ByteArray();
_local_14.writeBytes(_local_7);
_local_14.position = _local_7.position;
_local_11._SafeStr_5743 = this;
_local_15 = new _SafeStr_2211(_local_14, _SafeStr_5744._SafeStr_4864);
_local_16 = _SafeStr_5726._SafeStr_5745(_local_13);
if (!_local_16.flush()){
Logger.log((">>[SocketConnection] Message Event Parser wasn't flushed: " + [_local_6, _local_13, _local_16]));
}
else {
if (_local_16._SafeStr_2598(_local_15)){
_local_11.parser = _local_16;
_local_11.callback.call(null, _local_11);
}
else {
Logger.log((">>[SocketConnection] Could not parse message: " + [_local_6, _local_10, _local_11]));
};
};
};
};
};
if (_local_3 == _SafeStr_5724.length){
_SafeStr_5724 = new ByteArray();
}
else {
if (_local_3 > 0){
_local_17 = new ByteArray();
_local_17.writeBytes(_SafeStr_5724, _local_3);
_SafeStr_5724 = _local_17;
Logger.log(((("[SOCKET REST] offset: " + _local_3) + " rest: ") + _SafeStr_5724.toString()));
};
};
}
public function get _SafeStr_5744():_SafeStr_1559{
return (_SafeStr_5728);
}
public function set _SafeStr_5746(_arg_1:_SafeStr_1554):void{
_SafeStr_5725 = _arg_1;
}
public function get disposed():Boolean{
return (_SafeStr_2574);
}
public function get _SafeStr_5746():_SafeStr_1554{
return (_SafeStr_5725);
}
public function dispose():void{
_SafeStr_2574 = true;
_SafeStr_5722 = null;
_SafeStr_5724 = null;
_SafeStr_5725 = null;
_SafeStr_5723 = null;
_SafeStr_5728 = null;
_SafeStr_2643 = null;
_SafeStr_5729 = null;
_SafeStr_5726 = null;
}
public function set _SafeStr_5744(_arg_1:_SafeStr_1559):void{
_SafeStr_5728 = _arg_1;
}
public function _SafeStr_5747(_arg_1:_SafeStr_1560):void{
_SafeStr_5729._SafeStr_5748(_arg_1);
}
private function _SafeStr_4043(_arg_1:Event):void{
_SafeStr_5727.stop();
Logger.log("[SocketConnection] Complete");
dispatchEvent(_arg_1);
}
private function _SafeStr_5734(_arg_1:IOErrorEvent):void{
_SafeStr_5727.stop();
Logger.log(("[SocketConnection] IO Error: " + _arg_1.text));
switch (_arg_1.type){
case IOErrorEvent.IO_ERROR:
break;
case IOErrorEvent.DISK_ERROR:
break;
case IOErrorEvent.NETWORK_ERROR:
break;
case IOErrorEvent.VERIFY_ERROR:
break;
};
dispatchEvent(_arg_1);
}
private function _SafeStr_4565(_arg_1:Event):void{
_SafeStr_5727.stop();
Logger.log("[SocketConnection] Closed");
dispatchEvent(_arg_1);
}
override public function toString():String{
var _local_1 = "";
var _local_2 = "";
_local_1 = (_local_1 + "Socket Connection: \n");
_local_1 = (_local_1 + (("Protocol Encoder: " + _SafeStr_5728._SafeStr_4865) + "\n"));
_local_1 = (_local_1 + (("Protocol Decoder: " + _SafeStr_5728._SafeStr_4864) + "\n"));
return ((_local_1 + (("Encryption: " + _SafeStr_5723) + "\n")));
}
}
}//package _-1-S
override public function toString():String{
var _local_1 = "";
var _local_2 = "";
_local_1 = (_local_1 + "Socket Connection: \n");
_local_1 = (_local_1 + (("Protocol Encoder: " + _SafeStr_5728._SafeStr_4865) + "\n"));
_local_1 = (_local_1 + (("Protocol Decoder: " + _SafeStr_5728._SafeStr_4864) + "\n"));
return ((_local_1 + (("Encryption: " + _SafeStr_5723) + "\n")));
}
package _-1-S{
import flash.events.IEventDispatcher;
import flash.utils.ByteArray;
import com.sulake.core.communication.messages._SafeStr_1560;
import _-1Sk._SafeStr_1558;
import com.sulake.core.utils._SafeStr_1554;
import com.sulake.core.communication.messages.IMessageComposer;
import com.sulake.core.communication.messages.IMessageEvent;
import _-1ai._SafeStr_1559;
public interface _SafeStr_612 extends IEventDispatcher {
function _SafeStr_5735(_arg_1:ByteArray, _arg_2:Boolean=true):Boolean;
function _SafeStr_5747(_arg_1:_SafeStr_1560):void;
function _SafeStr_5736(_arg_1:_SafeStr_1558):void;
function dispose():void;
function set _SafeStr_5746(_arg_1:_SafeStr_1554):void;
function send(_arg_1:IMessageComposer, _arg_2:int=-1):Boolean;
function init(_arg_1:String, _arg_2:uint=0):Boolean;
function _SafeStr_5738(_arg_1:IMessageEvent):void;
function get _SafeStr_5746():_SafeStr_1554;
function get _SafeStr_5744():_SafeStr_1559;
function set _SafeStr_5744(_arg_1:_SafeStr_1559):void;
}
}//package _-1-S
package _-1Sk{
import flash.utils.ByteArray;
public class _SafeStr_1766 {
public static function _SafeStr_5784(_arg_1:ByteArray, _arg_2:Boolean=false):String{
var _local_4:uint;
var _local_5:uint;
var _local_6:uint;
_arg_1.position = 0;
var _local_3 = "";
while (_arg_1.bytesAvailable) {
_local_4 = _arg_1.readUnsignedByte();
_local_5 = (_local_4 >> 4);
_local_6 = (_local_4 & 15);
_local_3 = (_local_3 + _local_5.toString(16));
_local_3 = (_local_3 + _local_6.toString(16));
};
if (_arg_2){
_local_3 = _local_3.toUpperCase();
};
return (_local_3);
}
public static function _SafeStr_5785(_arg_1:String):ByteArray{
var _local_4:int;
var _local_5:int;
var _local_6:int;
var _local_2:ByteArray = new ByteArray();
if ((_arg_1.length % 2) != 0){
_arg_1 = ("0" + _arg_1);
};
var _local_3:int;
while (_local_3 < (_arg_1.length - 1)) {
_local_4 = parseInt(_arg_1.charAt((_local_3 + 0)), 16);
_local_5 = parseInt(_arg_1.charAt((_local_3 + 1)), 16);
_local_6 = ((_local_4 << 4) | _local_5);
_local_2.writeByte(_local_6);
_local_3++;
_local_3++;
};
return (_local_2);
}
public static function _SafeStr_5786(_arg_1:ByteArray, _arg_2:uint=16):String{
return ("");
}
public static function _SafeStr_4415(_arg_1:String):ByteArray{
var _local_2:ByteArray = new ByteArray();
var _local_3:int;
while (_local_3 < _arg_1.length) {
_local_2.writeByte(_arg_1.charCodeAt(_local_3));
_local_3++;
};
_local_2.position = 0;
return (_local_2);
}
public static function _SafeStr_5787(_arg_1:ByteArray):String{
_arg_1.position = 0;
var _local_2 = "";
while (_arg_1.bytesAvailable) {
_local_2 = (_local_2 + String.fromCharCode(_arg_1.readByte()));
};
return (_local_2);
}
}
}//package _-1Sk
You guys might want to look up old Development Threads / releases from that time period.
In fact, not much research was done on this client with the encryption poop as far as I remember at least. But I don't understand much of encryption as I already looked in the scripts a lot but don't really know where to look etc.
@saamus I don't know how Discord works but in order to add a friend I need a DiscordTag. If you give me yours I will add you (lol, I have no experience with Discord aha)