Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在尝试创建阻止DoS攻击的脚本_Python_Denial Of Service - Fatal编程技术网

Python 正在尝试创建阻止DoS攻击的脚本

Python 正在尝试创建阻止DoS攻击的脚本,python,denial-of-service,Python,Denial Of Service,我们正在尝试使用Python创建一个脚本,以阻止作为学校项目一部分创建的DoS脚本。但我们很难找到任何关于我们如何做到这一点的信息。我们已经尝试使用Python使iptables工作,但它无法工作,也无法安装在2.7、3.4或3.6版本中 是否有一些聪明的人可以给我们一些技巧,告诉我们如何创建一个脚本来对抗或阻止脚本的端口/IP甚至MAC地址 这是我们正在尝试使用的当前脚本,我们希望它在启动并运行时能够阻止DoS攻击: 我们对这个脚本没有任何评价,它只是作为一个示例展示了我们正在尝试的内容,希望

我们正在尝试使用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不允许人们获得解决方案的技巧。看来我们在这里不会得到任何帮助。