繁体   English   中英

Python SOCK_RAW似乎在所有端口上侦听

[英]Python SOCK_RAW seems to listen on all ports

考虑以下代码:

import socket, sys, time


HOST = '172.16.0.19'
PORT = 1000

#create a raw socket
try:
        s = socket.socket(socket.AF_INET,socket.SOCK_RAW, socket.IPPROTO_TCP)
except socket.error , msg:
        print 'Socket could not be created. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
        sys.exit()

s.bind((HOST,PORT))

while True:
        print "Waiting for SYN..."
        rec_packet, addr = s.recvfrom(100)
        print "Incoming connection detected!"
        print "".join(map("{0:08b}".format, map(ord, list(rec_packet[0:10]))))
        print addr[0]
        print ""

它是自动SYN攻击检测器的简化版本。 当我使用时:

nmap 172.16.0.19 -sS -p 1001 **NOTE THE DIFFERENT PORT**

我仍然从代码中检测到。 s.bind是否仅在给定端口上侦听?

到目标的SSH也会触发代码。

原始套接字(有关详细信息,请参见raw(7) )支持发送原始IP数据报。 原始ip数据报没有端口 端口是在UDP和TCP等IP之上分层的高层协议的构造。

您可以自己检查接收到的数据包以提取udp / tcp端口。

另一种解决方案可能是利用netfilter框架捕获设置了SYN标志的特定tcp端口上的数据包,然后通过nfqueue扩展将其发送到程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM