Python 来自原始套接字数据包嗅探的TCP连接状态
这是我的密码:Python 来自原始套接字数据包嗅探的TCP连接状态,python,sockets,tcp,Python,Sockets,Tcp,这是我的密码: ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, 3) ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30) ins.bind((interface_name, 3)) while True: fmt = "B"*7+"I"*21 pkt, sa_ll = self.ins.recvfrom(65535) x = struct.un
ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, 3)
ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30)
ins.bind((interface_name, 3))
while True:
fmt = "B"*7+"I"*21
pkt, sa_ll = self.ins.recvfrom(65535)
x = struct.unpack(fmt, ins.getsockopt(socket.IPPROTO_TCP, socket.TCP_INFO, 92))
print "===>",x
print "HEX Packet",hexlify(pkt)
process_ipframe(sa_ll[2],hexlify(pkt))
获取
socket.error:[Errno 92]协议不可用
错误或者是否有更好的方法来获取连接的TCP(只需ESTAB
conctions)状态。好的,我的要求是获取已建立的连接。但我在界面上嗅探流量是为了其他目的。所以,我想我可以从原始套接字获取TCP状态。但是我发现/proc/net/tcp
:有st
字段,我可以从中获得已建立的连接。因此,我应该连续阅读/proc/net/tcp
,以获取不同线程中特定时间的ESTAB
因此,答案是/proc/net/tcp
。检查。或者我应该使用netfilter
也许,在这个链接中你可以找到一个答案:不,它仍然不工作