ããã«ã¡ã¯ïŒ ååã
ZeroNightsCrackMeãœãªã¥ãŒã·ã§ã³ãçºè¡šããŸããã æééãã«è§£æ±ºã§ãããã¹ãŠã®äººã¯ãã«ã¹ãã«ã¹ããŒã®ãªãã£ã¹ãžã®é 足ãžã®æåŸ
ç¶ãšã3å°ã®ããã€ã¹ã®ã©ã€ã»ã³ã¹ããŒã®åœ¢ã§ã®ãããåãåãããšãã§ããŸããã ãããããšããããã«ã¹ãã«ã¹ããŒã¯ãäºè£ã軜éã§ãããšèšããŸããã ããã®ããè€éãªããŒãžã§ã³ãããããããèŠãããšãæã人ã
ã«éä¿¡ãããŸãïŒããããããªãã®åã³ã®ããã«ãããã°èŽãç©ãªãã§ïŒã ãã¡ããããã®ããŒãžã§ã³ãã²ãããªãããšãåŠå®ããããšã¯ã§ããªãã£ãã®ã§ãåå ããããšããæ°æã¡ã確èªããŸããã
2æ17æ¥ãæçŽã«æ°ããäºè£ãå
¥ããŸããã ãã®èšäºã§èª¬æããã®ã¯ã圌ã®æ±ºå®ã«ã€ããŠã§ãïŒããã ãã§ã¯ãããŸããïŒã
äºè£ã®ãã©ã¡ãŒã¿ãŒã¯åãã§ãã
- ãã¡ã€ã«ïŒ ZeroNightsCrackMe.exe
- ãã©ãããã©ãŒã ïŒ Windows 7ïŒ64ãããïŒ
- ããã«ãŒïŒãªã
- åãããã°ïŒã¶ã€ãããªã
- 解決çïŒã¡ãŒã«/ã·ãªã¢ã«æå¹ãã¢
ããŒã«ïŒ
- OllyDbg 2.01
- ããã€ãã®ç°çœè³ª
ãœãªã¥ãŒã·ã§ã³ã«åãæãããŸããã...
ç©ãã«è¡ã
ãã€ãã®ããã«ãå®éšãéå§ããè¡šé¢åæãå®æœããŸãã ãã®åå¿ã¯ãéå»ã®äºè£ã«äŒŒãŠããŸãã
å³ 1
ãè£ã®ããéå»ã®ä»äºã®åçãç¥ã£ãŠãç§ãã¡ã¯ããŒãã€ã³ãã®æ€çŽ¢ã«é²ã¿ãèŠã€ããŸãïŒ
- å
¥åããŒã¿ãåŠçããé¢æ°ã
- æ€èšŒããŒãã«æ€èšŒã¢ã«ãŽãªãºã ã
- æ€èšŒããŒãã«ã
- æ€èšŒããŒãã«ã«èšå
¥ããããã®ã¢ã«ãŽãªãºã ã
- æ€èšŒããŒãã«ã«èšå
¥ããããã®ã¢ã«ãŽãªãºã ã®ããŒã¿ã
- ã·ãªã¢ã«ã³ãŒããå
éšè¡šçŸã«å€æããã¢ã«ãŽãªãºã ã
- å€æè¡šã
- æå¹ãªæåç¯å²ã
次ã«ããã¹ãŠã®ããŒãã€ã³ãã以åã®ããŒãžã§ã³ãšæ¯èŒããŠãéããèŠã€ããŸãã
åç©ã®éã«æ²¿ã£ãŠ
å
¥ååŠçæ©èœ
ãŸããå
¥åãããããŒã¿ãåŠçããæ©èœãèŠã€ããŸãã ããã¯éåžžã«ç°¡åã§ãã éã¢ã»ã³ãã©ãŠã£ã³ããŠãå³ã¯ãªãã¯ãã
ã=>ãã¹ãŠã®åç
§æååãæ€çŽ¢ããéžæããŸãã
å³ 2
次ã«ã
ãGood workãSerial is valid !!!ããšããè¡ãã¯ãªãã¯ããŠãããã«ã¢ã¯ã»ã¹ããŸãã
å³ 3
ç®çã®é¢æ°ã¯ããé«ããªããŸãïŒç§ã®å Žåã
CALL 0x9b12b0ã§ã ïŒã 3ã€ã®ãã©ã¡ãŒã¿ãŒã圌女ã«æž¡ãããŸãã
Arg2 ã
Arg1ã§ã¯ãã·ãªã¢ã«ã³ãŒãã®ãµã€ãºãšã·ãªã¢ã«ã³ãŒããžã®ãã€ã³ã¿ãŒãããããéä¿¡ããã
ECXã§ã¯ãé»åã¡ãŒã«ãžã®ãã€ã³ã¿ãŒãç»é²ãããŸãã
æ€èšŒããŒãã«æ€èšŒã¢ã«ãŽãªãºã
é¢æ°ã®å
éšã«å
¥ããäžçªäžã«ç®ãåãããšãæ€èšŒããŒãã«ããã§ãã¯ããããã®ã¢ã«ãŽãªãºã ããããŸãïŒå€ãããŒãžã§ã³ãšåãã§ãïŒïŒ
å³ 4
æ€èšŒããŒãã«ã®ã¢ãã¬ã¹
ã¢ã«ãŽãªãºã ã®æåã«ãã¬ãŒã¯ãã€ã³ããèšå®ããå®è¡æã«ã¯ã©ãã¯ãå®è¡ããŸãïŒãã¡ãããããŒã¿ãå
¥åããŠ[
ãã§ã㯠]ãã¿ã³ãã¯ãªãã¯ããåŸïŒã
å³ 5.ãã¹ãããŒã¿ãå
¥åããŸã
å³ 6.æ€èšŒããŒãã«ã§åæ¢
次ã«ãããŒãã«èªäœã®ã¢ãã¬ã¹ã決å®ããŸãã ãããè¡ãã«ã¯ã
ãCMP DWORD PTR SSïŒ[ECX * 4 + EBP-28]ã1ããšããè¡ã«ç§»åããŠãå®å
ã¢ãã¬ã¹ã調ã¹ãŸãã
å³ 7.æ€èšŒããŒãã«ã®ã¢ãã¬ã¹ã®æ±ºå®
ç§ã®å ŽåãããŒãã«ã®ã¢ãã¬ã¹ã¯
0x36f308 ïŒèµ€ã§åŒ·èª¿è¡šç€ºïŒã§ãã
å³ 8.æ€èšŒããŒãã«ãã³ã
æ€èšŒããŒãã«å
å¡«ã¢ã«ãŽãªãºã
éå»ã®äºè£ã解ããšãã«å®èšŒãããã®ãšåãæ¹æ³ã§ã¢ã«ãŽãªãºã ãæ€çŽ¢ããŸãã
- ã¯ã©ãã¯ãç¶è¡ããŸãïŒOlkaã§F9ãæŒããŸãïŒã
- å
¥åããŒã¿åŠçé¢æ°ã®å
èš³ã瀺ããŸããç§ã®å Žåã¯CALL 9b12b0ã§ãïŒå³3ïŒã
- ã¯ã©ãã¯ã«åãæ¿ãããããã¢ãããŠã£ã³ããŠïŒæåãŸãã¯å€±æã®è©±ïŒã§[OK]ãã¯ãªãã¯ããŸãïŒããã«ãããã¯ã©ãã¯ã®åŠçãç¶è¡ããŸãïŒã
- 次ã«ãããã§ãã¯ããã¿ã³ãã¯ãªãã¯ããŠã·ãªã¢ã«çªå·ã®åã«ãŠã³ããéå§ããŸãããã®åŸãã³ãŒã«CALL 0x9b12b0ã§åæ¢ããå¿
èŠããããŸãã
- åŒã³åºãCALL 0x9b12b0ã®äžã«ç«ã£ãŠãã¬ã³ãŒãã®ã¢ãã¬ã¹0x36f308ã«ãã¬ãŒã¯ã眮ããŸãã
- ãããŠãããäžåºŠF9ãæŒããŸãã
ãã¹ãŠãæ£ããè¡ãããå Žåãããã«è¡šç€ºãããŸãã
å³ 9.æ€èšŒããŒãã«ã«èšå
¥ããããã®ã¢ã«ãŽãªãºã
æ°ããã¢ã«ãŽãªãºã ãšå€ãã¢ã«ãŽãªãºã ãæ¯èŒãããšãããããç°ãªãããšã«æ°ä»ãã§ãããã
å³ 10.å€ãã¢ã«ãŽãªãºã ïŒ
ååã®èšäºã®ã¹ã¯ãªãŒã³ã·ã§ããïŒ
Pythonã§ã®
ãæ°ããã¢ã«ãŽãªãºã ãã®ãã¬ãŒã³ããŒã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã
def create_table(first_part, second_part): result = [] curr_second = 0 out_index = 0 while(out_index < 3): inner_index = 0 while(inner_index < 3): curr_first = 0 accumulator = 0 index = 0 while(index < 3): first = first_part[inner_index + curr_first] second = second_part[index + curr_second] hash = 0 if (first != 0): while (first != 0): if (first & 1): hash ^= second second += second first = first >> 1 accumulator ^= hash index += 1 curr_first += 3 result.append(accumulator & 0xff) inner_index += 1 out_index += 1 curr_second += 3 return result
ãã®ã¢ã«ãŽãªãºã ã§äœ¿çšãããããŒã¿ã®æ€çŽ¢ã«ç§»ããŸãããã
æ€èšŒããŒãã«ã«èšå
¥ããããã®ã¢ã«ãŽãªãºã ã®ããŒã¿
ã¢ã«ãŽãªãºã ã³ãŒããåæããåŸããã®æäœã®ããŒã¿ãç±æ¥ãã2ã€ã®å ŽæãèŠã€ãããŸããã
å³ 11.æ°ããã¢ã«ãŽãªãºã ãåäœããé
å
ãããã¯ç°è²ã®é·æ¹åœ¢ã§åŒ·èª¿è¡šç€ºãããŸãã ç§ã®å Žåãã¢ãã¬ã¹
0x9b11b0ããã³
0x9b11b2ã§ã次ã®é
åã«ã¢ã¯ã»ã¹ããŠããŸãïŒ
- 0x00758628ïŒå³12ïŒ
- 0x00758908ïŒå³13ïŒ
å³ 12
å³ 13
åé
åã«ã¯ããããã1ãã€ãã®
9ã€ã®
èŠçŽ ãå«ãŸããŸãã
å€ãã¯ã©ãã¯ã解決ããå Žåãã·ãªã¢ã«ã³ãŒããå
éšè¡šçŸã«å€æããã¢ã«ãŽãªãºã ãæ€çŽ¢ããŸãããæ°ããã¯ã©ãã¯ã§ã¯ãå€ãã¯ã©ãã¯ã®åäœãšã®å€§ããªéããèŠã€ãããŸããããã®ãããéãã«é¢ããæ
å ±ã¯æ¬¡ã®ãšããã§ãã
å€ãããŒãžã§ã³ãšæ°ããããŒãžã§ã³ã®éã
å€ãããŒãžã§ã³ã§ã¯ãã¯ã©ãã¯ã¯ã·ãªã¢ã«ã³ãŒãã§æ¬¡ã®ããã«æ©èœããŠããŸããã
- ã·ãªã¢ã«ã³ãŒãã¯2ã€ã®éšåã«åå²ãããŸããã
- åéšåã¯å
éšè¡šçŸã«å€æãããŸããã
- 次ã«ãåéšåãæ··åïŒæ··åïŒããŸããã
- ãã®åŸãäž¡æ¹ã®éšåãæ€èšŒããŒãã«ã«èšå
¥ããããã®ã¢ã«ãŽãªãºã ã«è»¢éãããŸããã
æçµçã«ã次ã®ãããªãã®ãåŸãããŸããã
Serial |- part_1 |- part_2 part_1 = intermediate_view(part_1) part_2 = intermediate_view(part_2) part_1 = mix(part_1) part_2 = mix(part_2) valid_table = algo(part_1, part_2)
æ°ããããŒãžã§ã³ã§ã¯ãäºæ
ã¯å°ãè€éã«ãªããŸããã
- ã·ãªã¢ã«ã³ãŒãã¯2ã€ã®éšåã«åãããŠããŸãã
- ãã®åéšåã¯å
éšè¡šçŸã«å€æãããŸãã
- æåã®éšå+åºå®é
åïŒ3ã5ã7ã5ã7ã3ã7ã3ã5ïŒãã¢ã«ãŽãªãºã ã«è»¢éãããŸãã
- 2çªç®ã®éšå+åºå®é
åïŒ3ã5ã7ã5ã7ã3ã7ã3ã5ïŒã¯ã¢ã«ãŽãªãºã ã«è»¢éãããŸãã
- é
ç®3ã4ã®çµæã¯ãæ€èšŒããŒãã«ã«èšå
¥ããããã®ã¢ã«ãŽãªãºã ã«æž¡ãããŸãã
ãã®çµæã次ã®ãããªçµæãåŸãããŸãã
Serial |- part_1 |- part_2 part_1 = intermediate_view(part_1) part_2 = intermediate_view(part_2) part_1 = mix(part_1) part_2 = mix(part_2) salt = [3, 5, 7, 5, 7, 3, 7, 3, 5] part_a = algo(part_1, salt) part_b = algo(part_2, salt) valid_table = algo(part_a, part_b)
åºå®é
åã«äŸåããããšã«ãªããŸãã
ã·ãªã¢ã«ã³ãŒããå
éšè¡šçŸã«å€æããã¢ã«ãŽãªãºã
ã·ãªã¢ã«ã³ãŒãã³ã³ããŒã¿ãŒã®æ€çŽ¢ã¯ãä»»ãããŸãããããã§ã¯è¡ããŸããã å€ãããŒãžã§ã³ãšåãæ¹æ³ã§æ€çŽ¢ã§ããŸãã
å€æè¡šãšæå¹ç¯å²
ããŒãã«ãšæå¹ç¯å²ã¯å€ãããŒãžã§ã³ãšåãã§ãã
åŸ
ã¡äŒãã®ããã®ç¹æ®å°ã®æºå
å¿
èŠãªèŠçŽ ããã¹ãŠæã£ãã®ã§ã決å®ãé²ããããšãã§ããŸãã
ã¢ã¯ã·ã§ã³ã®ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
- algoïŒpart_aãpart_bïŒã®å Žåãçµæ[ 1ã0ã0ã0ã1ã0ã0ã0ã0ã1]ãäžããpart_aãšpart_bãèŠã€ããŸã
- part_a = algoïŒpart_1ãsaltïŒã®å Žåã part_aãšçããçµæãçæããpart_1ãèŠã€ããŸãã
- part_b = algoïŒpart_2ãsaltïŒã®å Žåã part_bãšçããçµæãçæããpart_2ãèŠã€ããŸãã
ã¢ã«ãŽïŒpart_aãpart_bïŒããå§ããŸããã
æåã®èšäºãèªãã å Žåãå¿
èŠãªããŒãã«
[ 1ã0ã0ã0ã1ã0ã0ã0ã1]ãã³ã³ãã€ã«ããã«ã¯ã
ããŒã "ãŸãã¯
"ãŠããã " ã
å€ãããŒãžã§ã³ã®ã¯ã©ãã¯ã§ã¯ããããã®ãã€ããèŠã€ããã®ã¯éåžžã«ç°¡åã§ããã å®è¡ããå¿
èŠãããã®ã¯ã䜿çšå¯èœãªã¢ã«ãã¡ãããå
šäœã䞊ã¹æ¿ããããã€ãã®ç°¡åãªæäœãããã«é©çšããããšã ãã§ããã
æ°ããããŒãžã§ã³ã§ã¯ããããè¡ãã®ã¯ã¯ããã«å°é£ã§ãïŒãã ããããã¯äžèŠããã ãã§ã以äžã§çç±ã説æããŸãïŒã å€ãããŒãžã§ã³ã§ã¯ã1ã€ã®èŠçŽ ãå埩åŠçã§ããŸããã æ°ããããŒãžã§ã³ã§ã¯ã3ã€ã®èŠçŽ ã¯ãã¹ãŠçžäºæ¥ç¶ãããŠããããã3ã€ã®èŠçŽ ãå埩åŠçããå¿
èŠããããŸãã
ããã§ããªãæ°ããŒãžã§ã³ã¯äžèŠè€éãªããã«èŠããã®ã§ããããïŒ
æåã®èšäºã§ã¯ãããŒãããšããŠããããã®æ€çŽ¢ã®èåŸã«å®éã«é ãããŠãããéæ³ããæããã«ããªãã£ãããã§ãïŒãã®èšäºã§ã¯ãæããã«ããå¿
èŠããããŸãããããã¯ã§ããŸããïŒã ç§ã®keygenã§ã¯ãå¿
èŠãªããŒãããšã1ããæ€çŽ¢ããé¢æ°ã䜿çšããŸããããå®å
šã«æçœãªæ¹æ³ã§ã¯ãããŸããã§ããã ããã¯ãæã奜å¥å¿ãããããããããåäžã®ã±ãŒã¹ïŒæåã®ã±ãŒã¹ã¯ã¯ã©ãã¯ïŒã®ãã¹ã«æ²¿ã£ãŠé
眮ããããšã«æåããŸããã 圌ããïŒä»ã®ããã«ïŒãã1ã€ã®ã¯ã©ãã¯ãäžããããããç°ãªãã¢ã«ãŽãªãºã ã䜿çšãããšã圌ãã¯ããŒãããšã1ããæ€çŽ¢ããæ°ããæ¹æ³ãèãåºãå¿
èŠããããããã¯å€ãã®äººã«èµ·ãã£ãããã§ã;ïŒ
ãŸããããããŸãããå°ãªãèšèã¯ããå€ãã®ããžãã¹ã§ãã
以äžã¯ããã¹ãŠã®ãã«æåãšåäžæåãèŠã€ããã®ã«åœ¹ç«ã€éæ³ã®ãåªæãã§ãã
data_zero, data_ones = [], [] for a in range(0, 256): part_a = [a, a, a, a, a, a, a, a, a] part_b = [a, a, a, a, a, a, a, a, a] result = create_table(part_a, part_b) if result == [0, 0, 0, 0, 0, 0, 0, 0, 0]: data_zero.append(a) elif result == [1, 1, 1, 1, 1, 1, 1, 1, 1]: data_ones.append(a) print("ZERO:", data_zero) print("ONES:", data_ones)
å³ 14
ããŠãããŒãããšã1ããäžããèŠçŽ ã®ã°ã«ãŒãããããŸãã ç®çã®ããŒãã«[1ã0ã0ã0ã1ã0ã0ã0ã1]ãååŸããæ¹æ³ã¯ïŒ
æãæ°é
ãã®ãã/ç¬åµçãªäººã¯ãäºãã«ä¹ç®ãããšãåäœè¡å[1ã0ã0ã0ã0ã1ã0ã0ã0ããäžããã¹ãè¡åãæ±ã£ãŠããããšã«æ°ä»ãããšãã§ããŸãïŒããšãã°ã
åã®èšäºã®ã³ã¡ã³ãããïŒ 1]ã ãããã£ãŠãåäœè¡åãååŸããã«ã¯ã2ã€ã®åäœè¡åãŸãã¯2ã€ã®éè¡åãå¿
èŠã§ãã
å¿
èŠãªåäœãããªãã¯ã¹ãååŸããã«ã¯ã次ã®ãã¿ãŒã³ã䜿çšã§ããŸãã
yã®ä»£ããã«-ä»»æã®1æåã眮æãã
xã®ä»£ããã«-ä»»æã®ãŒãã眮æããŸãã
ä»ã®ãã¿ãŒã³ã䜿çšã§ããŸãã次ã®ãã¹ãã«ãã䜿çšããŠããããèŠã€ããããšãã§ããŸãã
happy = [1,32] for byte_1 in happy: for byte_2 in happy: for byte_3 in happy: for byte_4 in happy: for byte_5 in happy: for byte_6 in happy: for byte_7 in happy: for byte_8 in happy: for byte_9 in happy: part_1 = [byte_1, byte_2, byte_3, byte_4, byte_5, byte_6, byte_7, byte_8, byte_9] part_2 = [byte_1, byte_2, byte_3, byte_4, byte_5, byte_6, byte_7, byte_8, byte_9] result = create_table(part_1, part_2) if result == [1, 0, 0, 0, 1, 0, 0, 0, 1]: print("%s | %s " % (part_2, part_1))
å³ 15
眮æåŸãããšãã°æ¬¡ã®ãã¿ãŒã³ãååŸã§ããŸãã
patterns = [
å¿
èŠãªIDãããªãã¯ã¹ïŒã€ãŸããæ€èšŒããŒãã«ïŒãååŸããæ¹æ³ãããã£ãã®ã§ãä»ã®åé¡ã«é²ã¿ãŸãã
é©åãªpart_aããã³part_bãéžæããæ¹æ³
次ã®ããšãç¥ã£ãŠããŸãã
part_a = algo(part_1, salt) part_b = algo(part_2, salt) valid_table = algo(part_a, part_b)
ããšãã°ã
part_aã¯
part_1ãš
saltã«äŸåããŸãã 次ã«ã
part_aã®å¯èœãªçµã¿åããã
çµã蟌ã¿ãŸãã è«ççãªçåãçããŸãã
ã©ã®çµã¿åããã䜿çšã§ããŸããïŒ
å€ãã®äººã¯ãã§ã«äœãããå¿
èŠãããããæšæž¬ããŠãããšæããŸãã ããã§ãã次ã®ãã¹ãã«ãã䜿çšããŠãã ããïŒ
ãããã®1ã€ã次ã«ç€ºããŸãã
ãã¹ãã«ããæ£åžžã«
æ©èœããå Žåã
part_aããã³
part_bã§
䜿çšã§ãããªãã·ã§ã³ã¯4096ã®ã¿
ã§ã ïŒããæ£ç¢ºã«ã¯ãããªãã·ã§ã³ã®äžãïŒã
å³ 16
ããã§ãæåã®æå¹ãªããŒãçæããããã®ãã¹ãŠã®ããŒã¿ãã§ããŸããã ãã¡ãããå
éšè¡šçŸãæã€ãã€ãã䜿çšããŠããããšãå¿ããªãã§ãã ãããã€ãŸããã¯ã©ãã¯ã§ãŠã£ã³ããŠã«å
¥åããåã«ããã€ããéåžžã®å€èŠ³ã«æ»ãå¿
èŠããããŸãã
æåã®è¢«å®³è
ïŒæåã®æå¹ãªããŒïŒ
泚æããŠããã°ã4096ã®ãã¹ãŠã®ãªãã·ã§ã³ã
ããã¹ãŠã®èŠçŽ ãå¶æ°ããš
ããã¹ãŠã®èŠçŽ ãå¶æ°ãã® 2ã€ã®ã°ã«ãŒãã«åããããšãã§ããããšã«æ°ã¥ããã§ãããã
ã€ã³ããã¯ã¹ïŒ0035ãããŒãã«ïŒ
[116ã222ã172] <=ãã¹ãŠã®èŠçŽ ã¯å¶æ°
ã€ã³ããã¯ã¹ïŒ0560ãããŒãã«ïŒ
[ 172ã116ã222
] <=ãã¹ãŠã®èŠçŽ ãå¶æ°
ã€ã³ããã¯ã¹ïŒ0770ãããŒãã«ïŒ
[ 222ã172ã116
] <=ãã¹ãŠã®èŠçŽ ãå¶æ°
ã€ã³ããã¯ã¹ïŒ0117ãããŒãã«ïŒ
[ 1ã229ã111
] <=ãã¹ãŠã®èŠçŽ ãå¶æ°ã§ã¯ãããŸãã
ã€ã³ããã¯ã¹ïŒ1287ãããŒãã«ïŒ
[229ã111ã1] <=ãã¹ãŠã®èŠçŽ ãå¶æ°ã§ã¯ãããŸãã
ã€ã³ããã¯ã¹ïŒ1872ãããŒãã«ïŒ
[111ã1ã229] <=ãã¹ãŠã®èŠçŽ ãå¶æ°ã§ã¯ãããŸãã
ãã ããå©çšå¯èœãªããã¿ãŒã³ããèŠããšãããªãã·ã§ã³ãã®ããããã«ãå¶æ°ãèŠçŽ ãšãå¶æ°ã§ã¯ãªããèŠçŽ ã®äž¡æ¹ãå¿
èŠã§ããããšãããããŸãã
以äžã«ãã¢ã€ãã³ãã£ãã£ãäžãã2ã€ã®ãããªãã¯ã¹ã瀺ããŸãã
part_a[176ã176ã65] <=å¶æ°ãšå¶æ°ã¯ãããŸãã
[176ã65ã176] <=å¶æ°ãšå¶æ°ã¯ãããŸãã
[65ã176ã176] <=å¶æ°ãšå¶æ°ã¯ãããŸãã
part_b[176ã176ã65] <=å¶æ°ãšå¶æ°ã¯ãããŸãã
[176ã65ã176] <=å¶æ°ãšå¶æ°ã¯ãããŸãã
[65ã176ã176] <=å¶æ°ãšå¶æ°ã¯ãããŸãã
valid_table = part_a * part_a[1ã0ã0]
[0ã1ã0]
[0ã0ã1]
ãå¶æ°ãèŠçŽ ãšãå¶æ°ãèŠçŽ ãæã€ããªãã·ã§ã³ãããªããããã¯ã©ãã¯ã«ãšã©ãŒããããšçµè«ä»ããŸãã è«ççãªçåãçããŸãã
ééãã¯äœã§ããïŒ
ç°¡åã«èããåŸããšã©ãŒã¯åºå®è¡å
[0x3ã0x5ã0x7ã0x5ã0x7ã0x3ã0x7ã0x3ã0x5]ã«ãããšçµè«ä»ããŸããã å¶æ°ãšå¥æ°ã®ããªãã·ã§ã³ããååŸããã«ã¯ã
ã0x3ã ã
ã0x5ã ã
ã0x7ãããããã
ã0x2ã ã
ã0x3ã ã
ã0x8ãã«çœ®ãæãããã2ã€ã®å¶æ°èŠçŽ ãš1ã€ã®å¥æ°èŠçŽ ãããå¥ã®ãªãã·ã§ã³ã«çœ®ãæããå¿
èŠããããŸããããšãã°ããã®ãããª
"0x4" ã
"0x7"ããã³
"0x8" ïŒãªãã·ã§ã³ãšããŠïŒã
ãã®ãšã©ãŒã¯ã«ã¹ãã«ã¹ããŒã«å ±åãããŸããã 圌ãã¯ãïŒçŸåšèª¿æ»äžã®ïŒããŒãžã§ã³ã¯ãã©ããã§ãããšèšã£ãã ãã®åŸãåæ¥ããšã©ãŒã®ãªãããŒãžã§ã³ãå
šå¡ã«éä¿¡ãããŸããã 確ãã«ãæ°ããããŒãžã§ã³ã§ã¯åºå®ããŒãã«ããªãããããããç°¡åã«è§£æ±ºãããŸããããããã«ã€ããŠã¯ããŒãã¹ã»ã¯ã·ã§ã³ã§å°ãåŸã§èª¬æããŸã:)
æ£ãã眮æãå®è¡ããããšã確èªããã«ã¯ïŒããšãã°ã
ã0x2ã ã
ã0x3ã ã
ã0x8ã以å€ã®æåãæ¿å
¥ããããšã«ããå ŽåïŒã次ã®ãã¹ãã«ãã䜿çšããå¿
èŠããããŸãã
serial_data = [52, 233, 91, 105, 65, 15, 50, 176, 90, 40, 225, 81, 207, 79, 34, 19] a = 0x2 b = 0x3 c = 0x8 first_part = [a, b, c, b, c, a, c, a, b] second_part_new = [0, 0, 0] count = 0 result_table = [] for byte_1 in serial_data: second_part_new[0] = byte_1 for byte_2 in serial_data: second_part_new[1] = byte_2 for byte_3 in serial_data: second_part_new[2] = byte_3 res = get_items(first_part, second_part_new) print("index: %s, table: %s" % (count, res)) if (res[0] % 16 == 0 and res[1] % 16 == 0 and res[2] % 16 == 1) or\ (res[0] % 16 == 1 and res[1] % 16 == 0 and res[2] % 16 == 0) or\ (res[0] % 16 == 0 and res[1] % 16 == 1 and res[2] % 16 == 0): result_table.append(res) count += 1 print("Count:", count) print("Good:", result_table)
ãã€ããæ£ããéžæãããå ŽåïŒãã®äŸã§ã¯ã0x2ã0x3ã0x8ãïŒããã©ããïŒãGoodããã£ãŒã«ãïŒã«ã¯å°ãªããšã1ã€ã®ããŒã¹ãïŒ3ã€ã®ã¢ã¬ã€ã§æ§æãããã°ã«ãŒãïŒããããŸãã åºå®ãããªãã¯ã¹ïŒèŠçŽ ã0x2ããã0x3ããã0x8ãïŒã®åºåäŸã以äžã«ç€ºããŸãã
å³ 17
ã芧ã®ãšããã幞éãç§ãã¡ã«åŸ®ç¬ãã ã®ã§ãç§ãã¡ã®
trapã«ã¯3å¹ãã®éçåç©ãããŸããããããã¯ãã¡ãããç¥ãããŒãã«ãèšå®ããã®ã«åœ¹ç«ã¡ãŸãïŒã€ãŸãã
part_aãš
part_bã圢æããããã«äœ¿çšã§ããŸãïŒã
æã泚ææ·±ã人ã¯ã
ãGoodãè¡ã®åºåãã°ã«ãŒãã«åå²ã§ããããšã«ãã§ã«æ°ä»ããŠããŸããåã°ã«ãŒãã«ã¯3è¡ãããŸãã
[0ã144ã81]
[81ã0ã144]
[144ã81ã0]
[144ã145ã0]
[0ã144ã145]
[145ã0ã144]
[0ã144ã209]
[209ã0ã144]
[144ã209ã0]
ããã«æ³šææ·±ãã®ã¯ãããããã¹ãŠã®æåãããŒãããšãåäžãã®æåã®ã»ããã«å«ãŸããŠããããšã«ããããæ°ã¥ããã§ãããã
å³ 18
ãŸããæãç¬åµçãªïŒç§ã¯é¡ã£ãŠããŸãïŒæ¢ã«å€§ããªããŒãã«ã§ãã¡ããã§ãã圌ãã¯å€§ããªç£ã远跡ããããšãã§ããã®ã§ãåæ§ã®ãåªæãã§åœŒãèªããŸãïŒ
ããã¯ãã¯ã©ãã¯ã§ããã解決ããå Žæã§ã...å
éšãã€ããã¯ã©ãã¯ã«å
¥ããŠãŠã£ã³ããŠã«å
¥åã§ããããã«å
éšãã€ããéåžžã«å€æããæ¹æ³ã¯ãããªããèªåã§ç解ãããšæããŸãã
ãããŸã§ã®éãæ°ããïŒä¿®æ£ãããïŒã¯ã©ãã¯ã®æ€èšãé²ããŸãã ç¹å®ã®ã¯ã©ãã¯ã«ã€ããŠèª¿ã¹ããã¹ãŠãæ°ãããã®ã«é¢é£ããŠããããšãããã«èšãããã®ã§ããã®åäœã®åçã®è¡šé¢çãªèª¬æã«éå®ããkeygenãžã®ãªã³ã¯ãæäŸããŸãïŒãã奜å¥å¿ã匷ãããŸãã¯ãã®éïŒã
ããŒãã¹ïŒkeygen +æ°ããã¯ã©ãã¯ã®èª¬æïŒ
å©çšå¯èœãªããŒãžã§ã³ãšæ··åããªãããã«ãçªå·ä»ããæ確ã«ããŸãã
- ZeroNightsCrackMe_v1- ãã¡ãã§ã¬ãã¥ãŒã
- ZeroNightsCrackMe_v2-ãã©ããããŒãžã§ã³ã§ããããã®èšäºã®äžèšã§èª¬æãããŠããŸãã
- ZeroNightsCrackMe_v3-以äžã§è¡šé¢çã«ã¬ãã¥ãŒ+ keygenãæäŸãããŸãã
æ€èšŒããŒãã«æ€èšŒã¢ã«ãŽãªãºã ãšæ€èšŒããŒãã«èªäœ
v1ããã³
v2ã®ä»¥åã®ãã¹ãŠã®ããŒãžã§ã³ãšåæ§ã
æ€èšŒããŒãã«å
å¡«ã¢ã«ãŽãªãºã
v2ã®ãã©ããããŒãžã§ã³ãšåæ§ïŒãã®èšäºã§åè¿°ïŒã
æ€èšŒããŒãã«ã«èšå
¥ããããã®ããŒã¿
åäœåçã¯
v1ã®æåã®ããŒãžã§ã³ãšåãã§ãããä»ã®ãããµãŒã䜿çšãããŸãã
ã·ãªã¢ã«ã³ãŒããå
éšè¡šçŸãå€æããŒãã«ãæå¹ç¯å²ã«å€æããã¢ã«ãŽãªãºã
v1ããã³
v2ã®ä»¥åã®ãã¹ãŠã®ããŒãžã§ã³ãšåæ§ã
æ°ããããŒãžã§ã³ã®Keygen
ãã®ã¹ã¬ããã«ã¯ãããŒãžã§ã³
v2ããã³
v3ã®ã¯ã©ãã¯ããã
ãŸã ã ãŸãã
Darwinãã
v3ã®æ°ããããŒãžã§ã³ã®keygenãèŠã€ãããŸãã
Keygen
ã¢ãŒã«ã€ããã¹ã¯ãŒãïŒ Darwin_1iOi7q7IQ1wqWiiIIw
ã¯ã©ãã¯ã®3çªç®ã®ããŒãžã§ã³ã®keygenã確èªããŸãã
> keygen_v3.py habrahabr.ru> result.txt
å³ 19
å³ 20
æåŸã«æè¬ããŸãã ããããïŒ