博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 使用scapy编写DNS Fuzzer
阅读量:6580 次
发布时间:2019-06-24

本文共 1292 字,大约阅读时间需要 4 分钟。

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_ipv4import sys,getoptdef 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:])
你可能感兴趣的文章
Android 实现全屏 无标题栏
查看>>
Android的横竖屏切换
查看>>
关于linux上cron服务的python封装工具
查看>>
MFC学习之Radio---MFC Radio按钮组的使用例子
查看>>
十五套专为开发人员打造的PHP资源库
查看>>
Elasticsearch 文件目录解释
查看>>
AngularJS 学习笔记值post传值
查看>>
深入理解display属性
查看>>
Android下基于SDL的位图渲染(二)理论篇
查看>>
NVIDIA® Quadro® 四路缓冲 3D立体方案
查看>>
“Invalid maximum heap size” when running Maven
查看>>
Java编程常见问题汇总(转载)
查看>>
数据库连接池的原理
查看>>
Xargs用法详解
查看>>
用DotSpatial下载谷歌瓦片图并展示到地图控件上 【转】
查看>>
osgconv使用指南(转)
查看>>
033 关于YARN的HA
查看>>
给div加上背景图片
查看>>
vim使用
查看>>
Spring getBean 首字母大小写问题
查看>>