扫描ip的所有端口

Posted xiao-ge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扫描ip的所有端口相关的知识,希望对你有一定的参考价值。

 

 

 

 

 

import openpyxl
from  openpyxl.utils  import coordinate_from_string,column_index_from_string
import socket
import  threading

ports=[]     #获取所有的要扫描的端口,并加入列表
port_list = []    ##扫描到的端口
wb=openpyxl.load_workbook("F:\\\\test\\\\test.xlsx")
sheets=wb.get_sheet_names()
count=len(sheets)
ws_port=wb.get_sheet_by_name(‘port‘)



for row in ws_port.iter_rows(min_row=2,min_col=1,max_col=1):
    port=[port.value for port in row]
    ports.append(port[0])    ###获取要扫描的端口

def write_port_value(sheet,ports,port_list):  #将扫描到的端口写入到ip的后一列

    for row in sheet.iter_rows(min_row=2,min_col=1,max_col=1):   ##遍历行
        for ip in row:                                          ##遍历行的单元格
            location=ip.coordinate     ##获取坐标位置
            xy = coordinate_from_string(location)
            x = column_index_from_string(xy[0])   ##获取行号
            y = xy[1]               ##获取列号
            ip=ip.value             #获取单元格的值
            #scan_port(ip,ports,port_list)   ##扫描端口

            th = threading.Thread(target=scan_port, args=(ip,ports,port_list))
            th.start()
            threads.append(th)
            P = ",".join(port_list)  ##将列表转换成字符串
            sheet.cell(row=y,column=x+1).value=P  ##将扫描的端口写入到ip后的单元格
            port_list = []


def scan_port(ip,ports,port_list):    #扫描端口
                  #储存扫描到的端口
    for port in ports:
        conn=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        conn.settimeout(3)
        try:
            conn.connect((ip,port))
            print(‘   is ok‘.format(ip,port))
            port=str(port)
            port_list.append(port)  #将端口加入列表
        except  Exception as e:
            print(‘ is unreachable‘.format(ip,port))



if __name__ == ‘__main__‘:
    threads = []
    print(sheets,count)
    for i in range(1,count):
        print(i)
        sheet=wb.get_sheet_by_name(sheets[i])
        write_port_value(sheet,ports,port_list)
    for th in threads:
        th.join()
    wb.save(‘F:\\\\test\\\\test_new.xlsx‘)

  可以填写多个网段  每个sheet表是一个 网段

技术图片   

技术图片

技术图片

 

以上是关于扫描ip的所有端口的主要内容,如果未能解决你的问题,请参考以下文章

kali 的端口扫描nmap

网络安全:Nmap端口扫描

C# - 带有 IP 地址范围的端口扫描

C# 基于TCP 实现扫描指定ip端口

运维脚本:python实现批量IP端口扫描

Javascript打开的端口扫描程序