簡體   English   中英

如何在Python中從TCP套接字讀取完整的IP幀?

[英]How to read complete IP frames from TCP socket in Python?

我需要使用Python從TCP流套接字讀取完整的(原始)IP幀。 基本上我想要一個未經修改的框架,就好像它從物理線上掉下來一樣,包括所有的頭信息。

我一直在研究Python中的原始套接字,但我遇到了一些問題。 我不需要自己創建數據包,我只需要逐字閱讀和轉發它們。

那么,我如何從現有的TCP套接字(在Python中)讀取整個IP框架(包括標題)?

我最好只使用標准庫。 另外,我在Linux主機上。

謝謝!

如果您不介意使用不屬於標准庫的Scapy ,並且不要求超高速,則可以使用其sniff功能。 需要回調。 就像是:

pkts_rxd = []
def process_and_send(pkt):
    pkts_rxd.append(pkt)
    sendp(pkt, 'eth1')
sniff(prn=process_and_send, iface='eth0', count=100)

您可以使用count=0在不同的線程或進程中運行sniff,並且如果您希望它永遠運行,則將收到的數據包粘貼在隊列中。 只需確保將str(pkt)放在隊列中。 我已經看到將scapy數據包放在multiprocessing.Queue上時會發生奇怪的事情。

Debian和Ubuntu都在他們的apt資源庫中安裝了Scapy。 我不知道rpm發行版。 從源代碼安裝非常簡單: ./setup.py install

你應該嘗試scapy

也許pylibpcap可以做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM