2013-04-09 14 views
12

chcę wąchać wszystkie pakiety HTTP w moim komputerze przez pytona (version2.6 .. jest to możliwe? Mogę to zrobić z scapy lub bez innych modułów zewnętrznych?Jak sniffować pakiety HTTP w pythonie?

+5

odniesieniu do głosów zamykających, myślę, że to jest dobre pytanie. Prosi o technikę rozwiązania konkretnego problemu, na czym polega problem? –

+0

Czy spojrzałeś na to? (szybko zanim to pytanie zostanie zamknięte ...) http://wiki.wireshark.org/Python – zenpoy

+0

możliwy duplikat [HTTP Request and Response Inspection with Python] (http://stackoverflow.com/questions/15663379/http- request-and-response-inspection-with-python) –

Odpowiedz

5

Scrapy jest tylko do pobierania danych ze stron internetowych lub podobnych dokumentów strukturyzowane.

aby właściwie odczytać pakietów pochodzących z NIC opcję najlepszą wydajność będzie prawdopodobnie użyć API C/C++, który ma powiązania Pythona.

na przykład Wireshark ma Python API.

Pcapy to moduł do przechwytywania pakietów za pomocą libpcap.

LibPCAP to biblioteka przechwytywania pakietów napisana dla protokołu TCPDUMP, a także używana w WireShark.

Inną opcją jest wypróbowanie modułu pythkt dpkt. Oto ładny write up. Oto example za pomocą narzędzia dpkt i pcap do sniffowania pakietów HTTP.

EDYTOWANIE: Oops, źle odczytałem. Dzięki root!

Jak wspomniałeś, Scapy to kolejny moduł pythonowy, który również używa protokołu LibPCAP. Ten przykład documentation ma przykład sniffing.

Jeśli masz problemy z uruchomieniem Pythona 2.7, sprawdź to post.

+3

'scapy'! =' scrapy' – root

+0

To wydaje się, że API Pythona dla WireSharka już nie ma. PyShark wydaje się obecnie najbardziej aktywnym podejściem, jak zauważono w odpowiedzi poniżej. – nealmcb

2

pypcap, https://code.google.com/p/pypcap/ uproszczone obiektowego Pythona moduł rozszerzający dla libpcap - aktualna wersja tcpdump.org, wysyłka wersja dziedzictwo niektóre z systemów operacyjnych BSD, a port WinPcap dla Windows.This jest wersja dla Windows .Jeśli używasz # nix, po prostu zainstaluj moduł pcap i dpkt.

+0

OK, jeśli chcę użyć modułów dpkt & pcap do sniffowania, jak mogę sniffować z nimi pakiety HTTP? Z przyjemnością znajdę przykład ... Widziałem przykład, jak sniffować z tymi modułami pakiety ICMP, ale nie pakiety HTTP. – Aviv

2

https://github.com/KimiNewt/pyshark

Python otoki dla tshark

Wykorzystanie:

>>> 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