我们知道,每台电脑或者手机等终端都有一个固定的 Mac 地址,而我们公司办公区域有几个 AP ,大家手机连接的都是距离自己最近的 AP ,所以理论上如果我知道老板手机的 Mac 地址,然后扫描局域网的所有 Mac 地址,如果出现老板手机的 Mac 地址,那么老板大概率是在我附近的,此时摸鱼比较危险;如果没有出现老板额 Mac 地址,那么老板可能离我比较远,此时摸鱼比较安全。
基于上面思路,我要做的就是搞到老板手机的 Mac 地址,然后不断轮询局域网的所有 Mac 地址,一旦发现出现老板手机的 Mac 地址,我就老老实实干活,一旦老板的 Mac 地址消失了,就可以摸鱼了。
实现
获取老板手机Mac地址
怎么搞到老板的手机 Mac 地址?
好多人听到这个可能就感觉没戏了!总不能把老板的手机偷过来,然后去设置里面找吧。
天无绝人之路,只要肯动脑,办法可不少!
我的方法是这样的。当其他同事没有走动的时候,老板来的时候,保存一次局域网的 Mac 地址信息,当老板走的时候再保存一次,然后比对,找出老板手机的 Mac 地址。为了确保准确性,可以多试几次。
获取所有Mac地址
第一步,使用 ipconfig/all 命令,可以找到当前所处的网段:
第二步,使用轮询命令逐个 ping 网段内的 IP ,这一步是为了建立 ARP 表。命令如下:
for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.1.%i
# 将获得的counts中的数据根据“换行符”来进行分割切片 result = arps.split('\n')
# 设一个空列表装ip ips = [] # 设一个空列表装mac macs = []
# 遍历 for i in range(1, len(result)): # 获得列表中第idx个数据 line = result[i] if ('Internet'in line) | ('' == line) | ('接口'in line): continue # 根据“ ”进行切片 line_split = line.split(" ") index = 0 for l in line_split: if l != '': index += 1 if index == 1: ips.append(l) elif index == 2: macs.append(l)
return ips, macs
然后,写一个定时轮询。
# 老板的Mac地址 bossMac = "01-00-5e-0b-14-01" sleep_time = 5 while1 == 1: time.sleep(sleep_time) ips, macs = get_macs() is_come = 0 for mac in macs: if mac == bossMac: is_come = 2 # 如果boss来了,就隔5分钟扫描一次 sleep_time = 300 # 提示报警 choice = g.msgbox(msg="有内鬼,终止交易!", title="OMG") break if is_come == 0: # 如果boss走了,就隔5秒钟扫描一次 sleep_time = 5 g.msgbox(msg="一切正常!", title="OMG")