Results 1 to 12 of 12
  1. #1
    Fovea's Avatar
    Join Date
    Mar 2011
    Gender
    male
    Posts
    325
    Reputation
    101
    Thanks
    411
    My Mood
    Amused

    nmconew General Packet Format and Encryption

    nmconew General Packet Format and Encryption

    All listed entries are in network byte order, otherwise known as big endian.

    // Primary header
    WORD: Packet Length (Inclusive)
    WORD: Unknown (Packet ID?)

    // Secondary header
    BYTE: Constant (0x18)
    3 bytes: Packet Length - Primary Header Length
    BYTE: Unknown
    3 bytes: Packet Length Without Headers
    DWORD: Encryption Seed
    DWORD: Unknown

    // Packet Body (Encrypted)
    BUFFER: Packet Body


    Sample Packet:
    Code:
    // Primary Header
    [00 44] [00 0B] 
    // Secondary Header
    [18] [00 00 40] [02] [00 00 34] [C6 7D 2A 54] [C2 B0 B4 35]
    // Packet Body
    [84 68 2D 2C 93 11 8B 7D F2 B7 20 EF 20 11 B4 8E 73 69 3B 18 F5 68 07 26 33 6F 23 17 3B 82 B1 6C A8 0D 05 A0 E6 F1 FC 17 6D C5 DD C6 95 C5 E3 B0 51 E1]
    Encryption Scheme
    Code:
    unsigned int xor_table[] = { 0x040FC1578, 0x0113B6C1F, 0x08389CA19, 0x0E2196CD8,
                                 0x074901489, 0x04AAB1566, 0x07B8C12A0, 0x00018FFCD,
                                 0x0CCAB704B, 0x07B5A8C0F, 0x0AA13B891, 0x0DE419807,
                                 0x012FFBCAE, 0x05F5FBA34, 0x010F5AC99, 0x0B1C1DD01  };
    
    void encrypt(unsigned long* buffer, unsigned int len, int seed)
    {
      int temp, temp2 = 0;
      
      for (int i = 0; i < len / 4; i++
      {
        temp = temp2 ^ xor_table[i & 15] ^ seed;
        temp2 = (int)buffer[i];
        buffer[i] = temp ^ temp2;
      }
    }
    
    void decrypt(unsigned long* buffer, unsigned int len, int seed)
    {
      int temp = 0;
    
      for (int i = 0; i < len / 4; i++)
      {
        buffer[i] ^= (temp ^ xor_table[i & 15] ^ seed);
        temp = buffer[i];
      }
    }
    Notes:
    • Handling for packets constructed and sent from other DLLs may be formatted and encrypted differently.
    • Handling for packets routed through sendto() rather than send() may be formatted differently.
    • Packet headers may be different for inbound packets (recv).
    Last edited by Fovea; 05-15-2011 at 01:23 AM.

  2. The Following 14 Users Say Thank You to Fovea For This Useful Post:

    azile (05-15-2011),BledByNature (01-05-2012),bloodclot (05-15-2011),DanK (05-15-2011),dragon73 (05-15-2011),gercreed (12-02-2011),gohan2525 (05-15-2011),gradienz (05-15-2011),Hell_Demon (05-15-2011),Hitman 47 (05-15-2011),kekitawong (05-15-2011),khorik (05-15-2011),LordInferno (05-15-2011),Sid (05-15-2011)

  3. #2
    BigChicks's Avatar
    Join Date
    Mar 2011
    Gender
    male
    Posts
    66
    Reputation
    11
    Thanks
    7
    My Mood
    Cynical
    If this is what I think it is......OMG

  4. #3
    DanK's Avatar
    Join Date
    Aug 2006
    Gender
    male
    Location
    Arizona
    Posts
    2,892
    Reputation
    100
    Thanks
    3,632
    My Mood
    Devilish
    You are one awesome dude!

  5. #4
    monophobic's Avatar
    Join Date
    Apr 2011
    Gender
    male
    Posts
    270
    Reputation
    10
    Thanks
    55
    My Mood
    Cool
    i bet this would be awesome if i knew what it was
    Its ok to hate me
    im used to it

    Forum lurker

  6. #5
    Mythical's Avatar
    Join Date
    May 2011
    Gender
    male
    Posts
    19
    Reputation
    10
    Thanks
    26
    The underlying protocol is called ProudNet iirc, a lot of games use it.

  7. #6
    Sunrise's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Location
    ΞΔ
    Posts
    2,179
    Reputation
    99
    Thanks
    217
    My Mood
    Sleepy
    Quote Originally Posted by monophobic View Post
    i bet this would be awesome if i knew what it was
    Agreed. Looks and probably is very useful to coders and other people but I don't understand it but I know it looks AMAZING xD

  8. #7
    Doomsday.today's Avatar
    Join Date
    Mar 2010
    Gender
    male
    Posts
    168
    Reputation
    10
    Thanks
    144
    My Mood
    Devilish
    Two questions:
    So this is the way packets that are sent and recieved by nmconew.dll are encrypted?
    What does nmconew.dll do at all?

  9. #8
    Presiden's Avatar
    Join Date
    Mar 2011
    Gender
    male
    Location
    nnjnn
    Posts
    66
    Reputation
    10
    Thanks
    106
    Quote Originally Posted by monophobic View Post
    i bet this would be awesome if i knew what it was
    For making bot program. I used to make one for Cabal n 2Moons games.

  10. #9
    khorik's Avatar
    Join Date
    Feb 2011
    Gender
    male
    Posts
    162
    Reputation
    10
    Thanks
    16
    Great work, and yeah it is Proudnet, which is some network optimization platform, here's their promo vid and it features Vindictus

    YouTube - ProudNet Promotion Movie by Nettention Co., Ltd.

  11. #10
    PunkS7yle's Avatar
    Join Date
    Feb 2011
    Gender
    male
    Location
    why
    Posts
    46
    Reputation
    10
    Thanks
    9
    My Mood
    Stressed
    Quote Originally Posted by Presiden View Post
    For making bot program. I used to make one for Cabal n 2Moons games.
    I doubt you decrypted CABALs packets.
    Last edited by PunkS7yle; 05-15-2011 at 01:42 PM.

  12. #11
    Sid's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Location
    New York
    Posts
    10,712
    Reputation
    927
    Thanks
    1,265
    Nice job

  13. #12
    Hitman 47's Avatar
    Join Date
    Oct 2009
    Gender
    male
    Location
    Earth
    Posts
    2,551
    Reputation
    15
    Thanks
    331
    My Mood
    Cool
    god damn @Fovea you rock.. rehfsign n now this awesome! *hug*