2013-04-09 32 views
12

Tôi muốn ngửi tất cả các gói HTTP trong máy tính của tôi qua python (version2.6 .. là điều này có thể? Tôi có thể làm điều đó với scapy, hoặc không có các mô-đun bên ngoài khác không?Làm thế nào để sniff các gói HTTP trong python?

+5

Liên quan đến phiếu đóng cửa, tôi nghĩ rằng đây là một câu hỏi hay. Anh ấy yêu cầu một kỹ thuật để giải quyết một vấn đề cụ thể, vấn đề là gì? –

+0

Bạn đã xem cái này chưa? (nhanh chóng trước khi câu hỏi này được đóng lại ...) http://wiki.wireshark.org/Python – zenpoy

+0

bản sao có thể có của [Yêu cầu HTTP và Kiểm tra phản hồi bằng Python] (http://stackoverflow.com/questions/15663379/http- yêu cầu-và-đáp ứng-kiểm tra-với-python) –

Trả lời

5

Scrapy chỉ để trích xuất dữ liệu từ các trang web hoặc các tài liệu có cấu trúc tương tự.

để thực sự đọc các gói tin đến từ các NIC tùy chọn hiệu suất tốt nhất của bạn có thể sẽ được sử dụng một C/C++ API có bindings python.

Ví dụ Wireshark có Python API.

Pcapy là một mô-đun để chụp gói bằng cách sử dụng libpcap.

LibPCAP là thư viện chụp gói được viết cho TCPDUMP và cũng được sử dụng trong WireShark.

Một tùy chọn khác là thử mô-đun python dpkt. Đây là write up. Đây là một số example sử dụng dpkt và pcap để sniff các gói HTTP.

EDIT: oops, tôi đọc sai scapy. Cảm ơn gốc!

Như bạn đã đề cập, Scapy là một mô-đun python khác cũng sử dụng LibPCAP. documentation có ví dụ về đánh hơi.

Nếu bạn gặp sự cố khi chạy trên Python 2.7, hãy xem post này.

+3

'scapy'! =' scrapy' – root

+0

Nó dường như API Python cho WireShark đã biến mất. PyShark có vẻ là cách tiếp cận tích cực nhất cho điều này, như đã nói trong câu trả lời dưới đây. – nealmcb

2

pypcap, https://code.google.com/p/pypcap/ đơn giản Python module mở rộng hướng đối tượng cho libpcap - phiên bản tcpdump.org hiện nay, vận chuyển phiên bản di sản với một số các hệ điều hành BSD, và cổng WinPcap cho Windows.This là một phiên bản Windows .Và nếu bạn đang sử dụng # nix, chỉ cần cài đặt pcapdpkt mô-đun.

+0

OK, nếu tôi muốn sử dụng các mô-đun dpkt & pcap để đánh hơi, làm thế nào tôi có thể đánh hơi với chúng các gói HTTP? Tôi sẽ được vui để có được một ví dụ .. Tôi thấy một ví dụ làm thế nào để sniff với mô-đun này một gói icmp nhưng không phải gói HTTP .. – Aviv

2

https://github.com/KimiNewt/pyshark

Python wrapper cho tshark

Cách sử dụng:

>>> 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 
Các vấn đề liên quan