Python实现端口扫描(python批量扫描ip端口)

网友投稿 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小时内删除侵权内容。

上一篇:mybatis判断int是否为空的时候,需要注意的3点
下一篇:Kali Linux介绍笔记(卡莉克劳斯)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~