使用Python进行网络抓包可以通过多种库实现,以下是使用Scapy库进行抓包的简单示例:
from scapy.all import *
def packet_handler(packet):
if packet.haslayer(TCP):
src_ip = packet[IP].src
dst_ip = packet[IP].dst
src_port = packet[TCP].sport
dst_port = packet[TCP].dport
print(f"Source IP: {src_ip} , Destination IP: {dst_ip}")
print(f"Source Port: {src_port} , Destination Port: {dst_port}")
使用sniff函数进行抓包,参数count表示要捕获的数据包数量
sniff(filter="tcp", prn=packet_handler, count=10)
这段代码会捕获TCP数据包,并打印出源IP、目标IP、源端口和目标端口。
如果你想使用其他库,比如Pyshark或tcpdump,可以分别参考以下示例:
Pyshark:
import pyshark
cap = pyshark.FileCapture('sample.pcap')
for pkt in cap:
print(pkt)
tcpdump:
import subprocess
proc = subprocess.Popen(["tcpdump", "-i", "eth0", "-c", "10"], stdout=subprocess.PIPE)
for line in iter(proc.stdout.readline, ''):
print(line)
这些示例展示了如何使用Pyshark和tcpdump库进行数据包捕获。
请注意,抓取网络数据包可能需要相应的权限,并且在使用抓包工具时,请确保遵守相关法律法规和隐私政策