吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6937|回复: 87
上一主题 下一主题
收起左侧

[调试逆向] 记一次手机付费充电设备研究

[复制链接]
跳转到指定楼层
楼主
wshuo 发表于 2025-10-3 14:23 回帖奖励
本帖最后由 wshuo 于 2025-10-3 14:27 编辑

1.前言

在某宝上买了一堆电子废品玩玩,这个设备在很多公共场合使用,一般是扫描二维码后,付费,获取一个秘钥,然后输入进去后,获得一定时长的充电。设备不会联网,而是根据设备具有固定设备号码,通过一定算法获得的秘钥,当然目前这个二维码提供的服务已经失效了

2.拆解以及电路分析

里面用卡卡扣,均匀撬开即可,无螺丝固定


主控用的mcu用的是 stm8s003f3p6,充电开启关闭是通过一个gpio口设置高低电平后经过俩个mos管输出的 ,所以改变对应的gpio引脚电平即可控制充电开启关闭。
板子预留的ttl 串口以及烧录接口
接入串口监控一下信息:


每次按键输入后会更新打印对应日志,并且在输入完成后会提示 几组可以使用的正确的秘钥,尝试输入提供的秘钥,可以正确开启充电,至于算法实现懒得研究了,毕竟我可以直接往里面烧录新的固件。  

3. 分析主控stm8s003f3p6

根据数据手册 stm8s003f3p6 可以直接修改寄存器值来 设置gpio引脚功能,以及设置其高低电平
当然也可以引入标准库实现(标准库底层实现依然是修改寄存器实现的),不过这里只是为了测试,所有没有使用标准库


烧录器这里选择的是 stlinkv2
接入4个引脚:
RST  GND  SWIM         5V(3V3)

根据万用表测量:  

单片机引脚 控制
PD4 充电电源
PC3 D5灯
PC4 D6灯
PC5 D7灯
PA3 D3灯
PA2 D2灯
PA1 D1灯
PB4 D4灯

根据测试 led灯可以将对应的引脚置高电平点亮,充电也是置高电平

4. 编写程序以及烧录

demo

#define PA_ODR     (*(volatile unsigned char*)0x5000)
#define PA_IDR     (*(volatile unsigned char*)0x5001)
#define PA_DDR     (*(volatile unsigned char*)0x5002)
#define PA_CR1     (*(volatile unsigned char*)0x5003)
#define PA_CR2     (*(volatile unsigned char*)0x5004)

#define PB_ODR     (*(volatile unsigned char*)0x5005)
#define PB_IDR     (*(volatile unsigned char*)0x5006)
#define PB_DDR     (*(volatile unsigned char*)0x5007)
#define PB_CR1     (*(volatile unsigned char*)0x5008)
#define PB_CR2     (*(volatile unsigned char*)0x5009)

#define PC_ODR     (*(volatile unsigned char*)0x500A)
#define PC_IDR     (*(volatile unsigned char*)0x500B)
#define PC_DDR     (*(volatile unsigned char*)0x500C)
#define PC_CR1     (*(volatile unsigned char*)0x500D)
#define PC_CR2     (*(volatile unsigned char*)0x500E)

#define PD_ODR     (*(volatile unsigned char*)0x500F)
#define PD_IDR     (*(volatile unsigned char*)0x5010)
#define PD_DDR     (*(volatile unsigned char*)0x5011)
#define PD_CR1     (*(volatile unsigned char*)0x5012)
#define PD_CR2     (*(volatile unsigned char*)0x5013)

void main() {
    PC_DDR |= (1 << 3);  
    PC_CR1 |= (1 << 3);  
    PC_CR2 &= ~(1 << 3); 

    PC_DDR |= (1 << 4);  
    PC_CR1 |= (1 << 4);  
    PC_CR2 &= ~(1 << 4); 

    PC_DDR |= (1 << 5);  
    PC_CR1 |= (1 << 5);  
    PC_CR2 &= ~(1 << 5); 

    PD_DDR |= (1 << 4);  
    PD_CR1 |= (1 << 4);  
    PD_CR2 &= ~(1 << 4); 

    PA_DDR |= (1 << 3);  
    PA_CR1 |= (1 << 3);  
    PA_CR2 &= ~(1 << 3); 

    PA_DDR |= (1 << 1);  
    PA_CR1 |= (1 << 1);  
    PA_CR2 &= ~(1 << 1); 

    PA_DDR |= (1 << 2);  
    PA_CR1 |= (1 << 2);  
    PA_CR2 &= ~(1 << 2); 

    PB_DDR |= (1 << 4);  
    PB_CR1 |= (1 << 4);  
    PB_CR2 &= ~(1 << 4); 

        PD_ODR |= (1 << 4); //PD4设置高电平 
  while(1) {
    PC_ODR ^= (1 << 3); //对PC3设置取反,让其闪烁
    PC_ODR ^= (1 << 4);
    PC_ODR ^= (1 << 5);

    PA_ODR ^= (1 << 3);
    PA_ODR ^= (1 << 1);
    PA_ODR ^= (1 << 2);

    PB_ODR ^= (1 << 4);

    for(int i = 0; i < 300; i++){
          for(int i = 0; i < 300; i++){;}
  }
  }
}

这里功能是 开启所有led灯,并让其闪烁,并长开 充电

编译:

sdcc -mstm8 --out-fmt-ihx --std-sdcc11 main.c
packihx main.ihx > main.hex

烧录:

stm8flash -c stlinkv2 -p stm8s003f3 -w main.ihx

参考:stm8s003f3数据手册以及demo

5. 其他

还有开关gpio没有测量,如果使用开关,需要将开关对应的单片机引脚设置为输入,那么这个设备是一个支持4按键输入,并且具有led灯的单片机,设想可以编写一个程序 做一个定时充电设备,不过感觉也没什么用。

免费评分

参与人数 11吾爱币 +18 热心值 +10 收起 理由
Stubstone + 1 + 1 热心回复!
gumuo + 1 + 1 热心回复!
1588 + 1 + 1 谢谢@Thanks!
Like268 + 1 谢谢@Thanks!
willJ + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
aliza39 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
qaz003 + 1 + 1 哈哈,老哥多分享这类偏门小玩意
zigzag + 2 + 1 谢谢@Thanks!
ghdisjdgdijd + 1 + 1 我很赞同!
agunner + 1 + 1 热心回复!
yxnwh + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
跌宕起伏 发表于 2025-10-3 15:17
厉害了 可我更喜欢自带充点线  而且这个东西让我有一种 买个手机扫码用公用电话打电话一样的感觉
推荐
dblkings 发表于 2025-10-3 18:49
这玩意你只需要乱按一气就能开启了。。。。。。
推荐
bester 发表于 2025-10-3 14:35
直接飞根线 对你们来说应该也能绕过这个芯片控制吧?
4#
38342175 发表于 2025-10-3 14:41
剪掉这个,直接可用!
5#
40tuu369478 发表于 2025-10-3 14:42
直接剪掉然后接线就完事了
6#
smile1110 发表于 2025-10-3 15:04
你为什么如此nb
7#
lmyx2008 发表于 2025-10-3 15:07
二维码看上去高大上,电路图弄懂来不难的
8#
schoolyears 发表于 2025-10-3 15:15
奇怪的姿势增加了
9#
Arthur3732 发表于 2025-10-3 16:07
bester 发表于 2025-10-3 14:35
直接飞根线 对你们来说应该也能绕过这个芯片控制吧?

费那事,直接剪了剥皮搭接上去就行了。
10#
yuequer 发表于 2025-10-3 16:51
好厉害,拿到芯片都能自己写程序烧录。
剪掉不是不好玩了嘛
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-9-16 19:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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