首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python SOCK_RAW似乎可以监听所有端口。

Python SOCK_RAW似乎可以监听所有端口。
EN

Stack Overflow用户
提问于 2017-02-20 15:31:11
回答 1查看 734关注 0票数 0

考虑以下代码:

代码语言:javascript
复制
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攻击检测器的简化版本。当我使用:

代码语言:javascript
复制
nmap 172.16.0.19 -sS -p 1001 **NOTE THE DIFFERENT PORT**

我还是从密码中得到了检测。s.bind不是只在给定端口上监听吗?

指向目标的SSH也会触发代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-20 16:34:09

原始套接字(详见raw(7) )支持发送原始IP数据报。原始ip数据报没有端口。端口是一种基于IP的高层协议的构造,如UDP和TCP.

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

另一种解决方案可能使用netfilter框架来捕获具有SYN标志集的特定tcp端口上的数据包,然后通过nfqueue扩展将这些数据包发送到您的程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42348469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档