scanner 基于python的主机发现

import sys
from scapy.all import sr1, ICMP, IP
from netaddr import IPNetwork

def ping_sweep(network, netmask):
    live_hosts = []
    total_hosts = 0
    scanned_hosts = 0
    ip_network = IPNetwork(network + '/' + netmask)
    for host in ip_network.iter_hosts():
        total_hosts += 1

    for host in ip_network.iter_hosts():
        scanned_hosts += 1
        print(f"Scanning: {scanned_hosts}/{total_hosts}", end = "\r")
        try:
            response = sr1(IP(dst=str(host))/ICMP(), timeout=1, verbose=0)
            if response is not None:
                live_hosts.append(str(host))
                print(f"Host {host} is online.")
        except OSError as e:
            print(f"An error occurred while scanning {host}: {e}", end = "\r")
    
    return live_hosts

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Usage: python ping_sweep.py <network> <netmask>")
        sys.exit(1)

    network = sys.argv[1]
    netmask = sys.argv[2]

    live_hosts = ping_sweep(network, netmask)
    print("\nCompleted")
    print(f"Live hosts: {live_hosts}")

效果:

 补充:

如果您有一个C类网络(例如 192.168.1.0),并且您想要扫描整个网络,您可以使用默认的C类子网掩码 /24。这意味着您的网络范围是 192.168.1.0/24,包含 192.168.1.0192.168.1.255 的所有IP地址。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值