當(dāng)前位置:首頁(yè) > IT技術(shù) > Web編程 > 正文

web安全之自己寫一個(gè)掃描器
2022-03-06 18:01:25

web安全之自己寫一個(gè)掃描器

  自己來(lái)寫一個(gè)簡(jiǎn)單的目錄掃描器,了解掃描器的運(yùn)轉(zhuǎn)機(jī)制和原理,因?yàn)閜ython寫腳本比較容易所以用python寫一個(gè)網(wǎng)站目錄掃描器。

第一步:我們需要導(dǎo)入所需要的庫(kù)

?

1 import threading
2 import argparse
3 import requests
4 import linecache

?

第二步:定義一些循環(huán)變量和字典,方便多進(jìn)程使用

number_c=0
dir = open("dicc.txt", "r", encoding="UTF-8")
len = len(dir.readlines())
print("二十個(gè)線程--開(kāi)始運(yùn)行......")

第三步:編寫class,導(dǎo)入網(wǎng)頁(yè)url和線程的

1 class dirscan:
2     def __init__(self,url):
3         self.url = url

第四步:請(qǐng)求,返回狀態(tài)嗎為200的打印出來(lái)

 1 def run(self):
 2     global number_c
 3     global len
 4     while number_c<len:
 5         number_c += 1
 6         i = linecache.getline(r'dicc.txt',number_c)
 7         self.lurl = self.url+i
 8         html_result = requests.get(self.lurl)
 9         if (html_result.status_code == 200):
10             print("存在",self.lurl)

第五步:使用命令行獲取網(wǎng)站url,并開(kāi)始多線程掃描

 1 if __name__ == '__main__':
 2     parser = argparse.ArgumentParser()
 3     parser.add_argument('url')  # add_argument()指定程序可以接受的命令行選項(xiàng)
 4     args = parser.parse_args()  # parse_args()從指定的選項(xiàng)中返回一些數(shù)據(jù)
 5     vehicles = []
 6     for num in range(20):  # 設(shè)置線程
 7         scan = dirscan(args.url)
 8         vehicle = threading.Thread(target=scan.run,)  # 新建線程
 9         vehicles.append(vehicle)
10     for vehicle in vehicles:
11         vehicle.start()  # 分別啟動(dòng)線程
12     for vehicle in vehicles:
13         vehicle.join()  # 分別檢查結(jié)束線程
14     print("運(yùn)行結(jié)束")

?

成品展示

?

?

?

第一次寫掃描器,技術(shù)很菜,還請(qǐng)師傅們多多指教

?

本文摘自 :https://www.cnblogs.com/

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >