scapy 如何从 TCP 套接字捕获数据

问题描述 投票:0回答:1

我正在创建一个 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)
python python-3.x scapy
1个回答
0
投票

通常,如果 TCP 之上的协议是 HTTP,那么您会这样做

from scapy.supersocket import StreamSocket
[...]

while True:
    sock, addr = server_sock.accept()
    sock = StreamSocket(sock, HTTP)
    sock.sniff(...)

如果是其他内容,则必须替换上面示例中的 HTTP。

© www.soinside.com 2019 - 2024. All rights reserved.