亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python多線程在滲透測試中的應用

2019-11-06 06:52:47
字體:
來源:轉載
供稿:網友
難易程度:★★★閱讀點:python;web安全;文章作者:xiaoye文章來源:i春秋關鍵字:網絡滲透技術前言python是門簡單易學的語言,強大的第三方庫讓我們在編程中事半功倍,今天,我們來談談python多線程在滲透測試中的應用,本文,我們將編寫一個簡易c段存活主機掃描腳本,以及一個python版本的多線程御劍--目錄掃描工具一、python 多線程python多線程有幾種寫法1. thread模塊python的一個多線程模塊,小腳本可以用,但是有瑕疵,比如不穩定,線程數不好控制下方貼出一個c段存活主機掃描腳本,這個腳本i春秋ado老師也有過哦思想:輸入一個ip,經過字符拆分,獲取c段,多線程地ping -c 2 ip ,根據返回的信息來判斷主機是否存活demo ping_thread.py:
'''Created on 2017-2-27 @author: xiaoye'''#coding: utf-8import threadimport timefrom subPRocess import Popen,PIPE def scan_ip(ip):    process = Popen('ping -c 2 ' + ip, stdin=PIPE, stdout=PIPE, shell=True)    data = process.stdout.read()    if 'ttl' in data:        print '%s is live ,now time is %s' % (ip, time.strftime('%H:%M:%S'))     if __name__ == '__main__':    #scan_ip('111.13.147.229')    ips = raw_input()    ip_header = '.'.join(ips.split('.')[:3])    for i in range(1,255):        ip = ip_header + '.' + str(i)        #print ip        thread.start_new_thread(scan_ip, (ip,))        time.sleep(0.1)運行情況:                                                                           速度還行,穩定性一般thread模塊,核心在:
thread.start_new_thread(scan_ip, (ip,))        time.sleep(0.1)scan_ip是要執行的函數,(ip,)是傳入的參數,記得sleep一下2.threading模塊用法:demo:
'''Created on 2017-2-28@author: xiaoye'''#coding: utf-8import threadingimport time def test(th):    print 'i am doing %s %s' % (th, time.strftime('%H:%M:%S'))     def main():    thread = []    keys = ['movie_th','swim_th','listen_th','learn_th','movie_th','swim_th','listen_th','learn_th','movie_th','swim_th','listen_th','learn_th','movie_th','swim_th','listen_th','learn_th']    thread_count = len(keys)    #print thread_count    for i in range(thread_count):        t = threading.Thread(target=test, args=(keys[i],))        thread.append(t)    for i in range(thread_count):        thread[i].start()    for i in range(thread_count):        thread[i].join() if __name__ == '__main__':    main()運行情況:可以看到,基本是同時運行的,threading.Thread模塊的一種用法就是這樣:
for i in range(thread_count):        t = threading.Thread(target=test, args=(keys[i],))        thread.append(t)    for i in range(thread_count):        thread[i].start()    for i in range(thread_count):        thread[i].join()模式1.:一個列表存放所有線程,start()執行列表中線程,join()等待運行完畢模式1?,還有模式2嗎?當然,模式2就是從threading.Thread繼承一個子類class,重寫父類run方法,實現多線程運行run函數,而這種也是非常良好的寫法demo:
# -*- coding: utf-8 -*-import threading class T(threading.Thread):     def __init__(self):        threading.Thread.__init__(self)     def run(self):                    #繼承,threading.Thread子類, 重寫run方法, run方法在start()后自動執行        print 'i love you'  def main():    thread = []    for i in range(10):      thread.append(T())    for i in thread:        i.start()    for i in thread:        i.join() if __name__ == '__main__':    main()運行情況:二、線程間的數據守護Queue絕對是保護線程間數據安全的好選擇,有關于Queue,大家可以自行百度其用法,我發出一點經常用的:Queue.qsize() 返回隊列的大小Queue.empty() 如果隊列為空,返回True,反之FalseQueue.full() 如果隊列滿了,返回True,反之FalseQueue.full 與 maxsize 大小對應Queue.get([block[, timeout]]) 獲取隊列,timeout等待時間Queue.get_nowait() 相當Queue.get(False)非阻塞 Queue.put(item) 寫入隊列,timeout等待時間Queue.put_nowait(item) 相當Queue.put(item, False) Queue.task_done() 在完成一項工作之后,Queue.task_done() 函數向任務已經完成的隊列發送一個信號Queue.join() 實際上意味著等到隊列為空,再執行別的操作三、多線程threading.Thread+Queue實現滲透測試工具編寫腳本放出來:1.多線程c段存活主機掃描:
'''Created on 2017-2-28@author: xiaoye'''#coding: utf-8import timeimport sysimport threadingimport Queuefrom subprocess import Popen,PIPE  class Quethread(threading.Thread):    def __init__(self, que):        threading.Thread.__init__(self)        self._que = que         def run(self):        while not self._que.empty():            ip = self._que.get()            process = Popen('ping -c 2 ' + ip, stdin=PIPE, stdout=PIPE, shell=True)            data = process.stdout.read()            if 'ttl' in data:                sys.stdout.write('%s is live %s/n' % (ip, time.strftime('%H:%M:%S')))          def main():    que = Queue.Queue()    ips = raw_input()    thread = []    thread_count = 200    ip_head = '.'.join(ips.split('.')[:3])    #print ip_head    for i in range(1, 255):        que.put(ip_head + '.' + str(i))    '''for i in range(1,255):        print que.get()'''         for i in range(thread_count):        thread.append(Quethread(que))             for i in thread:        i.start()             for i in thread:        i.join()              if __name__ == '__main__':    main()Ubuntu下運行成功,win下需要修改Popen里的命令等,截圖:速度很快,穩定性較強c段主機存活腳本:https://github.com/xiaoyecent/ping_threading_Queue2.py版多線程御劍--目錄掃描--支持自定義字典、輸出文件位置以及自定義線程數:
'''@author: xiaoye'''#coding: utf-8import requestsimport sysimport threading#import timeimport Queuefrom optparse import OptionParser reload(sys)sys.setdefaultencoding('utf8') class Doscan(threading.Thread):    def __init__(self, que):        threading.Thread.__init__(self)        self._que = que             def run(self):        while not self._que.empty():            d = self._que.get()            try:                r = requests.get(url + d, headers=headers, timeout=3)                sys.stdout.write(d + ' is scan  status:' + str(r.status_code) + '/n')                if r.status_code == 200:                    with open(option.outfile, 'a') as f:                        f.write(url + d + '/n')            except:                pass     def main():    thread = []    thread_count = option.threadcount    que = Queue.Queue()         with open(option.dictname, 'r') as f:        for d in f.readlines():            d = d.strip('/n')            que.put(d)         for i in range(thread_count):        thread.append(Doscan(que))         for i in thread:        i.start()         for i in thread:        i.join()         if __name__ == '__main__':    parse = OptionParser()    parse.add_option('-u', '--url', dest='input_url', type='string', help='the url you wan to scan dir')    parse.add_option('-o', '--out', dest='outfile', type='string', help='output filename', default='result.txt')    parse.add_option('-s', '--speed', dest='threadcount', type='int', default=60, help='the thread_count')    parse.add_option('-d', '--dict', dest='dictname', type='string', help='dict filename')    (option, args) = parse.parse_args()    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}    url = option.input_url    main()      
Usage: scan_dir.py [options] Options:  -h, --help            show this help message and exit  -u INPUT_URL, --url=INPUT_URL                        the url you wan to scan dir  -o OUTFILE, --out=OUTFILE                        output filename  -s THREADCOUNT, --speed=THREADCOUNT                        the thread_count  -d DICTNAME, --dict=DICTNAME                        dict filename參數用法貼出來運行情況舉個例子:-u http://localhost -s 30 -d d://php.txt -o d://ichunqiu.txt:結果:運行速度取決于線程數(默認60)和實際環境源碼:https://github.com/xiaoyecent/scan_dir四、總結多線程加隊列實現線程間的數據保護是很好的搭配,threading.Thread+Queue的用法希望大家能夠掌握,另外,繼承threading.Thread寫出子類,重寫父類run方法來實現多線程的寫法也值得借鑒
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线成人激情黄色| 亚洲成人激情在线| 国产99久久久欧美黑人| 国产亚洲精品久久久久久牛牛| 精品色蜜蜜精品视频在线观看| 久久久久久97| 国产精品999| 欧美日韩亚洲视频| 欧美精品一区在线播放| 亚洲美女动态图120秒| 欧美激情a∨在线视频播放| 中文字幕日韩av综合精品| 中文字幕av一区| 久久久久久久一| 日韩在线观看免费全集电视剧网站| 精品久久国产精品| 欧美一级淫片丝袜脚交| 久久久久国产精品免费网站| 自拍偷拍亚洲区| 亚洲韩国青草视频| 日韩精品极品在线观看播放免费视频| 日韩免费高清在线观看| 久久久久久一区二区三区| 亚洲午夜性刺激影院| 中文字幕一精品亚洲无线一区| 午夜精品久久久久久久99热浪潮| 亚洲国产高清福利视频| 国产欧美日韩91| 久久电影一区二区| 中文字幕在线亚洲| 欧美国产日韩视频| 精品一区二区亚洲| 国产在线视频一区| 成人黄色激情网| 91成人在线观看国产| 国模精品一区二区三区色天香| 欧美性生交大片免费| 伊人成人开心激情综合网| 全色精品综合影院| 久久久免费高清电视剧观看| 亚洲精品国产精品乱码不99按摩| 91伊人影院在线播放| 国产精品亚洲欧美导航| 久久综合伊人77777| 日韩国产中文字幕| 久久久久久久久中文字幕| 亚洲国产精品va在看黑人| 欧美精品成人在线| 日韩av在线免费播放| 日韩黄色高清视频| 欧美大片第1页| 久久黄色av网站| 日本免费在线精品| 成人黄色免费在线观看| 另类专区欧美制服同性| 亚洲视频一区二区三区| 中文欧美日本在线资源| 成人黄色av播放免费| 欧洲美女7788成人免费视频| 欧美壮男野外gaytube| 国产精品久久久久久久久久新婚| 2019中文字幕在线免费观看| 精品国产户外野外| 理论片在线不卡免费观看| 国产视频精品在线| 欧美国产日韩一区二区| 91在线免费观看网站| 激情久久av一区av二区av三区| 国产精品亚洲第一区| 欧美日韩在线观看视频小说| 国产成人综合精品| 91精品国产一区| 亚洲国产成人久久综合| 国产欧美va欧美va香蕉在线| 欧美午夜精品久久久久久人妖| 美女福利视频一区| 亚洲a区在线视频| 亚洲成人免费网站| 在线日韩第一页| 亚洲精品www久久久| 国产欧美一区二区三区视频| 色偷偷av一区二区三区| 国产精品白嫩初高中害羞小美女| 欧美一区二区三区……| 国产精品福利在线| 久久久噜久噜久久综合| 亚州欧美日韩中文视频| 精品少妇v888av| 在线观看日韩视频| 成人字幕网zmw| 午夜伦理精品一区| 日韩av免费在线播放| 欧美日韩美女视频| 欧美多人爱爱视频网站| 色综合久久精品亚洲国产| 国产欧美日韩精品在线观看| 亚洲欧美在线一区二区| 亚洲成人精品视频| 日韩av成人在线观看| 久久久久久久999精品视频| 国产精品∨欧美精品v日韩精品| 国产成人精品一区二区| 在线亚洲欧美视频| 日韩精品中文字幕有码专区| 亚洲精品色婷婷福利天堂| 国产视频久久久久| 午夜精品久久久久久久白皮肤| 久久久成人av| 国产精品私拍pans大尺度在线| 亚洲一区二区三区四区在线播放| 欧美日韩在线看| 91热精品视频| 欧美性极品少妇精品网站| 精品色蜜蜜精品视频在线观看| 亚洲3p在线观看| 成人免费观看a| 欧美主播福利视频| 国产日韩欧美中文在线播放| 日韩av网址在线观看| 色婷婷av一区二区三区久久| 欧美在线一级va免费观看| 日韩风俗一区 二区| 国内外成人免费激情在线视频| 亚洲美女性生活视频| 久久亚洲春色中文字幕| 伊人久久久久久久久久久久久| 国产不卡一区二区在线播放| 国产亚洲精品美女久久久久| 91精品国产91久久久| 78m国产成人精品视频| 国产婷婷成人久久av免费高清| 欧美一区二区色| 精品毛片三在线观看| 国内精品视频一区| 亚洲成人亚洲激情| 欧美疯狂做受xxxx高潮| 亚洲人精选亚洲人成在线| 久久视频在线免费观看| 欧美国产日产韩国视频| 国产亚洲精品日韩| 在线播放精品一区二区三区| 欧美日韩精品在线播放| 亚洲一区二区三区视频| 久久影视电视剧免费网站清宫辞电视| 欧美中文字幕视频| 亚洲午夜av久久乱码| 永久免费看mv网站入口亚洲| 亚洲一区二区三区sesese| 国产精品日韩av| 91av在线播放| 欧美成人免费一级人片100| 欧美成人激情视频免费观看| 亚洲精品久久久一区二区三区| 欧美国产视频一区二区| 在线午夜精品自拍| 夜夜嗨av一区二区三区四区| 亚洲97在线观看| 国产伦精品免费视频| 91免费福利视频| 国产精品日韩电影| 国产中文字幕亚洲| 丝袜情趣国产精品| 亚洲成人网在线观看| 欧美在线视频网站|