使用python做一个简单的WiFi连接监控,都有谁连上了我的wifi?

思路:轮询:利用同一wifi下ip可被查询的特性,当有人链接上wifi时,进行主机判断。

第一步 (cmd可行性分析)

for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.0.%i
在这里插入图片描述

第二步

arp -a 

在这里插入图片描述

第三步,通过python运行cmd,arp -a 获取目录

def get_macs():
    # 运行cmd控制窗口,输入“arp -a”,并将内容传递到res中
    res = os.popen("arp -a")
    # 读取res数据,转换为可读数据
    arps = res.read()
    # print(arps)
    
    # 将获得的counts中的数据根据“换行符”来进行分割切片
    result = arps.split('\n')[3:]

    def get_ip_mac(list):
        list = list.split(" ")
        list = set(list)
        list = [i for i in list][1:] #['动态', '192.168.0.101', '2c-5d-34-07-b9-99']
        ip, mac = '', ''
        for i in list:
            if '.' in i:
                ip = i
            elif '-' in i:
                mac = i
            else:
                continue
        list = []
        list.append(ip)
        list.append(mac)
        return list
    # 遍历
    result = list(map(get_ip_mac, result))[:-1]
    ips = [i[0] for i in result]
    macs = [i[1] for i in result]
    return ips, macs

第四步,再次ping,再次arp,做mac判断

# 需要跟寻的的Mac地址
bossMac = "0e-95-e7-0d-da-cb"
sleep_time = 5
path = sys.path[0]
path = os.path.join(path, 'test.vbs')

while True:
    os.system(path)
    time.sleep(120)
    time.sleep(sleep_time)
    ips, macs = get_macs()
    print(ips, macs)
    is_come = 0
    for mac in macs:
        if mac == bossMac:
            is_come = 2
            # 5分钟扫描一次
            sleep_time = 300
            # 提示报警
            choice = g.msgbox(msg="有内鬼,终止交易!", title="OMG")
            break
    if is_come == 0:
        # 5秒钟扫描一次
        sleep_time = 5
        g.msgbox(msg="一切正常!", title="OMG")
VBS
Set obj = createobject("wscript.shell")
obj.run "cmd /c for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.0.%i"

原项目:github
修改:原项目没有重新ping的过程,这个过程是必须的;对代码重新进行了缩进;另外mac存在随机mac和本机(手机)mac,所以这个判断个人觉得没有ip好用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vigigo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值