web-dev-qa-db-ja.com

PythonでHTTPパケットを盗聴する方法は?

私のコンピューターのすべてのHTTPパケットをpython(version2.6 ..)でスニッフィングしたいのですが、これは可能ですか?scapyを使用して、または他の外部モジュールなしで実行できますか?

16
Aviv

Scrapy は、Webページまたは類似の構造化ドキュメントからデータを抽出するためだけのものです。

NICからのパケットを実際に読み取るには、おそらく、最高のパフォーマンスオプションは、pythonバインディングを持つC/C++ APIを使用することです。

たとえば、WireSharkには Python API があります。

Pcapy は、libpcapを使用したパケットキャプチャ用のモジュールです。

LibPCAP は、TCPDUMP用に作成され、WireSharkでも使用されるパケットキャプチャライブラリです。

別のオプションは、dpkt pythonモジュールです。ここにナイス 記述 があります。ここに があり、dpktとpcapを使用してスニッフィングしますHTTPパケット。

[〜#〜] edit [〜#〜]:おっと、私はscapyを誤って読みました。ルートありがとう!

あなたが言及したように、 Scapy は別のpython LibPCAPも使用するモジュールです。この documentation はスニッフィングの例を持っています。

Python 2.7での実行に問題がある場合は、これをチェックしてください post

7
Dave Hite

https://github.com/KimiNewt/pyshark

tsharkのPythonラッパー

使用法:

>>> 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
3
吴毅凡

pypcaphttps://code.google.com/p/pypcap/ 簡略化されたオブジェクト指向Python拡張モジュール-現在のtcpdump.orgバージョン、一部のBSDオペレーティングシステムに同梱されているレガシーバージョン、およびWindows用のWinPcapポート。これはWindowsバージョンです。#nixを使用している場合は、 pcapdpktモジュールをインストールするだけです。

2
pigletfly

FTR、Scapyは2.4.3以降のHTTPパケットをサポートします: https://scapy.readthedocs.io/en/latest/layers/http.html

>>> HTTPRequest().show()
###[ HTTP Request ]###
  Method= 'GET'
  Path= '/'
  Http_Version= 'HTTP/1.1'
  A_IM= None
  Accept= None
  Accept_Charset= None
  Accept_Datetime= None
  Accept_Encoding= None
  [...]

スニフデモ:

from scapy.layers.http import * # read the doc
from scapy.sendrecv import sniff
sniff(lfilter=lambda x: HTTP in x, prn=lambda x: x.summary())
0
Cukic0d