51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4327|回复: 0
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    擦汗
    昨天 08:46
  • 签到天数: 981 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-6-30 10:24:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     思路
      我们知道,每台电脑或者手机等终端都有一个固定的 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 ,那也会存在危险。所以不要完全依赖这个小工具,摸鱼的时候还是要偶尔观察一下周围环境。
      最后,还是得提醒一下大家:小摸怡情,大摸伤身!





    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-7-9 07:01 , Processed in 0.063657 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表