获取局域网的所有主机方法

获取局域网的所有主机方法

一、 使用nmap

参考:查看 网关 及 局域网中的所有设备 IP地址

  1. 安装
sudo apt-get install nmap
  1. 查看ip下的所有主机

但实际测试中,路由器管理中有26个设备,两次测量中,一次显示12个设备,一次显示14个设备。
但一般的设备的ip都能正常显示出来

nmap -sP 192.168.1.2-255|grep -i 'report for'|awk '{print $5;}'|cat -n

二、使用scapy(python代码)

参考:scapy

  1. 安装scapy
pip3 install scapy
  1. 参考代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 显示局域网下所有主机的MAC地址和ip
from scapy.all import srp, Ether, ARP, conf

ipscan='192.168.1.1/24'         # 24是子网掩码,对应255.255.255.0

def main():
    try:
        ans, unans = srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=ipscan),timeout=2,verbose=False)
    except Exception as e:
        print(str(e))
    else:
        for snd,rcv in ans:
            list_mac = rcv.sprintf("%Ether.src% - %ARP.psrc%")
            print(list_mac)


if __name__ == '__main__':
    main()

在windows下会报错,显示未安装某固件,但安装后会显示使用npcap更合适,因此直接下载安装npcap。链接:NPCAP下载

三、scapy进阶

参考:使用scapy模块进行ARP局域网扫描,获取主机IP和MAC

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 将局域网下所有ip整理成list
# 运行需要使用root权限
# 写成脚本:
#!/bin/bash
# cd /home/tju
# sudo echo '123456' | sudo -S "python3 test.py"

from scapy.all import srp, Ether, ARP, conf

def get_IP(ip = '192.168.1.1/24' ):
    try:
        #模拟发包,向整个网络发包,如果有回应,则表示活跃的主机
        p = Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip)
        #ans表示收到的包的回复
        ans,unans=srp(p, timeout=2,  verbose=False)
    except Exception as e:
        pass
    else:
        #将需要的IP地址和Mac地址存放在result列表中
        ip_res = []
        mac_res = []
        result = []
        for s,r in ans:
            #解析收到的包,提取出需要的IP地址和MAC地址
            ip_res.append(r[ARP].psrc)
            mac_res.append( r[ARP].hwsrc)
            result.append([r[ARP].psrc, r[ARP].hwsrc])
        #将获取的信息进行排序,看起来更整齐一点
        result.sort()
        #打印出局域网中的主机
        # for ip,mac in result:
        #     print(ip,'------>',mac)
        return ip_res, mac_res


if __name__ == '__main__':
    ip_res,mac_res = get_IP()
    print(ip_res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值