“当然,陈峰同学只不过是‘替罪羊’罢了。”
我回答。
python
fromscapyallimportsniff,IP,TCP
用于存储每个源IP的SYN包计数
syncount
SYN包阈值,超过这个值可能是SYN洪水攻击
synthreshold100
defpacketcallbackpacket
ifIPinpacketandTCPinpacket
srcippacketIPsrc
tcppacketTCP
iftcpflagsSSYN包
syncountsrcipsyncountgetsrcip,01
ifsyncountsrcipgtsynthreshold
printf“可能的SYN洪水攻击来自:srcip“
eliftcpflagsRRST包,重置连接,可重置计数
ifsrcipinsyncount
syncountsrcip0
eliftcpflagsAACK包,正常响应,可重置计数
ifsrcipinsyncount
syncountsrcip0
开始监听网络数据包
snifffilter“tcp“,prnpacketcallback,store0
“我向在场的,除了警方人员以外的,不懂相关技术的人解释上述代码的功能和原理:
1定义了一个字典syncount用于记录每个源IP发送的SYN包数量,以及一个阈值synthreshold来判断是否可能是SYN洪水攻击。
2packetcallback函数是处理每个捕获到的数据包的回调函数。当检测到SYN包时,增加对应源IP的计数;如果计数超过阈值,打印可能的攻击提示。当检测到RST或ACK包时,重置对应源IP的计数。
3最后使用sniff函数开始监听TCP协议的数据包,并将每个数据包传递给packetcallback函数进行处理。
“根据这个不速之客的IP地址可以看出,这个人不在我们学校,由此可以证明学校网络崩溃这件事与我们班的体育委员无关,你们可以报警让警察来证明我说的话是真是假。”
我在最先出问题的电脑上跑完程序后说道。