使用scapy嗅探特定端口的流量

6 投票
1 回答
19885 浏览
提问于 2025-04-18 15:10

好的,我有一个客户端和一个服务器的代码。

服务器的代码是这样的:

import socket
import sys

HOST = ''   
PORT = 5555

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'

#Bind socket to local host and port
try:
    s.bind((HOST, PORT))
except socket.error as msg:
    print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
    sys.exit()

print 'Socket bind complete'

#Start listening on socket
s.listen(10)
print 'Socket now listening'

#now keep talking with the client
while 1:
    conn, addr = s.accept()
    print 'Connected with ' + addr[0] + ':' + str(addr[1])
    data = conn.recv(10000)
    print data
s.close()

现在我想做的是对这些通过那个套接字(端口5555)进来的数据包进行一些分析。基本上,我想提取头部的标志。我试着用scapy库里的sniff()函数来做到这一点,具体可以参考这里的内容 获取数据包的源地址和端口号 - Scapy脚本

不过我只想监听那个端口进来的数据包,不想要其他的流量。

我该怎么做呢?

1 个回答

10

下面的代码会抓取所有目标端口号为5555的网络数据包,这个操作会在所有可用的网络接口上进行。

sniff(filter = 'dst port 5555')

当然,你也可以通过设置iface参数来指定你想要监听的具体网络接口。

撰写回答