124909
Goto Top

Powershell: TCP und UDP Verbindungen loggen und duplicate bzw. ähnliche Einträge entfernen

Hallo Freunde,

ich möchte von einem PC die TCP/UDP verbindungen loggen und diese in einer .txt oder .csv speichern.

Das Skript soll öfter laufen und möglichst viele Verbindungen zu registrieren (Ich denke da an einen einfachen Task)

Nun stelle ich mir die Frage, wie man realisieren kann dass das Skript quasi die ganze Zeit "listened" und neue Verbindungen ins Log schreibt, wenn das Überhaupt möglich ist. Außerdem soll es halt die Verbindungen nur einmalig loggen und nicht zig tausend Proxy-Verbindungen auflisten.

Ich schwierigkeiten bei der Umsezung des Skripts, da ich nicht weiß, wie ich doppelte Einträge direkt verwerfen kann.

Das ganze habe ich mir bisher mit
netstat -ano 

bearbeitet.

Habt Ihr Vorschläge/Anregungen ?

Content-Key: 303137

Url: https://administrator.de/contentid/303137

Ausgedruckt am: 29.03.2024 um 05:03 Uhr

Mitglied: 114757
Lösung 114757 28.04.2016 aktualisiert um 14:08:48 Uhr
Goto Top
Moin.
Das ist eher eine Aufgabe für einen Syslog-Server, an den der Router die Verbindungsdaten pusht...

Das ganze habe ich mir bisher mit
> netstat -ano 

bearbeitet.
An die Daten kommst du wesentlich komfortabler...
[System.Net.NetworkInformation.IPGlobalProperties]::GetIPGlobalProperties().GetActiveTcpConnections()
Liefert es dir frei haus, jetzt kannst du ja von mir aus mit Compare-Object die Duplicate aus der vorherigen Abfrage ausfiltern und die neuen mit Datum in ein Objekt schreiben und wegspeichern.

Aber das ist definitiv keine Aufgabe für einen Client.

Gruß jodel32
Mitglied: 124909
124909 28.04.2016 um 15:10:15 Uhr
Goto Top
Hey Jodel,

hab es am Ende doch anders geregelt, macht im Grunde das was ich möchte, danke für deinen Tipp

$FilePath = "C:\Log.txt"  
$Daten = netstat -ano | Out-File -FilePath $FilePath  -Append -Encoding utf8
Get-Content $FilePath | sort| Get-Unique | Set-Content $FilePath
Mitglied: 114757
Lösung 114757 28.04.2016 aktualisiert um 15:20:01 Uhr
Goto Top
Ich hätts jetzt so gemacht:
Jetzt hier in der Demo ohne das wegschreiben in eine Datei, sondern nur zur Demo als Anzeige:
# Funktion holt die aktuellen Verbindungsdaten ohne Localhost-Connections
function Get-RemoteConnections(){
    return [System.Net.NetworkInformation.IPGlobalProperties]::GetIPGlobalProperties().GetActiveTcpConnections() | ?{$_.LocalEndPoint -notlike '127.0.0.1*' -and $_.RemoteEndPoint -notlike '127.0.0.1*'} | select LocalEndpoint,RemoteEndpoint  
}
cls
# Aktuelle Verbindungen holen
$data = Get-RemoteConnections
while($true){
    # Aktuelle Verbindungen holen
    $current = Get-RemoteConnections
    # Daten vergleichen und nur die Differenzen aufzeichnen (heißt neue Verbindungen)
    $diff = compare $data $current -Property LocalEndPoint,RemoteEndPoint -PassThru | ?{$_.SideIndicator -eq '=>'}  
    # Neue Verbindungen zum Datenobjekt hinzufügen
    $data += $diff
    # Daten nur zur Info mal ausgeben
    $data | ft LocalEndpoint,RemoteEndpoint
    # Pause
    sleep 2
    cls
}
Mitglied: 124909
124909 28.04.2016 um 15:29:47 Uhr
Goto Top
Okay, das ist natürlich nochmal ne Klasse besser.


Sehr gut, Vielen Dank interessante Herangehensweise!!