为了上班摸鱼,我用Python开发“BOSS来了”!

开发 后端
作为打工人来说,特别是996,、007的工作,除了干饭之外,最紧张刺激的莫过于上班的时候偶尔偷偷闲,去池塘里面摸摸鱼。

[[407617]]

本文转载自微信公众号「Python技术」,作者派森酱。转载本文请联系Python技术公众号。

作为打工人来说,特别是996,、007的工作,除了干饭之外,最紧张刺激的莫过于上班的时候偶尔偷偷闲,去池塘里面摸摸鱼。

[[407618]]

996摸鱼

一般人摸得哪些鱼呢?聊天、微博、微信朋友圈、小游戏、小说、股票基金等等。

摸鱼的最大阻碍是什么?当然是包工头(老板)了,他们恨不得打工人24小时不间断地干活。

[[407619]]

老板抓摸鱼

但是人的精力是有限的,一天只能集中精力干那么几个小时,其他时间需要通过摸鱼来调剂有限,所以我们只要摸鱼不被包工头发现,那是相当愉快的一件事情。

为此,我用 Python 写了一个小工具——BOSS 来了,来监控老板,减少摸鱼被发现的概率。

思路

我们知道,每台电脑或者手机等终端都有一个固定的 Mac 地址,而我们公司办公区域有几个 AP ,大家手机连接的都是距离自己最近的 AP ,所以理论上如果我知道老板手机的 Mac 地址,然后扫描局域网的所有 Mac 地址,如果出现老板手机的 Mac 地址,那么老板大概率是在我附近的,此时摸鱼比较危险;如果没有出现老板额 Mac 地址,那么老板可能离我比较远,此时摸鱼比较安全。

基于上面思路,我要做的就是搞到老板手机的 Mac 地址,然后不断轮询局域网的所有 Mac 地址,一旦发现出现老板手机的 Mac 地址,我就老老实实干活,一旦老板的 Mac 地址消失了,就可以摸鱼了。

实现

获取老板手机Mac地址

怎么搞到老板的手机 Mac 地址?

好多人听到这个可能就感觉没戏了!总不能把老板的手机偷过来,然后去设置里面找吧。

天无绝人之路,只要肯动脑,办法可不少!

我的方法是这样的。当其他同事没有走动的时候,老板来的时候,保存一次局域网的 Mac 地址信息,当老板走的时候再保存一次,然后比对,找出老板手机的 Mac 地址。为了确保准确性,可以多试几次。

获取所有Mac地址

第一步,使用 ipconfig/all 命令,可以找到当前所处的网段:

网段

第二步,使用轮询命令逐个 ping 网段内的 IP ,这一步是为了建立 ARP 表。命令如下:

  1. for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.1.%i 

其中,192.168.1.%i 是要查询的网段。

第三步,使用 arp 命令可以查询所有的Mac地址,命令为:

  1. arp -a 

运行之后,你会看到类似下面的结果:

mac地址列表

代码实现

思路已经得到验证,准备工作也做好了,接下来就是代码实现了。

首先,我们根据上面的思路,先写一个获取局域网所有的 Mac 地址的方法。

  1. def get_macs(): 
  2.     # 运行cmd控制窗口,输入“arp -a”,并将内容传递到res中 
  3.     res = os.popen("arp -a"
  4.     # 读取res数据,转换为可读数据 
  5.     arps = res.read() 
  6.     print(arps) 
  7.  
  8.     # 将获得的counts中的数据根据“换行符”来进行分割切片 
  9.     result = arps.split('\n'
  10.  
  11.     # 设一个空列表装ip 
  12.     ips = [] 
  13.     # 设一个空列表装mac 
  14.     macs = [] 
  15.  
  16.     # 遍历 
  17.     for i in range(1, len(result)): 
  18.         # 获得列表中第idx个数据 
  19.         line = result[i] 
  20.         if ('Internet' in line) | ('' == line) | ('接口' in line): 
  21.             continue 
  22.         # 根据“ ”进行切片 
  23.         line_split = line.split(" "
  24.         index = 0 
  25.         for l in line_split: 
  26.             if l != ''
  27.                 index += 1 
  28.                 if index == 1: 
  29.                     ips.append(l) 
  30.                 elif index == 2: 
  31.                     macs.append(l) 
  32.  
  33.     return ips, macs 

然后,写一个定时轮询。

  1. # 老板的Mac地址 
  2. bossMac = "01-00-5e-0b-14-01" 
  3. sleep_time = 5 
  4. while 1 == 1: 
  5.     time.sleep(sleep_time) 
  6.     ips, macs = get_macs() 
  7.     is_come = 0 
  8.     for mac in macs: 
  9.         if mac == bossMac: 
  10.             is_come = 2 
  11.             # 如果boss来了,就隔5分钟扫描一次 
  12.             sleep_time = 300 
  13.             # 提示报警 
  14.             choice = g.msgbox(msg="有内鬼,终止交易!", title="OMG"
  15.             break 
  16.     if is_come == 0: 
  17.         # 如果boss走了,就隔5秒钟扫描一次 
  18.         sleep_time = 5 
  19.         g.msgbox(msg="一切正常!", title="OMG"

我这里设定的是:如果老板出现了,就每隔 5 分钟轮询一次,因为老板在的话,要集中精力干活,不能太过频繁地想着摸鱼。如果老板走了,就每隔5秒钟轮询一次,摸鱼的时候还是要频繁预警比较好!

运行程序,当老板来时,预警弹窗是这样子的:

有内鬼

当老板消失后,弹窗内容是这样的:

老板走了

总结

当然,如果老板没有开 WiFi ,那么这个方法就失效了。或者老板过来了,但是 手机反应慢了,没有切换到这边的 AP ,那也会存在危险。所以不要完全依赖这个小工具,摸鱼的时候还是要偶尔观察一下周围环境。

 

最后,还是得提醒一下大家:小摸怡情,大摸伤身!

 

责任编辑:武晓燕 来源: Python技术
相关推荐

2020-09-29 06:49:09

程序员外网

2021-11-18 06:49:36

员工规范处罚

2020-12-17 10:52:31

人工智能监工数据

2022-05-24 10:20:26

前端配置优化

2021-09-13 10:11:08

Python冰冰自动提醒

2022-08-30 08:23:52

Python房源数据

2024-01-19 13:39:00

死锁框架排查

2020-09-14 14:21:36

创新DEMO

2021-03-23 11:02:27

ManjaroLinux

2020-03-02 19:51:40

戴尔

2019-09-25 20:30:25

互联网企业裁员IT行业

2017-06-05 08:55:27

Python起源应用

2017-03-23 10:42:05

Pythonjava开发

2019-11-11 14:40:10

Python划水老板

2018-01-18 13:00:23

微信

2015-07-17 09:59:18

2023-04-18 09:38:50

TruthGPT人工智能

2020-12-04 08:25:40

前端开发工具

2020-12-31 05:49:39

小广告NSFW Filter应用

2019-07-10 07:59:44

Python编程语言
点赞
收藏

51CTO技术栈公众号