手机wifi 打卡实现自动定时打卡

查看 136|回复 10
作者:king520   
资本家用考勤打卡来束缚自由的灵魂,而我们用双手成就自由的梦想(其实就是想躺平摸鱼)之前工作室是使用指纹或刷脸打卡,必须人到现场才能打卡(当然也可以使用指纹贴代替打卡,但是还是得有人帮忙按指纹贴),这个操作空间不大。后面打卡机升级可以使用app连接wifi打卡,听到这个消息时,突然灵光一闪,逐渐有了一个大胆的想法。下面是具体的操作流程(本帖更多注重原理性的介绍,细节处可能会有所忽略)
1.首先是app试用,在真机上下载打卡app,并体验一下


image.png (18.14 KB, 下载次数: 0)
下载附件
2022-5-11 10:40 上传



image.png (16.19 KB, 下载次数: 0)
下载附件
2022-5-11 10:40 上传

图1 是真机正常 下载安装app ,并连接可打卡wifi页面,图2是点击打卡,打卡成功页面(为防止侵权,对页面进行了删减)
手机app打卡的原理其实很简单,就是判断人有没有到现场,然后再进行打卡签到操作,比如定位打卡,wifi打卡,以后可能会有人工智能打卡,量子打卡,原理也是一样。
要实现定时打卡就有两个问题要解决,一个是点时,一个是打卡。解决打卡问题,首先是伪造现场(假装自己在现场),然后是固定的打卡操作。解决定时问题,可以通过设置时间触发器的方式。再将两者结合一下就能实现定时自动打卡了。(晕)
2.伪造现场,执行打卡操作
伪造现场,肯定不能把真机留在现场(毕竟我要用它在被窝里看葫芦娃)。很自然的想到用台式机上的模拟器,假装自己在岗位兢兢业业。我这里用的是某夜某神模拟器,安装打卡app试用一下,结果不出意外的出意外了。


image.png (15.67 KB, 下载次数: 0)
下载附件
2022-5-11 11:28 上传



3386d5e6a7ea5c8ac79039e79fd68ed.png (20.92 KB, 下载次数: 0)
下载附件
2022-5-11 11:50 上传

图3 是模拟器安装app,进入页面显示,图4是真机连接其他wifi显示页面
(以下内容需要具相关知识,可以直接跳过看结论)
模拟器模拟的android型号是XiaoMi I6,版本是android 5.0,网络连接类型是wifi ,wifi名称是wiredssid,按理来说模拟器应该显示图4页面,也就是没连对wifi,但是实际情况是一直在获取wifi。这里怀疑是app获取模拟器当前wifi 失败了,所以一直在循环,于是写了个android demo 程序测试了一下发现可以正常获取。百思不得其解的情况下,用android killer(以下简称ak)看看源码,发现部分类名和属性名都被混淆过了,阅读起来很不友好。这时发现论坛另一位老哥发的贴子:https://www.52pojie.cn/thread-1406878-1-1.html可以方便的定位代码位置,于是下载源码整了一下(这个确实是神器,用起来很方便,非常建议爱好android 逆向的小伙伴收藏,但是整的时候遇到个小问题,就是我的客户端是chrome,一直提示连接服务端失败,最后发现是服务端进行websocket协议判断时忘记大小写统一了,改了之后成功连接上了),结合ak,成功定位到具体的包和类 。但是看源码还是看不出啥问题。最后是通过 adb logcat 在打卡app的日志里发现了蛛丝马迹,原来是app调用gps服务通过Amap(高德地图)api 获取位置信息的时候返回了错误代码,原因是模拟器不像真机一样配备gps设备,获取的信息无法进行精确定位。这里用xposed hook(AMapLocation相关方法)返回的错误代码,改成成功的标志,并且把获取经纬度的方法也hook了一下。完成对位置信息hook之后,模拟器页面显示从图3变成了图4,离成功更近一步了。接下来是对wifi的hook,容易想到判断连接的wifi是否是可打卡wifi,应该是通过wifi名称和路由的mac地址(mac 地址是全球唯一的,可以用于设备标识)。用xposed hook(WifiInfo相关方法) 相关方法后,模拟器页面显示从图4 变成了图1。至此完成了现场伪装,欺骗app,假装在现场。
结论是这款打卡app会获取用户的地理位置信息,以及连接wifi的名称和mac地址等相关信息判断用户是否可以打卡,伪装相关信息后就可以随时随地打卡了。
3.定时打卡
实现模拟器可以打卡后,接下来就是用程序模拟用户点击打卡按钮实现自动打卡(其实一开始想的是对app进行抓包,每天定时向服务器发一个打卡数据包就行了,但是抓包分析有点难度)。
这里因为是模拟器,模拟用户点击可以使用adb shell命令(用起来相对简单),命令如下
adb connect ip:port  //连接模拟器
timeout 5  //等待5秒
adb shell am start "x.x.x/x.x.x.Activity" 启动打卡app
timeout 10
adb shell input tap 600 1100   //模拟点击,这里需要固定模拟器屏幕大小,不然定位不到打卡按钮
把以上命令保存成批处理文件就可以一键自动打卡了,再创建一个windows 定时任务,每天早上和晚上定时运行批处理脚本,就可以实现定时自动打卡签到签退了(要保证电脑和模拟器一直开着)
图 5 自动打卡结果
如图5所示是自动打卡结果,8点多的时候我还在睡觉
4.总结
手机wifi打卡,相关app一般是通过获取手机的位置信息和连接wifi信息来判断用户是否在打卡区,通过伪装这些信息可以欺骗app假装自己在现场,然后进行打卡。
定时自动打卡这里取了个巧用了adb shell tap命令来模拟点击,做成批处理的形式,创建windows 定时任务来执行。
自动定时打卡这里其实非常“硬编码”,而且还必须要求电脑和模拟器开着,且模拟器屏幕大小固定。额,大概这也算是一种思路吧(其实一开始想的是写个app demo模拟点击,想想还是太麻烦了)。
以上就是手机wifi打卡实现定时自动打卡的过程了,重在讨论思路,忽略了很多细节,欢迎大家在评论区和谐友善讨论(大佬勿喷)。

模拟器, 定时

kissboss   

定时打卡不行  除非是打卡时间段内随机时间打卡 不然每次都是同一时间打卡百分百有问题
别问我怎么知道的 因为被人力警告过了
TsShark   

我们用的钉钉打卡,而且下班后都要断电,太难了
冷眸b   

厉害谢谢
honmashironeko   

最好用的肯定还是抓包发包,但是现在校验太多了,太麻烦了
彩色沙漠   

企业微信能不能搞?
lvjoker   

钉钉能不能搞
zhaoxiaohua125   

苹果手机有没有啊
abs9668   

感谢分享
taxuewuhen   

感谢分享
您需要登录后才可以回帖 登录 | 立即注册

返回顶部