Packets an Spiel senden

  • Hi,
    ich wollte nun auch mal versuchen Packets an das Spiel Silkroad Online (Privateserver) zu senden, jedoch weiß ich nicht genau wie das funktionieren soll. Hab zuvor mit WPE Pro nach Packets gescannt und als Test will ich nun mal dieses Packet senden: 01 00 4F 70 59 75 04 (hinsetzen/aufstehen).
    Kann mir jemand sagen, wie ich da vorgehen muss? Arbeite mit VB.NET, aber ist auch egal wenn Antworten mit C#-Code kommen..
    Achja und noch was: wenn ich SRO ganz normal starte, dann steht über dem Packet meine IP und beim Senden bekomme ich sofort einen Disconnect. Wenn ich jedoch mit SRProxy+SRO-DB Bot drinne bin, dann steht oben drüber 127.0.0.1:15788 und es klappt, dann..heißt das, ich muss das dann auch noch irgendwie mit in mein kleines Tool bringen, also dass er sich irgendwie über den Port 15788 verbindet?


    Hoffe mir kann da jemand helfen!

  • Also ich wollte es erstmal so versuchen, mit Programmen die das Entschlüsseln usw. für mich erledigen. Also bin ich mit SrProxy und dem SRO-DB Bot eingeloggt und kann dann mit WPE Pro Packets senden, z.B. um sich hinzusetzen, Pots kaufen, laufen usw. Kann mir jemand sagen, wie ich nun dieses Packet (siehe Bild) in VB.NET oder C# senden kann?
    Ich hab im Internet schon gelesen, dass man es mit TCPClient-Klasse macht, aber ich weiß nicht genau wie das gehen soll..IP und Port muss ich doch dann von SrProxy verwenden oder? Also 127.0.0.1:15778, aber wie sende ich das dann?

  • Also ich würde dir raten, eine Kombination aus phConnector und PHAnalyzer zu benutzen.
    In der Standartkonfiguration connectest du mit dem Clienten auf den Proxy und der Proxy dann auf den GameServer, der Proxy übernimmt das Entschlüsseln der Packete automatisch.
    Das besondere am phConnector ist, dass er einen zweiten Port hast, auf den du deine Programm connecten kannst.
    Über diesen Port kannst du alle gesendeten pakete abgreifen bzw. an Client/Server senden.
    Also einfach mit nem Socket auf den BotPort vom Proxy connecten, dein gewünschtes Packet als Byte Array abspeichern und per Socket.Send() Methode an den Proxy senden.


    MfG

  • Also ich hab mir jetzt den phConnector runtergeladen und in der Config Datei folgendes:

    Code
    1. [phConnector]
    2. IP=127.0.0.1
    3. Port=15779
    4. LoginListenPort=15778
    5. WorldListenPort=15700
    6. BotPort=9000
    7. ServerBlock=
    8. ClientBlock=
    9. Dev=0


    SrProxy:

    Code
    1. Send to host:
    2. IP: 127.0.0.1
    3. Port: 15779
    4. Listen:
    5. Port: 15778
    6. Bot: 9000


    Wenn ich den phConnector starte, öffnet sich die Konsole mit folgendem Inhalt:

    Code
    1. Error starting the login server: 10048
    2. World Server is now online [15700]
    3. Error binding on port 9000 for bot connections
  • Das muss so aussehen:

    Code
    1. [phConnector]
    2. IP= IP des LoginServers
    3. Port=15779
    4. LoginListenPort=15778
    5. WorldListenPort=15777
    6. BotPort=9000 | 22580 (für phAnalyzer)
    7. ServerBlock=
    8. ClientBlock=
    9. Dev=0
  • So, also ich hab nun auch den phAnalyzer gefunden und habs nun so versucht: phConnector mit dieser Config gestartet:

    Code
    1. [phConnector]
    2. IP=72.55.143.209
    3. Port=15779
    4. LoginListenPort=15778
    5. WorldListenPort=15777
    6. BotPort=22580
    7. ServerBlock=
    8. ClientBlock=
    9. Dev=0


    phAnalyzer gestartet, oben in der Leiste steht dann auch "Connected" und anschließend ZSZC über Silkroad.exe gestartet, aber mir wird gar nichts im phAnalyzer angezeigt, warum? Was fehlt mir denn noch?

  • Du darfst natürlich Sro nicht über die Silkroad exe starten, dann ensteht ja garkeine verbindung über den Proxy.
    Du musst mit einem loader den sro_client auf 127.0.0.1 und den in der phconnector Config eingestellen LoginListenPort umleiten.


    MfG

  • Ich hab den Mediapatcher benutzt, IP: 127.0.0.1 Port: 15778 und auf Patch geklickt, danach phConnector, phAnalyzer und Silkroad normal gestartet -> beim phAnalyzer wird nichts angezeigt, dann hab ich es nochmal mit dem HardMod Loader probiert, den ich normalerweise für iSRO benutze, bekomme beim Einloggen aber Failed to Connect to Server [C8]...ich blick da nicht mehr durch... -.-
    Welchen Loader soll ich denn für ZSZC benutzen?

  • Dein ziel ist es ja einfach packets an den server zu senden. Du brauchst einen proxy (bsp. nuconnector kennt jeder) die bessere alternative, dein eigenen proxy ist im grunde nur "handshake üerbrückung" so hast du einen tunnel worin du deine packets senden kanst. wenn dein plan so ist packets vom server zu bekommen, diese daten auszuwerten ("tool") und ein packet senden (vom "tool") was dann dein ziel wäre.
    Beispiel : Mobspawn


    Mob spawnt


    Server -> Client: Packet mit infos des mobs, ID, Position, Health, Level, Status, Skills, Art (general, champ, elite, giant usw) allerdings encrypted


    Raw packet von dem proxy encrypten und dir erstmal alles in einem analyzer anschauen kannst du selber machen oder einfach einen wie PhAnalyzer nehmen


    wenn du das packet encrypted im analyzer hast steht da nun der opcode und die daten s.o. aber es wird dir nicht als ID:0123456789 Level: 12 usw angezeigt sondern man muss manchmal umrechnen wie z.B. bei der Position. wenn du jetzt weißt wie dies packets geformt sind (vom client und vom server) kannst du jetzt dein tool coden das dir das alles macht.


    wenn der mobspawnt erfolgt ist und dein tool hat jetzt eine neue id in der liste kannst du dir anschauen wie es aussieht mit dem angriffs packet aussieht ich hab in erinnerung das es nicht arg so lang ist aber weiß leider nicht mehr genau wie es war auf jeden fall enthielt es die mob id des mobs das ich angegriffen habe.


    Jetzt sendet dein Tool über den proxy (proxy crypted das packet wieder) das packet und dein char greift an.


    falls du jetzt ne genaue anleitung willst wie man das coded ist das schlecht denn du wirst am ende sowieso nix verstehen.


    mach es so download phconnector und phanalyzer wie es der eine eben erwähnt hat und bastel dir ein wirklich sehr sehr einfaches tool was zunächst nur die mob infos listed.


    wenn du es nicht hin bekommst mit dem phconnector nimm einfach srproxy o.ä. multisocket wäre nicht schlecht findest du alles schon.
    du must in der media.pk2 deine ip ändern das du dann auf deine locale ip adresse connectest zum proxy dann verbindet dich der proxy mit dem gameserver, oder du nimmst dir nen loader der das tempoär macht. achja und du musst schon auf den port des proxy connecten oder den port des proxys so ändern das der analyzer conecten kann.


    falls du hilfe brauchst kannste mich pm´n

  • Hallo,
    also nach langem Rumprobieren hat es nun geklappt SRO auf den Proxy verbinden zu lassen und auch ein Packet zu senden, jedoch klappt das bei mir nur in VB6.
    Jedoch wollte ich es in VB.NET nachmachen, aber beim Senden des Packets passiert nichts..mit dieser Sub kann ich in VB6 ein Packet senden:
    [cs]
    Public Sub InjectPacket(rOpCode As String, sData As String, blnToServer As Boolean, blnEncrypted As Boolean)
    Dim sLen As String
    Dim sOpCode As String
    Dim sPacket As String
    sLen = longToHex(Len(sData) / 2)
    sOpCode = Right(rOpCode, 2) & Left(rOpCode, 2)
    If blnEncrypted Then
    If blnToServer Then
    sPacket = HexToString(sLen & sOpCode & "0300" & sData)
    Else
    sPacket = HexToString(sLen & sOpCode & "0400" & sData)
    End If
    Else
    If blnToServer Then
    sPacket = HexToString(sLen & sOpCode & "0100" & sData)
    Else
    sPacket = HexToString(sLen & sOpCode & "0200" & sData)
    End If
    End If
    cSocket.SendData sPacket
    End Sub
    [/cs]
    Dann rufe ich die Sub z.B. so auf und mein Char läuft nach vorne:
    [cs]
    InjectPacket "7021", "01865C32060A001706", True, False
    [/cs]
    Was ich nicht verstehe ist, warum ist in der letzten Zeile einfach nur "cSocket.SendData sPacket" und in VB.NET muss ich "socket.Send(buffer As Byte(), size As Integer, socketFlags As SocketFlags) benutzen? Wie kann ich also "7021" und "01865C32060A001706" als Byte senden?