我正在创建一个 TCP 套接字:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_sock:
server_sock.bind((HOST, PORT))
server_sock.listen()
while True:
sock, addr = server_sock.accept()
然后我想使用 scapy 从套接字捕获数据包。 现在我正在这样做:
data = sniff(iface = 'eth0', filter=f“port {PORT}”, count = 1)
我收到一个数据包并将其发送到队列。 在并行过程中,我从队列中取出数据包并处理它们。
问题是我正在使用套接字端口过滤器从网络接口接收数据包。 有没有办法直接从套接字使用嗅探接收数据包?
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_sock:
server_sock.bind((HOST, PORT))
server_sock.listen()
while True:
sock, addr = server_sock.accept()
while True:
data = sniff(iface = 'eth0', filter=f“port {PORT}”, count = 1)
通常,如果 TCP 之上的协议是 HTTP,那么您会这样做
from scapy.supersocket import StreamSocket
[...]
while True:
sock, addr = server_sock.accept()
sock = StreamSocket(sock, HTTP)
sock.sniff(...)
如果是其他内容,则必须替换上面示例中的 HTTP。