考虑以下代码:
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也会触发代码。
发布于 2017-02-20 16:34:09
原始套接字(详见raw(7) )支持发送原始IP数据报。原始ip数据报没有端口。端口是一种基于IP的高层协议的构造,如UDP和TCP.
您可以亲自检查接收到的数据包,以提取udp/tcp端口。
另一种解决方案可能使用netfilter框架来捕获具有SYN标志集的特定tcp端口上的数据包,然后通过nfqueue扩展将这些数据包发送到您的程序。
https://stackoverflow.com/questions/42348469
复制相似问题