zoukankan      html  css  js  c++  java
  • python 使用scapy编写DNS Fuzzer

    1. 描写叙述

      使用scapy库,编写一个DNS Fuzzer工具,并測试。在这之前。先说明一下DNS协议请求包是封装在IP包中的UDP包(有些情况也可使用TCP)中。且UDP的端口为53。

    进入scapy。查看一下UDP和DNS包的封装情况。
      pkt


    2. 代码演示样例

      代码中,我们须要对输入的IP地址做合法性校验。

    这须要用到netaddr中的valid_ipv4,能够执行sudo pip install netaddr进行安装。假设系统上没有安装pip。能够先安装pip,Ubuntu上执行sudo apt-get install python-pip进行安装。
      

    from scapy.all import *
    from netaddr import valid_ipv4
    import sys,getopt
    
    def usage():
            print "Usage: sudo ./DnsFuzzer.py [-i interface][-l][target ip]"
            print "-i:指定网卡接口"
            print "-l:循环发送"
    
    def main(argv):
            loopsend = 0
            try:
                    opts, args = getopt.getopt(argv, "hi:l")
            except getopt.GetoptError:
                    usage()
                    sys.exit(2)
    
            for opt, arg in opts:
                    if opt in ("-h"):
                            usage()
                            sys.exit()
                    elif opt in ("-i"):
                            conf.iface = arg
                    elif opt in ("-l"):
                            loopsend = 1
    
            if len(args) > 0:
                    if not valid_ipv4(args[0],flags=1):
                            print "IP 地址不合法"
                            sys.exit(2)
                    a = fuzz(IP(dst=args[0])/UDP(dport=53)/DNS(qd=fuzz(DNSQR()), an = fuzz(DNSRR())))
                    send(a,loop=loopsend)
    
    if __name__ == "__main__":
            main(sys.argv[1:])
  • 相关阅读:
    dubbo踩坑
    windows下面使用protobuf
    解决端口占用的问题
    建设检验
    统计学资料整理
    java cpu 负载高分析
    演讲/汇报
    管理和领导
    css渐变动画
    vue组件之间互相传值:父传子,子传父
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6857999.html
Copyright © 2011-2022 走看看