WinCap packet sniffen und umleiten

  • Hallo Liebe Coder

    Ich versuche nun schon seit wochen ein gesnifftest packet umzumleiten. ich finde keine lösung ich würde mich auf eine antwort freuen.

    Hier mein code:

    [autoit]

    #include<Winpcap.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GuiEdit.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>
    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <Guilistview.au3>
    #include <Date.au3>
    #include <GuiStatusBar.au3>
    #include <ProgressConstants.au3>
    #include <Timers.au3>
    #include <INet.au3>
    #include <String.au3>
    #include <Constants.au3>
    #include <IE.au3>
    #Region ### START Koda GUI section ### Form=
    $hGui = GUICreate("", 377,94, 319, 239, $WS_POPUP, BitOR($WS_EX_LAYERED,$WS_EX_TOOLWINDOW,$WS_EX_TOPMOST))
    GUISetBkColor(0xABCDEF)
    _WinAPI_SetLayeredWindowAttributes($hGui, 0xABCDEF, 255)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 377, 73, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL),$WS_EX_TRANSPARENT)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetBkColor(-1, 0xABCDEF)
    $Input1 = GUICtrlCreateInput("", 0, 73, 280, 21)
    $Button1 = GUICtrlCreateButton("Send", 280, 73, 97, 21, $WS_GROUP)
    _GUICtrlEdit_SetReadOnly($Edit1, True)
    $oIE = _IECreateEmbedded ()
    GUICtrlCreateObj($oIE, -30, -30, 0, 0)

    [/autoit][autoit][/autoit][autoit]

    $filter = "tcp port 5400"
    $winpcap=_PcapSetup()
    If ($winpcap=-1) Then
    MsgBox(16,"Pcap error !","WinPcap not found !")
    exit
    EndIf
    $pcap_devices=_PcapGetDeviceList()
    If ($pcap_devices=-1) Then
    MsgBox(16,"Pcap error !",_PcapGetLastError())
    exit
    EndIf
    $int = $pcap_devices[0][0]
    $pcap = _PcapStartCapture($int, $filter, 0)
    If ($pcap = -1) Then
    MsgBox(16, "Pcap error !", _PcapGetLastError())
    EndIf
    while 1
    If IsPtr($pcap) Then
    $time0 = TimerInit()
    While (TimerDiff($time0) < 500)
    $packet = _PcapGetPacket($pcap)
    If IsInt($packet) Then ExitLoop
    $sniff = sniff($packet[3])
    If $sniff <> False Then
    $var = StringMid($sniff,1,1)
    If $var = "-" Then
    ConsoleWrite($sniff&@CRLF)
    If StringInStr($sniff, "2F67206720636D64206F6E") Then ; /gg cmd on
    GUISetState(@SW_SHOW,$hGui)
    WinActivate("[CLASS:D3D Window]")
    EndIf
    If StringInStr($sniff, "2F67206720636D64206F6666") Then ; /gg cmd off
    GUISetState(@SW_HIDE,$hGui)
    _GUICtrlEdit_SetText($Edit1, "")
    WinActivate("[CLASS:D3D Window]")
    EndIf
    EndIf
    EndIf
    WEnd
    EndIf
    If WinExists("[CLASS:D3D Window]") Then
    $size = WinGetPos("[CLASS:D3D Window]")
    WinMove ($hGui,"",$size[0]+223,$size[1]+31,377,94)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    If GUICtrlRead($Input1) = "help" Then
    GUICtrlSetData($Input1,"")
    _GUICtrlEdit_SetText($Edit1, "")
    _GUICtrlEdit_AppendText($Edit1, "count -> Count User"&@CRLF)
    _GUICtrlEdit_AppendText($Edit1, "ticket -> Open Ticket System"&@CRLF)
    _GUICtrlEdit_AppendText($Edit1, "info -> Server Info"&@CRLF)
    _GUICtrlEdit_AppendText($Edit1, "class -> Open the Class Ranking"&@CRLF)
    _GUICtrlEdit_AppendText($Edit1, "gm -> Show Online GM"&@CRLF)
    _GUICtrlEdit_AppendText($Edit1, "gmcount -> GM Count"&@CRLF)
    EndIf
    ;~ If GUICtrlRead($Input1) = "count" Then
    ;~ $countuser = _INetGetSource("http://atlantia.eu/Game%20Manager/G-OnlineUser.php")
    ;~ _GUICtrlEdit_SetText($Edit1, "")
    ;~ _GUICtrlEdit_AppendText($Edit1, "Online User = "&$countuser&@CRLF)
    ;~ EndIf
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    Else ; 15
    If WinGetState($hGui) = 15 Then
    WinSetState($hGui,"",@SW_HIDE)
    EndIf
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit]

    _PcapFree()

    [/autoit][autoit][/autoit][autoit]

    Func sniff($data)
    Local $ipheaderlen = BitAND(_PcapBinaryGetVal($data, 15, 1), 0xF) * 4
    Local $tcpoffset = $ipheaderlen + 14
    Local $tcplen = _PcapBinaryGetVal($data, 17, 2) - $ipheaderlen ; ip total len - ip header len
    Local $tcpheaderlen = BitShift(_PcapBinaryGetVal($data, $tcpoffset + 13, 1), 4) * 4
    Local $tcpsrcport = _PcapBinaryGetVal($data, $tcpoffset + 1, 2)
    Local $tcpdstport = _PcapBinaryGetVal($data, $tcpoffset + 3, 2)
    Local $tcpsequence = _PcapBinaryGetVal($data, $tcpoffset + 5, 4)
    Local $tcpflags = _PcapBinaryGetVal($data, $tcpoffset + 14, 1)
    Local $httpoffset = $tcpoffset + $tcpheaderlen + 1
    Local $httplen = $tcplen - $tcpheaderlen
    $sniff_packet = BinaryMid($data, $httpoffset)

    [/autoit][autoit][/autoit][autoit]

    If $httplen = 0 Then Return False ; empty tcp packet
    If $tcpsrcport = 5400 Then
    Return ">IN:" & $sniff_packet ; server ==> client
    EndIf
    If $tcpdstport = 5400 Then
    Return "-OUT:" & $sniff_packet ; client ==> server
    EndIf
    EndFunc

    [/autoit]
  • das mit den includes habe ich ja nur so so bin ich sicher das mir nichts fehlt^^

    ne blos ich habe ja das problem das ich ohne probleme packets filtern kann aber sie nicht weckleiten kann.
    habe auch schon viel probiert aber hat nichts gebracht

  • ich möchte einfach nur ein packet was ich definiere zb:
    If StringInStr($sniff, "2F616861") Then
    .... ;hier soll das packet weggeleitet werden
    Else
    ....
    Endif
    also wen das packet "2F616861" in den string ist soll es das packet ableiten.
    zur info mein progam läuft client side also soll es das packet abhalten den server zu erreichen.
    ich sniffe die packets mit wincap.

    blos ich finde keine methode um die packets wegzuleiten sagen wir ins lehre oder gleich das packet zu stopen so das es nicht den server erreicht.

  • könnte mir endlich mal einer helfen ich bin schom am ende mit meinen nerven :( :cursing: ;(


    Ich glaube nicht das du in dem Ton mehr Hilfe bekommst.....
    Ich bin mir nicht ganz sicher aber ich denke du könntest die Pakete Mittels TCP oder UDP Protokoll weiter senden. SChau dir einfach mal in der Hilfe den TCP oder UDP bereich an.
    lg Jakolo

    Edit wenn du die Pakete nur ins leere laufen lassen willst würde ich einfach den Port schließen oder die Server IP ändern....

  • alles schon versucht blos der server der sendet wen einer eine tcp connection öffnet ohne ein variablen string der vom client difinert wird
    conncetet wird automatisch die verbingung geschlossen also bräuchte ich eine möglichkeit über wincap oder so die ip zu ändern.
    bei das mit tcp griege ich erst ein packet dan ca 10 sec später ein dc packet. habe ja schon fast alles durch mir bleibt nur noch die wincap variante blos damit kenne ich mich nicht so gut aus^^

  • ich habe mich noch nicht mit deiner thematik oder überhaupt damit beschätigt packete abzufangen oder zu manipulieren.
    ich denke allerdings du solltest deine frage eher im autobot forum stellen und nicht hier.

  • Also eigentlich verstößt es doch gegen die Forenregeln ?
    Du willst ja eine Software entwickeln, die irgendwem schadet, sonst würdest du keine Packets sniffen wollen ...
    Sag doch mal konkret für welches Programm / Spiel du das benötigst.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Für das Spiel Flyff und nein es soll niemanden Schaden sondern schützen es soll ein Packetfilter werden daher verstoße ich gegen keine Regeln.

    Sprich ich will ein bestimmtes Packet abfangen damit es nicht mehr den gewünschten Effekt erzielen kann wie eine art Firewall halt ;)

    Einmal editiert, zuletzt von sedas19 (1. November 2010 um 20:47)

  • Es soll doch ein Paketfilter werden , wieso also closen?
    Es gibt hier im Forum genug Scripte die man auch für andere Zwecke benutzen kann...

    Ich finde das Thema "Packete abfangen" sehr interessant :rolleyes:

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • da ist ja mein problem ich kann tcp nicht nutzen da der server sonst ein dc packet sendet.
    aber das mit spiel manipulation ist ja lustig.
    Mattthias ich hoffe du weist das das dazu diehnen soll Manipulation zu verhindern aber egal^^.
    er schreiben dan denken ^^ xD ;)

  • ich bin auch gegen closen! aber meiner erfahrung nach wird sich hier trotzdem kaum ein qualifizierter / profi mehr zu dem thema äußern ;) ...scheint wie eine phobie zu sein wenn du gewisse wörter in einer kombination erwähnst. man kennt das ja von geheimdiensten z.B. "präsident & bombe" hier ist es halt z.B. "spiel & manipulation" (es muss nicht mal stimmen, aber hilfe wird trotzdem verweigert) ....also versuchs im autobot-forum....