相關附件可以到此下載:http://www.dlking.com/perl/topic_show.cgi?id=20202&h=1&bpg=1&age=30
===================================
= Target: SmartBrainForce.exe
=
= Coder: ^L00P
=
= Date: 13.09.2002
=
===================================
=====================================================
驗證過程很簡單
=====================================================
1.
//條件1:msum=4AA=(DEAD-377)/2F; include FF
{
msum=buf[0]+buf[1]+...+buf[lken-1]=4AA
buf[0]+buf[1]+...+buf[lken-2]=4AA-FF=3AB
}
2.
//條件2:mxor=E1=(C0DE-63)/DB; include FF
{
buf[0] xor buf[1] xor .... xor buf[len-1]
xor 57=E1
}
3.
//條件3:mmul=1EBB2=FACE*29EA
//條件3:mmul=1EBB3=FACE*29EA
{
mmul=buf[0]*(buf[1]+buf[2]+....+buf[len-2]);not
include FF
}
4.分析
=====================================================
{
很容易知道,buf[len-1]=FF
從條件3我們可以看出
mmul一定是第一個自己的倍數
於是我們得到,
1*1EBB2;2*F5D9;3*A3E6;6*51F3;7*463E;9*36A2;E*231F
12*1B51;15*176A;1B*1236;25*D4A;2A*BB5;36*91B;3F*7CE
4A*6A5;51*612;6F*46E;7E*3E7;A2*309;BD*29A;DE*237
F3*206;//=========>103*1E6;14D*17A;
1*1EBB3;5*6257;13*19E1;19*13AB;35*947;5F*52D;7D*3EF
//================>109*1DB
我們從條件1可以知道, 只有
1EBB2=A2*309是有效的
於是我們得到方程:
3AB=buf[0]+buf[1]+...+buf[lken-2];
mmul=buf[0]*(buf[1]+buf[2]+....+buf[len-2]);
這樣我們就得到:
buf[0]=A2;
buf[1]+buf[2]+....+buf[len-2]=309;
buf[len-1]=FF;
buf[0] xor
buf[1] xor .... xor buf[len-1] xor 57=E1
也就是
buf[1] xor buf [2] xor ... xor buf[len-2]=E1 xor 57 xor A2 xor FF=EB
最後, 我們得到最終條件:
buf[1]+buf[2]+....+buf[len-2]=309;
buf[1] xor buf [2] xor ... xor buf[len-2]=EB;
最簡單的一種情況,
根據異或的性質,
len-2是一個奇數, 讓buf[1]..buf[len-2],
其中一個是EB, 其他的是成對數字
309-EB=21E=2*10F
這樣, 我們把10F可以分成同樣的部分, 不能超過3個部分,
也不能包含FF
10F=FE+11=...=87+88,
10F=FE+11=...=87+88,
10F=5A+5A+5B=...
10F=5A+5A+5B=...
(在A2和FF之間的數字順序可以打亂)
最後我們可以得到答案(當然, 我們還可以得到更多的答案):
A2
EB FE 11 FE 11 FF 44 69 4B 65 4E
A2 EB
54 5A 61 54 5A 61 FF 44 69 4B 65 4E
=====================================================
DiKeN/iPB