You are on page 1of 3

Bot Coding - Series C# 3#

Packets Sniffen und Lesen

Zum Feedback:
Erstmal danke für das ganze Feedback, zu der Allgemeinheit: Ja ich erkläre 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 Mühe gegeben nach Rechtschreibfehlern zu suchen. Jedoch werde ich mich in diesen und in den nächsten Teil/en bemühen 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 für den Sniffer aus.

So nun aber zum Sniffen
Wie ihr nun Sniffen könnt, habe ich ja schon im letzten Teil angesprochen. Nun noch ein kleiner Tipp wie ihr das die Proxy so einstellen könnt das sie auch mit anderen Games funktioniert. Als aller erstes ladet ihr euch Wireshark herunter, es gibt dafür 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 könnt 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 Länge der IP / Port gibt. Einfach mal testen. So nun wen ihr das alles geschafft habt, könnt 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 größere 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 ungefähr 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:

( Brauchen wir nicht) Status (Tot oder lebend) ( Gehen wir davon aus das Monster lebt.) Vlt noch aktuelle HP / MP falls vorhanden. und ob wir die Information brauchen. Überlegen wir was gleich sein könnte: . 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 könnte. Ersten 2 Bytes ist ein ushort wert und das ist die Size.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 diesem Tutorial) Also gut vergleichen wir doch mal die beiden schließlich sollen ja zu mindestens die Mob ID gleich sein. Die nächsten 2 sind Security Informationen die wir in dem Fall ignorieren können (Siehe SilkroadSecurity by Drew Benton) . Die nächsten 2 Bytes sind ein ushort und ist der Opcode. (Rot) Unterschied. in anderen Games lassen wir das erstmal so. – – – – – 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 später anzugreifen. (Grün) 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. falls wir bei den selben Monstern gesnifft haben.

Also nehmen wir einfach mal an die ersten 2 sind die x und y Sektoren. und verglichen diese mit der Angabe ingame. der Server Sendet erst X dann Z dann Y. und y Sektor) die in der Regel als einzelner Byte gespeichert sind. zu mindestens in 3D Games. Also nun können wir testen ob die ersten 8bytes ein Teil der Postion darstellt (x). Also Float = 8 Bytes. das selbe könnt ihr jetzt mit dem Attack Packet machen. 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. Nun überlegen wir einmal wie lang die Informationen sein könnten. Oder doch sogar Long aber das denke ich jetzt mal nicht das solche hohen Zahlen in MMORPGS benötigt werden. 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. Also nicht verzweifeln weiter probieren bis es passt bei mir ist es so das nach dem Testen auffällt das sich Z und Y vertauscht haben bzw. Positionen sind wohl meistens als Float gespeichert. Nochmal zum Sektor: In anderen Games geht einfach mal davon aus das nur X Y Z gibt. ( 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 nächsten 8bytes als Position X. ( Grün ) 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 nächsten 8 dann als Position Y. Bei mir ist jedoch nun ein Fehler die X Koordinate stimmt überein aber die Y nicht. Also vllt uint (4bytes) oder ushort (2bytes) . (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. Spawn ID ist wohl kaum eine Negative Zahl oder eine mit Nachkommastelle. und die danach als Position Z ( Rot. In Silkroad gibt es jedoch noch die Information (x Sektor.– – – 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. . Sollte diese ungefähr übereinstimmen passt es wohl. Verzweifelt nicht wen es beim ersten versuch nicht klappt so lange probieren bis es klappt. Also Viel Spaß beim probieren.