Hallo stagetwo,
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Update: 7.März.2011
23:26Uhr
So, mein Tcp-Programm ist weiter als vorher.
Wollte nun einen Login machen nur ich wüsste nicht welches Packet das ist.
Habe mit 3Programmen die Packete ausgelesen aber da steht nix was dem Login ähnlich sein könnte.
- [C->J](9000)
- [J->C](600D)0101000520
- [J->C](600D)000300020002
- [J->C](600D)01010000A1
- [J->C](0)FF
- [J->C](6107)
- [J->C](A107)020011006773706B72312E6A6F796D61782E636F6DBD320111006773707573312E6A6F796D61782E636F6DBD32
- [J->C](0)FF
- [J->C](0)FF
- [J->C](0)FF
- [J->C](0)FF
- [C->J](9000)
- [J->C](600D)0101000520
- [J->C](600D)0001000199090500000002
- [C->J](7007)02
- [S -> C][1007]
- 00 00 00 00 ................
- 00 00 00 00 ................
- [S -> C][0FF1]
- 01 00 00 00 ................
- 00 00 00 00 ................
- [S -> C][A107]
- 02 ................
- 00 ................
- 11 00 ................
- 67 73 70 6B 72 31 2E 6A 6F 79 6D 61 78 2E 63 6F gspkr1.joymax.co
- 6D m...............
- BD 32 .2..............
- 01 ................
- 11 00 ................
- 67 73 70 75 73 31 2E 6A 6F 79 6D 61 78 2E 63 6F gspus1.joymax.co
- 6D m...............
- BD 32 .2..............
- [S -> C][0FF2]
- 00 00 00 00 ................
- 00 00 00 00 ................
- [S -> C][0FF2]
- 00 00 00 00 ................
- 00 00 00 00 ................
- [S -> C][0FF3]
- 08 00 00 00 ................
- 06 00 00 00 ................
- [S -> C][0FF3]
- 00 00 00 00 ................
- 01 00 00 00 ................
- [C -> S][7007]
- 02 ................
Ausschnitte des Codes fürs einloggen.
- Func BeginPacket($opcode)
- $globalSendBuffer = ""
- $globalSendSize = 0
- $sOpcode = HexToStrWord(Hex($opcode))
- $globalSendBuffer = StringMid($sOpcode, 3, 2) & StringMid($sOpcode, 1, 2)
- $globalSendBuffer = $globalSendBuffer & "0000" ; Security bytes
- ;MsgBox(0, "", $globalSendBuffer)
- EndFunc
- Func HexToStrWord($var)
- $len = StringLen($var)
- if $len > 4 then
- return StringRight($var, 4)
- elseif $len == 4 then
- return $var
- elseif $len == 3 then
- return "0" & $var
- elseif $len == 2 then
- return "00" & $var
- elseif $len == 1 then
- return "000" & $var
- endif
- EndFunc
- Func AppendByte($value)
- $sValue = HexToStrByte(Hex($value))
- $globalSendBuffer = $globalSendBuffer & $sValue
- $globalSendSize = $globalSendSize + 1
- EndFunc
- Func HexToStrByte($var)
- $len = StringLen($var)
- if $len > 2 then
- return StringRight($var, 2)
- elseif $len == 2 then
- return $var
- else ; Error condition
- return "00"
- endif
- EndFunc
- Func AppendWord($value)
- $sValue = HexToStrWord(Hex($value))
- $globalSendBuffer = $globalSendBuffer & StringMid($sValue, 3, 2) & StringMid($sValue, 1, 2)
- $globalSendSize = $globalSendSize + 2
- EndFunc
- Func AppendString($value)
- For $i = 1 to StringLen($value) Step 1
- $xh = StringMid($value, $i, 1)
- $sValue = HexToStrByte(Hex(Asc($xh)))
- $globalSendBuffer = $globalSendBuffer & $sValue
- $globalSendSize = $globalSendSize + 1
- Next
- EndFunc
- Func EndPacket()
- $sSize = HexToStrWord(Hex($globalSendSize))
- $globalSendBuffer = (StringMid($sSize, 3, 2) & StringMid($sSize, 1, 2)) & $globalSendBuffer
- ;MsgBox(0, "", $globalSendBuffer)
- EndFunc
- Func GetPacket()
- return _HexToString($globalSendBuffer)
- EndFunc
- Func _Gui()
- $msg = GUIGetMsg()
- Select
- Case $msg = $GUI_EVENT_CLOSE
- SetError(-2)
- Exit
- Return
- Case $msg = $controlLogin
- $n = GUICtrlRead($controlName)
- If StringLen($n) == 0 Then
- MsgBox(0, "", "Account eingeben")
- Return
- EndIf
- $p = GUICtrlRead($controlPass)
- If StringLen($p) == 0 Then
- MsgBox(0, "", "Password eingeben")
- Return
- EndIf
- $s = "113" ; Helios
- ;~ MsgBox(0, "", $n & " " & $p & " " & $s)
- ;~ $doRequestStats = False
- BeginPacket(0x6102)
- AppendByte(18)
- AppendWord(StringLen($n))
- AppendString($n)
- AppendWord(StringLen($p))
- AppendString($p)
- ;~ AppendWord(ServerToId($s))
- AppendWord(113)
- EndPacket()
- TCPSend($iSocket, GetPacket())
- EndSelect
- EndFunc ;==>_Gui
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ich habe mich grade mal hingesetzt und wollte ein paar Packete in iSro versenden.
Benutzen tuhe ich den PHMediaPatcher um meine IP auf 127.0.0.1 Port: 15778 zu patchen.
MultiSocket + nuConnector v8.1 + MultiSocket (By Kaz)
Silkroad Online Launcher
Es klappt eigentlich alles ganz gut, nur mit den Packeten umrechnen nicht so.
z.B. der Code für hinsetzen aus dem 'Silkroad Packet Analysator OS'
Der Code für "hallo" schreiben aus dem 'edxSilkroadLoader5'
Bevor ich den AutoIt poste ist hier mal ein TCPSende der den Char zum hinsetzen bringt. (iSro klappt es zu 100%)
war nur zufall, dass er klappte.
So habe ich die Packete fürs hinsetzen/aufstehen ausgelesen.
Wenn ich den _HexToString("01004F70010004") umwandel mit diesem Code.
- $recv = "01004F70010004"; TCPRecv($iSocket, 48)
- $recv = BinaryToString($recv)
- $recv = _StringToHex($recv)
- $opcode2 = StringMid($recv, 5, 2) ;ab 5te Zeichen die 2 Zeichen wählen
- $opcode = StringMid($recv, 7, 2) ;ab 7te Zeichen die 2 Zeichen wählen
- $opcode = $opcode & $opcode2 ; Hex umtauschen Bsp: 6773 zu 7367
- Msgbox(0,"",$opcode)
Dann kommt da 3030 raus.
Meine eigentliche frage ist jetzt, wie ich die Opcodes,packete nun richtig umwandel und dann sende.
z.B. wie könnte ich den text 'hallo' senden ?
---
Ich hoffe ich habe mich verständlich ausgedrückt da es doch schon spät ist
Update 17:15 Uhr. AutoIt Quellcode hinzugefügt.
- #include <string.au3>
- ;#########################################
- ;
- ;Code by Awesome aka Alexander
- ;Visit me on http://the-franky.de
- ;
- ;#########################################
- HotKeySet("{ESC}", "_Exit") ; Programm Exit
- HotKeySet("{F5}", "_Senden") ; TCP Senden
- TCPStartup()
- $iIP = TCPNameToIP("127.0.0.1")
- $iSocket = TCPConnect($iIP, 22580)
- If $iSocket = -1 Then
- $Error = MsgBox(270629, "Error", "Fehler beim Verbinden mit dem TCP")
- Select
- Case $Error = 4 ;Versuchen
- $iIP = TCPNameToIP("127.0.0.1")
- $iSocket = TCPConnect($iIP, 22580)
- If $iSocket = -1 Then MsgBox(8224, "Error", "Erneuter Verbindungsfehler, Programm wird nun beendet.")
- Exit
- Case $Error = 2 ;Abbrechen
- Exit 0
- EndSelect
- EndIf ;Verbindung überprüfen
- AdlibRegister("_Empfangen")
- While 1
- Sleep(250)
- WEnd
- Func _Empfangen()
- ;Daten empfangen
- $recv = TCPRecv($iSocket, 48) ;Empfangen
- $recv = BinaryToString($recv) ;Umwandeln in String
- $recv = _StringToHex($recv) ;umwandeln Strin to Hex
- ;Verändern
- $opcode2 = StringMid($recv, 5, 2)
- $opcode = StringMid($recv, 7, 2)
- $opcode = $opcode & $opcode2
- Switch $opcode
- Case "704F" ;Hinsetzen
- $recvtitle = "Hinsetzen"
- ConsoleWrite(@CRLF & "+>" & $recvtitle & @CRLF)
- Case "70B1" ; Stall öffnen
- $recvtitle = "Stall öffnen"
- ConsoleWrite(@CRLF & "+>" & $recvtitle & @CRLF)
- EndSwitch
- EndFunc ;==>_Empfangen
- Func _Senden()
- TCPSend($iSocket, _HexToString("01004F70010004")) ;Hinsetzen
- EndFunc ;==>_Senden
- Func _Exit()
- Exit
- EndFunc ;==>_Exit
- ;Hinsetzen
- ;~ [C->J](704F)04
- ;Stall öffnen mit dem Title "Awesome"
- ;~ [C->J](70B1)070041007700650073006F006D006500