[Question] Proxy - deciphering server key packet

11/20/2010 14:53 shitboi#1
I have managed to set up properly packet relay mechanism between client and server, so i am moving on to deciphering the packets. Right now i am stuck with the DH key packet sent by the server. I have read and re-read korvac's conquer wiki many times, but the codes are not documented, and is not self documenting to a java learner like myself, lol.

My understanding of CO cipher is that client receives DH key packet from server, client then performs initial cipher uses blowfish algorithm to decipher the packet to obtain the p,g,A keys. The key used for initial cipher is "DR654dt34trg4UI6". After obtaining p,g,A keys, a new shared public key is generated and will be used for future(starting from the second) packet ciphers.

[Problem description] Under the presumption that my understanding of the cipher is correct. I need THREE things to initialize my cipher object. (i) a key = "DR654dt34trg4UI6", (ii) an algorithm name = "Blowfish", (iii) an initial vector!!! Initial Vector is the problem i am having. combing through the codes on conquer wiki, (i might have overlooked)i have not seen the EncryptIV ever being initialized. Seems to me that it's always left as a new array of eight zeros.

[Request] May i know what the initial vector supposed to be, and i'd deeply appreciate if supporting knowledge is being shared.

[EDIT] Now i am wondering if my understanding is wrong or if i am using the wrong padding scheme or mode. Inferring from the wiki source("BF_cfb64_encrypt"), i believe CipherFeedBack mode is used, though i dont really understand what 64_encrypt means, but i am guessing it has something to do with 8bytes of data/IV.

Action speaks louder than words.. so i gave it a shot on by writing a little util tool that deciphers server key packet. here is a code snipplet in java
Code:
            Cipher cipherOut = Cipher.getInstance("Blowfish/CFB/NoPadding");
            byte[] key = "DR654dt34trg4UI6".getBytes();
            byte[] encryptedData = inputTextArea.getText().trim().getBytes(); //get the encrypted string without trailing and leading white spaces
            byte[] iv = new byte[8];  //never see iv being initialized in wiki sources, so i'll just follow
            IvParameterSpec ivs = new IvParameterSpec(iv);
            SecretKeySpec keySpec = new SecretKeySpec(key,"Blowfish");
            cipherOut.init (Cipher.DECRYPT_MODE,keySpec,ivs); //set cipher mode
            encryptedData = cipherOut.doFinal(encryptedData); //perform cipher
            outputTextArea.setText(new String(encryptedData)); //output result
I have never had any prior knowledge of cryptography, so i am not too sure of the decryption mode and paddings. Logically speaking, since blowfish is a 64bit block cipher, and the sizes of p,g,A varies with every generation, some form of paddings has to be done. The output of the above piece of code is a complete mess. So i do ponder if there is an encryption or not, or where did i do wrong to obtain current wrong result?
[End of Edit]

The following is a sample of what i currently being getting. High lighted in green is the dh key packet from server. I have also noticed this packet size always varies.
Code:
run:
Proxy Started : Listening for connection on port 9959
[GameProxy] : Thread started - Listening on 0.0.0.0/0.0.0.0:5816
@Auth Proxy : Client connected
[AuthProxy] Connecting to :208.96.34.46 on port 9959
[AuthProxy] Obtain password seed :complete
[AuthProxy] Sending authorization request :complete
[AuthProxy] Authorization response :complete
[AuthProxy] Extracting game server info :     216.93.183.196
[AuthProxy] Final reply to auth server :Complete.   80
[AuthProxy] Auth Relay Complete
[GameProxy] : Client connected
Starting up/down stream services
@downStreamService Constructor : prox2serv true
creating service threads
@upstreamservice: updown streams obtained
@downstreamservice: updown streams obtained
@downStreamService: relaypacket started.
[down:331][COLOR="SeaGreen"]29 D6 E5 9D 62 7C 94 D4 ED CC 97 56 A3 FD FC 85 26 D B7 57 3C A7 14 D4 B0 7C 7B E9 E7 35 63 D4 44 52 B8 29 C6 9C A7 52 9E 95 C6 EC F9 AA 93 AF 22 DC 26 BB DA 36 A9 C4 10 56 26 69 DE ED E0 1C 90 CD EE 5 27 5B E F4 18 B6 A4 1D D5 B B6 94 9B 68 B8 8F A5 59 9E F3 E4 A3 D5 74 52 52 69 8B FD 36 C7 29 38 51 30 D7 F9 7E B0 4 E5 25 CE BD D7 A7 18 83 60 19 F5 A5 D8 53 C2 95 9A B6 52 9D 75 79 32 A0 5E 1B 8 FB F7 78 DA E4 DD CD CE CC 1D 6 1B E9 45 A5 20 E7 AD 2F 66 EF F5 EC 18 33 9D 87 73 49 7 86 4C BA B9 46 25 B8 DA 13 B1 AB 2B C3 1B A6 30 13 11 B6 7 DF 7D 33 9B 6C D0 E3 5E 42 57 EC 7E ED D5 28 16 CB F 5B A0 5A FB 4F 16 31 37 84 4E BB 87 1E 70 1D 3B 66 88 5A A8 73 36 CA 33 95 D9 1E A2 4D 39 EC 7D 9B EF F9 B2 20 32 5 57 5C 2F AC C4 3F 31 D7 70 A D4 27 9A 6F AB 26 C9 48 84 54 41 62 5A 43 2 5B F4 66 93 CE FD 29 3F 4A E9 88 6B B2 97 6A 24 DD 48 40 36 4F 76 EB E1 27 8A 45 A 53 F4 19 67 8C B6 67 3A 61 25 3F B4 F4 55 C4 3F 32 E3 BF D6 DB 23 90 DE DD 3A 6F 62 5 C 66 F 31 61 45 87 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [/COLOR]
[up:190]3B 11 F8 F0 F B8 46 C2 98 8B A7 3A BB D5 14 4B 10 B9 18 3A AD A B2 A5 EA 30 5F 38 C5 79 F0 1D 64 2 EF 25 49 81 4D 1 AA 49 22 BC A5 A4 F5 E1 1B F6 3F 2D D7 84 9 94 51 4B D6 9 CD 8F 10 51 E1 AF AB 95 B2 E8 88 35 8 6 99 F6 68 A6 50 68 83 77 C3 D2 A5 8A 6E EF 98 55 71 3F B E3 E4 33 A3 BF E4 7D 90 1A F1 97 62 73 4 6E 38 8B 87 8E 91 90 1B F9 4E A3 9D 43 38 D5 8E 47 A0 8E 66 D6 46 CE 74 D9 C0 CF 10 BF 2 98 CA 66 E AC 26 F9 31 2D 9C EF 6B 7B 73 57 40 D0 80 58 CF F9 56 E1 43 C4 A9 1C AA 66 6C 90 DC 16 42 D1 6C 43 F3 E2 44 31 39 D3 99 E3 78 4E 9F 4C C0 B0 E5 1C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11/21/2010 12:48 pro4never#2
While I respect you quite a bit for going through this all yourself.. there is a leaked 5200+ proxy posted in one of the threads where I was first working on getting a proxy working.

That being said... here's some snippets you might find useful ^^

Basically you want to edit the server/client packets to use for each side of the encryption. Then one is used to encrypt/decrypt server data and one for client data.

Code:
public class ClientDHPacket
    {
        public string Client_PubKey;
        int JunkLength;
        public ClientDHPacket(byte[] Packet)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryReader BR = new BinaryReader(MS);

            BR.ReadBytes(7);//JUNK
            BR.ReadUInt32();//Length
            JunkLength = BR.ReadInt32();
            BR.ReadBytes(JunkLength);
            Client_PubKey = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            BR.Close();
            MS.Close();
        }
        public void Edit(byte[] Packet, string NewKey)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryWriter BW = new BinaryWriter(MS);
            BW.Seek(19 + JunkLength, SeekOrigin.Current);
            BW.Write(Encoding.ASCII.GetBytes(NewKey));
        }
    }
    public class ServerDHPacket
    {
        public byte[] ServerIV;
        public byte[] ClientIV;
        public string P;
        public string G;
        public string Server_PubKey;
        int JunkLength;

        public ServerDHPacket(byte[] Packet)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryReader BR = new BinaryReader(MS);
            BR.ReadBytes(11);//JUNK
            BR.ReadUInt32();//Length - Like i care of it
            JunkLength = BR.ReadInt32();
            BR.ReadBytes(JunkLength);//JUNK
            ServerIV = BR.ReadBytes(BR.ReadInt32());
            ClientIV = BR.ReadBytes(BR.ReadInt32());
            P = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            G = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            Server_PubKey = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            BR.Close();
            MS.Close();
        }
        public void Edit(byte[] Packet, string EditedPubKey)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryWriter BW = new BinaryWriter(MS);
            BW.Seek(55 + JunkLength + P.Length + G.Length, SeekOrigin.Current);
            BW.Write(Encoding.ASCII.GetBytes(EditedPubKey));
            BW.Close();
            MS.Close();
        }
    }
Credits for that go to Tannel seeing as it's his proxy that got leaked lol.
11/21/2010 16:27 shitboi#3
Quote:
Originally Posted by pro4never View Post
While I respect you quite a bit for going through this all yourself.. there is a leaked 5200+ proxy posted in one of the threads where I was first working on getting a proxy working.

That being said... here's some snippets you might find useful ^^

Basically you want to edit the server/client packets to use for each side of the encryption. Then one is used to encrypt/decrypt server data and one for client data.

Code:
public class ClientDHPacket
    {
        public string Client_PubKey;
        int JunkLength;
        public ClientDHPacket(byte[] Packet)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryReader BR = new BinaryReader(MS);

            BR.ReadBytes(7);//JUNK
            BR.ReadUInt32();//Length
            JunkLength = BR.ReadInt32();
            BR.ReadBytes(JunkLength);
            Client_PubKey = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            BR.Close();
            MS.Close();
        }
        public void Edit(byte[] Packet, string NewKey)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryWriter BW = new BinaryWriter(MS);
            BW.Seek(19 + JunkLength, SeekOrigin.Current);
            BW.Write(Encoding.ASCII.GetBytes(NewKey));
        }
    }
    public class ServerDHPacket
    {
        public byte[] ServerIV;
        public byte[] ClientIV;
        public string P;
        public string G;
        public string Server_PubKey;
        int JunkLength;

        public ServerDHPacket(byte[] Packet)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryReader BR = new BinaryReader(MS);
            BR.ReadBytes(11);//JUNK
            BR.ReadUInt32();//Length - Like i care of it
            JunkLength = BR.ReadInt32();
            BR.ReadBytes(JunkLength);//JUNK
            ServerIV = BR.ReadBytes(BR.ReadInt32());
            ClientIV = BR.ReadBytes(BR.ReadInt32());
            P = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            G = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            Server_PubKey = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            BR.Close();
            MS.Close();
        }
        public void Edit(byte[] Packet, string EditedPubKey)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryWriter BW = new BinaryWriter(MS);
            BW.Seek(55 + JunkLength + P.Length + G.Length, SeekOrigin.Current);
            BW.Write(Encoding.ASCII.GetBytes(EditedPubKey));
            BW.Close();
            MS.Close();
        }
    }
Credits for that go to Tannel seeing as it's his proxy that got leaked lol.
Wow... that is a really valuable piece of reference you gave me. That instantly defeated my 2nd hurdle. But that still left me with my initial question: the server DH packet is encrypted using blowfish with "DR654dt34trg4UI6" as the key right? The reason for this question is that i immediately set up my tool based on the methodology of the the above ServerDHPacket class and found out the out put of junklength is ridiculously large/unreal, thus i suspect it is encrypted; By contrapositive reasoning. if the logic for dh exchange is to establish a shared key for client and server's blowfish, why is there a need for the initial DR.....UI6 key?
11/21/2010 17:08 vDrag0n#4
Quote:
Originally Posted by pro4never View Post
While I respect you quite a bit for going through this all yourself.. there is a leaked 5200+ proxy posted in one of the threads where I was first working on getting a proxy working.

That being said... here's some snippets you might find useful ^^

Basically you want to edit the server/client packets to use for each side of the encryption. Then one is used to encrypt/decrypt server data and one for client data.

Code:
public class ClientDHPacket
    {
        public string Client_PubKey;
        int JunkLength;
        public ClientDHPacket(byte[] Packet)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryReader BR = new BinaryReader(MS);

            BR.ReadBytes(7);//JUNK
            BR.ReadUInt32();//Length
            JunkLength = BR.ReadInt32();
            BR.ReadBytes(JunkLength);
            Client_PubKey = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            BR.Close();
            MS.Close();
        }
        public void Edit(byte[] Packet, string NewKey)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryWriter BW = new BinaryWriter(MS);
            BW.Seek(19 + JunkLength, SeekOrigin.Current);
            BW.Write(Encoding.ASCII.GetBytes(NewKey));
        }
    }
    public class ServerDHPacket
    {
        public byte[] ServerIV;
        public byte[] ClientIV;
        public string P;
        public string G;
        public string Server_PubKey;
        int JunkLength;

        public ServerDHPacket(byte[] Packet)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryReader BR = new BinaryReader(MS);
            BR.ReadBytes(11);//JUNK
            BR.ReadUInt32();//Length - Like i care of it
            JunkLength = BR.ReadInt32();
            BR.ReadBytes(JunkLength);//JUNK
            ServerIV = BR.ReadBytes(BR.ReadInt32());
            ClientIV = BR.ReadBytes(BR.ReadInt32());
            P = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            G = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            Server_PubKey = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadInt32()));
            BR.Close();
            MS.Close();
        }
        public void Edit(byte[] Packet, string EditedPubKey)
        {
            MemoryStream MS = new MemoryStream(Packet);
            BinaryWriter BW = new BinaryWriter(MS);
            BW.Seek(55 + JunkLength + P.Length + G.Length, SeekOrigin.Current);
            BW.Write(Encoding.ASCII.GetBytes(EditedPubKey));
            BW.Close();
            MS.Close();
        }
    }
Credits for that go to Tannel seeing as it's his proxy that got leaked lol.
I was looking @ [Only registered and activated users can see links. Click Here To Register...] read at least 10 times and for me looks like it was incomplete?

I mean, Class DH inherits Base (base class doesnt exists)? BigNumber type? and what about this?
base(Base.ExpectNonNull(DH_new()), true)... from where this came from? Theres no base class, at least on the wiki.


pro4never, not that I would like that my job would be leaked but do you have a link for that proxy? just want to take a look.

Thanks u/korvacs for the support.
11/21/2010 17:27 Kiyono#5
Quote:
Originally Posted by vDrag0n View Post
I was looking @ [Only registered and activated users can see links. Click Here To Register...] read at least 10 times and for me looks like it was incomplete?

I mean, Class DH inherits Base (base class doesnt exists)? BigNumber type? and what about this?
base(Base.ExpectNonNull(DH_new()), true)... from where this came from? Theres no base class, at least on the wiki.


pro4never, not that I would like that my job would be leaked but do you have a link for that proxy? just want to take a look.

Thanks u/korvacs for the support.
Even though it's already leaked, here's the 5228 proxy, rar'd and password'd.
11/21/2010 17:44 shitboi#6
Currently brute forcing the rar file, lol. I'll wait to see what gems i can find in there.
11/21/2010 17:47 shitboi#7
Actually, that piece of code only serves as a reference. When you speak of DH.cs, that inheritance, imo, is not important. You should be able to find implementations of blowfish and dh on the web. All that's important to you right now is probably how the skeleton is like.
11/21/2010 17:50 vDrag0n#8
Quote:
Originally Posted by Kiyono View Post
Even though it's already leaked, here's the 5228 proxy, rar'd and password'd.
I'll check it, thanks for this!
11/21/2010 18:01 Kiyono#9
Quote:
Originally Posted by shitboi View Post
Actually, that piece of code only serves as a reference. When you speak of DH.cs, that inheritance, imo, is not important. You should be able to find implementations of blowfish and dh on the web. All that's important to you right now is probably how the skeleton is like.
So you do not need the password anymore?
11/21/2010 18:07 vDrag0n#10
Quote:
Originally Posted by shitboi View Post
Currently brute forcing the rar file, lol. I'll wait to see what gems i can find in there.
Really, i guess Kiyono have sent you the password, or you will take FEW ERAS to discover it.

lol.

Btw, just out of curiosity I was trying to compile but i always get a BadImageFormatException @ debug. Is it related with x86/x64 dlls?
11/21/2010 18:22 shitboi#11
Actually if you can give me the password, i'd deeply appreciate it ... I dont wanna wait a few days for the password to come out, lol. So, PLEASE...
11/21/2010 18:29 Kiyono#12
Quote:
Originally Posted by shitboi View Post
Actually if you can give me the password, i'd deeply appreciate it ... I dont wanna wait a few days for the password to come out, lol. So, PLEASE...
Send.
11/21/2010 18:32 vDrag0n#13
Quote:
Originally Posted by Kiyono View Post
Send.
Any idea why it does give me BadImageFormatException?

This is something with libeay32.dll -i'm on 32 bit tho.
11/21/2010 19:09 Kiyono#14
Quote:
Originally Posted by vDrag0n View Post
Any idea why it does give me BadImageFormatException?

This is something with libeay32.dll -i'm on 32 bit tho.
No, I'm getting the same problem.
11/21/2010 19:25 shitboi#15
Thanks pro4never and kiyono for your help. Now i am pretty sure i was and am on the right track. I revisited my codes and realized i made a mistake when converting "string representation of packet" into byte[] thus getting wrong output with cipher. After correcting that mistake i suppose this should be a valid serverDH packet after blowfish. It's validity is proven by the TQserver signature in Red.

Quote:

��^�dP�Y&V[b , ^��ؚ���j_��odB���%+׶�?
a�5����>(�)!����� �0��X֍ �|��݀ A320A85EDD79171C341459E94807D71D39BB3B3F3B5161CA84 894F3AC3FC7FEC317A2DDEC83B66D30C29261C6492643061AE CFCF4A051816D7C359A6A7B7D8FB 05� 660811FF745F03973DE6DA19F81BC651A6B09C7B1816A2937C 6BDADBE78E9FB9A66C6F98873B3CA49DB3E8F47E1E8DC860EB 941E3A6D9FF13A613A5A603053E2TQServer��Z1�|x{"��$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|��u$w
�|�