作为打工人来说,特地是996,、007的工作,除了干饭之外,最缓和刺激的莫过于下班的时候偶然偷偷闲,去池塘外面摸摸鱼。
个别人摸得哪些鱼呢?聊天、微博、微信朋友圈、小游戏、小说、股票基金等等。
摸鱼的最大妨碍是什么?当然是包工头(老板)了,他们巴不得打工人24小时不间断地干活。
然而人的精力是无限的,一天只能集中精力干那么几个小时,其余工夫须要通过摸鱼来调剂无限,所以咱们只有摸鱼不被包工头发现,那是相当欢快的一件事件。
为此,我用 Python 写了一个小工具——BOSS 来了,来监控老板,缩小摸鱼被发现的概率。
思路
咱们晓得,每台电脑或者手机等终端都有一个固定的 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
其中,192.168.1.%i 是要查问的网段。
第三步,应用 arp
命令能够查问所有的Mac地址,命令为:
arp -a
运行之后,你会看到相似上面的后果:
<figcaption style=”margin: 5px 0px 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; text-align: center; color: rgb(136, 136, 136); font-size: 14px;”>mac地址列表</figcaption>
代码实现
思路曾经失去验证,筹备工作也做好了,接下来就是代码实现了。
首先,咱们依据下面的思路,先写一个获取局域网所有的 Mac 地址的办法。
def get_macs(): # 运行cmd管制窗口,输出“arp -a”,并将内容传递到res中 res = os.popen("arp -a") # 读取res数据,转换为可读数据 arps = res.read() print(arps) # 将取得的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 while 1 == 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")
我这里设定的是:如果老板呈现了,就每隔 5 分钟轮询一次,因为老板在的话,要集中精力干活,不能太过频繁地想着摸鱼。如果老板走了,就每隔5秒钟轮询一次,摸鱼的时候还是要频繁预警比拟好!
运行程序,当老板来时,预警弹窗是这样子的:
当老板隐没后,弹窗内容是这样的:
总结
当然,如果老板没有开 WiFi ,那么这个办法就生效了。或者老板过去了,然而 手机反馈慢了,没有切换到这边的 AP ,那也会存在危险。所以不要齐全依赖这个小工具,摸鱼的时候还是要偶然察看一下周围环境。
源码:https://github.com/JustDoPyth…
文末
您的点赞珍藏就是对我最大的激励!
欢迎关注搞代码gaodaima网,分享Python干货,交换Python技术。
对文章有何见解,或者有何技术问题,欢送在评论区一起留言探讨!