为了上班摸鱼,我用Python开发“BOSS来了”!
文 |?閑歡
來源:Python 技術(shù)「ID: pythonall」
作為打工人來說,特別是996,、007的工作,除了干飯之外,最緊張刺激的莫過于上班的時(shí)候偶爾偷偷閑,去池塘里面摸摸魚。
996摸魚一般人摸得哪些魚呢?聊天、微博、微信朋友圈、小游戲、小說、股票基金等等。
摸魚的最大阻礙是什么?當(dāng)然是包工頭(老板)了,他們恨不得打工人24小時(shí)不間斷地干活。
老板抓摸魚但是人的精力是有限的,一天只能集中精力干那么幾個(gè)小時(shí),其他時(shí)間需要通過摸魚來調(diào)劑有限,所以我們只要摸魚不被包工頭發(fā)現(xiàn),那是相當(dāng)愉快的一件事情。
為此,我用 Python 寫了一個(gè)小工具——BOSS 來了,來監(jiān)控老板,減少摸魚被發(fā)現(xiàn)的概率。
思路
我們知道,每臺(tái)電腦或者手機(jī)等終端都有一個(gè)固定的 Mac 地址,而我們公司辦公區(qū)域有幾個(gè) AP ,大家手機(jī)連接的都是距離自己最近的 AP ,所以理論上如果我知道老板手機(jī)的 Mac 地址,然后掃描局域網(wǎng)的所有 Mac 地址,如果出現(xiàn)老板手機(jī)的 Mac 地址,那么老板大概率是在我附近的,此時(shí)摸魚比較危險(xiǎn);如果沒有出現(xiàn)老板額 Mac 地址,那么老板可能離我比較遠(yuǎn),此時(shí)摸魚比較安全。
基于上面思路,我要做的就是搞到老板手機(jī)的 Mac 地址,然后不斷輪詢局域網(wǎng)的所有 Mac 地址,一旦發(fā)現(xiàn)出現(xiàn)老板手機(jī)的 Mac 地址,我就老老實(shí)實(shí)干活,一旦老板的 Mac 地址消失了,就可以摸魚了。
實(shí)現(xiàn)
獲取老板手機(jī)Mac地址
怎么搞到老板的手機(jī) Mac 地址?
好多人聽到這個(gè)可能就感覺沒戲了!總不能把老板的手機(jī)偷過來,然后去設(shè)置里面找吧。
天無絕人之路,只要肯動(dòng)腦,辦法可不少!
我的方法是這樣的。當(dāng)其他同事沒有走動(dòng)的時(shí)候,老板來的時(shí)候,保存一次局域網(wǎng)的 Mac 地址信息,當(dāng)老板走的時(shí)候再保存一次,然后比對(duì),找出老板手機(jī)的 Mac 地址。為了確保準(zhǔn)確性,可以多試幾次。
機(jī)智如我獲取所有Mac地址
第一步,使用 ipconfig/all 命令,可以找到當(dāng)前所處的網(wǎng)段:
網(wǎng)段第二步,使用輪詢命令逐個(gè) ping 網(wǎng)段內(nèi)的 IP ,這一步是為了建立 ARP 表。命令如下:
for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.1.%i
其中,192.168.1.%i 是要查詢的網(wǎng)段。
第三步,使用 arp 命令可以查詢所有的Mac地址,命令為:
arp -a
運(yùn)行之后,你會(huì)看到類似下面的結(jié)果:
mac地址列表代碼實(shí)現(xiàn)
思路已經(jīng)得到驗(yàn)證,準(zhǔn)備工作也做好了,接下來就是代碼實(shí)現(xiàn)了。
首先,我們根據(jù)上面的思路,先寫一個(gè)獲取局域網(wǎng)所有的 Mac 地址的方法。
def?get_macs():#?運(yùn)行cmd控制窗口,輸入“arp?-a”,并將內(nèi)容傳遞到res中res?=?os.popen("arp?-a")#?讀取res數(shù)據(jù),轉(zhuǎn)換為可讀數(shù)據(jù)arps?=?res.read()print(arps)#?將獲得的counts中的數(shù)據(jù)根據(jù)“換行符”來進(jìn)行分割切片result?=?arps.split('\n')#?設(shè)一個(gè)空列表裝ipips?=?[]#?設(shè)一個(gè)空列表裝macmacs?=?[]#?遍歷for?i?in?range(1,?len(result)):#?獲得列表中第idx個(gè)數(shù)據(jù)line?=?result[i]if?('Internet'?in?line)?|?(''?==?line)?|?('接口'?in?line):continue#?根據(jù)“?”進(jìn)行切片line_split?=?line.split("?")index?=?0for?l?in?line_split:if?l?!=?'':index?+=?1if?index?==?1:ips.append(l)elif?index?==?2:macs.append(l)return?ips,?macs然后,寫一個(gè)定時(shí)輪詢。
#?老板的Mac地址 bossMac?=?"01-00-5e-0b-14-01" sleep_time?=?5 while?1?==?1:time.sleep(sleep_time)ips,?macs?=?get_macs()is_come?=?0for?mac?in?macs:if?mac?==?bossMac:is_come?=?2#?如果boss來了,就隔5分鐘掃描一次sleep_time?=?300#?提示報(bào)警choice?=?g.msgbox(msg="有內(nèi)鬼,終止交易!",?title="OMG")breakif?is_come?==?0:#?如果boss走了,就隔5秒鐘掃描一次sleep_time?=?5g.msgbox(msg="一切正常!",?title="OMG")我這里設(shè)定的是:如果老板出現(xiàn)了,就每隔 5 分鐘輪詢一次,因?yàn)槔习逶诘脑?#xff0c;要集中精力干活,不能太過頻繁地想著摸魚。如果老板走了,就每隔5秒鐘輪詢一次,摸魚的時(shí)候還是要頻繁預(yù)警比較好!
運(yùn)行程序,當(dāng)老板來時(shí),預(yù)警彈窗是這樣子的:
有內(nèi)鬼當(dāng)老板消失后,彈窗內(nèi)容是這樣的:
老板走了總結(jié)
當(dāng)然,如果老板沒有開 WiFi ,那么這個(gè)方法就失效了。或者老板過來了,但是 手機(jī)反應(yīng)慢了,沒有切換到這邊的 AP ,那也會(huì)存在危險(xiǎn)。所以不要完全依賴這個(gè)小工具,摸魚的時(shí)候還是要偶爾觀察一下周圍環(huán)境。
最后,還是得提醒一下大家:小摸怡情,大摸傷身!
據(jù)說,摸魚的小伙伴都會(huì)去點(diǎn)贊和在看
推薦閱讀
Pandas處理數(shù)據(jù)太慢,來試試Polars吧!
懶人必備!只需一行代碼,就能導(dǎo)入所有的Python庫
絕!關(guān)于pip的15個(gè)使用小技巧
介紹10個(gè)常用的Python內(nèi)置函數(shù),99.99%的人都在用!
可能是全網(wǎng)最完整的 Python 操作 Excel庫總結(jié)!
總結(jié)
以上是生活随笔為你收集整理的为了上班摸鱼,我用Python开发“BOSS来了”!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大一新生开发的小工具火了,网友:我好菜
- 下一篇: 发现 4 个 Python 命令行可视化