• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

[C#] Project H(S)R - 'Full' R38 Server

Status
Not open for further replies.
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
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.

I love it, if you want a CMS let me know. :)

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.
 
git bisect -m
Loyal Member
Joined
Sep 2, 2011
Messages
2,171
Reaction score
916
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.
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
This uses the banner for the handshake process, and can you also upload the SWF?
Tomorrow, or ask Boraida, or look at , last release 38.



I hope everybody is having a nice Saturday so far. Tomorrow I'll do a few nice things. Like cata purchase. Thanks for all support. Cheers!
 
git bisect -m
Loyal Member
Joined
Sep 2, 2011
Messages
2,171
Reaction score
916
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.
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
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.
 
git bisect -m
Loyal Member
Joined
Sep 2, 2011
Messages
2,171
Reaction score
916
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?
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
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?

1. Server sends @@ (0)
2. Client sends CN (206)
3. Server sends DU (257) with a token (but I can only find the token on Flash, in Holo I see just DUH (generated in some way..?)
4. Client sends _R (or some other packet, I don't rememember) with secret key
5. Some crypto init, server sends @A (1) with public key

IF I'm correct.
Never heard of Discord.
 
git bisect -m
Loyal Member
Joined
Sep 2, 2011
Messages
2,171
Reaction score
916
Code:
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;
            };
        }


    }
}
Found a Byte <> Text Manipulation Class, don't know if this is related to Encryption. Will check better.



Code:
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
Found other one.
 
git bisect -m
Loyal Member
Joined
Sep 2, 2011
Messages
2,171
Reaction score
916
Good idea Moogly, but i'm investigating the Script, actually in line 45857. And found nothing related to Security yet.



Nevermind, found it.

Code:
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



I'm not totally sure about that:
Code:
        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")));
        }

Will first check the other Classes, if find anything related will check those _SafeStr_5723, _SafeStr_5728



I think that this is related to encryption too:
Code:
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

And this... i think it's related to coding/encoding
Code:
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
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
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.
 
git bisect -m
Loyal Member
Joined
Sep 2, 2011
Messages
2,171
Reaction score
916
Emily - [C#] Project H(S)R - 'Full' R38 Server - RaGEZONE Forums

Like, omg.



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.

Waiting, you talk with me at Discord haha. I'm doing the research, but it's at least confusing. They doesn't do anything related to Encryption. Only decoding and encoding.

This client it's so much insecure.



Okay, Glaceon, figured out that all Decoding/Encoding related stuff it's on this package: package _-1-S
 
Status
Not open for further replies.
Back
Top