Aleos 490 Posted March 14, 2015 Packet Obfuscation SupportAs of 9d247d8, rAthena is now able to support encrypted packets making servers WPE free!Thanks to Hercules for the initial base of it. Thanks to @Napster for getting it applied to rA.Enabling support for your server: Packet Obfuscation support is enabled by default. It can be disabled in src/config/core.h by commenting out #define PACKET_OBFUSCATION. When diff'ing your client, make sure to not apply the "Disable encrypted packet" diff. A new definition has been added in db/packet_db.txt called packet_keys_use. Make sure this corresponds to the packet_ver you are using! Clients 2011-10-05 and newer will contain a new definition in db/packet_db.txt called packet_keys. These will have the three default keys for their specific client version. These keys can be changed if you use the diff to change the default key of the client. Keyworld was nice enough to provide a nice GUI to test custom keys. You can find that here. If you happen to change your keys, make sure the ones you apply in the diff match the order in the packet_keys definition. If your server supports multiple clients, make sure all clients are using the same 3 keys. Keep in mind, the maximum key value is 0x7FFFFFFF! 14 Share this post Link to post Share on other sites
Radian 177 Posted March 14, 2015 Thanks for the hard work applying this Share this post Link to post Share on other sites
Cydh 711 Posted March 14, 2015 enabled by default @[email protected] I should rediff all my test clients https://github.com/rathena/rathena/commit/9d247d88c1f8a5d04a386ac6891726724ee226f9#diff-508730e79da0e272d574830f2b49609bR829 eh, add a note aleos, since it's enabled by default, if user change the packetver under 20110817, or just make if below that ver, undef the PACKET_OBFUSCATION. Share this post Link to post Share on other sites
Aleos 490 Posted March 14, 2015 Yeah I was thinking just that, Cydh. Share this post Link to post Share on other sites
Conflicts 62 Posted March 14, 2015 This is awesome! Thank you Aleos, and everyone else who helped to make this feature possible for rA, finally. PS: Wow. I will need to re-diff my 2012 / 2013 clients Share this post Link to post Share on other sites
Yonko 44 Posted March 15, 2015 (edited) nice i've waiting for this my salute to the developers of this WPE Free rAthena ! EDIT: if my client has a broken keys will this Packet obfuscation still work? My client is 2013-12-23 and seems on this link CLICK ME 2013-12-23 is broken? Edited March 15, 2015 by Yonko Share this post Link to post Share on other sites
Lelouch vi Britannia 79 Posted March 15, 2015 Finally the update that ive been waiting for So whats next on rAthena? maybe you should try to implement this also from herc... • Roulette and Per-Character Gender But anyways Great Work rA team Share this post Link to post Share on other sites
Niktout 1 Posted March 15, 2015 Hello, Thanks for the update but i'm unable to disable the feature by commenting out #define PACKET_OBFUSCATION. in src/conf/core.h I've recompiled the sources of course. Any idea on how to truly disable it ? Share this post Link to post Share on other sites
Akbare 13 Posted March 15, 2015 thanks for hardwork update sir.... diff again all my client Share this post Link to post Share on other sites
Kusoo 0 Posted March 16, 2015 With this, the Maya Purple Filter doesn't work ? Share this post Link to post Share on other sites
nanakiwurtz 580 Posted March 16, 2015 if my client has a broken keys will this Packet obfuscation still work? Diff your client with your own custom keys and change the server side keys too Share this post Link to post Share on other sites
Aureon 14 Posted March 16, 2015 if my client has a broken keys will this Packet obfuscation still work? Diff your client with your own custom keys and change the server side keys too How to have that custom packet keys? Is it random? How to generate my own custom packet keys? @topic: Finally! good work rAthena developers Share this post Link to post Share on other sites
Cydh 711 Posted March 16, 2015 if my client has a broken keys will this Packet obfuscation still work?Diff your client with your own custom keys and change the server side keys too How to have that custom packet keys? Is it random? How to generate my own custom packet keys?@topic: Finally! good work rAthena developers Use NEMO to diff ur client, and... Do NOT select: Disable Packet Encryption (Recommended)Select: Packet First Key Encryption, and following ur 1st key Packet Second Key Encryption, and following ur 2nd key Packet Third Key Encryption, and following ur 3rd key Then make sure put your custom keys on db/[import/]packet_db.txt, in packet_keys_use: <key1>,<key2>,<key3> 1 Share this post Link to post Share on other sites
nanakiwurtz 580 Posted March 16, 2015 How to have that custom packet keys? Is it random? How to generate my own custom packet keys?Use this free tool to generate your own custom keys 1 Share this post Link to post Share on other sites
Radian 177 Posted March 16, 2015 One Question : because i am using 2013 - 12 - 23 client and the keys are broken. I did not patch packet first key encryption and the rest of it that's fine right? Share this post Link to post Share on other sites
Aleos 490 Posted March 16, 2015 Hello, Thanks for the update but i'm unable to disable the feature by commenting out #define PACKET_OBFUSCATION. in src/conf/core.h I've recompiled the sources of course. Any idea on how to truly disable it ? Commenting that line out and then recompiling your server will disable the feature. With this, the Maya Purple Filter doesn't work ? This is meant to stop the spamming of packets sent to the client. There are some checks server-side for Maya Purple hacks but I haven't really tested it on the client to know if it's still working or not. One Question : because i am using 2013 - 12 - 23 client and the keys are broken. I did not patch packet first key encryption and the rest of it that's fine right? If you don't use your own keys then eventually the default keys on the client aren't sent as encrypted anymore. Share this post Link to post Share on other sites
Cydh 711 Posted March 16, 2015 One Question : because i am using 2013 - 12 - 23 client and the keys are broken. I did not patch packet first key encryption and the rest of it that's fine right? broken? Here I'm using 2013-12-23c with default keys, diffed by NEMO. well, if u're using NEMO, it might tell "Second Packet Key is copy of Third for this date - change Third one instead", just comment the lines on NEMO's /Patches/PacketEncryptionKeys.qs (note: idk the side effect ) //Duplicate Check switch(keyindex) { case 0: if (keyaddrs[2] == keyaddrs[0]) { return "First Packet Key is copy of Third for this date - change Third one instead"; } if (keyaddrs[1] == keyaddrs[0]) { return "First Packet Key is copy of Second for this date - change Second one instead"; } break; case 1: if (keyaddrs[2] == keyaddrs[1]) { return "Second Packet Key is copy of Third for this date - change Third one instead"; } break; } Share this post Link to post Share on other sites
Radian 177 Posted March 16, 2015 One Question : because i am using 2013 - 12 - 23 client and the keys are broken. I did not patch packet first key encryption and the rest of it that's fine right? broken? Here I'm using 2013-12-23c with default keys, diffed by NEMO. Screenshot_18.png well, if u're using NEMO, it might tell "Second Packet Key is copy of Third for this date - change Third one instead", just comment the lines on NEMO's /Patches/PacketEncryptionKeys.qs (note: idk the side effect ) //Duplicate Check switch(keyindex) { case 0: if (keyaddrs[2] == keyaddrs[0]) { return "First Packet Key is copy of Third for this date - change Third one instead"; } if (keyaddrs[1] == keyaddrs[0]) { return "First Packet Key is copy of Second for this date - change Second one instead"; } break; case 1: if (keyaddrs[2] == keyaddrs[1]) { return "Second Packet Key is copy of Third for this date - change Third one instead"; } break; } Oh so if i still use the default packet keys its okay? because what i did is i changed the default keys of the client im using. Share this post Link to post Share on other sites
Hnomkeng 2 Posted March 17, 2015 (edited) /ok Edited March 17, 2015 by indybigza Share this post Link to post Share on other sites
nanakiwurtz 580 Posted March 17, 2015 //Duplicate Check switch(keyindex) { case 0: if (keyaddrs[2] == keyaddrs[0]) { return "First Packet Key is copy of Third for this date - change Third one instead"; } if (keyaddrs[1] == keyaddrs[0]) { return "First Packet Key is copy of Second for this date - change Second one instead"; } break; case 1: if (keyaddrs[2] == keyaddrs[1]) { return "Second Packet Key is copy of Third for this date - change Third one instead"; } break; } I think those line aren't needed, because actually a same key can be used to make it to work Try to put "0x87654321" on all 3 keys Share this post Link to post Share on other sites
KamiShi 212 Posted March 17, 2015 This is amazing! This feature is so useful! Good job!!! /lv Share this post Link to post Share on other sites
Hnomkeng 2 Posted March 17, 2015 (edited) How to have that custom packet keys? Is it random? How to generate my own custom packet keys?Use this free tool to generate your own custom keys new custome key work 1 key Edited March 17, 2015 by indybigza Share this post Link to post Share on other sites
Aureon 14 Posted March 17, 2015 if my client has a broken keys will this Packet obfuscation still work?Diff your client with your own custom keys and change the server side keys too How to have that custom packet keys? Is it random? How to generate my own custom packet keys?@topic: Finally! good work rAthena developers Use NEMO to diff ur client, and... Do NOT select: Disable Packet Encryption (Recommended)Select: Packet First Key Encryption, and following ur 1st key Packet Second Key Encryption, and following ur 2nd key Packet Third Key Encryption, and following ur 3rd key Then make sure put your custom keys on db/[import/]packet_db.txt, in packet_keys_use: <key1>,<key2>,<key3> How to have that custom packet keys? Is it random? How to generate my own custom packet keys?Use this free tool to generate your own custom keys Thank you so much for this. Very much appreciated Share this post Link to post Share on other sites