Как обманывать HTTP-пакеты в python?

Я хочу обнюхать все HTTP-пакеты на своем компьютере с помощью python (версия 2.6.. это возможно? могу ли я сделать это с помощью scapy или без других внешних модулей?

Ответ 1

Scrapy предназначен только для извлечения данных с веб-страниц или аналогичных структурированных документов.

Чтобы на самом деле прочитать пакеты, идущие от сетевого адаптера, лучшим вариантом производительности, вероятно, будет использование C/С++ API с привязками к python.

Например, WireShark имеет Python API.

Pcapy - это модуль для захвата пакетов с использованием libpcap.

LibPCAP - это библиотека захвата пакетов, написанная для TCPDUMP, а также используемая в WireShark.

Другой вариант - попробовать модуль pppp dpkt. Вот хороший напишите. Здесь пример, используя dpkt и pcap, чтобы обманывать HTTP-пакеты.

РЕДАКТИРОВАТЬ: oops, я неправильно читаю scapy. Спасибо root!

Как вы уже упоминали, Scapy - еще один модуль python, который также использует LibPCAP. В этой документации есть пример обнюхивания.

Если у вас возникли проблемы с запуском Python 2.7, просмотрите сообщение.

Ответ 2

pypcap, https://code.google.com/p/pypcap/ упрощенный объектно-ориентированный модуль расширения Python для libpcap - текущая версия tcpdump.org, устаревшую версию, поставляемую с некоторыми операционными системами BSD, и порт WinPcap для Windows. Это версия Windows. И если вы используете # nix, просто установите pcap и dpkt.

Ответ 3

https://github.com/KimiNewt/pyshark

Обертка Python для tshark

Использование:

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