2013-04-09 13 views
12

Ich möchte alle HTTP-Pakete in meinem Computer über Python schnuppern (version2.6 .. ist das möglich? Kann ich es mit scapy tun, oder ohne andere externe Module?Wie Sniff HTTP-Pakete in Python?

+5

zur Schließung Stimmen anbetrifft, ich denke, das ist eine gute Frage. Er fragt nach einer Technik, um ein bestimmtes Problem zu lösen, was ist das Problem? –

+0

Hast du das gesehen? (kurz bevor diese Frage geschlossen wird ...) http://wiki.wireshark.org/Python – zenpoy

+0

mögliches Duplikat von [HTTP Request and Response Inspection mit Python] (http://stackoverflow.com/questions/15663379/http- request-and-response-inspection-with-python) –

Antwort

5

Scrapy ist nur für Daten von den Webseiten zu extrahieren oder ähnlich strukturierte Dokumente.

lesen tatsächlich die Pakete von der NIC der besten Performance-Option kommen würde wahrscheinlich ein C/C++ API zu verwenden, die python-Anbindung hat.

zum Beispiel Wireshark ein Python API hat.

ist ein Modul für die Paketerfassung mit libpcap.

LibPCAP ist die Paketerfassungsbibliothek, die für TCPDUMP geschrieben und auch in WireShark verwendet wird.

Eine andere Möglichkeit ist das dpkt python-Modul auszuprobieren. Hier ist eine schöne write up. Hier ist eine example Verwendung von dpkt und pcap, um HTTP-Pakete zu schnüffeln.

EDIT: oops, ich misread scapy. Danke Wurzel!

Wie Sie bereits erwähnt haben, ist Scapy ein weiteres Python-Modul, das auch LibPCAP verwendet. Diese documentation hat ein Beispiel für Sniffing.

Wenn Sie Probleme bei der Ausführung von Python 2.7 haben, lesen Sie diese post.

+3

'scapy'! =' scrapy' – root

+0

It scheint, dass die Python-API für WireShark jetzt weg ist. Pyshark scheint jetzt der aktivste Ansatz zu sein, wie in der Antwort unten erwähnt. – nealmcb

2

pypcap, https://code.google.com/p/pypcap/ vereinfachte objektorientierte Python-Erweiterungsmodul für libpcap - die aktuelle Version tcpdump.org, Versand der Legacy-Version mit einigen der BSD-Betriebssysteme und die WinPcap-Port für Windows.This ist eine Windows-Version .und wenn Sie # nix verwenden, installieren Sie einfach pcap und dpkt Modul.

+0

OK, wenn ich die dpkt & pcap-Module für das Sniffing verwenden möchte, wie kann ich mit ihnen HTTP-Pakete schnüffeln? Ich bin froh, für ein Beispiel zu bekommen .. Ich sah ein Beispiel, wie mit diesen Modulen ein ICMP-Pakete, aber nicht HTTP-Pakete schnüffeln .. – Aviv

2

https://github.com/KimiNewt/pyshark

Python-Wrapper für tshark

Verbrauch:

>>> capture = pyshark.LiveCapture(interface='eth0') 
>>> capture.sniff(timeout=50) 
>>> capture 
<LiveCapture (5 packets)> 
>>> capture[3] 
<UDP/HTTP Packet> 

for packet in capture.sniff_continuously(packet_count=5): 
    print 'Just arrived:', packet