欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Masscan扫描后的IP端口整合

程序员文章站 2022-05-15 22:09:34
...

看的懂得自然看得懂哈 虽然有点鸡肋 做个练习

#coding=utf-8

import re
import time
#import Queue


#1、正则提取scan.txt中的ip放入一个All_Clear_Ip的数组然后再进行去重(这个数组中的ip是不重复的)
# All_Clear_Ip['1.1.1.1','2.2.2.2','3.3.3.3']

#2、然后把每行提取出来整理成ip:port的形式放到一个All_Ip_Port的数组中
# All_Ip_Port['1.1.1.1:20','1.1.1.1:123','2.2.2.2:78','2.2.2.2:99','3,3,3,3:77','3.3.3.3:87']

#3、再接着我们遍历All_Clear_Ip数组 把第一个ip提取出来 再判断All_Ip_Port的数组的ip是不是与第一个提取出来的ip相对 是的话
# 假设第一个提取出来的ip是1.1.1.1
# 然后split(':')[0]分割 取前面的一部分
# 再接着ip跟前面的部分进行判断如果是的话 那么把整个1.1.1.1:20都提取出来(这里提取出来都储存到哪里是一个问题) 依次判断完 再继续把第二个ip提取继续判断

# 储存的问题:放到字典里面

#[
# 	{	
# 		ip:'1.1.1.1',
# 		tolife:'1.1.1.1:80',
# 	},

# 	{
# 		ip:'2.2.2.2',
# 		tolife:'2.2.2.2:99'
# 	}
#]

#queue = Queue.Queue()
All_Ip = list()
All_Clear_Ip = list()
All_Ip_Port = list()
def TxtToList():
    with open('scan.txt', 'rt') as f:
        for line in f:
            line = line.replace('\n', '')
            All_Ip.append(line)
    return All_Ip.pop()

def Clear():
	for ip in All_Ip:
		try:
			ip = re.search(r'\d+\.\d+\.\d+\.\d+',ip).group(0)
		except Exception as e:
			print(e)
		#print(ip)
		if ip not in All_Clear_Ip:
			All_Clear_Ip.append(ip)
	return All_Clear_Ip.pop()

def GetIpAddPort():
	for i in All_Ip:
		try:
			ip = re.search(r'\d+\.\d+\.\d+\.\d+',i).group(0)
			port = re.search(r'\d{1,5}',i).group(0)
		except Exception as e:
			print(e)
		#print(port)
		combine = ip + ':' + port
		All_Ip_Port.append(combine)

def ToMerge():
	for a in All_Clear_Ip:
		html = ''''''
		html += '<h3>'+ a + 'IP地址开放情况' +'</h3>'
		temporary_table = list()
		for b in All_Ip_Port:
			c = b.split(':')[0]
			if a == c:
				html += '<a target="_blank" href="http://' + b + '"' + '</a>' + b +  '</a><br />'
		with open('result_' + str(int(time.time())) +  ' .html', 'a') as f:
			f.write(html + '\n')
	#print(temporary_table)

def main():
	TxtToList()
	Clear()
	GetIpAddPort()
	ToMerge()

if __name__ == '__main__':
	main()

效果图:
Masscan扫描后的IP端口整合
Masscan扫描后的IP端口整合