当前位置: 首页 > 科技观察

为了上班打鱼,我用Python开发《BOSS来了》!

时间:2023-03-12 09:05:07 科技观察

本文转载自微信公众号《Python技术》,作者:佩森酱。转载本文请联系Python技术公众号。作为打工,尤其是996、007的工作,除了做饭,最刺激的莫过于上班时偶尔偷偷摸摸池塘里的鱼。996钓鱼普通人钓什么鱼?聊天、微博、微信朋友圈、小游戏、小说、股票基金等,钓鱼最大的障碍是什么?当然是包工头(老板),恨不得24小时打工人干活。老板打鱼,但是人的精力是有限的,每天只能专心工作几个小时,剩下的时间需要靠钓鱼来调整,所以只要我们钓鱼不被包工头发现,那是一件相当愉快的日子。为此,我用Python写了一个小工具——BOSS来监视boss,减少被钓鱼发现的概率。思路我们知道每个终端比如电脑或者手机都有一个固定的Mac地址,而我们公司办公区有好几个AP,每个人的手机都连接到最近的AP,所以理论上如果我知道老板的手机Mac地址,然后扫描局域网内所有的Mac地址,如果出现老板手机的Mac地址,那么老板很可能就在我附近,此时钓鱼比较危险;如果老大的Mac地址没有出现,那么老大可能离我很远,这时候摸鱼比较安全。基于以上思路,我要做的就是获取老板手机的Mac地址,然后不断轮询局域网内所有的Mac地址。一旦出现老板手机的Mac地址,我就老老实实干活。一旦老板的Mac地址消失了,就可以钓鱼了。如何获取老板手机的Mac地址如何获取老板手机的Mac地址?很多人听到这里可能会觉得没办法!总不能偷了老板的手机,然后去设置里面找吧。没有无双的路,只要肯动脑筋,路有很多种!我的方法是这样的。其他同事不走动的时候,老板来了,把局域网的Mac地址信息保存一次,老板走的时候再保存一遍,然后比对找出老板手机的Mac地址。为保证准确性,可以多试几次。获取所有Mac地址第一步是使用ipconfig/all命令查找当前网段:第二步是使用polling命令逐个ping网段内的IP。这一步是建立ARP表。命令如下:for/L%iIN(1,1,254)DOping-w1-n1192.168.1.%i其中192.168.1.%i为要查询的网段。第三步,使用arp命令查询所有Mac地址。命令为:arp-a运行后会看到类似如下结果:mac地址列表的代码实现思路已经验证通过,准备工作完成。下面是代码的实现。首先,根据上面的思路,我们先写一个获取局域网内所有Mac地址的方法。defget_macs():#运行cmd控制窗口,输入“arp-a”,将内容传输到resres=os.popen("arp-a")#读取res数据,转换为可读数据arps=res.read()print(arps)#将得到的counts中的数据按照“换行符”切片进行拆分result=arps.split('\n')#设置一个空列表ipips=[]#设置一个空列表macmacs=[]#遍历foriinrange(1,len(result)):#获取list中的idx数据line=result[i]if('Internet'inline)|(''==line)|('Interface'inline):continue#Sliceaccordingto""line_split=line.split("")index=0forlinline_split:ifl!='':index+=1ifindex==1:ips.append(l)elifindex==2:macs.append(l)returnips,macs然后,写一个定时轮询。#老板的Mac地址bossMac="01-00-5e-0b-14-01"sleep_time=5while1==1:time.sleep(sleep_time)ips,macs=get_macs()is_come=0formacinmacs:ifmac==bossMac:is_come=2#如果老板来了,每5分钟扫描一次sleep_time=300#提示报警choice=g.msgbox(msg="里面有鬼,终止交易!",title="OMG")breakifis_come==0:#如果boss不在,每5秒扫描一次查询一次,因为如果boss在身边,你就得专心工作,不要想着钓鱼太频繁。如果老板不在,每5秒轮询一次。垂钓时常有警示为佳!运行程序,boss来了,警告弹窗是这样的:boss消失时有鬼,弹窗内容如下:boss不见了。总结当然,如果老板不开启WiFi,那么这个方法就失效了。或者老板过来了,但是手机反应慢,这里又没有切换到AP,同样会有危险。所以不要完全依赖这个小玩意儿,钓鱼的时候也要偶尔观察一下周围的环境。最后还是要提醒大家一句:小摸会开心,大摸会伤身!