0.
在之前的某个时间点,我曾经写过一篇文章简单介绍过从我妈那得到的步步高朗文3988。
不过,那篇文章因为写得比较杂乱,我已经删了。
因为我没怎么玩过,我折腾的产品大多是Android手机、RFID这些,所以没什么情怀。
但是,这并不代表它没有让我感兴趣的地方。
让我们想象这样一个场景(你们最喜欢的故事时间):
假设你从某鱼、某多多或者在哪里翻箱倒柜找到了一台步步高朗文。
你给它换上了新电池,开机。
开机或者打开里面的备忘录什么的时候,哦豁,“请输入密码”出现在眼前。
生成万能密码的exe已经泄露并被传播了,你可能已经在别的地方下载到你的电脑上了。
什么?你没有电脑?呃,步步高的客服的联系方式应该还有,他们的解锁服务前几年还在的。
如果到了今天,步步高不提供解锁或者客服通道没了,并且你也没有电脑运行这个程序,也先别急着退出这个文章。
你唯一需要的工具就是一个计算器放在旁边,下面会教你自己算出超级密码。
本文仅适用于朗文的12位IDNum到6位超级密码,而且步步高朗文电子词典也不是什么大圈子,其他产品我也无能为力
如果你实在真的非常急着解锁而不想进行任何计算操作,那么就去下面这个页面,我让Gemini写出了html+JavaScript的版本
https://www.fcrnext.com/html/bbk.html
1.汇编
这里是给感兴趣的逆向爱好者看的,其实我自己也看不懂…
如果你只是想尽快解锁,跳过这里。
当然,多亏了Gemini3的帮忙。
004015FC | 55 | push ebp |
004015FD | 8BEC | mov ebp,esp |
004015FF | 83C4 B8 | add esp,FFFFFFB8 |
00401602 | 33C0 | xor eax,eax |
00401604 | 8945 FC | mov dword ptr ss:[ebp-4],eax |
00401607 | 33D2 | xor edx,edx |
00401609 | 8955 F0 | mov dword ptr ss:[ebp-10],edx |
0040160C | 8B4D F0 | mov ecx,dword ptr ss:[ebp-10] |
0040160F | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
00401612 | 0FBE1408 | movsx edx,byte ptr ds:[eax+ecx] |
00401616 | 0155 FC | add dword ptr ss:[ebp-4],edx |
00401619 | FF45 F0 | inc dword ptr ss:[ebp-10] |
0040161C | 837D F0 0C | cmp dword ptr ss:[ebp-10],C | C:'\f'
00401620 | 7C EA | jl 超级密码生成器.40160C |
00401622 | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |
00401625 | B9 E8030000 | mov ecx,3E8 |
0040162A | 99 | cdq |
0040162B | F7F9 | idiv ecx |
0040162D | 8955 FC | mov dword ptr ss:[ebp-4],edx |
00401630 | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |
00401633 | B9 E8030000 | mov ecx,3E8 |
00401638 | 99 | cdq |
00401639 | F7F9 | idiv ecx |
0040163B | 8BC2 | mov eax,edx |
0040163D | B9 64000000 | mov ecx,64 | 64:'d'
00401642 | 99 | cdq |
00401643 | F7F9 | idiv ecx |
00401645 | 8845 E9 | mov byte ptr ss:[ebp-17],al |
00401648 | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |
0040164B | B9 64000000 | mov ecx,64 | 64:'d'
00401650 | 99 | cdq |
00401651 | F7F9 | idiv ecx |
00401653 | 8BC2 | mov eax,edx |
00401655 | B9 0A000000 | mov ecx,A | A:'\n'
0040165A | 99 | cdq |
0040165B | F7F9 | idiv ecx |
0040165D | 8845 E8 | mov byte ptr ss:[ebp-18],al |
00401660 | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |
00401663 | B9 0A000000 | mov ecx,A | A:'\n'
00401668 | 99 | cdq |
00401669 | F7F9 | idiv ecx |
0040166B | 8855 E7 | mov byte ptr ss:[ebp-19],dl |
0040166E | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |
00401671 | F76D FC | imul dword ptr ss:[ebp-4] |
00401674 | 8945 F8 | mov dword ptr ss:[ebp-8],eax |
00401677 | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] |
0040167A | B9 E8030000 | mov ecx,3E8 |
0040167F | 99 | cdq |
00401680 | F7F9 | idiv ecx |
00401682 | 8BC2 | mov eax,edx |
00401684 | B9 64000000 | mov ecx,64 | 64:'d'
00401689 | 99 | cdq |
0040168A | F7F9 | idiv ecx |
0040168C | 8845 EF | mov byte ptr ss:[ebp-11],al |
0040168F | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] |
00401692 | B9 64000000 | mov ecx,64 | 64:'d'
00401697 | 99 | cdq |
00401698 | F7F9 | idiv ecx |
0040169A | 8BC2 | mov eax,edx |
0040169C | B9 0A000000 | mov ecx,A | A:'\n'
004016A1 | 99 | cdq |
004016A2 | F7F9 | idiv ecx |
004016A4 | 8845 EE | mov byte ptr ss:[ebp-12],al |
004016A7 | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] |
004016AA | B9 0A000000 | mov ecx,A | A:'\n'
004016AF | 99 | cdq |
004016B0 | F7F9 | idiv ecx |
004016B2 | 8855 ED | mov byte ptr ss:[ebp-13],dl |
004016B5 | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |
004016B8 | F76D FC | imul dword ptr ss:[ebp-4] |
004016BB | F76D FC | imul dword ptr ss:[ebp-4] |
004016BE | 8945 F4 | mov dword ptr ss:[ebp-C],eax | [ebp-C]:sub_774C1B00+70
004016C1 | 8B45 F4 | mov eax,dword ptr ss:[ebp-C] | [ebp-C]:sub_774C1B00+70
004016C4 | B9 E8030000 | mov ecx,3E8 |
004016C9 | 99 | cdq |
004016CA | F7F9 | idiv ecx |
004016CC | 8BC2 | mov eax,edx |
004016CE | B9 64000000 | mov ecx,64 | 64:'d'
004016D3 | 99 | cdq |
004016D4 | F7F9 | idiv ecx |
004016D6 | 8845 EC | mov byte ptr ss:[ebp-14],al |
004016D9 | 8B45 F4 | mov eax,dword ptr ss:[ebp-C] | [ebp-C]:sub_774C1B00+70
004016DC | B9 64000000 | mov ecx,64 | 64:'d'
004016E1 | 99 | cdq |
004016E2 | F7F9 | idiv ecx |
004016E4 | 8BC2 | mov eax,edx |
004016E6 | B9 0A000000 | mov ecx,A | A:'\n'
004016EB | 99 | cdq |
004016EC | F7F9 | idiv ecx |
004016EE | 8845 EB | mov byte ptr ss:[ebp-15],al |
004016F1 | 8B45 F4 | mov eax,dword ptr ss:[ebp-C] | [ebp-C]:sub_774C1B00+70
004016F4 | B9 0A000000 | mov ecx,A | A:'\n'
004016F9 | 99 | cdq |
004016FA | F7F9 | idiv ecx |
004016FC | 8855 EA | mov byte ptr ss:[ebp-16],dl |
004016FF | 0FBE45 EC | movsx eax,byte ptr ss:[ebp-14] |
00401703 | 0FBE55 E9 | movsx edx,byte ptr ss:[ebp-17] |
00401707 | 03C2 | add eax,edx |
00401709 | B9 0A000000 | mov ecx,A | A:'\n'
0040170E | 99 | cdq |
0040170F | F7F9 | idiv ecx |
00401711 | 8855 EC | mov byte ptr ss:[ebp-14],dl |
00401714 | 0FBE45 EB | movsx eax,byte ptr ss:[ebp-15] |
00401718 | 0FBE55 E8 | movsx edx,byte ptr ss:[ebp-18] |
0040171C | 03C2 | add eax,edx |
0040171E | B9 0A000000 | mov ecx,A | A:'\n'
00401723 | 99 | cdq |
00401724 | F7F9 | idiv ecx |
00401726 | 8855 EB | mov byte ptr ss:[ebp-15],dl |
00401729 | 0FBE45 EA | movsx eax,byte ptr ss:[ebp-16] |
0040172D | 0FBE55 E7 | movsx edx,byte ptr ss:[ebp-19] |
00401731 | 03C2 | add eax,edx |
00401733 | B9 0A000000 | mov ecx,A | A:'\n'
00401738 | 99 | cdq |
00401739 | F7F9 | idiv ecx |
0040173B | 8855 EA | mov byte ptr ss:[ebp-16],dl |
0040173E | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
00401741 | 0FBE40 09 | movsx eax,byte ptr ds:[eax+9] |
00401745 | 83C0 D0 | add eax,FFFFFFD0 |
00401748 | 6BD0 64 | imul edx,eax,64 |
0040174B | 8B4D 08 | mov ecx,dword ptr ss:[ebp+8] |
0040174E | 0FBE41 0A | movsx eax,byte ptr ds:[ecx+A] |
00401752 | 83C0 D0 | add eax,FFFFFFD0 |
00401755 | 8BC8 | mov ecx,eax |
00401757 | 03C9 | add ecx,ecx |
00401759 | 8D0C89 | lea ecx,dword ptr ds:[ecx+ecx*4] |
0040175C | 03D1 | add edx,ecx |
0040175E | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
00401761 | 0FBE48 0B | movsx ecx,byte ptr ds:[eax+B] |
00401765 | 03D1 | add edx,ecx |
00401767 | 83C2 D0 | add edx,FFFFFFD0 |
0040176A | 8955 E0 | mov dword ptr ss:[ebp-20],edx |
0040176D | 8B55 E0 | mov edx,dword ptr ss:[ebp-20] |
00401770 | 0FAF55 E0 | imul edx,dword ptr ss:[ebp-20] |
00401774 | 8955 E0 | mov dword ptr ss:[ebp-20],edx |
00401777 | 8B45 E0 | mov eax,dword ptr ss:[ebp-20] |
0040177A | B9 A0860100 | mov ecx,186A0 |
0040177F | 99 | cdq |
00401780 | F7F9 | idiv ecx |
00401782 | 8845 D7 | mov byte ptr ss:[ebp-29],al |
00401785 | 8B45 E0 | mov eax,dword ptr ss:[ebp-20] |
00401788 | B9 10270000 | mov ecx,2710 |
0040178D | 99 | cdq |
0040178E | F7F9 | idiv ecx |
00401790 | B9 0A000000 | mov ecx,A | A:'\n'
00401795 | 99 | cdq |
00401796 | F7F9 | idiv ecx |
00401798 | 8855 D6 | mov byte ptr ss:[ebp-2A],dl |
0040179B | 8B45 E0 | mov eax,dword ptr ss:[ebp-20] |
0040179E | B9 E8030000 | mov ecx,3E8 |
004017A3 | 99 | cdq |
004017A4 | F7F9 | idiv ecx |
004017A6 | B9 0A000000 | mov ecx,A | A:'\n'
004017AB | 99 | cdq |
004017AC | F7F9 | idiv ecx |
004017AE | 8855 D5 | mov byte ptr ss:[ebp-2B],dl |
004017B1 | 8B45 E0 | mov eax,dword ptr ss:[ebp-20] |
004017B4 | B9 64000000 | mov ecx,64 | 64:'d'
004017B9 | 99 | cdq |
004017BA | F7F9 | idiv ecx |
004017BC | B9 0A000000 | mov ecx,A | A:'\n'
004017C1 | 99 | cdq |
004017C2 | F7F9 | idiv ecx |
004017C4 | 8855 D4 | mov byte ptr ss:[ebp-2C],dl |
004017C7 | 8B45 E0 | mov eax,dword ptr ss:[ebp-20] |
004017CA | B9 0A000000 | mov ecx,A | A:'\n'
004017CF | 99 | cdq |
004017D0 | F7F9 | idiv ecx |
004017D2 | B9 0A000000 | mov ecx,A | A:'\n'
004017D7 | 99 | cdq |
004017D8 | F7F9 | idiv ecx |
004017DA | 8855 D3 | mov byte ptr ss:[ebp-2D],dl |
004017DD | 8B45 E0 | mov eax,dword ptr ss:[ebp-20] |
004017E0 | B9 0A000000 | mov ecx,A | A:'\n'
004017E5 | 99 | cdq |
004017E6 | F7F9 | idiv ecx |
004017E8 | 8855 D2 | mov byte ptr ss:[ebp-2E],dl |
004017EB | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
004017EE | 0FBE40 06 | movsx eax,byte ptr ds:[eax+6] |
004017F2 | 83C0 D0 | add eax,FFFFFFD0 |
004017F5 | 6BD0 64 | imul edx,eax,64 |
004017F8 | 8B4D 08 | mov ecx,dword ptr ss:[ebp+8] |
004017FB | 0FBE41 07 | movsx eax,byte ptr ds:[ecx+7] |
004017FF | 83C0 D0 | add eax,FFFFFFD0 |
00401802 | 8BC8 | mov ecx,eax |
00401804 | 03C9 | add ecx,ecx |
00401806 | 8D0C89 | lea ecx,dword ptr ds:[ecx+ecx*4] |
00401809 | 03D1 | add edx,ecx |
0040180B | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
0040180E | 0FBE48 08 | movsx ecx,byte ptr ds:[eax+8] |
00401812 | 03D1 | add edx,ecx |
00401814 | 83C2 D0 | add edx,FFFFFFD0 |
00401817 | 8955 DC | mov dword ptr ss:[ebp-24],edx |
0040181A | 8B55 DC | mov edx,dword ptr ss:[ebp-24] |
0040181D | 0FAF55 DC | imul edx,dword ptr ss:[ebp-24] |
00401821 | 8955 DC | mov dword ptr ss:[ebp-24],edx |
00401824 | 8B45 DC | mov eax,dword ptr ss:[ebp-24] |
00401827 | B9 A0860100 | mov ecx,186A0 |
0040182C | 99 | cdq |
0040182D | F7F9 | idiv ecx |
0040182F | 8845 D1 | mov byte ptr ss:[ebp-2F],al |
00401832 | 8B45 DC | mov eax,dword ptr ss:[ebp-24] |
00401835 | B9 10270000 | mov ecx,2710 |
0040183A | 99 | cdq |
0040183B | F7F9 | idiv ecx |
0040183D | B9 0A000000 | mov ecx,A | A:'\n'
00401842 | 99 | cdq |
00401843 | F7F9 | idiv ecx |
00401845 | 8855 D0 | mov byte ptr ss:[ebp-30],dl |
00401848 | 8B45 DC | mov eax,dword ptr ss:[ebp-24] |
0040184B | B9 E8030000 | mov ecx,3E8 |
00401850 | 99 | cdq |
00401851 | F7F9 | idiv ecx |
00401853 | B9 0A000000 | mov ecx,A | A:'\n'
00401858 | 99 | cdq |
00401859 | F7F9 | idiv ecx |
0040185B | 8855 CF | mov byte ptr ss:[ebp-31],dl |
0040185E | 8B45 DC | mov eax,dword ptr ss:[ebp-24] |
00401861 | B9 64000000 | mov ecx,64 | 64:'d'
00401866 | 99 | cdq |
00401867 | F7F9 | idiv ecx |
00401869 | B9 0A000000 | mov ecx,A | A:'\n'
0040186E | 99 | cdq |
0040186F | F7F9 | idiv ecx |
00401871 | 8855 CE | mov byte ptr ss:[ebp-32],dl |
00401874 | 8B45 DC | mov eax,dword ptr ss:[ebp-24] |
00401877 | B9 0A000000 | mov ecx,A | A:'\n'
0040187C | 99 | cdq |
0040187D | F7F9 | idiv ecx |
0040187F | B9 0A000000 | mov ecx,A | A:'\n'
00401884 | 99 | cdq |
00401885 | F7F9 | idiv ecx |
00401887 | 8855 CD | mov byte ptr ss:[ebp-33],dl |
0040188A | 8B45 DC | mov eax,dword ptr ss:[ebp-24] |
0040188D | B9 0A000000 | mov ecx,A | A:'\n'
00401892 | 99 | cdq |
00401893 | F7F9 | idiv ecx |
00401895 | 8855 CC | mov byte ptr ss:[ebp-34],dl |
00401898 | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
0040189B | 8A40 06 | mov al,byte ptr ds:[eax+6] |
0040189E | 04 D0 | add al,D0 |
004018A0 | 8845 CB | mov byte ptr ss:[ebp-35],al |
004018A3 | 8B55 08 | mov edx,dword ptr ss:[ebp+8] |
004018A6 | 8A4A 07 | mov cl,byte ptr ds:[edx+7] |
004018A9 | 80C1 D0 | add cl,D0 |
004018AC | 884D CA | mov byte ptr ss:[ebp-36],cl |
004018AF | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
004018B2 | 8A50 08 | mov dl,byte ptr ds:[eax+8] |
004018B5 | 80C2 D0 | add dl,D0 |
004018B8 | 8855 C9 | mov byte ptr ss:[ebp-37],dl |
004018BB | 8B4D 08 | mov ecx,dword ptr ss:[ebp+8] |
004018BE | 8A41 09 | mov al,byte ptr ds:[ecx+9] |
004018C1 | 04 D0 | add al,D0 |
004018C3 | 8845 C8 | mov byte ptr ss:[ebp-38],al |
004018C6 | 8B55 08 | mov edx,dword ptr ss:[ebp+8] |
004018C9 | 8A4A 0A | mov cl,byte ptr ds:[edx+A] |
004018CC | 80C1 D0 | add cl,D0 |
004018CF | 884D C7 | mov byte ptr ss:[ebp-39],cl |
004018D2 | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
004018D5 | 8A50 0B | mov dl,byte ptr ds:[eax+B] |
004018D8 | 80C2 D0 | add dl,D0 |
004018DB | 8855 C6 | mov byte ptr ss:[ebp-3A],dl |
004018DE | 0FBE45 D7 | movsx eax,byte ptr ss:[ebp-29] |
004018E2 | 0FBE55 D1 | movsx edx,byte ptr ss:[ebp-2F] |
004018E6 | 03C2 | add eax,edx |
004018E8 | 0FBE4D CB | movsx ecx,byte ptr ss:[ebp-35] |
004018EC | 03C1 | add eax,ecx |
004018EE | B9 0A000000 | mov ecx,A | A:'\n'
004018F3 | 99 | cdq |
004018F4 | F7F9 | idiv ecx |
004018F6 | 8855 BF | mov byte ptr ss:[ebp-41],dl |
004018F9 | 0FBE45 D6 | movsx eax,byte ptr ss:[ebp-2A] |
004018FD | 0FBE55 D0 | movsx edx,byte ptr ss:[ebp-30] |
00401901 | 03C2 | add eax,edx |
00401903 | 0FBE4D CA | movsx ecx,byte ptr ss:[ebp-36] |
00401907 | 03C1 | add eax,ecx |
00401909 | B9 0A000000 | mov ecx,A | A:'\n'
0040190E | 99 | cdq |
0040190F | F7F9 | idiv ecx |
00401911 | 8855 BE | mov byte ptr ss:[ebp-42],dl |
00401914 | 0FBE45 D5 | movsx eax,byte ptr ss:[ebp-2B] |
00401918 | 0FBE55 CF | movsx edx,byte ptr ss:[ebp-31] |
0040191C | 03C2 | add eax,edx |
0040191E | 0FBE4D C9 | movsx ecx,byte ptr ss:[ebp-37] |
00401922 | 03C1 | add eax,ecx |
00401924 | B9 0A000000 | mov ecx,A | A:'\n'
00401929 | 99 | cdq |
0040192A | F7F9 | idiv ecx |
0040192C | 8855 BD | mov byte ptr ss:[ebp-43],dl |
0040192F | 0FBE45 D4 | movsx eax,byte ptr ss:[ebp-2C] |
00401933 | 0FBE55 CE | movsx edx,byte ptr ss:[ebp-32] |
00401937 | 03C2 | add eax,edx |
00401939 | 0FBE4D C8 | movsx ecx,byte ptr ss:[ebp-38] |
0040193D | 03C1 | add eax,ecx |
0040193F | B9 0A000000 | mov ecx,A | A:'\n'
00401944 | 99 | cdq |
00401945 | F7F9 | idiv ecx |
00401947 | 8855 BC | mov byte ptr ss:[ebp-44],dl |
0040194A | 0FBE45 D3 | movsx eax,byte ptr ss:[ebp-2D] |
0040194E | 0FBE55 CD | movsx edx,byte ptr ss:[ebp-33] |
00401952 | 03C2 | add eax,edx |
00401954 | 0FBE4D C7 | movsx ecx,byte ptr ss:[ebp-39] |
00401958 | 03C1 | add eax,ecx |
0040195A | B9 0A000000 | mov ecx,A | A:'\n'
0040195F | 99 | cdq |
00401960 | F7F9 | idiv ecx |
00401962 | 8855 BB | mov byte ptr ss:[ebp-45],dl |
00401965 | 0FBE45 D2 | movsx eax,byte ptr ss:[ebp-2E] |
00401969 | 0FBE55 CC | movsx edx,byte ptr ss:[ebp-34] |
0040196D | 03C2 | add eax,edx |
0040196F | 0FBE4D C6 | movsx ecx,byte ptr ss:[ebp-3A] |
00401973 | 03C1 | add eax,ecx |
00401975 | B9 0A000000 | mov ecx,A | A:'\n'
0040197A | 99 | cdq |
0040197B | F7F9 | idiv ecx |
0040197D | 8855 BA | mov byte ptr ss:[ebp-46],dl |
00401980 | 0FBE45 EF | movsx eax,byte ptr ss:[ebp-11] |
00401984 | 0FBE55 BF | movsx edx,byte ptr ss:[ebp-41] |
00401988 | 03C2 | add eax,edx |
0040198A | B9 0A000000 | mov ecx,A | A:'\n'
0040198F | 99 | cdq |
00401990 | F7F9 | idiv ecx |
00401992 | 80C2 30 | add dl,30 |
00401995 | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
00401998 | 8810 | mov byte ptr ds:[eax],dl |
0040199A | 0FBE45 EC | movsx eax,byte ptr ss:[ebp-14] |
0040199E | 0FBE55 BE | movsx edx,byte ptr ss:[ebp-42] |
004019A2 | 03C2 | add eax,edx |
004019A4 | B9 0A000000 | mov ecx,A | A:'\n'
004019A9 | 99 | cdq |
004019AA | F7F9 | idiv ecx |
004019AC | 80C2 30 | add dl,30 |
004019AF | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
004019B2 | 8850 01 | mov byte ptr ds:[eax+1],dl |
004019B5 | 0FBE45 EE | movsx eax,byte ptr ss:[ebp-12] |
004019B9 | 0FBE55 BD | movsx edx,byte ptr ss:[ebp-43] |
004019BD | 03C2 | add eax,edx |
004019BF | B9 0A000000 | mov ecx,A | A:'\n'
004019C4 | 99 | cdq |
004019C5 | F7F9 | idiv ecx |
004019C7 | 80C2 30 | add dl,30 |
004019CA | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
004019CD | 8850 02 | mov byte ptr ds:[eax+2],dl |
004019D0 | 0FBE45 EB | movsx eax,byte ptr ss:[ebp-15] |
004019D4 | 0FBE55 BC | movsx edx,byte ptr ss:[ebp-44] |
004019D8 | 03C2 | add eax,edx |
004019DA | B9 0A000000 | mov ecx,A | A:'\n'
004019DF | 99 | cdq |
004019E0 | F7F9 | idiv ecx |
004019E2 | 80C2 30 | add dl,30 |
004019E5 | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
004019E8 | 8850 03 | mov byte ptr ds:[eax+3],dl |
004019EB | 0FBE45 ED | movsx eax,byte ptr ss:[ebp-13] |
004019EF | 0FBE55 BB | movsx edx,byte ptr ss:[ebp-45] |
004019F3 | 03C2 | add eax,edx |
004019F5 | B9 0A000000 | mov ecx,A | A:'\n'
004019FA | 99 | cdq |
004019FB | F7F9 | idiv ecx |
004019FD | 80C2 30 | add dl,30 |
00401A00 | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
00401A03 | 8850 04 | mov byte ptr ds:[eax+4],dl |
00401A06 | 0FBE45 EA | movsx eax,byte ptr ss:[ebp-16] |
00401A0A | 0FBE55 BA | movsx edx,byte ptr ss:[ebp-46] |
00401A0E | 03C2 | add eax,edx |
00401A10 | B9 0A000000 | mov ecx,A | A:'\n'
00401A15 | 99 | cdq |
00401A16 | F7F9 | idiv ecx |
00401A18 | 80C2 30 | add dl,30 |
00401A1B | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
00401A1E | 8850 05 | mov byte ptr ds:[eax+5],dl |
00401A21 | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
00401A24 | C640 06 00 | mov byte ptr ds:[eax+6],0 |
00401A28 | B0 01 | mov al,1 |
00401A2A | 8BE5 | mov esp,ebp |
00401A2C | 5D | pop ebp |
00401A2D | C3 | ret |2.计算
现在,拿好草稿纸和笔。当然,因为我在学校,这个东西不在我身边,我会取一个随机数来演示。
IDNum:853948812358首先,把这个序列号一个一个数字拆开,换算成ASCII码
| 字符 | 十进制 (Decimal) | 十六进制 (Hex) |
|---|---|---|
| ‘0’ | 48 | 0x30 |
| ‘1’ | 49 | 0x31 |
| ‘2’ | 50 | 0x32 |
| ‘3’ | 51 | 0x33 |
| ‘4’ | 52 | 0x34 |
| ‘5’ | 53 | 0x35 |
| ‘6’ | 54 | 0x36 |
| ‘7’ | 55 | 0x37 |
| ‘8’ | 56 | 0x38 |
| ‘9’ | 57 | 0x39 |
例如,我的IDNum换成ASCII如下:
IDNum:853948812358
8 5 3 9 4 8 8 1 2 3 5 8
56 53 51 57 52 56 56 49 50 51 53 56把这些ASCII相加:
56+53+51+57+52+56+56+49+50+51+53+56=640把结果分别算出平方和立方:
640
640*640=409600
640*640*640=262144000这三个数都要记在草稿纸上。
640
409600
262144000对于这三列数,只保留最后三位:
640 => 640
409600 => 600
262144000 => 000
640
600
000打上标记,一一对应:
x1 x2 x3
y1 y2 y3
z1 z2 z3
6 4 0
6 0 0
0 0 0按照y1 (x1+z1) y2 (x2+z2) y3 (x3+z3)排序:
6 (6+0) 0 (4+0) 0 (0+0)
6 6 0 4 0 0我这里挑的例子比较简单,如果加起来超过了10,那么取个位数:
#假设另外一种情况:
4 14 5 10 6 12
4 4 5 0 6 2现在,看回IDNum:
IDNum:853948812358分别取这三个数:
853948812[358] => 358
853948[812]358 => 812
853948[812358] => 812358记住,取IDNum的10、11、12记为a。7、8、9记为b。7~12记为c。
把a和b分别平方,得到一个六位数,c不动:
358*358=128164
812*812=659344
128164
659344
812358#特殊情况:
#如果a或者b的平方不到六位数,那么在前面补零
#例如:
130*130=16900
#那么:
016900还记得上面的六位数吗?排好做竖式加法:
6 6 0 4 0 0
1 2 8 1 6 4
6 5 9 3 4 4
8 1 2 3 5 8
------------
21 14 19 11 15 16超过10的数字取个位数,就是:
1 4 9 1 5 6
149156这就是你的超级密码

已在Python实现:

3.AI
好吧,如果你的身边没有纸和笔,也可以让AI帮忙计算。
预设Prompt:
请按照以下特定的算法逻辑,为我计算一个 12 位 ID 对应的 6 位解锁码。
**输入 ID**: `<换成你的IDNum>`
**算法步骤**:
1. **计算校验和 (Sum)**:
- 将输入 ID 的 12 个字符的 ASCII 码值相加。
- 记为 `S`。
2. **计算核心参数**:
- 平方数 (Square): `Q = S * S`
- 立方数 (Cube): `C = S * S * S` (注意:如果计算结果很大,仅关注其最后三位用于后续提取)
3. **提取位 (Digits Extraction)**:
- 从 `S` 中提取:百位(S1), 十位(S2), 个位(S3)。
- 从 `Q` 中提取:百位(Q1), 十位(Q2), 个位(Q3)。
- 从 `C` 中提取:百位(C1), 十位(C2), 个位(C3)。
4. **计算混合位 (Mix Digits)**:
- M1 = (C1 + S1) % 10
- M2 = (C2 + S2) % 10
- M3 = (C3 + S3) % 10
5. **构建基础层 (Base Layer)**:
- 这是一个 6 位的数组,顺序为:`[Q1, M1, Q2, M2, Q3, M3]`
6. **计算局部层 (Local Layers)**:
- **中间层 (Mid)**: 取 ID 的第 7,8,9 位字符组成的数字(例如 "851" -> 851),计算其平方。取该平方数的**最后 6 位**(不足补0),按从高到低顺序拆分。
- **最后层 (Last)**: 取 ID 的第 10,11,12 位字符组成的数字,计算其平方。取该平方数的**最后 6 位**(不足补0),按从高到低顺序拆分。
- **原始层 (Raw)**: 取 ID 的第 7 到 12 位字符,直接转为对应的数字数值(例如 '5'->5)。
7. **最终汇总 (Final Assembly)**:
- 密码的每一位 = (基础层 + 中间层 + 最后层 + 原始层) % 10。
- 对 6 个位置分别进行上述加法运算。
**请直接输出计算过程和最终的 6 位数字代码。**目前已知Gemini可以得出正确结果,可以先用我上面的IDNum去测试一下是否和我的结果一致。如果不一致建议换个AI。