你也是个成熟的手机了,要学会自己充电了
很多人都有长时间不用的手机,弄好了短信转发后,又想不起来给他们充电。这时候就要大声呵斥!都是成熟的手机了,要学会自己给自己充电。
准备
- 一个可以远程开关的插座(这里选了公牛的GN-F1331,这里说下,充电头不能太高,否则插进去盖子盖不上。。。这个时候苹果祖传的5V1A充电头就派上用场了)
- 一台需要充电的手机
- 一台带无线网卡的电脑
抓取远程开关数据包
- 这里选用的公牛的GN-F1331,先下载
小京鱼
APP进行绑定, - 绑定完后,先试下能否开关。
- 开始抓包
- 电脑先打开个WIFI AP。WIN10系统下只要有无线网卡,都可以打开AP,
设置
-网络和internet
-移动热点
,把与其他设备共享我的internnet
勾上。
- 将手机连接上电脑AP。
- 使用
Wireshark
抓包。 - 这里需要确定电脑跟公牛插座在同一个局域网下。
- 确实公牛插座在局域网下的IP。
- 输入筛选规则
ip.dst==192.168.1.99
,192.168.1.99
替换成插座局域网IP。
- 在APP上按下开关,确定开关的包
- 复制包内容
- 拿到数据
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 这个包每次都是不一样的,但是并没有校验重放,暂时无法解析数据格式,有兴趣的可以研究下,而且小京鱼有SDK开放。
模拟发送
- 要确定的包是否有用,需要先发送一遍
- windows可以使用
hercules
、sockettest
,linux使用nc
- 这边直接使用手机测试
- 手机打开adb权限,下载
platform-tools
adb shell
进入shell界面- 先输入
nc
看下命令是否存在,如果不存在可能需要安装busybox
发送UDP报文
echo 'xxxxxxx' | xxd -r -p | timeout 1 nc -u 192.168.1.99 80 # xxxxxxx替换成上面抓到的数据。 # xxd -r -p将数据转为16进制 # timeout 1 表示1s后结束,因为nc发送完成后不会自己结束。 # nc -u 表示发送udp数据 # 192.168.1.99替换成插座的IP地址
- 发送完后会发现插座开或者关了。
使用tasker实现自动充电
- 新建
配置文件
,选择事件
,搜索电量变化
,优先级不管,直接返回。 - 新建任务,点击右下角的按钮新建,选择
代码
-运行shell命令
。 - 将模拟发送时候使用的shell命令复制进去,需要确定手机有
nc
命令,没有需要安装busybox
。 - 找到
if
,点击+
,左值输入%BATT
,如果当前编辑命令是开插座,选择判断条件数字:小于
,值输入25,表示电量低于25%自动打开插座。 - 保存,再次新建,选择
代码
-运行shell命令
。依据上面添加当电量大于多少时关闭插座。