-
Posts
67 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Store
Everything posted by xFranko
-
@ahmedelbahtety Monk was added in v5351
-
@kennylovecode Thank you! It's from Spirited's post here https://mega.nz/file/4RYh1QqB#wFWD65PgEatq05GD2pjld_7w-D7fO8t1wHznkqhvNNQ Also got the database from the comments in e*pvpers, someone left it under the thread since it wasn't originally uploaded with the source. https://www.assembla.com/spaces/conquerserverv3/documents/aL-N--KmGr4Pg0acwqEsg8/download/aL-N--KmGr4Pg0acwqEsg8
-
This will be so useful with something like Window Detective or WinSpy they allow you to hook into windows and buttons and see their parents and childrens and some text that can be used to locate the dds images and looking up the ani controls based on those file names....tho why don't you just use the `/enablefocus` command? it still works even in 6609
-
@Konichu The source is originally built for 5619 yes as per what Spirited wrote, it's the Conquer Server V3 source mentioned in this post: Also another memeber seems to have had such issue here: but well he wasn't using the Launcher provided with the source..I do use the launcher so not sure what's wrong Also there was this member having similar issue with the same debug error line in their client, but he is using another source and version.. Idk how to approach this further tbh
-
Looking at the client I noticed it's producing some debug logs..which seems to indicate it's indeed the handshake.. ERROR: CGameSocket::ReceiveMsg() OnShakeHand failed at f:\cq2clientrelease-50.0.5\3drole\network\socket.h, 528 -- Fri Nov 28 10:54:45 2025 Also not sure where this path comes from 'f:\cq2clientrelease-50.0.5\3drole\' I don't have that on my PC..
-
@kennylovecode I got my v5615 client from Spirited's post, so it is clean, I patched it up to 5619 also from his links..and this didn't fix the issue. Also got the database from the comments in e*pvpers, someone left it under the thread since it wasn't originally uploaded with the source. https://www.assembla.com/spaces/conquerserverv3/documents/aL-N--KmGr4Pg0acwqEsg8/download/aL-N--KmGr4Pg0acwqEsg8 @Konichu From what I got from the code, The Cast5 default seed (initialization vector/IV) is all zeros. In ConquerServerShared\Cryptography\TQCast5.cs, the Reset() method initializes the IVs like this: public void Reset() { EncIvec = new byte[16]; DecIvec = new byte[16]; DecNum = new int[8]; EncNum = new int[8]; } Full file: namespace ConquerServerV3.Cryptography { public unsafe class TQCast5 { private byte[] EncIvec; private byte[] DecIvec; private int[] EncNum; private int[] DecNum; private TQCast5Impl Impl; public TQCast5() { Impl = new TQCast5Impl(); Reset(); } public void GenerateKey(byte[] kb) { var key = new byte[16]; for (int i = 0; i < 16; i++) key[i] = kb[i]; Impl.SetKey(key); } public void Reset() { EncIvec = new byte[16]; DecIvec = new byte[16]; DecNum = new int[8]; EncNum = new int[8]; } public void Encrypt(byte* buffer_in, int in_off, byte[] buffer_out, int out_off, int length) { byte c; for (int l = length, n = EncNum[0], inc = in_off, outc = 0; l > 0; l--) { if (n == 0) { Impl.EncryptBlock(EncIvec, 0, EncIvec, 0); } c = (byte)((buffer_in[inc++] ^ EncIvec[n]) & 0xff); buffer_out[outc++] = c; EncIvec[n] = c; n = (n + 1) & 0x07; EncNum[0] = n; } } public void Decrypt(byte[] buffer_in, int in_off, byte* buffer_out, int out_off, int length) { byte c, cc; for (int l = length, n = DecNum[0], inc = in_off, outc = 0; l > 0; l--) { if (n == 0) { Impl.EncryptBlock(DecIvec, 0, DecIvec, 0); } cc = buffer_in[inc++]; c = DecIvec[n]; DecIvec[n] = cc; buffer_out[out_off + outc] = (byte)((c ^ cc) & 0xff); outc++; n = (n + 1) & 0x07; DecNum[0] = n; } } } } If it matters, the default encryption key used in GameCipher.cs is: "C238xs65pjy7HU9Q" ____________________________ Also I really just want any source that's before patch 5622 (Chi release), me and my friends just hate Chi and all that stuff that came after, we wanted to play with the Pirate and that's all and this seemed to be the only source around this patch
-
@Konichu Hmm not really looks a bit different, here's the entire DHExchange file from the GameServer using System; using System.Text; using CO2_CORE_DLL.Security.Cryptography; namespace ConquerServerV3 { // // Special thanks unknownone/Sparkie, CptSky // public class DHExchange { private const string PStr = "E7A69EBDF105F2A6BBDEAD7E798F76A209AD73FB466431E2E7352ED262F8C558F10BEFEA977DE9E21DCEE9B04D245F300ECCBBA03E72630556D011023F9E857F"; private const string GStr = "05"; public static readonly byte[] P = Encoding.ASCII.GetBytes(PStr); public static readonly byte[] G = Encoding.ASCII.GetBytes(GStr); private static string Hex(byte[] bytes) { char[] c = new char[bytes.Length * 2]; byte b; for (int bx = 0, cx = 0; bx < bytes.Length; ++bx, ++cx) { b = ((byte)(bytes[bx] >> 4)); c[cx] = (char)(b > 9 ? b + 0x37 + 0x20 : b + 0x30); b = ((byte)(bytes[bx] & 0x0F)); c[++cx] = (char)(b > 9 ? b + 0x37 + 0x20 : b + 0x30); } return new string(c); } private static string PostProcessDHKey(byte[] key) { var hashService = new System.Security.Cryptography.MD5CryptoServiceProvider(); var s1 = Hex(hashService.ComputeHash(key, 0, key .CountWhile(x => x != 0) ) ); var s2 = Hex(hashService.ComputeHash(Encoding.ASCII.GetBytes(String.Concat(s1, s1)))); var sresult = String.Concat(s1, s2); return sresult; } public static DiffieHellman New() { return new DiffieHellman(PStr, GStr); } [PacketAttribute(PacketType.HandShake)] private static void InitHandshake(GameClient user, Packet msg) { byte[] publicKey = Encoding.ASCII.GetBytes(user.Feedback.GenerateRequest()); user.Send(msg.Handshake(P, G, publicKey)); } [PacketAttribute(PacketType.HandshakeReply)] private static void CompleteHandshake(GameClient user, Packet msg) { string otherPublicKey; if (msg.GetHandshakeReplyKey(out otherPublicKey)) { user.Feedback.HandleResponse(otherPublicKey); var compute = PostProcessDHKey(user.Feedback.ToBytes()); user.Network.Language.SetKey(Encoding.ASCII.GetBytes(compute)); user.Feedback = null; // allow resources to be freed } } } }
-
@TkblackbeltYep the client disconnects right after the login server sends that 333 bytes packet, and I tried to find a patch from 5615 to 5619 but couldn't find any..I don't think during these 4 patches any major change happened that would cause the issue I'm having right now..so it must be something else..
-
@kennylovecode I tried but I'm starting to give up, I thought it would be an issue from my client itself as to why it's sending 0 bytes? also can't tell why the exchance fails, I tried to debug but it feels like I can't get any valuable info, also tried print debugging...I feel like the issue could be with my character initilization? === CONNECTION DEBUG: GameConnect START === New client connected from: 26.25.24.42:56606 Socket connected: True, Alive: True GameClient created, GameId: 1 DH Feedback object created: True Invoking handshake handler... === DH EXCHANGE DEBUG: InitHandshake START === Client: 26.25.24.42:56606 DH DEBUG: Generated public key length: 128 DH DEBUG: Public key (first 32 bytes): 44 43 46 39 34 34 37 41 34 34 37 36 42 46 38 38 36 37 38 38 39 44 41 36 44 38 31 46 45 35 39 36 DH DEBUG: Handshake packet size: 333 bytes DH DEBUG: Handshake packet (first 64 bytes): Offset 0000: 26 00 1A 27 45 1B 06 00 00 00 00 42 01 00 00 0A Offset 0010: 00 00 00 00 86 00 00 00 32 00 32 00 00 08 00 00 Offset 0020: 00 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 Offset 0030: 00 00 00 00 00 80 00 00 00 45 37 41 36 39 45 42 DH DEBUG: Sending handshake via DirectSend (unencrypted)... DH DEBUG: DirectSend completed === DH EXCHANGE DEBUG: InitHandshake END === Handshake handler completed Before BeginReceive - Socket connected: True, Available: 0 bytes BeginReceive started, waiting for client reply... === CONNECTION DEBUG: GameConnect END === === DH EXCHANGE DEBUG: DhExchange callback START === Client: 26.25.24.42:56606 Socket connected: True, Available: 0 bytes DH DEBUG: EndReceive returned size: 0 bytes DH DEBUG: ERROR - Received 0 bytes, connection aborted DH DEBUG: Client closed connection gracefully (0 bytes)
-
I’ve set everything up correctly and I'm using the 5615 client from Spirited’s post. I compiled CSV3Hook and updated csv3config.ini with the correct IPs and ports. My GameServer is running on port 5816, and the AuthServer on 5817. I can get past the auth server when logging in, but the connection fails when reaching the game server with the following message: Client disconnected: Unknown (Reason: DhExchange() - connection aborted) I tried debugging but haven’t had any success. The client is sending 0 bytes, which is causing the failure, but I can’t figure out why. I’m also using the launcher included with the source. Do I need to use the exact same client version as the source (5619)? I can’t even locate that version anywhere.
-
Were you able to solve this? I got the database and using the correct launcher..still same error.
-
For ConquerServer V3 is it missing the database folder or is that an issue on my side ? Edit: nvm, got it from elitepvpers, someone left it in the comments.
-
What crazy and massive client modifications!!
xFranko replied to kennylovecode's topic in Conquer Online
it's similar to Classic Conquer server too, they did similar modifications - Custom Windows and Login - Custom Item modifications (some of them has special effects) - Custom second rebirth hallo It