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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM