Hi Leute!
Ich habe mir ein Programm zusammen gestellt, das auf einem TCP Port horcht und auf eine Verbindung wartet.
Zweck des Programms soll sein, herauszufinden ob Anfragen an diesen Port gestellt werden.
Bei mir ist das der Port 443, der für HTTPS Verbindungen verwendet wird.
Meine Fragen:
1.) Kennt jemand ein fertiges Programm, das mir diese Möglichkeit bietet? Es sollte allerdings keinen Sniffer wie Wireshark oder der gleichen sein. Es sollte auch mehrere Netzwerkadapter unterstützen.
2.) Mein Programm funktioniert soweit recht gut. Problem ist nur, dass es manchmal vorkommt, dass beim ersten Verbindungsversuch keine IP Adresse ausgegeben wird. Sprich der Aufruf des Netstat Befehls kein Ergebnis bringt.
3.) Und größtes Problem für mich. Das Script funktioniert unter Windows Server 2003 nicht. Unter WinXP funktoniert es, bis auf das unter Punkt 2 beschriebenen Problem.
Spoiler anzeigen
#include <Constants.au3>
#include <WinAPI.au3>
#include <Date.au3>
$ProcessID = _WinAPI_GetCurrentProcessID()
;HotKey für das Beenden vom Server
HotKeySet("{ESC}","_Shutdown")
Dim $ip[5]
$ip[1] = @IPAddress1
$ip[2] = @IPAddress2
$ip[3] = @IPAddress3
$ip[4] = @IPAddress4
$input = InputBox("Select IP","1 " & $ip[1] & @CR & "2 " & $ip[2] & @CR & "3 " & $ip[3] & @CR & "4 " & $ip[4], "1")
If $input > 4 Or $input < 1 Then Exit
; Variablen
$ServerIP = $ip[$input]
$ServerPort = 443
$ConnectedSocket = -1
Dim $line2
;TCP starten
TCPStartup()
;MainSocket erstellen
$MainSocket = TCPListen($ServerIP, $ServerPort )
;Bei Fehlschlag Server beenden
If $MainSocket = -1 Then Exit
While 1
$ConnectedSocket = TCPAccept( $MainSocket)
If $ConnectedSocket >= 0 Then
$commandline = @ComSpec & ' /A /C netstat -a -n -o| find "' & $ServerIP & ":" & $ServerPort & '"'
$id = Run($commandline, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
$line = StdoutRead($id)
If @error Then ExitLoop
;~ If $line <> "" Then
If StringInStr($line, " " & $ProcessID) = True And StringInStr($line,"0.0.0.0") = False Then ;And StringInStr($line,"HERGESTELLT") = True
$line2 = $line2 & $line
EndIf
;~ EndIf
Wend
;~ $line2 = StringRegExpReplace($line2, "[" & Chr(13) & "ABCDEFGHIJKLMNOPQRSTUVWXYZ]", "")
;~ $line2 = StringReplace($line2,Chr(13), "?")
;~ $line2 = StringReplace($line2,Chr(10), "?")
$line2 = StringRegExpReplace($line2, "[ABCDEFGHIJKLMNOPQRSTUVWXYZ]", "")
$line2 = StringStripWS($line2,5)
$line2 = StringTrimLeft($line2, StringInStr($line2,Chr(13),"",-2))
TrayTip("Info",$line2, 5)
$file = FileOpen(@ScriptDir & "\Connections.txt",9)
;~ FileWriteLine($file, _DateTimeFormat( _NowCalc(),2) & " " & @HOUR & ":" & @MIN & ":" & @SEC & " " & $line2 & @CRLF)
FileWrite($file, _DateTimeFormat( _NowCalc(),2) & " " & @HOUR & ":" & @MIN & ":" & @SEC & " " & $line2 & @CRLF)
FileClose($file)
TCPCloseSocket($ConnectedSocket)
$line2 = ""
$line = ""
$id = ""
EndIf
WEnd
Func _Shutdown()
ShellExecute(@ScriptDir & "\Connections.txt")
TCPCloseSocket($ConnectedSocket)
TCPShutdown()
Exit
EndFunc