検索空間の記録機能を追加
@@ -33,6 +33,7 @@ | ||
33 | 33 | #include "scoreboard.h" |
34 | 34 | #include "synth.h" |
35 | 35 | #include "util.h" |
36 | +#include "makai.h" | |
36 | 37 | |
37 | 38 | #ifdef WIN32 |
38 | 39 | /* 優先度 */ |
@@ -788,6 +789,12 @@ | ||
788 | 789 | if ( fixedSalt[0] != '\0' ) { |
789 | 790 | printf( "全空間モード (salt:%c%c)\n", fixedSalt[0], fixedSalt[1] ); |
790 | 791 | } |
792 | +#ifdef KEYLOG | |
793 | + if ( keyLog == MAKAI_TRUE ) { | |
794 | + printf( "検索したキー空間のロギング\n" ); | |
795 | + initMutexKeylog(); | |
796 | + } | |
797 | +#endif /* KEYLOG */ | |
791 | 798 | #ifdef SPECIAL |
792 | 799 | dispSpecial(); |
793 | 800 | #else /* SPECIAL */ |
@@ -838,10 +845,10 @@ | ||
838 | 845 | /* コードをメモリに貼り付ける */ |
839 | 846 | code = scoreboard_map(sfp); |
840 | 847 | |
841 | - /* キーの初期化 */ | |
848 | + /* salt を設定するためにダミーのキーを作成 (ここってロックいるのか ?) */ | |
842 | 849 | WaitForSingleObject(mutex_key, INFINITE); |
843 | - srand(usec()); | |
844 | - key_init(&key); | |
850 | + key.key[1] = 'z' + 1; | |
851 | + key.key[2] = 'z' + 1; | |
845 | 852 | ReleaseMutex(mutex_key); |
846 | 853 | set_salt(code, crypt64_descs[0], key.key); |
847 | 854 |
@@ -4,6 +4,8 @@ | ||
4 | 4 | |
5 | 5 | #include "special.h" |
6 | 6 | #include "util.h" |
7 | +#include "key.h" | |
8 | +#include "makai.h" | |
7 | 9 | |
8 | 10 | #define TRIP_LEN 10 |
9 | 11 |
@@ -100,10 +102,10 @@ | ||
100 | 102 | case 'e': special |= ST_YAKU; break; |
101 | 103 | case 'Y': special |= ST_CHIN; break; |
102 | 104 | case 'Z': special |= ST_EROI; break; |
103 | -#if 0 | |
104 | 105 | #ifdef KEYLOG |
105 | 106 | case 'K': keyLog = MAKAI_TRUE; break; |
106 | 107 | #endif /* KEYLOG */ |
108 | +#if 0 | |
107 | 109 | case 'S': |
108 | 110 | seedOffset = atoi( str + 4 ); |
109 | 111 | if ( seedOffset < MIN_SOFF || seedOffset > MAX_SOFF ) { |
@@ -6,13 +6,21 @@ | ||
6 | 6 | * |
7 | 7 | */ |
8 | 8 | |
9 | +#include <stdio.h> | |
9 | 10 | #include <assert.h> |
10 | 11 | #include <stdlib.h> |
11 | 12 | |
13 | +#ifdef KEYLOG | |
14 | + #include <time.h> | |
15 | + #include <windows.h> | |
16 | +#endif /* KEYLOG */ | |
17 | + | |
12 | 18 | #include "cp932.h" |
13 | 19 | #include "desconst.h" |
14 | 20 | #include "key.h" |
15 | 21 | #include "translate.h" |
22 | +#include "makai.h" | |
23 | +#include "util.h" | |
16 | 24 | |
17 | 25 | #if USE_DT |
18 | 26 | #include "dt4.h" |
@@ -31,6 +39,12 @@ | ||
31 | 39 | struct DT *dtidx[0x100 + 1]; |
32 | 40 | #endif |
33 | 41 | |
42 | +#ifdef KEYLOG | |
43 | +#define KEY_LOG_FILE "keylog.txt" | |
44 | +int keyLog = MAKAI_FALSE; | |
45 | +static HANDLE mutexKeylog; | |
46 | +#endif /* KEYLOG */ | |
47 | + | |
34 | 48 | /* 指定されたクラスと入っているキーから、classify を行う */ |
35 | 49 | void |
36 | 50 | key_make_map(struct KS_KEY *key, int n) |
@@ -360,6 +374,32 @@ | ||
360 | 374 | else |
361 | 375 | key->key[n] = key_set(key, n, rand()); |
362 | 376 | |
377 | +#ifdef KEYLOG | |
378 | + if ( keyLog && (n == 2) ) { | |
379 | + FILE *fp; | |
380 | + int i; | |
381 | + struct timeb tb; | |
382 | + struct tm *plt; | |
383 | + | |
384 | + ftime( &tb ); | |
385 | + plt = localtime( &tb.time ); | |
386 | + | |
387 | + WaitForSingleObject( mutexKeylog, INFINITE ); | |
388 | + | |
389 | + if ( (fp = fopen( KEY_LOG_FILE, "at" )) == NULL ) { | |
390 | + perror( KEY_LOG_FILE ); | |
391 | + exit( 1 ); | |
392 | + } | |
393 | + fprintf( fp, "%02x%02x%02x", key->key[0], key->key[1], key->key[2] ); | |
394 | + fprintf( fp, "\t%04d/%02d/%02d %02d:%02d:%02d.%03d\n", | |
395 | + plt->tm_year + 1900, plt->tm_mon + 1, plt->tm_mday, | |
396 | + plt->tm_hour, plt->tm_min, plt->tm_sec, tb.millitm ); | |
397 | + fclose( fp ); | |
398 | + | |
399 | + ReleaseMutex( mutexKeylog ); | |
400 | + } | |
401 | +#endif /* KEYLOG */ | |
402 | + | |
363 | 403 | #if DEBUG>=3 |
364 | 404 | printf("key[%d]=%02X ncls=%04X\n", n, key[n], kcls[n].map[key[n]]); |
365 | 405 | #endif |
@@ -668,6 +708,8 @@ | ||
668 | 708 | else |
669 | 709 | s = 0; |
670 | 710 | |
711 | + OLDPRINT( "Salt %d:%02x\n", i, s & 63 ); | |
712 | + | |
671 | 713 | #if DEBUG>=1 |
672 | 714 | printf("Salt %d:%3o\n", i, s & 63); |
673 | 715 | #endif |
@@ -702,6 +744,14 @@ | ||
702 | 744 | } |
703 | 745 | } |
704 | 746 | |
747 | +#ifdef KEYLOG | |
748 | +void | |
749 | +initMutexKeylog() | |
750 | +{ | |
751 | + mutexKeylog = CreateMutex(NULL, FALSE, NULL); | |
752 | +} | |
753 | +#endif /* KEYLOG */ | |
754 | + | |
705 | 755 | /* |
706 | 756 | * Local Variables: |
707 | 757 | * tab-width: 4 |
@@ -33,6 +33,11 @@ | ||
33 | 33 | struct CRYPT64_DESC const *desc, |
34 | 34 | uint8_t const *k); |
35 | 35 | |
36 | +#ifdef KEYLOG | |
37 | +extern int keyLog; | |
38 | +extern void initMutexKeylog( void ); | |
39 | +#endif /* KEYLOG */ | |
40 | + | |
36 | 41 | #endif /* KEY_H__ */ |
37 | 42 | |
38 | 43 | /* |