Sie sind auf Seite 1von 3

Bot Coding - Series C# 3#

Packets Sniffen und Lesen

Zum Feedback:
Erstmal danke fr das ganze Feedback, zu der Allgemeinheit: Ja ich erklre anhand Silkroad, da ich mich nicht mit anderen Spielen auskenne, jedoch kann ich euch sagen das zumindest die Proxy und das was das Sniffen angeht trotzdem auch in anderen Spielen funktionieren sollte. Jedoch die Packets zu lesen ist wohl bei jedem Game anders in Silkroad sind es die Opcode und in .. sind es die.. ! Um das herauszufinden kann man ausprobieren oder das nicht ganz leichte Reserven von dem Clienten. Zu der Rechtschreibung, ja ich habe mir in den ersten beiden Teilen nicht wirklich viel Mhe gegeben nach Rechtschreibfehlern zu suchen. Jedoch werde ich mich in diesen und in den nchsten Teil/en bemhen sie zu verhindern. Zur ReadPacket Class: Ja diese ist wirklich nicht so besonders daher hier eine neue von mit geschriebene Klasse: http://paste.cp-g.net//view.php?id=1641 Ist noch nicht ganz fertig funktioniert aber, und reicht erstmal fr den Sniffer aus.

So nun aber zum Sniffen


Wie ihr nun Sniffen knnt, habe ich ja schon im letzten Teil angesprochen. Nun noch ein kleiner Tipp wie ihr das die Proxy so einstellen knnt das sie auch mit anderen Games funktioniert. Als aller erstes ladet ihr euch Wireshark herunter, es gibt dafr genug Anleitungen wie man das einstellt. So nun startet ihr euer Spiel und Wireshark wird euch den Netzwerk Verkehr anzeigen, und mit ein bisschen Testen knnt ihr nun die Ip und Port des Gameservers. So nun ffnet ihr den GameClient oder GameContent zB in Silkroad Media.pk2 nach der IP und nach dem Port. Und ersetzt sie. Achtung es kann sein das es Probleme mit der Lnge der IP / Port gibt. Einfach mal testen. So nun wen ihr das alles geschafft habt, knnt ihr mit dem Sniffen loslegen. Also loggt euch ein und geht Ingame. Stellt euch zu einer Level Stelle. Und wartet ab bis ein Monster spawnt. Schaut nun in den Sniffer herein und schaut euch das letzte grere Packet an. Nun wartet ihr erneut auf ein Monster Spawn, und schaut euch erneut das Packet an und vergleicht es mit dem letzdem Spawn Packet, wen diese ungefhr gleich aussehen, scheint es wohl das richtige zu sein. Falls ihr euch nicht sicher seit, wartet erneut auf ein Spawn. Und schaut in den Sniffer. So wenn ihr euch sicher seit dann geht es weiter. Noch zum Beispiel meine Ersnifften Packets (Nicht aus iSRO sondern ausgedacht (von einem lteren Emulator geklaut :) ) Diese dienen wirklich nur als Beispiel:

1# AA FF 30 D7 00 00 01 10 AD DA 4F 5A AF A6 B3 B6 7E 91 01 95 F1 B2 B3 A9 E4 19 14 AA E1 E2 A3 9A 40 98 CD BA 00 00 00 01 00 00 01 00 10 F1 FF AF A8 3D 01 5A FF AF 10 F1 A8 5A 3D 01 00 01 AA FF 01 B1 C1 08 00 00 F1 2# AA FF 30 D7 00 00 F1 10 FA 63 6F 5E 56 A6 BE D6 EE 91 01 95 F4 B5 A3 AA E4 19 FF AA AB CD A4 9A 40 41 CD BA 00 00 00 01 00 00 01 00 10 F1 FF AF A8 3D 01 5A FF AF 10 F1 A8 5A 3D 01 00 01 AA FF 01 B1 C1 08 00 00 F1

So nun in Silkroad wissen wir schon mal welche Bytes wir erstmal Ignorieren, in anderen Games lassen wir das erstmal so. Ersten 2 Bytes ist ein ushort wert und das ist die Size. Die nchsten 2 Bytes sind ein ushort und ist der Opcode. Die nchsten 2 sind Security Informationen die wir in dem Fall ignorieren knnen (Siehe SilkroadSecurity by Drew Benton) . Also: 01 10 AD DA 4F 5A AF A6 B3 B6 7E 91 01 95 F1 B2 B3 A9 E4 19 14 AA E1 E2 A3 9A 40 98 CD BA 00 00 00 01 00 00 01 00 10 F1 FF AF A8 3D 01 5A FF AF 10 F1 A8 5A 3D 01 00 01 AA FF 01 B1 C1 08 00 00 F1 2# F1 10 FA 63 6F 5E 56 A6 BE D6 EE 91 01 95 F4 B5 A3 AA E4 19 FF AA AB CD A4 9A 40 41 CD BA 00 00 00 01 00 00 01 00 10 F1 FF AF A8 3D 01 5A FF AF 10 F1 A8 5A 3D 01 00 01 AA FF 01 B1 C1 08 00 00 F1

So nun berlegen wir was dort drin stehen knnte, und ob wir die Information brauchen. Position (Brauchen wir erstmal nicht) (x y und u) (In Silkroad noch xSector und ySector) Monster ID (Brauchen wir nicht) Spawn ID (Brauchen wir um dieses spter anzugreifen.) Vlt noch aktuelle HP / MP falls vorhanden. ( Brauchen wir nicht) Status (Tot oder lebend) ( Gehen wir davon aus das Monster lebt, in diesem Tutorial)

Also gut vergleichen wir doch mal die beiden schlielich sollen ja zu mindestens die Mob ID gleich sein, falls wir bei den selben Monstern gesnifft haben. (Rot) Unterschied. (Grn) Gleich 01 10 AD DA 4F 5A AF A6 B3 B6 7E 91 01 95 F1 B2 B3 A9 E4 19 14 AA E1 E2 A3 9A 40 98 CD BA 00 00 00 01 00 00 01 00 10 F1 FF AF A8 3D 01 5A FF AF 10 F1 A8 5A 3D 01 00 01 AA FF 01 B1 C1 08 00 00 F1 F1 10 FA 63 6F 5E 56 A6 BE D6 EE 91 01 95 F4 B5 A3 AA E4 19 FF AA AB CD A4 9A 40 41 CD BA 00 00 00 01 00 00 01 00 10 F1 FF AF A8 3D 01 5A FF AF 10 F1 A8 5A 3D 01 00 01 AA FF 01 B1 C1 08 00 00 F1 Nun sehr informativ xD. berlegen wir was gleich sein knnte:

Monster Name / Monster ID HP / MP falls vorhanden Status (Tod oder Lebend )

Also dann steht wohl im Roten Bereich die Position und die Spawn ID. Nun berlegen wir einmal wie lang die Informationen sein knnten. Positionen sind wohl meistens als Float gespeichert, zu mindestens in 3D Games. Also Float = 8 Bytes. Spawn ID ist wohl kaum eine Negative Zahl oder eine mit Nachkommastelle. Also vllt uint (4bytes) oder ushort (2bytes) . Oder doch sogar Long aber das denke ich jetzt mal nicht das solche hohen Zahlen in MMORPGS bentigt werden. Also nun knnen wir testen ob die ersten 8bytes ein Teil der Postion darstellt (x). In Silkroad gibt es jedoch noch die Information (x Sektor, und y Sektor) die in der Regel als einzelner Byte gespeichert sind. Also nehmen wir einfach mal an die ersten 2 sind die x und y Sektoren. ( Blau) 01 10 AD DA 4F 5A AF A6 B3 B6 7E 91 01 95 F1 B2 B3 A9 E4 19 14 AA E1 E2 A3 9A 40 98 CD BA So testen wir nun die nchsten 8bytes als Position X. ( Grn ) 01 10 AD DA 4F 5A AF A6 B3 B6 7E 91 01 95 F1 B2 B3 A9 E4 19 14 AA E1 E2 A3 9A 40 98 CD BA So die nchsten 8 dann als Position Y, und die danach als Position Z ( Rot, Geld) 01 10 AD DA 4F 5A AF A6 B3 B6 7E 91 01 95 F1 B2 B3 A9 E4 19 14 AA E1 E2 A3 9A 40 98 CD BA So nun sehen wir es bleiben noch 4 Bytes brig also ein unsigned int. (Schwarz) 01 10 AD DA 4F 5A AF A6 B3 B6 7E 91 01 95 F1 B2 B3 A9 E4 19 14 AA E1 E2 A3 9A 40 98 CD BA Also nun testen wir doch einfach ob die reihen folge so stimmt und lesen die Position X und Y aus, und verglichen diese mit der Angabe ingame. Sollte diese ungefhr bereinstimmen passt es wohl. Bei mir ist jedoch nun ein Fehler die X Koordinate stimmt berein aber die Y nicht. Also nicht verzweifeln weiter probieren bis es passt bei mir ist es so das nach dem Testen auffllt das sich Z und Y vertauscht haben bzw. der Server Sendet erst X dann Z dann Y. Also nun so 01 10 AD DA 4F 5A AF A6 B3 B6 E4 19 14 AA E1 E2 A3 9A 7E 91 01 95 F1 B2 B3 A9 40 98 CD BA Sektor Position X Position Z Position Y Spawn ID

So das war es dann auch erstmal, das selbe knnt ihr jetzt mit dem Attack Packet machen. Verzweifelt nicht wen es beim ersten versuch nicht klappt so lange probieren bis es klappt. Also Viel Spa beim probieren. Nochmal zum Sektor: In anderen Games geht einfach mal davon aus das nur X Y Z gibt.