簡體   English   中英

使用python收集所有入站TCP流量

[英]Using python to collect all inbound TCP traffic

我正在嘗試創建一個python linux腳本來偵聽所有入站流量。 我不想在一個端口上監聽所有流量。 朝正確方向的任何指令或指針將不勝感激。 萬分感謝!

這只是使用python捕獲數據包的一種選擇。 雖然這個例子很簡短,但它確實說明了您可以捕獲發往系統的數據包並將其保存到PCAP。 您可以做更多的事情來進一步過濾/處理那些數據包,但是出於演示目的,它應該足以使您入門。 另外,我將其安裝到虛擬環境中,而不是安裝到主系統中。 這會給權限帶來一些麻煩,但是出於演示目的,我將以sudo的身份執行腳本。 我不會在生產中這樣做。

讓我們從為我們的項目創建虛擬環境開始:

python -m venv venv

現在激活它:

source venv/bin/activate

現在讓我們安裝scapy:

pip install scapy

現在已經安裝了scapy,讓我們編寫一個示例腳本來捕獲一些發往我的計算機的數據包,這些數據包位於10.1.10.127:

#! ./venv/bin/python
from scapy.all import sniff, PcapWriter

pkts = sniff(filter="dst 10.1.10.127", count=10)
my_pcap = PcapWriter('capture.pcap')
my_pcap.write(pkts)
my_pcap.close()

我們將其保存在一個名為sniff_it.py的文件中。 sniff功能將在任何接口上捕獲發往我的IP地址的前10個數據包。 它將接收這些數據包並將其寫入名為capture.pcap的PCAP文件中。 同樣,您可以輕松地對數據包進行額外的過濾/處理。 您還可以建立一個循環,將每1000個數據包放入不同的PCAP中。 讓我們測試一下。

chmod u+x sniff_it.py
sudo ./sniff_it.py

一旦捕獲了10個數據包,就應該將它們寫入capture.pcap

tshark -r capture.pcap | head -n 5
1   0.000000 XXX.XXX.XXX.XXX → 10.1.10.127  QUIC 83 Payload (Encrypted), PKN: 38913
2   1.020419 XXX.XXX.XXX.XXX → 10.1.10.127  TCP 68 5228 → 46064 [ACK] Seq=1 Ack=1 Win=248 Len=0 TSval=1894173688 TSecr=2911532757
3   1.634172 XXX.XXX.XXX.XXX → 10.1.10.127  TCP 68 443 → 45268 [ACK] Seq=1 Ack=1 Win=36 Len=0 TSval=145613895 TSecr=3189134159
4   4.921444 XXX.XXX.XXX.XXX → 10.1.10.127  TCP 68 443 → 55626 [ACK] Seq=1 Ack=1 Win=325 Len=0 TSval=751056060 TSecr=3131256344
5   4.921498 XXX.XXX.XXX.XXX → 10.1.10.127  TCP 68 443 → 55626 [ACK] Seq=1 Ack=1397 Win=331 Len=0 TSval=751056060 TSecr=3131256349

暫無
暫無

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

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