首页
社区
课程
招聘
9
[原创]试着破解孔雀石SDR的序列号保护
发表于: 2021-1-27 14:36 51870

[原创]试着破解孔雀石SDR的序列号保护

2021-1-27 14:36
51870

网上看到俄国这个孔雀石SDR收音机不错,但是有序列号保护,于是想试着看看能不能去掉,由于这个比较贵要上百元,我这样没收入的人根本买不起,所以不保证破解成功。


孔雀石SDR收音机作者提供的资料

https://yadi.sk/d/4ZgsrswxYClG1Q


作者直接提供了PCB和固件。


去掉这种序列号保护在专业人眼里非常简单,别人要么有硬件要么软件仿真一下就能找到,而我技术比较菜这次只通过看IDA反汇编的代码找。


由于没硬件网上找资料也没找到演示如何输入注册号码的,只找到一个烧写固件的视频,在视频结尾看到了序列号页面。


可以看到第2行是序列号,第四行估计应该就是输入的密码


这个SDR收音机是STM32H7的单片机做主控,于是下载参考手册,这种序列号保护一般是基于STM32上96位ID的。


打开手册找寄存器地址

打开用IDA 打开下载到的固件,方法网上和论坛上都有这里就不重复了。

 FW_1_10a.hex 


搜索0x1FF1E800结果找不到。

于是搜索LCD屏幕上的英文THE,结果找到了

可以知道这个就是序列号显示函数,于是找那里调用了这个函数。


可以看到这个函数调用了ID显示函数



在这里可以看到0x1ff1e8xx,这明显就是读ID的函数,但是这个地址是0x1FF1E80B和 0x1FF1E7FF,难怪刚才搜索不到,可能作者故意的,地址8019B12的循环完成了读96位ID并且保存到0X2001AFC8

再往下找看sub_800D748,可以知道ID号码经过了多次运算

这个是比较关键的函数,看完这个就知道了计算后的ID被写入了0X2001AF54和0X2001AF58,而恰巧输入的密码也是两个32位数也就是16个4位数,正好和密码位数一样。


再看下面这个函数可以看到把0X2001AF20的一个数据读到了R0


继续看800FE30



先看8001148C

可以看到把0X50020414的第12位清零

到参考手册看这个是什么寄存器

可以看到从做的是GPIOB,打开后面的连接看寄存器页面


[注意]看雪招聘,专注安全领域的专业人才平台!

上传的附件:
收藏
免费 9
支持
分享
赞赏记录
参与人
雪币
留言
时间
一路南寻
感谢你的贡献,论坛因你而更加精彩!
2025-1-17 01:15
ohmytime
为你点赞~
2024-3-25 12:01
PLEBFE
为你点赞~
2023-1-15 01:25
0xroot
为你点赞~
2022-7-26 16:50
quaker
为你点赞~
2021-10-13 20:40
wmsuper
为你点赞~
2021-2-20 21:28
zhtdl
为你点赞~
2021-1-29 19:56
0x指纹
为你点赞~
2021-1-27 15:54
pureGavin
为你点赞~
2021-1-27 15:11
打赏 + 40.00雪花
打赏次数 2 雪花 + 40.00
收起 
赞赏  一位没有留下痕迹的看雪读者   +20.00 2021/03/23 感谢分享
赞赏  wmsuper   +20.00 2021/02/20 感谢分享~
最新回复 (58)
雪    币: 23340
活跃值: (7036)
能力值: (RANK:445 )
在线值:
发帖
回帖
粉丝
2
如果有个硬件就更好了。
2021-1-27 14:50
0
雪    币: 9123
活跃值: (2572)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
Nice
2021-1-27 14:58
0
雪    币: 15083
活跃值: (18438)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2021-1-27 15:11
0
雪    币: 1719
活跃值: (555)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享
2021-1-28 08:46
0
雪    币: 1556
活跃值: (315)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
单片机有点意思
2021-1-28 09:16
0
雪    币: 1037
活跃值: (1785)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
师傅厉害
2021-1-28 10:34
0
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8

方法2有网友验证可以使用,方法1不行,他也没给我截图也没说能不能显示,我看了看显示顺序可能错了,R7 R6,R5, R4依次压栈,结果R7 R6和R5 R4搞反了,下面这个3.zip改过来了。


作者在0x20001AC8申请了4K的RAM,然后通过计算STM32唯一ID得到一个指针指向这片区域来生成密码,这片区域没有使用,不知道STM32的C语言申请一片区域后不使用里面是什么数据。



我C语言不熟悉,写了个算号器的程序,现在就缺知道这4K里面是什么,再就是要有个正确的密码做比对好知道顺序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
 
void main() {
  unsigned int di_32, zhong_32, gao_32; //序列号
  unsigned int wei8_0, wei8_1, wei8_2, wei8_3;
  unsigned int wei8_4, wei8_5, wei8_6, wei8_7;
  unsigned int wei8_8, wei8_9, wei8_a, wei8_b;
  unsigned char mima[8];
  unsigned int ID[1024];
  unsigned int a, b;
    di_32 = 0x38333439;
    zhong_32 = 0x16513030;
    gao_32 = 0x22004d00;
    wei8_0 = (di_32 & 0xff00) >> 8;
    wei8_1 = (di_32 & 0xff) << 8;
    wei8_2 = (di_32 & 0xff000000) >> 8;
    wei8_3 = (di_32 & 0xff0000) << 8;
    wei8_4 = (zhong_32 & 0xff00) >> 8;
    wei8_5 = (zhong_32 & 0xff) << 8;
    wei8_6 = (zhong_32 & 0xff000000) >> 8;
    wei8_7 = (zhong_32 & 0xff0000) << 8;
    wei8_8 = (gao_32 & 0xff00) >> 8;
    wei8_9 = (gao_32 & 0xff) << 8;
    wei8_a = (gao_32 & 0xff000000) >> 8;
    wei8_b = (gao_32 & 0xff0000) << 8;
    ID[0] = wei8_0 | wei8_1 | wei8_2 | wei8_3;
    ID[1] = wei8_4 | wei8_5 | wei8_6 | wei8_7;
    ID[2] = wei8_8 | wei8_9 | wei8_a | wei8_b;
    wei8_1 = wei8_1 >> 8;
    wei8_2 = wei8_2 >> 16;
    wei8_3 = wei8_3 >> 24;
    wei8_5 = wei8_5 >> 8;
    wei8_6 = wei8_6 >> 16;
    wei8_7 = wei8_7 >> 24;
    wei8_9 = wei8_9 >> 8;
    wei8_a = wei8_a >> 16;
    wei8_b = wei8_b >> 24;
    di_32 = wei8_0 + wei8_1 + wei8_2 + wei8_3 + wei8_4 + wei8_5 + wei8_6 + wei8_7 + wei8_8 + wei8_9 + wei8_a + wei8_b;//每次读一个8位ID号累加
    zhong_32 = di_32 & 0x3ff; //提取低10位
    gao_32 = wei8_0 + wei8_b; //ID最低低8位+ID最高高8位
    di_32 = gao_32 + zhong_32; //ID最高位8位+ID最低8位+累加结果提取的10位
    a = zhong_32;
    b = di_32;
    for (int i = 0; i < 8; i = i + 1){
      mima[i] = ID[di_32];
      di_32 = (zhong_32 + di_32) & 0x3ff;
    }
    printf("0x%02X  0x%02X  0x%02X  0x%02X  0x%02X  0x%02X  0x%02X  0x%02X \n",mima[7],mima[6],mima[5],mima[4],mima[3],mima[3],mima[1],mima[0]);
     
     
     
 
     
 
     
     
}  


执行结果肯定不对,关键就是不知道4K的RAM里面是什么


最后于 2021-1-28 14:53 被yjmwxwx编辑 ,原因: 固件显示搞反了,改过来重新上传
上传的附件:
  • 3.zip (439.71kb,77次下载)
2021-1-28 14:15
0
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
胡一米 如果有个硬件就更好了。
是啊,要是有硬件就容易多了,关键这个收音机好几百实在有点贵
2021-1-28 14:17
0
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10


方法1 R7R6和R5R4搞反了,导致显示中中间夹着0,改过来了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.thumb
.syntax unified
.section .text
movw r4, # 0xaf54
movt r4, # 0x2001
ldrh r2, [r4]
adds r4, r4, # 2
ldrh r3, [r4]
adds r4, r4, # 2
ldrh r7, [r4]
adds r4, r4, # 2
ldrh r6, [r4]
movs r4, # 0
movs r5, # 0


上传的附件:
  • 3.zip (439.71kb,61次下载)
2021-1-28 15:04
0
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
11



上面这个固件已经有网友反馈了,可能顺序不对,我让他输入8CABD076E4911F3F试试,由于再论坛上交流还没收到他的反馈。


那4K RAM知道里面是什么了,作者定义了一个数组,初始化的时候复制到内存了,只要把这个数组放到算号器里面就能用了。


下面是数组复制到内存的函数,可以看到从0X8051820复制了一个数组到0X20000000-0X20003F4C,当然算号器用的是0X20001AC8-20002AC8,只要把这个放到算号器里面就行了。



要复制到算号器的数组



2021-1-29 10:20
1
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
12

复制过去了,没验证不知道对不对,复制的数组有没有问题,要是有人发个序列号验证下就好了,可能顺序不对。


我不会WINDOWS上编程序,所以只提供C程序,会的帮忙给大家写个吧,反正我是用不到这个东西。

序列号就是 
   低32位  di_  32 = 0x38333439;      
    中间32位    zhong_32 = 0x16513030;
    高32位        gao_32 = 0x22004d00;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
#include <stdio.h>
 
void main() {
  unsigned int di_32, zhong_32, gao_32; //序列号
  unsigned int wei8_0, wei8_1, wei8_2, wei8_3;
  unsigned int wei8_4, wei8_5, wei8_6, wei8_7;
  unsigned int wei8_8, wei8_9, wei8_a, wei8_b;
  unsigned char mima[8];
  unsigned int ID[1024] = {
  0x25, 0xe6, 0xbc, 0x70, 
 0xf1, 0x6d, 0x05, 0x4c, 
 0x3b, 0xc8, 0xfb, 0x4a, 
 0x3b, 0x15, 0x65, 0xcc, 
 0xf8, 0xca, 0xa8, 0x26, 
 0x8f, 0xa8, 0x5b, 0x2e, 
 0x9d, 0xbb, 0x19, 0xd4, 
 0x49, 0xf1, 0xad, 0xa1, 
 0x21, 0x69, 0xe9, 0xc2, 
 0x54, 0xfd, 0x2f, 0x15, 
 0x20, 0x44, 0x7d, 0x93, 
 0xd4, 0x29, 0xd8, 0x86, 
 0x03, 0x67, 0x05, 0x86, 
 0x38, 0xeb, 0x5e, 0xc5, 
 0x5b, 0xca, 0x69, 0xf7, 
 0xee, 0x21, 0x37, 0xa3, 
 0xe2, 0xef, 0x28, 0xd0, 
 0xeb, 0x67, 0x56, 0x00, 
 0xd5, 0xbc, 0x11, 0x5f, 
 0xcd, 0xfb, 0x09, 0x2c, 
 0x1e, 0xba, 0xd3, 0xa6, 
 0x23, 0x34, 0x73, 0x15, 
 0x01, 0xf7, 0xe5, 0xcd, 
 0xe2, 0x62, 0xdd, 0xbf, 
 0x44, 0xf9, 0x3f, 0xfc, 
 0x26, 0x58, 0xbc, 0x53, 
 0x25, 0xf9, 0xd6, 0x39, 
 0x58, 0xd4, 0x43, 0x34, 
 0x40, 0xc6, 0x0c, 0xa2, 
 0xc8, 0x57, 0x28, 0xdc, 
 0x06, 0xe3, 0x9e, 0x1f, 
 0x70, 0x8d, 0x8f, 0xf1, 
 0x09, 0xb6, 0x91, 0xae, 
 0xe4, 0x69, 0x8a, 0x33, 
 0xbf, 0x07, 0x29, 0xe4, 
 0x66, 0x44, 0xf5, 0x4a, 
 0x9d, 0xf8, 0xdc, 0x7d, 
 0x84, 0x98, 0x4f, 0x33, 
 0x0c, 0xae, 0xfe, 0xd0, 
 0x69, 0x66, 0x36, 0x37, 
 0x14, 0xe9, 0x65, 0x2d, 
 0x90, 0x12, 0x32, 0x94, 
 0x8e, 0xc3, 0x97, 0x8c, 
 0xdc, 0xea, 0x6f, 0x96, 
 0x40, 0xe8, 0xa8, 0xe4, 
 0x19, 0x07, 0xde, 0x80, 
 0xd7, 0xe2, 0x35, 0xd5, 
 0xe0, 0x49, 0x2f, 0x15, 
 0xa2, 0x32, 0x24, 0xdf, 
 0x36, 0x16, 0xea, 0x86, 
 0xb3, 0x98, 0x64, 0x69, 
 0x22, 0xc9, 0x79, 0x4c, 
 0x09, 0xdd, 0xc5, 0x16, 
 0xd3, 0xfd, 0xec, 0xe4,  
 0x46, 0xaa, 0x6e, 0xed, 
 0x8a, 0xdd, 0x3c, 0x31, 
 0xf1, 0x95, 0x68, 0x61, 
 0xa9, 0x54, 0x25, 0x70, 
 0x40, 0x0d, 0xea, 0x8f, 
 0xad, 0x0b, 0x0d, 0xf4, 
 0x39, 0x8f, 0x65, 0x52, 
 0x58, 0x06, 0x6f, 0x23, 
 0x0a, 0x59, 0xb7, 0x56, 
 0x48, 0x9e, 0xa0, 0xc4, 
 0x3f, 0xf4, 0x2e, 0x6e, 
 0xe4, 0x4c, 0x67, 0xc4, 
 0x78, 0x47, 0x70, 0x12, 
 0xda, 0x00, 0xc0, 0xbe, 
 0x29, 0xc7, 0x9f, 0x6e, 
 0x14, 0xcd, 0xce, 0x50, 
 0xe0, 0x97, 0xf8, 0x72, 
 0x5e, 0xae, 0x6c, 0x1a, 
 0x6a, 0xb7, 0xfe, 0x1c, 
 0x70, 0x73, 0xd2, 0x34, 
 0x27, 0x89, 0x77, 0x89, 
 0x3d, 0x8d, 0x38, 0x4a, 
 0x75, 0x69, 0x16, 0x60, 
 0xb6, 0xb9, 0x05, 0x84, 
 0xed, 0xdd, 0x97, 0x90, 
 0x69, 0x57, 0xec, 0x6b, 
 0x71, 0xe1, 0x42, 0x8a, 
 0xdd, 0x24, 0xde, 0xa8, 
 0x82, 0x7f, 0x1d, 0xc2, 
 0xdb, 0x2c, 0x37, 0x14, 
 0x2a, 0x75, 0x2a, 0x0a, 
 0x98, 0x5c, 0x41, 0x11, 
 0x0a, 0x48, 0x39, 0x74, 
 0xd0, 0x79, 0x5f, 0x4b, 
 0xb6, 0x5f, 0x33, 0xd0, 
 0x24, 0xe0, 0x01, 0xcc, 
 0x9b, 0x7a, 0x71, 0x4d, 
 0x3a, 0x16, 0xb7, 0x65, 
 0xe7, 0x7e, 0x30, 0x59, 
 0x9b, 0x4d, 0xbc, 0x8a, 
 0x95, 0xd0, 0x57, 0x75, 
 0xf9, 0x5f, 0x03, 0x87, 
 0x37, 0xfe, 0x35, 0x18, 
 0xc1, 0xeb, 0x69, 0x01, 
 0x1d, 0xe0, 0xf7, 0xc0, 
 0xbe, 0xd4, 0xcf, 0x6b, 
 0x7f, 0x4b, 0xa2, 0xaa, 
 0x37, 0x2d, 0x64, 0x76, 
 0xd5, 0x32, 0x88, 0xdc, 
 0x2e, 0x70, 0x57, 0xcb, 
 0x30, 0xc0, 0x56, 0x54, 
 0xb0, 0xbb, 0x2d, 0x40, 
 0x4e, 0x63, 0x7c, 0xac, 
 0x67, 0xef, 0x4c, 0x1d, 
 0x54, 0x00, 0x79, 0x2c, 
 0x51, 0xe9, 0x25, 0x2f, 
 0x54, 0xbf, 0xaf, 0x76, 
 0x02, 0x42, 0x7c, 0xb9, 
 0xec, 0x97, 0x03, 0x18, 
 0xd8, 0xae, 0x32, 0x7c, 
 0x3d, 0x30, 0xd2, 0xd7, 
 0x64, 0xe3, 0xd5, 0x52, 
 0xbb, 0x37, 0x21, 0xb3, 
 0x65, 0x59, 0x7e, 0xd6, 
 0xf4, 0x05, 0xfc, 0xc7, 
 0xf7, 0xc4, 0xbf, 0x58, 
 0x93, 0xe4, 0x14, 0xf0, 
 0x0b, 0xff, 0xca, 0xe1, 
 0xd4, 0x77, 0x6e, 0x85, 
 0x57, 0x3f, 0xa1, 0xdc, 
 0x6f, 0x6a, 0x21, 0xce, 
 0xa0, 0xd3, 0xc1, 0xe8, 
 0x84, 0x1f, 0xab, 0x41, 
 0xf8, 0x42, 0xdc, 0x80, 
 0x0c, 0xba, 0x50, 0x77, 
 0x07, 0x68, 0xbf, 0xd4, 
 0xd0, 0x0b, 0x0b, 0xfa, 
 0x1f, 0x76, 0xaf, 0xd2, 
 0x6e, 0x92, 0x95, 0x37, 
 0x61, 0xa9, 0x7b, 0xe5, 
 0x49, 0xb3, 0xe7, 0x5d, 
 0xab, 0x77, 0x3c, 0xcb, 
 0x1e, 0x68, 0x8c, 0xbf, 
 0x46, 0xe8, 0xb5, 0xde, 
 0x37, 0x05, 0xb6, 0x6a, 
 0x2f, 0xf6, 0xf8, 0xc5, 
 0x9f, 0xf2, 0xd7, 0xb0, 
 0xe3, 0x87, 0x07, 0xaa, 
 0xfb, 0x2a, 0x5a, 0xd9, 
 0xad, 0x03, 0xd7, 0xda, 
 0xcd, 0x66, 0x33, 0x22, 
 0x54, 0x3e, 0x94, 0x1e, 
 0xab, 0xf0, 0x58, 0xc9, 
 0xa2, 0x5b, 0xc5, 0x82, 
 0x0c, 0x69, 0x0f, 0x52, 
 0xc3, 0xfa, 0x21, 0x50, 
 0xe7, 0xa4, 0x42, 0xa5, 
 0xc3, 0x61, 0x99, 0xbc, 
 0x2c, 0xc4, 0x14, 0xc3, 
 0x16, 0xb9, 0xc4, 0xa5, 
 0x26, 0x4d, 0x06, 0x10, 
 0x9c, 0xc8, 0x0e, 0x8f, 
 0x19, 0x5c, 0x99, 0x3f, 
 0x3a, 0xab, 0xe8, 0x09, 
 0x41, 0xf0, 0x51, 0x76, 
 0xe1, 0xf1, 0x61, 0xbd, 
 0x8a, 0x0d, 0xce, 0x91, 
 0x34, 0x7a, 0x58, 0xc0, 
 0x7c, 0x3e, 0x7d, 0xbe, 
 0x73, 0x24, 0xb8, 0x74, 
 0x0c, 0x7b, 0x52, 0x76, 
 0x5a, 0xed, 0xbf, 0xab, 
 0x56, 0x93, 0x23, 0x11, 
 0xd0, 0xf3, 0x64, 0xac, 
 0x46, 0xa0, 0x1a, 0xab, 
 0x67, 0x99, 0x7b, 0xd5, 
 0xa4, 0xcc, 0x3f, 0xa5, 
 0xfb, 0xea, 0xab, 0xf2, 
 0x19, 0x94, 0x11, 0x9c, 
 0xdb, 0x18, 0xf6, 0x7f, 
 0xbc, 0x21, 0x22, 0x29, 
 0xff, 0x8d, 0xaa, 0xb8, 
 0x46, 0x3f, 0x9e, 0x2f, 
 0x39, 0x29, 0x34, 0x36, 
 0x49, 0xd3, 0x6c, 0xe6, 
 0xc3, 0x55, 0x11, 0xbd, 
 0x15, 0x17, 0x0a, 0x36, 
 0x4e, 0x9c, 0xb3, 0x5a, 
 0x20, 0x57, 0x6a, 0xf7, 
 0xf7, 0x92, 0x55, 0x79, 
 0x95, 0x0a, 0xf3, 0x2c, 
 0x2c, 0xaf, 0x9c, 0xab, 
 0x1d, 0x6d, 0xe1, 0xe1, 
 0x72, 0x63, 0xc8, 0x05, 
 0x8a, 0x18, 0x74, 0xa1, 
 0x05, 0x42, 0xef, 0x87, 
 0x9f, 0x33, 0x34, 0x3a, 
 0xad, 0x9b, 0xae, 0x59, 
 0x67, 0xf7, 0xc2, 0x1e, 
 0xbc, 0xdb, 0xf2, 0x50, 
 0x50, 0x42, 0xca, 0x84, 
 0x63, 0xfe, 0xbc, 0xdf, 
 0xbc, 0xde, 0xd8, 0xf0, 
 0x64, 0x9a, 0x4c, 0xdf, 
 0xf8, 0x4c, 0x69, 0xf9, 
 0xee, 0x9f, 0xb9, 0x54, 
 0xf9, 0xdd, 0xce, 0x96, 
 0xe0, 0x8b, 0xb6, 0xd1, 
 0xa8, 0x88, 0xc2, 0x51, 
 0x5d, 0x9a, 0x4d, 0x72, 
 0x5a, 0x67, 0xea, 0xd6, 
 0x7a, 0x5e, 0x56, 0xa5, 
 0xb9, 0xde, 0x17, 0xc0, 
 0x5b, 0x6a, 0x26, 0xba, 
 0x3b, 0xee, 0x02, 0xd5, 
 0x16, 0x94, 0x47, 0x0f, 
 0x5f, 0xf0, 0x30, 0x9a, 
 0x8b, 0x01, 0xda, 0xc7, 
 0x32, 0xfa, 0xb5, 0x63, 
 0xb0, 0xa4, 0x50, 0x5f, 
 0x23, 0x89, 0x17, 0x7c, 
 0x7d, 0xa0, 0xab, 0xe5, 
 0x19, 0x48, 0x3b, 0x94, 
 0x3b, 0xcd, 0x2d, 0x55, 
 0xe5, 0x49, 0x5f, 0x8f, 
 0xab, 0x66, 0x40, 0x99, 
 0x14, 0x15, 0xeb, 0xf3, 
 0x23, 0xda, 0x69, 0x41, 
 0xc2, 0xf2, 0xdd, 0x0e, 
 0xc2, 0xda, 0xfe, 0x24, 
 0x83, 0xd4, 0x83, 0x98, 
 0xa5, 0x9a, 0x12, 0xb0, 
 0x4b, 0x2a, 0xc4, 0xb4, 
 0x3f, 0xf4, 0x88, 0x66, 
 0xf4, 0xc5, 0x24, 0x43, 
 0x5f, 0x7d, 0x2b, 0x42, 
 0xa9, 0x3b, 0xe5, 0x81, 
 0x96, 0x4b, 0x70, 0x20, 
 0x35, 0x9d, 0x00, 0x05, 
 0x94, 0xcc, 0x12, 0x56, 
 0xf8, 0x44, 0xaf, 0xa3, 
 0xa1, 0x8d, 0x2d, 0xbf, 
 0xd6, 0x21, 0x33, 0xa7, 
 0x70, 0x0f, 0xaf, 0x80, 
 0xdc, 0x0f, 0xec, 0xaf, 
 0x2d, 0x6e, 0x18, 0x0b, 
 0xb4, 0xf9, 0x43, 0xb0, 
 0x90, 0xe3, 0x64, 0xe0, 
 0xf4, 0x69, 0xf7, 0x0d, 
 0x9f, 0xcb, 0x0d, 0x29, 
 0x53, 0x86, 0xcf, 0x8e, 
 0x5b, 0xd3, 0x24, 0x2b, 
 0x0d, 0xec, 0x4e, 0xc9, 
 0x90, 0x38, 0xbd, 0x0e, 
 0x9b, 0x29, 0x49, 0xb7, 
 0x99, 0x66, 0xea, 0xf7, 
 0x6c, 0x6b, 0xf2, 0xda, 
 0x1c, 0x36, 0xa8, 0x42, 
 0xe0, 0x1b, 0x80, 0x3d, 
 0x05, 0xfd, 0x19, 0x09, 
 0x88, 0xa2, 0x54, 0x36, 
 0x9f, 0x31, 0x7f, 0xb4, 
 };
  unsigned int a, b;
    di_32 = 0x38333439;
    zhong_32 = 0x16513030;
    gao_32 = 0x22004d00;
    wei8_0 = (di_32 & 0xff00) >> 8;
    wei8_1 = (di_32 & 0xff) << 8;
    wei8_2 = (di_32 & 0xff000000) >> 8;
    wei8_3 = (di_32 & 0xff0000) << 8;
    wei8_4 = (zhong_32 & 0xff00) >> 8;
    wei8_5 = (zhong_32 & 0xff) << 8;
    wei8_6 = (zhong_32 & 0xff000000) >> 8;
    wei8_7 = (zhong_32 & 0xff0000) << 8;
    wei8_8 = (gao_32 & 0xff00) >> 8;
    wei8_9 = (gao_32 & 0xff) << 8;
    wei8_a = (gao_32 & 0xff000000) >> 8;
    wei8_b = (gao_32 & 0xff0000) << 8;
    ID[0] = wei8_0 | wei8_1 | wei8_2 | wei8_3;
    ID[1] = wei8_4 | wei8_5 | wei8_6 | wei8_7;
    ID[2] = wei8_8 | wei8_9 | wei8_a | wei8_b;
    wei8_1 = wei8_1 >> 8;
    wei8_2 = wei8_2 >> 16;
    wei8_3 = wei8_3 >> 24;
    wei8_5 = wei8_5 >> 8;
    wei8_6 = wei8_6 >> 16;
    wei8_7 = wei8_7 >> 24;
    wei8_9 = wei8_9 >> 8;
    wei8_a = wei8_a >> 16;
    wei8_b = wei8_b >> 24;
    di_32 = wei8_0 + wei8_1 + wei8_2 + wei8_3 + wei8_4 + wei8_5 + wei8_6 + wei8_7 + wei8_8 + wei8_9 + wei8_a + wei8_b;//每次读一个8位ID号累加
    zhong_32 = di_32 & 0x3ff; //提取低10位
    gao_32 = wei8_0 + wei8_b; //ID最低低8位+ID最高高8位
    di_32 = gao_32 + zhong_32; //ID最高位8位+ID最低8位+累加结果提取的10位
    a = zhong_32;
    b = di_32;
    for (int i = 0; i < 8; i = i + 1){
      mima[i] = ID[di_32];
      di_32 = (zhong_32 + di_32) & 0x3ff;
    }
    printf("0x%02X  0x%02X  0x%02X  0x%02X  0x%02X  0x%02X  0x%02X  0x%02X \n",mima[7],mima[6],mima[5],mima[4],mima[3],mima[3],mima[1],mima[0]);
     
     
     
 
     
 
     
     
}  



最后于 2021-1-29 11:53 被yjmwxwx编辑 ,原因:
上传的附件:
2021-1-29 11:51
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
SuX
13
感谢分享
2021-1-29 13:50
0
雪    币: 43
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14

群友提供的序列号和密匙,我帮忙发过来给楼主验证

2021-1-29 14:49
1
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
15
nicolaspot 群友提供的序列号和密匙,我帮忙发过来给楼主验证

感谢楼上,终于成功了。


低    di_32 = 0x25004500;

中    zhong_32 = 0x39331451;

高    gao_32 = 0x30383937;


原来书输入时候搞反了



上传的附件:
  • 1.c (8.37kb,79次下载)
2021-1-29 17:41
0
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
16

去掉一些没用的东西,加注释,算法很简单



上传的附件:
2021-1-29 23:20
0
雪    币: 221
活跃值: (2526)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
顶一下!!厉害!!
2021-1-29 23:28
0
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
18

方法1上面那些固件显示的顺序有问题,因为密码是16个8位而序列号显示的是6个16位,高低位显示反了,下面改过来了,不知道行不行,还没人验证。


这下改的东西就少了,直接把ID地址改成密码地址,多出来的两个清零。



上传的附件:
  • 4.zip (382.01kb,134次下载)
2021-1-30 08:36
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19

由于有库文件,所以比较大,分卷压缩。

上传的附件:
2021-2-1 10:52
1
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20

由于有库文件,所以比较大,分卷压缩。

上传的附件:
2021-2-1 10:53
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21

由于有库文件,所以比较大,分卷压缩。

上传的附件:
2021-2-1 10:53
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22

告诉我如何在程序中输入代码?例如,有一个代码1D00-2D00-1451-3031-3533-3233。我进入程序 0x1d, 0x00, 0x2b, 0x00, 0x14, 0x51, 0x30, 0x31, 0x35, 0x33, 0x32, 0x33 输出: 生成激活码数量:3 第1组: 序列号:0x1d, 0x00, 0x2b, 0x00, 激活码:D5-9D-46-6A-9B-54-84-CD 第2组: 序列号:0x14, 0x51, 0x30, 0x31, 激活码:EA-BE-0F-F8-BD-90-71-9F 第3组: 序列号:0x35, 0x33, 0x32, 0x33 激活码:C9-88-A5-7A-E6-79-DC-26 哪个代码正确?

2021-2-2 13:11
0
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
23
mb_wxzjcrqm 告诉我如何在程序中输入代码?例如,有一个代码1D00-2D00-1451-3031-3533-3233。我进入程序 0x1d, 0x00, 0x2b, 0x00, 0x14, 0x51, 0x30 ...
mb_ldfnrjij  发布的程序我也不知道怎么使用,作者没有说明 。 
我16楼的程序输入0x1d, 0x00, 0x2b, 0x00, 0x14, 0x51, 0x30, 0x31, 0x35, 0x33, 0x32, 0x33  激活码是 77  F2  2F  A5  75  B9  8F  BC 
有STLINK 、JLINK 、 串口线  其中之一可以直接烧写固件,把2.ZIP的固件下载到STM32,随便输入一组数字可以激活。
把4.ZIP固件下载到STM32,LCD显示激活码,最后8个数字0没用。
2021-2-2 23:32
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
mb_wxzjcrqm 告诉我如何在程序中输入代码?例如,有一个代码1D00-2D00-1451-3031-3533-3233。我进入程序 0x1d, 0x00, 0x2b, 0x00, 0x14, 0x51, 0x30 ...
1D00-2D00-1451-3031-3533-3233  直接这样输入就行,序列号后面加回车。
2021-2-3 14:02
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
验证注册机注册失败,刷2成功
2021-2-5 15:58
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册