مرحبا خالد,مشكور على الطرح الجميل فقط لدي تعقيب بسيط حول الخوارزمية اذا لم تمانع
لو طبقت تحليلك على السريال لإسم المستخدم الخاص بي ستحصل على المعلومات التالية :
عند تحليل الدالة نجد انها تقوم بالتالي:
سأضع كيجن بالأسمبلي اذا توفر لدي الوقت الكافي.
تحياتي
لو طبقت تحليلك على السريال لإسم المستخدم الخاص بي ستحصل على المعلومات التالية :
user: NtPwner
serial: 1915-6426-1921-4437-EJ2L5
المعلومات التالية خاطئة و السبب ان الخوارزمية التي شرحتها خاصة فقط ببعض الأسماء ممن تتوفر فيهم شروط LOOP1 اي ان بعض الاسماء تحتاج الى حلقة واحدة و البعض الاخر الى اكثر ,الشرح:
user:terco
hash1:CCD7D6A79D07B407FAF12C24F723F1BB -> INITIAL
hash2:CDA87485E203331C7C86B00DAADC5046 -> LOOP1
InternetLock
hash1:66F06ED448EC1016060AA0C0EF75E6E4
hash2:A828D684C41C6A9D35DD3E2ED6A1E628
A828D
CDA87
A 8 2 8 D
C D A 8 7
41h 38h 32h 38h 44h
43h 44h 41h 38h 37h
84h 7Ch 73h 70h 7Bh
$08000001F
4h 1Ch 13h 10h 1Bh
5 28 19 16 27
ABCDEFGHJKLMNPQRSTUVWXY123456789
E6VS5
حسنا السبب في ان السريال الخاص باسم المستخدم الخاص بي خاطئ هو الهاش المستعمل
في حالة اسم المستخدم بك البرنامج قام بعمل هاش مرتين الناتج : CDA87485E203331C7C86B00DAADC5046
أما في حالة اسم المستخدم الخاص بي فقام بعمله 7 مرات مع عدم احتساب المرة الاولى...
في حالة اسم المستخدم بك البرنامج قام بعمل هاش مرتين الناتج : CDA87485E203331C7C86B00DAADC5046
أما في حالة اسم المستخدم الخاص بي فقام بعمله 7 مرات مع عدم احتساب المرة الاولى...
NtPwner
7FBA0D4954A7126D13223E340EF6EF1E
C0F27CAC575019A246C5438B6D4811F4
D41C4966C59BD4E823EC97580B6E01AC
7F32A08E71F2E19BA1518787E6E82839
81072B6985F3BB2BB13C23D93D1A1E2D
C632DDA1BDD0EB7122195910A10EE7B9
BA6098B4190098F7FF925DF256130D90
32E35AB00B3EE2DA5ECD0D7FB527848F
InternetLock
66F06ED448EC1016060AA0C0EF75E6E4
A828D684C41C6A9D35DD3E2ED6A1E628
A 8 2 8 D
3 2 E 3 5
41h 38h 32h 38h 44h
33h 32h 45h 33h 35h
74h 6Ah 77h 6Bh 79h
$08000001F
ABCDEFGHJKLMNPQRSTUVWXY123456789
14 A 17 B 19
W L 1 M 3
بقي الاختلاف في عدد الحلقات ... الآن نأتي إلى السبب :
000641A3 |. 0FB7D1 MOVZX EDX,CX
000641A6 |> 0FB638 /MOVZX EDI,BYTE PTR DS:[EAX]
000641A9 |. 03F7 |ADD ESI,EDI
000641AB |. 40 |INC EAX
000641AC |. 83EA 01 |SUB EDX,1
000641AF |.^ 75 F5 \JNZ SHORT InetLock.000641A6
000641B1 |> BF 03000000 MOV EDI,3
000641B6 |. 85F6 TEST ESI,ESI
000641B8 |. 74 1C JE SHORT InetLock.000641D6
000641BA |. B8 398EE338 MOV EAX,38E38E39
000641BF |. F7E6 MUL ESI
000641C1 |. D1EA SHR EDX,1
000641C3 |. 8D14D2 LEA EDX,DWORD PTR DS:[EDX+EDX*8]
000641C6 |. 2BF2 SUB ESI,EDX
000641C8 |. 46 INC ESI
000641C9 |. 0FB7FE MOVZX EDI,SI
000641CC |. 66:85FF TEST DI,DI
000641CF |. 75 05 JNZ SHORT InetLock.000641D6
000641D1 |. BF 03000000 MOV EDI,3
000641D6 |> 53 PUSH EBX ; /Arg1
000641D7 |. 8BD5 MOV EDX,EBP ; |
000641D9 |. E8 12FFFFFF CALL InetLock.000640F0 ; \InetLock.014240F0
000641DE |. 0FB7C7 MOVZX EAX,DI
000641E1 |. 83E8 01 SUB EAX,1
000641E4 |. 74 14 JE SHORT InetLock.000641FA
000641E6 |. 8BF0 MOV ESI,EAX
000641E8 |> 53 /PUSH EBX ; /Arg1
000641E9 |. B9 20000000 |MOV ECX,20 ; |
000641EE |. 8BD3 |MOV EDX,EBX ; |
000641F0 |. E8 FBFEFFFF |CALL InetLock.000640F0 ; \InetLock.014240F0
000641F5 |. 83EE 01 |SUB ESI,1
000641F8 |.^ 75 EE \JNZ SHORT InetLock.000641E8
000641FA |> 5F POP EDI
000641FB |. 5E POP ESI
000641FC |. 5D POP EBP
000641FD |. 59 POP ECX
000641FE \. C2 0400 RETN 4
عند تحليل الدالة نجد انها تقوم بالتالي:
عدد محارف الاسم المدخل --> terco=74 65 72 63 6F
مجموع المحارف بالهكس --> esi=21D
eax=38e38e39
قسمة مجموع المحارف على القيمة --> MUL ESI
الناتج --> eax=38E38E75
باقي القسمة --> edx=78
SHR EDX,1
edx=3c
lea edx,dowrd ptr edx+edx*8
edx= 3c*8+3c = 21c
sub esi,edx
21D-21c=1
esi=1
inc esi
esi=2
edi=esi
eax=di
sub eax,1
[اهم نفطة في كتابة الكيجن] عدد المرات التي يجب ان يتم عمل هاش مجددا --> eax========1
لو طبقت نفس الخطوات على اي اسم مستخدم ستحصل على السريال الصحيح .
user:NtPwner
serial:1366-2529-8104-2112-WL1M3
سأضع كيجن بالأسمبلي اذا توفر لدي الوقت الكافي.
تحياتي