masscan簡介
- 開源莉测、免費的端口掃描器,獲取主機開放的端口和端口信息唧喉。
- 速度非车仿保快忍抽,6分鐘可以掃描整個互聯(lián)網(wǎng),1臺機器每秒可傳輸1000萬個數(shù)據(jù)包董朝。
- 只做SYN掃描鸠项、不首先ping主機,沒有DNS解析發(fā)生子姜,掃描完全隨機化
masscan安裝
sudo apt-get install git gcc make libpcap-dev
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
masscan使用方法1
./masscan 172.16.0.0/16 -p0-65535 --max-rate 200000 --banners -oJ result.json
- -p 掃描所有端口指定
- --banners 獲取banner值
- --max-rate 每秒發(fā)的包數(shù)量祟绊,根據(jù)機器和網(wǎng)絡(luò)情況自行選擇
-
-oJ result.json 將掃描結(jié)果輸出為json文件
image.png
masscan使用方法2
./masscan -p0-65535 -iL ip.txt --max-rate 100000 --banners -oJ f.json
-
-iL 掃描文件中的ip地址
image.png
image.png
python腳本解析masscan結(jié)果
import json
from openpyxl import Workbook
import xlsxwriter
import socket
def get_list(filepath):
f = open(filepath,encoding='utf-8')
c = json.load(f)
list = []
for i in c:
ip = i['ip']
port = str(i['ports'][0]['port'])
status = 'open'
try:
if i['ports'][0]['service']:
name = i['ports'][0]['service']['name']
banner = str(i['ports'][0]['service']['banner'])
except:
name = ''
banner = ''
line = [ip,port,status,name,banner]
list.append(line)
return list
def quchong(l1):
l2 =[]
for data1 in l1:
for data2 in l1:
if data1[0]==data2[0] and data1[1]==data2[1]:
if data1[3] ==''and data2[3] !='':
# print(data1,data2)
l2.append(data1)
for i in l2:
try:
l1.remove(i)
except:pass
l1 = [list(t) for t in set(tuple(_) for _ in l1)]
return l1
def write_excle(list):
f = xlsxwriter.Workbook('port.xlsx')
worksheet1 = f.add_worksheet('掃描信息')
worksheet2 = f.add_worksheet('主機ip列表')
worksheet1.write(0, 0, 'ip')
worksheet1.write(0, 1, '端口')
worksheet1.write(0, 2, '狀態(tài)')
worksheet1.write(0, 3, '服務(wù)')
worksheet1.write(0, 4, 'banner')
worksheet2.write(0, 0, '主機ip')
newlist= []
for i in list:
newlist.append(i[0])
newlist=set(newlist)
total1 = 0
total2 = len(newlist)
newlist=sorted(newlist, key=socket.inet_aton)
for index, p in enumerate(list):
total1+=1
for j, q in enumerate(p):
worksheet1.write(index + 1, j, q)
for index, p in enumerate(newlist):
worksheet2.write(index + 1, 0, p)
f.close()
return total1,total2
if __name__ == '__main__':
filepath = 'C:/1/result.json' #填寫要解析masscan掃描json格式報告的文件路徑
result = get_list(filepath)
result = quchong(result)
sum = write_excle(result)
print('共檢測到存活主機%d個,端口信息%d條'% (sum[1],sum[0]))
C:\Users\m\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/m/PycharmProjects/untitled/venv/解析masscanjson腳本.py
共檢測到存活主機1782個哥捕,端口信息17058條
-
excle結(jié)果如下圖
image.png