vue项目接口域名动态的获取方法
499
2022-10-10
Python实现端口扫描(python批量扫描ip端口)
误删了之前的shell脚本,之前的shell脚本因为扩展性不强,就打算用python来重新实现。端口扫描的方法特别多,我这里是把结果处理成json格式,交给后端的django来处理。
#!/usr/bin/env python # -*- coding: utf-8 -*- """ Date:2018-05-14 Author:Bob Description:Processing nmap scan results """ import os import time import json import requests import subprocess from xml.etree import ElementTree as ET url = 'http://10.200.56.80:8000/portscan/portScanInterface/' def remove_file(del_file): if os.path.exists(del_file): os.remove(del_file) return del_file def alive_ip(): # Detecting live ip with open('ip_subnet.txt', 'r') as f: for ip in f: ip = ip.strip() cmd = '/usr/bin/nmap -sP -PI -PT %s >> alive_ip.txt' %ip p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) print p.stdout.read(), # Scan live ip ips = [] with open('alive_ip.txt', 'r') as f: for lines in f: if lines.startswith('Nmap scan'): ip = lines.split(' ') ip = ip[4].strip() ips.append(ip) ip_str = ' '.join(ips) nmap_scan = '/usr/bin/nmap -sV -oX nmap_scan_output.xml %s > /dev/null 2>&1' %ip_str p = subprocess.Popen(nmap_scan, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) print p.stdout.read(), def deal_scan_xml(xml_file): # Processing nmap scan results bd = open(xml_file, 'r').read() root = ET.fromstring(bd) data = [] for host in root.findall('host'): # Print the number of child elements in the host tag # print len(host), # Get ip address ip_ = host[1].get('addr') # Get ports, protocols, and other information if len(host) == 5: for port in host[3][0:]: # print port port_ = str(port.get('portid')) protocol_ = str(port.get('protocol')) if port[0].tag == 'extrareasons': continue state_ = port[0].get('state') service_ = str(port[1].get('name')) product_ = str(port[1].get('product')) version_ = str(port[1].get('version')) extrainfo_ = str(port[1].get('extrainfo')) ip_ = ip_ data.append({"ip": ip_, "port": port_, "protocol": protocol_, "state": state_, "service": service_, "product": product_, "version": version_, "extrainfo": extrainfo_}) json_data = json.dumps({"detail": data}) json_data = requests.post(url, {"detail": json_data}) print json_data.text def main(): remove_file('alive_ip.txt') remove_file('nmap_scan_output.xml') alive_ip() deal_scan_xml('nmap_scan_output.xml') if __name__ == '__main__': main()
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~