Python 正在尝试创建阻止DoS攻击的脚本
我们正在尝试使用Python创建一个脚本,以阻止作为学校项目一部分创建的DoS脚本。但我们很难找到任何关于我们如何做到这一点的信息。我们已经尝试使用Python使iptables工作,但它无法工作,也无法安装在2.7、3.4或3.6版本中 是否有一些聪明的人可以给我们一些技巧,告诉我们如何创建一个脚本来对抗或阻止脚本的端口/IP甚至MAC地址 这是我们正在尝试使用的当前脚本,我们希望它在启动并运行时能够阻止DoS攻击: 我们对这个脚本没有任何评价,它只是作为一个示例展示了我们正在尝试的内容,希望它能让我们更好地理解它应该如何工作。Python 正在尝试创建阻止DoS攻击的脚本,python,denial-of-service,Python,Denial Of Service,我们正在尝试使用Python创建一个脚本,以阻止作为学校项目一部分创建的DoS脚本。但我们很难找到任何关于我们如何做到这一点的信息。我们已经尝试使用Python使iptables工作,但它无法工作,也无法安装在2.7、3.4或3.6版本中 是否有一些聪明的人可以给我们一些技巧,告诉我们如何创建一个脚本来对抗或阻止脚本的端口/IP甚至MAC地址 这是我们正在尝试使用的当前脚本,我们希望它在启动并运行时能够阻止DoS攻击: 我们对这个脚本没有任何评价,它只是作为一个示例展示了我们正在尝试的内容,希望
import sys
import scapy.all as scapy
import iptc
import time
# Required Data Field
Field = {
# Key Value Required
'count' : (5, False) ,
'iface' : (None, True),
'timeout' : (None, False),
}
# Main Class For Finding DoS Packets
class DoSDetector:
def __init__(self, *args, **kwargs):
"""
All Arguments And Keywords Will Directly Passed To
Python Scapy Sniff Function.
"""
self.args = args
self.kwargs = kwargs
self.data={}
self.Sniffing_Start()
def extract_packets(self, pkt):
"""
Function For Extracting Packets.
This Function Is Specially Created For Filtering
DoS Packets.
"""
if pkt.haslayer(scapy.Dot11Deauth):
victim1 = pkt.addr2
victim2 = pkt.addr1
if str([victim1, victim2]) in self.data.keys():
self.data[str([victim1, victim2])]=self.data[str([victim1, victim2])]+1
else:
self.data[str([victim1, victim2])]=1
self.print_values()
return
def print_values(self):
"""
Function For Printing Values
"""
line = 0
for a,b in self.data.iteritems():
v1, v2 = eval(a)
print "\t[#] DoS Packet : {} <---> {} | Packets : {}".format(v1,v2,b)
line+=1
# Backspace Trick
sys.stdout.write("\033[{}A".format(line))
return
def Sniffing_Start(self):
'''
Function For Creating Python Scapy.sniff Function
'''
scapy.sniff(prn=self.extract_packets, *self.args, **self.kwargs)
return
# Drop packets from an attacker
class DropIt:
def drop_packet:
if xx
rule = iptc.Rule()
match = iptc.Match(rule, "tcp")
target = iptc.Target(rule, "DROP")
rule.add_match(match)
rule.target = target
else
pass
return
# Main Function
def main(*args, **kwargs):
DoSDetector(*args, **kwargs)
return
# Main Trigger
if __name__=='__main__':
if len(sys.argv)==2:
main(iface=sys.argv[1])
else:
print (" [ Error ] Please Provide Monitor Mode Interface Name ALso \n\n\t:~# sudo {} mon0 ".format(sys.argv[0]))
导入系统
导入scapy.all as scapy
导入iptc
导入时间
#必填数据字段
字段={
#所需的键值
“计数”:(5,假),
“iface”:(无,正确),
“超时”:(无,错误),
}
#查找DoS数据包的主类
类剂量检测器:
定义初始化(self,*args,**kwargs):
"""
所有参数和关键字都将直接传递给
Python Scapy Sniff函数。
"""
self.args=args
self.kwargs=kwargs
self.data={}
self.Sniffing_Start()
def extract_数据包(自身、软件包):
"""
用于提取数据包的函数。
此函数是专门为过滤而创建的
DoS数据包。
"""
如果包装为haslayer(scapy.Dot11Deauth):
受害者1=包装地址2
受害者2=包装地址1
如果self.data.keys()中的str([victim1,victim2]):
自我数据[str([victim1,victim2])]=自我数据[str([victim1,victim2])]+1
其他:
自我数据[str([victim1,victim2])]=1
self.print_值()
返回
def打印_值(自身):
"""
用于打印值的函数
"""
直线=0
对于self.data.iteritems()中的a、b:
v1,v2=评估值(a)
打印“\t[#]DoS数据包:{}{}{}}数据包:{}”。格式(v1、v2、b)
行+=1
#退格技巧
sys.stdout.write(“\033[{}A.format(line))
返回
def嗅探_启动(自):
'''
用于创建Python Scapy.sniff函数的函数
'''
scapy.sniff(prn=self.extract_数据包,*self.args,**self.kwargs)
返回
#从攻击者处丢弃数据包
类别DropIt:
def drop_数据包:
如果xx
rule=iptc.rule()
match=iptc.match(规则“tcp”)
目标=iptc.target(规则“放弃”)
规则.添加匹配(匹配)
rule.target=目标
其他的
通过
返回
#主要功能
def main(*args,**kwargs):
剂量检测器(*args,**kwargs)
返回
#主触发器
如果“名称”=“\uuuuuuuu主要”:
如果len(sys.argv)==2:
main(iface=sys.argv[1])
其他:
打印(“[Error]请同时提供监视器模式接口名称\n\n\t:~#sudo{}mon0”。格式(sys.argv[0]))
这将极大地帮助我们进一步推进我们的项目
我想指出的是,这不是我们从头开始的脚本,但我们正在寻找类似的东西
“我们本可以更清楚地说明的是,我们问题中链接的脚本更像是一个示例。我们希望找到一个有效的脚本,然后了解它的工作原理,然后编写我们自己的”—编辑
提前谢谢
关于我想Stackoverflow不允许人们获得解决方案的技巧。看来我们在这里不会得到任何帮助。