Ich versuche Tcpdump zu öffnen, um UDP-Pakete von einem Python-Skript zu erfassen. Hier ist mein Code:Tcpdump: Kann Pakete von Python-Skript nicht erfassen
os.system("tcpdump -i wlp2s0 -n dst 8.8.8.8 -w decryptedpackets.pcap &")
testfile = urllib.URLopener()
s = socket(AF_INET, SOCK_DGRAM)
host = "8.8.8.8"
port = 5000
buf = 1024
addr = (host, port)
s.connect((host, port))
f = open("file.txt", "rb")
data = f.read(buf)
while (data):
if (s.sendto(data, addr)):
print "sending ..."
data = f.read(buf)
ich in der Lage bin, die Pakete zu erfassen (PCAP-Datei hat Inhalt), wenn ich manuell diesen Befehl in Shell ausführen:
tcpdump -i wlp2s0 -n dst 8.8.8.8 -w decryptedpackets.pcap &
jedoch Wenn ich os.system verwenden () Ich kann die Pakete nicht erfassen. (Wenn ich die pcap-Datei öffnen, finde ich es leer)
Ich habe überprüft und festgestellt, dass es ein Prozess ist, der erstellt wird, wenn das Python-Skript ausgeführt wird:
Wurzel 10.092 0,0 0,0 17.856 1.772 Punkte/19 S 10.25 00.00 tcpdump -i wlp2s0 -n dst 8.8.8.8 -w decryptedpackets.pcap
auch ich dies als sudo Benutzer renne keine Erlaubnis Probleme zu vermeiden.
Irgendwelche Vorschläge, was könnte dieses Problem verursachen?
Was genau * ist * das Problem? Sie haben 'tcpdump', um Pakete in eine '.pcap'-Datei zu schreiben. Und Ihre 'ps' Ausgabe zeigt, dass sie erfolgreich gestartet wurde. Dieser Teil scheint zu funktionieren. Aber dann öffnest du eine 'Datei.txt' und sendet seinen Inhalt an einen Remote-Host. Was hast du erwartet? –
Das Problem ist, dass, wenn ich das os.system() ausführen, die PCAP-Datei leer ist, ohne eingefangene Pakete. Wenn ich den tcpdump-Befehl in der Shell manuell ausführe, hat die pcap-Datei jedoch den Inhalt –
Verwenden Sie nicht '&' und wählen Sie eine gute Alternative aus dem 'subprocess'-Modul. –