码迷,mamicode.com
首页 > 编程语言 > 详细

python 使用scapy编写DNS Fuzzer

时间:2015-06-08 11:41:33      阅读:352      评论:0      收藏:0      [点我收藏+]

标签:python   scapy   dns-fuzzer   

1. 描述

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


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:])

python 使用scapy编写DNS Fuzzer

标签:python   scapy   dns-fuzzer   

原文地址:http://blog.csdn.net/jeanphorn/article/details/46409255

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!