码迷,mamicode.com
首页 > 编程语言 > 详细

Python实现局域网指定端口扫描

时间:2018-04-19 17:41:30      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:Python   局域网指定端口扫描   

import socket import threading # 创建接收路由列表 routers = [] # 创建互斥锁 lock = threading.Lock() # 设置需要扫描的端口号列表 port_list = [‘3389‘, ‘2425‘,‘139‘] # 定义查询路由函数 def search_routers(): # 获取本地ip地址列表 local_ips = socket.gethostbyname_ex(socket.gethostname())[2] # print(local_ips) # 存放线程列表池 all_threads = [] # 循环本地网卡IP列表 for ip in local_ips: for i in range(1, 255): # 把网卡IP"."进行分割,生成每一个可用地址的列表 array = ip.split(‘.‘) # 获取分割后的第四位数字,生成该网段所有可用IP地址 array[3] = str(i) # 把分割后的每一可用地址列表,用"."连接起来,生成新的ip new_ip = ‘.‘.join(array) # print(new_ip) # 遍历需要扫描的端口号列表 for port in port_list: dst_port = int(port) # 循环创建线程去链接该地址 t = threading.Thread(target=check_ip, args=(new_ip, dst_port) ) t.start() # 把新建的线程放到线程池 all_threads.append(t) # 循环阻塞主线程,等待每一字子线程执行完,程序再退出 for t in all_threads: t.join() # 创建访问IP列表方法 def check_ip(new_ip, port): # 创建TCP套接字,链接新的ip列表 scan_link = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置链接超时时间 scan_link.settimeout(2) # 链接地址(通过指定我们 构造的主机地址,和扫描指定端口) result = scan_link.connect_ex((new_ip, port)) # scan_link.close() # print(result) # 判断链接结果 if result == 0: # 加锁 lock.acquire() print(new_ip, ‘\t\t端口号%s开放‘ % port) routers.append((new_ip, port)) # 释放锁 lock.release() # print(routers) print("正在扫描..., 请稍等...") # 启动程序入口 if __name__ == ‘__main__‘: # 启动扫描程序 search_routers()

Python实现局域网指定端口扫描

标签:Python   局域网指定端口扫描   

原文地址:http://blog.51cto.com/10412806/2105476

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!