国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python基于scapy實(shí)現(xiàn)修改IP發(fā)送請(qǐng)求的方法示例

2020-02-16 01:49:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Python基于scapy實(shí)現(xiàn)修改IP發(fā)送請(qǐng)求的方法。分享給大家供大家參考,具體如下:

今天同事想測(cè)試WAF的頁(yè)面統(tǒng)計(jì)功能,所以需要模擬多個(gè)IP向多個(gè)域名發(fā)送請(qǐng)求,也就是需要修改源IP地址。這個(gè)如果使用socket庫(kù)就比較麻煩了,

需要使用raw socket,相當(dāng)麻煩。還好咱有scapy,輕松搞定。

DOMAIN是我隨機(jī)構(gòu)造的域名庫(kù),SOURCE也是隨機(jī)構(gòu)造的源IP地址。

#!/usr/bin/env python#-*-encoding:UTF-8-*-from scapy.all import *from threading import Threadfrom Queue import Queueimport randomimport stringUSER_AGENTS = ( # items used for picking random HTTP User-Agent header value  "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21",  "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",  "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20020508 Netscape6/6.1",  "Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5",  "Opera/9.80 (X11; U; Linux i686; en-US; rv:1.9.2.3) Presto/2.2.15 Version/10.10")TOP_DOMAIN = ('com','org','net','gov','edu','mil','info','name','biz')DOMAIN = ["www.%s.%s" %(    '.'.join(''.join(random.sample(string.ascii_lowercase, random.randint(2,6))) for x in range(random.randint(1,2))),    random.choice(TOP_DOMAIN))    for _ in range(100)]SOURCE = ['.'.join((str(random.randint(1,254)) for _ in range(4))) for _ in range(100)]class Scan(Thread):  HTTPSTR = 'GET / HTTP/1.0/r/nHost: %s/r/nUser-Agent: %s/r/n/r/n'  def run(self):    for _ in xrange(100):      domain = random.choice(DOMAIN)      http = self.HTTPSTR % (domain,random.choice(USER_AGENTS))      try:        request = IP(src=random.choice(SOURCE),dst=domain) / TCP(dport=80) / http        #request = IP(dst=domain) / TCP(dport=80) / http        send(request)      except:        passtask = []for x in range(10):  t = Scan()  task.append(t)for t in task:  t.start()for t in task:  t.join()print 'all task done!'

但這將導(dǎo)致一個(gè)問(wèn)題,由于我們域名是隨機(jī)構(gòu)造的,發(fā)送請(qǐng)求肯定首先查找DNS,很可能解析失敗。這里有兩個(gè)方法解決這個(gè)問(wèn)題:

1.將所有域名添加到hosts本地文件中,IP可以為服務(wù)器地址

2. 由于hosts文件不支持通配符表示,所以可以使用DNS代理,或者自己寫小工具,想怎么解析就怎么解析,這里有一個(gè)https://github.com/phuslu/dnsproxy/blob/master/dnsproxy.py

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 青州市| 花垣县| 临泉县| 江西省| 邛崃市| 新宾| 托克逊县| 布尔津县| 米泉市| 乌恰县| 循化| 泰州市| 武城县| 武平县| 小金县| 伊金霍洛旗| 中阳县| 界首市| 弥勒县| 蒙山县| 奇台县| 四川省| 怀集县| 股票| 永济市| 茌平县| 洪湖市| 库车县| 临洮县| 连城县| 上高县| 桂林市| 巴林左旗| 宁陵县| 布拖县| 青龙| 含山县| 腾冲县| 嘉祥县| 桃园县| 固安县|