Packete !?

    • Hey
      Ich kenne mich inzwischen gut mit detours,hooken, speicheradressen, lua in c++ und so manche andren tollen sachen aus, die ich mit c++ programmiere.
      Da ich wie immer langeweile hab wollte ich an einem kleinen Automaton rumbasteln ich bekomm die Pakete 0 probleme. ich kann sie absenden auch kein Problem.
      Mein Problem ist nur wie kann ich ein packet so erstellen das es z.B. Eine Message in den Chat schreibt.Ich schon ein bisschen was von Packeten gehört aber kenn mich gar nicht so recht mit ihnen aus. Es gibt bei Flyff eine Packet strukture die hab ich mir angeschaut aber die hilft mir da leider auch nicht arg viel weiter :D

      mfg Xenox3
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • [COLOR="SeaGreen"]Nein, man kann sich keine LGs durch packets cheaten
      Zu deiner Frage Xenox3, einfach mal sniffen.
      Erstell dir 4-5 Chars, logg dich ein, sniff die packets während du einen Text spammst (Die packets die gleich sind, benutzt du)
      Dann machste das selbe mit einem anderen Char (Selber text), dann suchst du die Unbterschiede in den Packets.
      Dadurch findest du den Namen/MoverID etc raus.
      Probieren macht immernoch am meisten Spaß ;)[/COLOR]


      PS : Ich hab mich nie mit GameHackin / FlyFF Hacking beschäftigt, sondern nur ab und zu mal
      bisschen an Sachen rumgespielt aber nie ernsthaft drangesetzt...
    • generelle Packetstruktur:

      Quellcode

      1. [header] [data length checksum] [data length] [data checksum] [data]
      2. header: konstante die immer 0x5e beträgt
      3. data length checksum: ( CRC32-IEEE_802.3( data length ) xor 0xffffffff ) xor SessionID
      4. data length: Anzahl der bytes der data
      5. data checksum: ( CRC32-IEEE_802.3( data ) xor 0xffffffff ) xor SessionID
      6. data: enthält essentielle informationen für den server
      7. (Jede Data eines packetes, welches zum WorldServer gesendet wird, beginnt mit einem opcode, der dem server den Packet Typen mitteilt ( attack packet, drop packet, ... ))
      8. Die sessionID ist die erste Information, die der Client vom Server empfängt. Dies geschieht beim Verbindungsaufbau
      9. SessionID packet structur: 5e 08 00 00 00 00 00 00 00 [INT:SessionID]
      Alles anzeigen
    • omg TY :D genau das war mein problem wie ich die id raus bekomme

      Anfang ????? Länge ?????? Kp ist immer so LängeData ????? Data

      [5e] [2b 8a 32 93] [0f 00 00 00] [04 e6 68 ce] [ff ff ff ff 00 00 ff 00] [03] [00 00 00] [68 69 31]
      [5e] [4e ed 8e 2b] [0e 00 00 00] [20 25 23 e7] [ff ff ff ff 00 00 ff 00] [02] [00 00 00] [68 69]
      [5e] [b5 5a 2a 14] [14 00 00 00] [8e a5 71 4e] [ff ff ff ff 00 00 ff 00] [08] [00 00 00] [2f 73 20 68 69 31 32 33]
      [5e] [ab 6c 65 28] [0e 00 00 00] [c5 a4 c8 e4] [ff ff ff ff 00 00 ff 00] [02] [00 00 00] [68 69]

      wie man die 2 hashs raus bekommt ist das einzige problem die ändern sich andauernd-.-
    • Xenox3;76250 schrieb:

      omg TY :D genau das war mein problem wie ich die id raus bekomme

      Anfang ????? Länge ?????? Kp ist immer so LängeData ????? Data

      [5e] [2b 8a 32 93] [0f 00 00 00] [04 e6 68 ce] [ff ff ff ff 00 00 ff 00] [03] [00 00 00] [68 69 31]
      [5e] [4e ed 8e 2b] [0e 00 00 00] [20 25 23 e7] [ff ff ff ff 00 00 ff 00] [02] [00 00 00] [68 69]
      [5e] [b5 5a 2a 14] [14 00 00 00] [8e a5 71 4e] [ff ff ff ff 00 00 ff 00] [08] [00 00 00] [2f 73 20 68 69 31 32 33]
      [5e] [ab 6c 65 28] [0e 00 00 00] [c5 a4 c8 e4] [ff ff ff ff 00 00 ff 00] [02] [00 00 00] [68 69]

      wie man die 2 hashs raus bekommt ist das einzige problem die ändern sich andauernd-.-


      Wir splitten eins deiner packete mal komplett auf:

      Quellcode

      1. [5e] --> Header
      2. [2b 8a 32 93] --> Data Length Checksum
      3. [0f 00 00 00] --> Data Length
      4. [04 e6 68 ce] --> Data Checksum
      5. [ff ff ff ff 00 00 ff 00 03 00 00 00 68 69 31] --> Data


      [COLOR="Red"]Data Length Checksum (HASH NR1)[/COLOR]: Wir inverten ( xor 0xffffffff ) den CRC-32-IEEE_802.3 Hash der Data Länge ( die in diesem fall 15 beträgt ( siehe Data Length ) ) und xorn diesen mit der SessionID ( welche dem Client mittels des ersten Packets mitgeteilt wird. Sie setzt sich dort aus den bytes 10 - 13 zusammen )

      [COLOR="Red"]Data Length[/COLOR]: Little endian der byte anzahl der data ( ff ff ff ff 00 00 ff 00 03 00 00 00 68 69 31 )

      [COLOR="Red"]Data Checksum (HASH NR2)[/COLOR]: siehe Data Length Checksum. Replace jedoch die Data Länge mit der Data ( ff ff ff ff 00 00 ff 00 03 00 00 00 68 69 31 )


      Edit:

      Vielleicht helfen dir einer dieser beiden source codes den zusammenhang zu verstehen ( leider kann ich nicht so gut c++):

      Quellcode

      1. #Python Code ( [COLOR="Red"]CREDITS TO NFORCE[/COLOR] ):
      2. from struct import pack, unpack
      3. from binascii import crc32
      4. key = unpack ( '<L', '\x48\x6e\xa3\x19' ) [ 0 ] #SessionID
      5. data = '\xff\xff\xff\xff\x00\x00\xff\x00\x03\x00\x00\x00\x6d\x75\x68'
      6. result = pack ( '<BLLL',
      7. 0x5e, # Protocol byte
      8. ~crc32 ( pack ( '<L', len ( data ) ) ) ^ key, # Checksum of length
      9. len ( data ), # Length
      10. ~crc32 ( data ) ^ key # Checksum of data
      11. ) + data
      12. for x in result: print '%02x' % ord ( x ),
      13. print
      Alles anzeigen
    • Hallo,
      Ich hab dazu mal ne Frage,
      Als ich mich eingeloggt hab hat der Flyff-Server mir folgendes Paket geschickt:

      Quellcode

      1. [5e] [08 00 00 00] [00 00 00 00] [d1 c5 d7 19]

      ich hab angenommen dass [d1 c5 d7 19] also die Session ID ist (oder?).
      Dann hat mein Client dem Flyffserver meine Zugangsdaten geschickt.
      Darauf hat der Flyffserver mir wieder die Infos wie z.B. Chardaten und Realmdaten(also die versch Server z.b. Augu + ip und so) geschickt.Danach
      schickt er mit ein Paket
      Es sieht folgend aus:

      Quellcode

      1. [5e] [65 72 0e 48] [04 00 00 00] [fa 25 17 18] [14 00 00 00]
      2. [5e] --> Header
      3. [65 72 0e 48] --> checksum data length
      4. [04 00 00 00] --> data length (hier 4 byte)
      5. [fa 25 17 18] --> checksum data
      6. [14 00 00 00] --> data (ka was des bedeutet)
      7. Jetzt wir [04 00 00 00] (eig [00 00 00 04]) invertiert (xor mit [FF FF FF FF])
      8. -> [FB FF FF FF] ([FF FF FF FB]).
      9. Wenn wir des mit der SESSION-ID xor-en kommt folgendes Raus:
      10. [2A 3A 28 E6] ([E6 28 3A 2A]) des hat aber leider nichts mit der data length checksum zu tun.
      11. Ich hab des noch mal anders rum gemacht d.h. checksum genommen und invertierte data length um den "Schlüssel" heraus zu bekommen.
      12. Der ist hier: [9a 8d f1 b7].
      Alles anzeigen


      Wo liegt hier der Fehler ? Ist die ID-Falsch ?
      Hoffe auf Hilfe.
      MFG Funjoker^^
    • berrechnung der sessionid:
      [FONT="Courier New"][d1 c5 d7 19] ---[reverse]---> [19 d7 c5 d1] ---[dec]---> 433571281[/FONT]

      Berechnung der Data Length Checksum:
      [FONT="Courier New"]( CRC32-IEEE-802.3 ( BitConverter.GetBytes(4) ) xor 0xffffffff ) xor 433571281
      Das Ergebnis noch in Hex umwandeln und dann reversen ([01 02 03 04] -> [04 03 02 01])
      (Bei mir gibt die crc32 funktion eine dezimal Zahl wieder anstatt einer hexadecimal Zahl)[/FONT]

      Dein fehler: Du darfst nicht die länge mit 0xffffffff xor'n sondern musst diese erst mit der crc32 funktion hashen. Der errechnete Hash wird anschließend mit 0xffffffff (= -1) gexor'd
    • I don't get it

      also nochmal langsam:
      Ich habe ( CRC32-IEEE-802.3 ( 4 ) xor 0xffffffff ) xor 433571281 d.h. also erstes CRC32-IEEE-802.3 ( 4 ) xor 0xffffffff des ist 0x00000004 xor 0xffffffff = 0xfffffffb (oder?) und jetzt 433571281 mit 0xfffffffb (oder?). Deshab ich immer über Bits gemacht (geht des anders? ich progge eigg in java und da mach ich des Bitweise (also mach die beide zu Binärzahlen und dann ganz einfach xor pro bit)) und habs nochmal mit dem Calculator Calculator - Free Online Javascript Calculator gemacht. da kommt bei mir [16 28 3a 2a] raus des jetzt noch reversen [2a 3a 28 16]. Des passt immernoch nicht^^
      Ich bin viel zu doof xD
      mfg funjoker^^
    • [FONT="Courier New"]CRC32 ( BitConverter.GetBytes(4) ) --> 1373222836
      1373222836 Xor 433571281 --> 1208906341
      1208906341 ---[Hex]---> 480e7265 ---[reverse]---> 65720e48[/FONT]

      Welche CRC32 Funktion benutzt du? (ich hab hier mal das xor 0xffffffff weggelassen das dies schon in meiner crc32 funktion getan wird.

      Edit: Sorry ich hatte die Funktion [FONT="Courier New"]BitConverter.GetBytes()[/FONT] vergessen einzubauen aber eigentlich muss bei deiner CRC32 funktion dabei stehen wie man die benutzt ( Das ist auf die bezogen die ich benutzte .. siehe source code ). [FONT="Courier New"]BitConverter.GetBytes(4) --> {4 & 255, 4 >> 8 & 255, 4 >> 16 & 255, 4 >> 24 & 255}[/FONT]
    • also ich bekomm schon 5 packete ohne ihrgendein pw oder id einzugeben

      00 1a 4f d1 f0 3b 00 b0 8c 02 ec 49 08 00 45 00 ..O..;.....I..E.
      00 34 2d 64 40 00 80 06 bd 0c c0 a8 02 65 c3 3b .4-d@........e.;
      8a 0a c1 67 59 d8 e2 a9 25 e5 00 00 00 00 80 02 ...gY...%.......
      20 00 1a ee 00 00 02 04 05 b4 01 03 03 08 01 01 ...............
      04 02
      ..

      Das ist das erste 0.o komisch komisch komisch ich sehe zwar 5e und 80 und die 00 aber net so viele 00 und es ist auch entweder eine lange id oder ich weiß nicht genau was die id ist :D