Python3 批量扫描端口的例子

作者:BYS_PrintF_ 时间:2021-12-20 05:17:37 

用法

本脚本用于批量扫描端口

1.在同目录下创建输入文件,属性inputFile为输入文件名

2.属性th为线程数

3.属性port为探测的目标端口

4.属性arg为默认的命令

不推荐扫描全端口,速度非常慢.脚本中有常见端口,可直接使用

默认命令下端口对应服务可能存在不准确的情况,可加-sV对版本进行详细探测,或对本脚本的输出使用此脚本进行专门的探测

代码


#依赖python-nmap,openpyxl包
import nmap
import openpyxl
import IPy
from multiprocessing import Pool as ThreadPool

# 同目录下创建一个input.txt,放入ip地址列(从xlsx中直接粘贴即可)
expath=''
inputFile='2001_3000.txt'
th=20

#扫描端口
#port='1521,1158,2100,3306,1433,1434,5000,5432,27017,6379,11211,80,8080,443,8000,8081,7001,9080,9090,22,23,10027,3389,5631,111,6000,135,445,139,21,25,110,69,161,162,53,5901,5902,2601-2609 '
port='1-65535'
#默认命令
arg='-Pn -T4'
#输出文件名

import time
time_rq = time.strftime('%Y-%m-%d', time.localtime(time.time()))
outPutFile = time_rq + '2001_3000.txt'

def readfile(path):
 # 返回url列表
 file = open(path, 'r',encoding='utf-8')
 urlList=[]
 for eachline in file.readlines():
   #获得地址段
   url=eachline.rsplit()[0]
   # add=IPy.IP(url)#地址段列表
   # for u in add:
   #   ip=u.__str__();
   #   urlList.append(ip)
   urlList.append(url);

file.close()
 # 造infoList
 infoList=[]
 for url in urlList:
   info={'hostname':url,'port':port,'arg':arg}
   infoList.append(info)

return infoList

def scan(info):

hostName=info['hostname']
 port=info['port']
 print(hostName+'扫描开始')

scanner=nmap.PortScanner()
 scanner.scan(hosts=hostName,ports=port,arguments=arg)

# print(res)
 out=open(outPutFile,'a+',encoding='utf-8')
 # out.write()
 state=scanner[hostName].state()
 tcp_ports=scanner[hostName].all_tcp()
 print(hostName+' '+state)
 for ports in tcp_ports:
   if scanner[hostName]['tcp'][ports]['state'] =='open' :
     st=hostName+' '+str(ports)+' '+scanner[hostName]['tcp'][ports]['name']+' '+scanner[hostName]['tcp'][ports]['state']+'\n'
     out.write(st)
     print(st)

# print(hostName)
 out.close()

def makeEx():
 print('----------------开始写入-------------------')
 wb=openpyxl.load_workbook(expath)
 sheet=wb.active
 c=open(outPutFile,'r',encoding='utf-8')
 i=1
 for line in c.readlines():
   linelist=line.split()
   ip=linelist[0]
   port=linelist[1]
   name=linelist[2]
   status=linelist[3]
   for j in range(4):
     if j==3:
       n=linelist[j]
       n=n.rsplit()
       n=n[0]
       sheet.cell(row=i, column=j + 1, value=n)
     else:
       sheet.cell(row=i,column=j+1,value=linelist[j])
   i=i+1
 c.close()
 wb.save(expath)
 print('----------------写入完成-------------------')

if __name__ == '__main__':
 print('----------------扫描开始-------------------')
 start=time.time()
 pool = ThreadPool(th)
 infolist=readfile(inputFile)
 pool.map(scan,infolist)
 pool.close()
 pool.join()
 finish=time.time()
 print('----------------扫描完成-------------------')
 t=finish-start
 print('用时 %f'%t)
 out = open(outPutFile, 'a+', encoding='utf-8')
 out.write('\n用时 %f'%t)

# makeEx()
 # info={'hostname':'135.233.115.55','port':'22,23,21,80,3389,5901,5902','arg':'-Pn -sV -T4'}

输入文件示例


61.128.108.94
61.128.111.246
61.128.122.111
222.83.20.18
61.128.108.67
120.70.226.131

输出文件示例


106.124.93.76 22 ssh open
106.124.93.76 23 telnet open
106.124.93.76 8000 http-alt open
106.124.93.83 23 telnet open

来源:https://blog.csdn.net/BYS_PrintF_/article/details/79706238

标签:Python3,批量,扫描,端口
0
投稿

猜你喜欢

  • SpringBoot Logback日志记录到数据库的实现方法

    2024-01-16 11:58:11
  • Mac OS下PHP环境搭建及PHP操作MySQL常用方法小结

    2024-05-08 10:16:31
  • Kibo 用于处理键盘事件的Javascript工具库

    2024-04-10 10:45:53
  • Python守护进程(daemon)代码实例

    2021-10-21 21:15:54
  • 使用curl命令行模拟登录WordPress的方法

    2022-02-23 17:15:06
  • golang 实现一个restful微服务的操作

    2023-07-06 23:42:13
  • Python 恐龙跑跑小游戏实现流程

    2021-10-23 19:42:59
  • 探讨关于404错误页面设置的问题

    2011-12-01 10:59:38
  • BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)

    2023-08-29 17:16:11
  • Python 中 Pandas 文件操作和读取 CSV 参数详解

    2021-04-13 01:14:25
  • Python数据可视化Pyecharts库实现桑葚图效果

    2022-01-05 23:39:44
  • 跟我学习javascript的闭包

    2024-04-23 09:11:51
  • 详解Python循环作用域与闭包

    2023-01-28 20:34:30
  • asp.net实现图片以二进制流输出的两种方法

    2023-06-28 21:49:02
  • Mysql Innodb 引擎优化

    2010-10-25 20:01:00
  • 详解Python文本操作相关模块

    2022-01-13 23:23:19
  • python聊天程序实例代码分享

    2021-07-09 13:03:33
  • 深入了解NumPy 高级索引

    2023-07-02 05:22:51
  • 超详细注释之OpenCV制作图像Mask

    2021-10-20 14:15:34
  • python解决Fedora解压zip时中文乱码的方法

    2021-06-02 09:23:09
  • asp之家 网络编程 m.aspxhome.com