Python 局域网扫描存活主机开放端口

'''
Python 局域网扫描存活主机开放端口 by 郑瑞国
1、ping指定IP判断主机是否存活
2、ping所有IP获取所有存活主机
3、nmap扫描存活主机开放端口
#注: 若在Linux系统下 ping -n 改为 ping -c 
     若在windows系统下 ping -n 不变
'''
import nmap
import socket
import os
import threading
import time 
 
IPList = [] 
def ping_ip(ip):                                          #1、ping指定IP判断主机是否存活
    output = os.popen('ping -n 1 %s'%ip).readlines()      #注:若在Linux系统下-n 改为 -c
    for w in output:
        if str(w).upper().find('TTL')>=0:
            IPList.append(ip)
 
def ping_net(ip):                                         #2、ping所有IP获取所有存活主机
    pre_ip = (ip.split('.')[:-1])
    for i in range(1,256):
        add = ('.'.join(pre_ip)+'.'+str(i))
        threading._start_new_thread(ping_ip,(add,))
        time.sleep(0.01)
  
def nmapScan(ip):                                         #3、nmap扫描存活主机开放端口
    nmScan = nmap.PortScanner()
    x=nmScan.scan(ip)
    for port in range(1,65536):
        try:
            state = x['scan'][ip]['tcp'][int(port)]['state']
            if state != 'unknown':
                print(ip,port,state)
        except:
            pass

if __name__ == '__main__':
    ping_net(socket.gethostbyname(socket.gethostname()))
    for ip in IPList:
        nmapScan(ip)

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值