wkdxz 发表于 2021-11-14 14:55

[Python] 使用Python检测手机是否在局域网,不在就结束微信

本帖最后由 wkdxz 于 2021-11-14 15:04 编辑

新人第一次发帖,此功能其实可以用bat命令实现,但最近在玩Python,所以用来Python来写。

实现效果:
    手机不在局域网内,则结束微信进程,防止别人偷窥微信聊天记录

思路:

[*]在路由里将IP与手机Mac绑定(让IP可以直接查询到手机在线情况)
[*]使用 Ping 手机IP,检测手机是否在线
[*]如手机在线,就退出检测
[*]手机不在线,则说明人远离电脑,则结束微信进程。



后续问题:
    直接结束微信进程,手机微信上还是显示微信在线。希望有高手帮我完善下代码,可以让微信可以正常退出。
from os import system as run
from os import popen as echo
from time import sleep
from sys import exit
from arrow import now


def Wechat_onlie():
    for i in echo('tasklist'):
      if 'WeChat.exe' in i:
            return True
    return False


def Tel_onlie():
    ip = '192.168.0.123'#手机对应的固定ip地址【在路由器内将手机MAC和IP地址绑定】
    ls =
    total = ''.join(ls)
    if total.count('TTL=') > 0:#有 TTL= 字样 表示手机在局域网内
      return True
    return False


def Count_tel_offline(cishu):#每3秒钟检测一次,然后返回不在线次数
    n = 0
    for i in range(cishu):
      print(f'第{i+1}次检测...')
      if not Tel_onlie():
            n += 1
      sleep(0.5)
    return n


if __name__ == '__main__':
    thistime = now().format('YYYY-MM-DD HH:mm')
    jc = 'WeChat.exe 进程'
    if not Wechat_onlie():
      print(f'无 {jc} ,直接退出')
      exit()
    else:
      print(f'有 {jc}')

    cishu = 5
    jiance = Count_tel_offline(cishu)

    if jiance > 0:#如果有一次不在线,就结束微信进程
      t = f'{thistime}\t结束微信进程'
      print(t)
      for j in range(3):
            for i in 'Wechat_Browser WeChatPlayer WeChat'.split():
                run(f'taskkill /f /im {i}.exe')

wkdxz 发表于 2021-11-14 16:51

本帖最后由 wkdxz 于 2021-11-14 16:54 编辑

WUAIDHL 发表于 2021-11-14 16:37
你好,请问怎么使用呢
安装好Python3.8及其以上的版本,下载附件中的脚本运行即可。
我修改一个不依赖第三方库的版本。
如果有需要,我可以打包为exe,但Python打包为exe体积一般比较大,不值得。

wkdxz 发表于 2021-11-15 08:46

m58758788 发表于 2021-11-14 18:18
可以啊 本来我想post进路由 看看指定设备有没有连入   确实没想到只要ping就可以了

哈哈哈 我也是想了好些办法,最后想到这个。这办法对于其他人来说,难点在于MAC绑定IP。

83571674 发表于 2021-11-14 15:02

如果知道公司的路由密码,这方法就可以用来摸鱼了{:1_918:}

fangxin 发表于 2021-11-14 15:52

感谢作者分享

ynboyinkm 发表于 2021-11-14 15:55

这个必须每一秒都在网内,去上个cs都不行...

yunsxk 发表于 2021-11-14 16:00

有点期待这玩意儿{:1_921:}

huaibaoyy 发表于 2021-11-14 16:12

看看操作,学习学习

wkdxz 发表于 2021-11-14 16:17

ynboyinkm 发表于 2021-11-14 15:55
这个必须每一秒都在网内,去上个cs都不行...

我是把它添加到计划任务里,每5分钟执行一次,倒也不用每一秒都在线。

yybc26 发表于 2021-11-14 16:19

这个有点意思

littleworm 发表于 2021-11-14 16:27

有点意思,防范意识强啊

WUAIDHL 发表于 2021-11-14 16:37

你好,请问怎么使用呢
页: [1] 2 3
查看完整版本: [Python] 使用Python检测手机是否在局域网,不在就结束微信