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:])
时间: 2024-10-15 02:56:50

python 使用scapy编写DNS Fuzzer的相关文章

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本。

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本.

用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控

写在前面 前文:用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 为了方便,这篇文章里的例子均为伪分布式运行,一般来说只要集群配置得当,在伪分布式下能够运行的程序,在真实集群上也不会有什么问题. 为了更好地模拟集群环境,我们可以在mapred-site.xml中增设reducer和mapper的最大数目(默认为2,实际可用数目大约是CPU核数-1). 假设你为Hadoop安装路径添加的环境变量叫$HADOOP_HOME(如果是$HAD

Python学习(三):入门篇:Python中怎么编写类

Python中怎么编写类 Last Edit 2013/5/2 先看一个例子: #person.py class person: """class to representaion a person""" def __init__(self,name,age): self.name=name if 0<age<=150: self.age=age else: print 'age is no valid!' def display(s

python 使用scapy库进行ARP欺骗

1. 说明 ARP欺骗(ARP spoofing),又称ARP病毒(ARP poisoning)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术.此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定电脑或所有电脑无法正常连接.最早探讨ARP欺骗的文章是由Yuri Volobue所写的<ARP与ICMP转向游戏>(ARP and ICMP redirection games). 由于局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输.所以,MAC地

用python + hadoop streaming 编写分布式程序(三) -- 自定义功能

又是期末又是实训TA的事耽搁了好久……先把写好的放上博客吧 前文: 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控 使用额外的文件 假如你跑的job除了输入以外还需要一些额外的文件(side data),有两种选择: 大文件 所谓的大文件就是大小大于设置的local.cache.size的文件,默认是10GB.这个时候可以用-fil

Python使用TCPServer编写(多线程)Socket服务

SocketServer包对socket包进行了包装(封装),使得创建socket服务非常简单. TCPServer+BaseRequestHandler 使用TCPServer和BaseRequestHandler编写socket服务的样例. #-*- coding:utf-8 -*- from SocketServer import TCPServer, BaseRequestHandler import traceback class MyBaseRequestHandlerr(BaseR

Python 使用Scapy模块编写ARP主机存活扫描

代码 1 import sys 2 if len(sys.argv) != 2: 3 print("Usage:aprPing <IP>\n eg:arpPing 192.168.1.1") 4 sys.exit(1) 5 from scapy.all import srp,Ether,ARP 6 ans,unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=sys.argv[1]),timeout=3)

Python 使用Scapy模块编写一个简单的扫描端口是否过滤

代码 1 from scapy.all import IP,TCP,sr 2 ans,unans=sr(IP(dst="192.168.1.128")/TCP(dport=[21,23,135,443,445],flags="A"),timeout=3) 3 for s,r in ans: 4 if s[TCP].dport == r[TCP].sport: 5 print(str(s[TCP].dport)+" is unfiltered")

Python之Scanner编写

嗯!拖延症晚期,已经无可救药,熬了两个晚上的夜,基本也把计算机网络课程设计的网络扫描器的功能实现了. 其实,写个扫描器也挺好玩的,牵涉到了RAW Socket编程,可以尽情地DIY数据包(当然,不符合数据包规则,比如checksum错误就没办法了),收获颇深.其中,我觉得用C语言写更有利于在编写过程中对加深对计算机网络的理解,特别是数据包细节.但是由于效率问题,还有Python真是太好用了(自从用了python,日常再也不想去碰C/C++了,虽然python也写的挺烂的).话不多说,言归正传.