| 1303 |
int tn; |
int tn; |
| 1304 |
int cr; |
int cr; |
| 1305 |
#ifdef KEYCHECK |
#ifdef KEYCHECK |
| 1306 |
|
#define KCCNT 1000000 |
| 1307 |
unsigned int ok, ng; |
unsigned int ok, ng; |
| 1308 |
#endif |
#endif /* KEYCHECK */ |
| 1309 |
|
|
| 1310 |
/* 鍵文字列 */ |
/* 鍵文字列 */ |
| 1311 |
uint8_t key[8 + 8]; |
uint8_t key[8 + 8]; |
| 1385 |
code = scoreboard_map(sfp); |
code = scoreboard_map(sfp); |
| 1386 |
|
|
| 1387 |
/* キーの初期化 */ |
/* キーの初期化 */ |
| 1388 |
srand(time(NULL)); |
/* 魔改造 起動時刻が同じでも乱数系列が変わるように */ |
| 1389 |
|
srand(time(NULL)-getpid()); |
| 1390 |
key_init(key); |
key_init(key); |
| 1391 |
set_salt(code, key); |
set_salt(code, key); |
| 1392 |
|
|
| 1471 |
status.startTime = status.lastTime = usec(); |
status.startTime = status.lastTime = usec(); |
| 1472 |
#ifdef KEYCHECK |
#ifdef KEYCHECK |
| 1473 |
ok = ng = 0; |
ok = ng = 0; |
| 1474 |
#endif |
#endif /* KEYCHECK */ |
| 1475 |
/* 探索ループだぞっと */ |
/* 探索ループだぞっと */ |
| 1476 |
for (;;) |
for (;;) |
| 1477 |
{ |
{ |
| 1663 |
#ifndef KEYCHECK |
#ifndef KEYCHECK |
| 1664 |
if (!t) |
if (!t) |
| 1665 |
continue; |
continue; |
| 1666 |
#endif |
#endif /* KEYCHECK */ |
| 1667 |
|
|
| 1668 |
nap_total += ALU_BITS; |
nap_total += ALU_BITS; |
| 1669 |
|
|
| 1677 |
#ifndef KEYCHECK |
#ifndef KEYCHECK |
| 1678 |
if (!(t & ((ALU_T)1 << k))) |
if (!(t & ((ALU_T)1 << k))) |
| 1679 |
continue; |
continue; |
| 1680 |
#endif |
#endif /* KEYCHECK */ |
| 1681 |
|
|
| 1682 |
nap_hit++; |
nap_hit++; |
| 1683 |
|
|
| 1696 |
kk, k, |
kk, k, |
| 1697 |
xhash[(ALU_BITS * kk + k) & 0x3F]))) |
xhash[(ALU_BITS * kk + k) & 0x3F]))) |
| 1698 |
continue; |
continue; |
| 1699 |
#endif |
#endif /* KEYCHECK */ |
| 1700 |
|
|
| 1701 |
for (i = 1; i < 11; i++) |
for (i = 1; i < 11; i++) |
| 1702 |
{ |
{ |
| 1709 |
memcpy(buf, pkt_c->uk.key, 8); |
memcpy(buf, pkt_c->uk.key, 8); |
| 1710 |
buf[8] = buf[9] = 0; |
buf[8] = buf[9] = 0; |
| 1711 |
buf[7] = (buf[7] & -(1 << N_STRIDE) & 0x7F) + ALU_BITS * kk + k; |
buf[7] = (buf[7] & -(1 << N_STRIDE) & 0x7F) + ALU_BITS * kk + k; |
| 1712 |
|
#ifdef KEYCHECK |
| 1713 |
|
{ |
| 1714 |
|
#include <crypt.h> |
| 1715 |
|
char *res; |
| 1716 |
|
char salt[3]; |
| 1717 |
|
static unsigned char saltTable[] = |
| 1718 |
|
".............................................../0123456789ABCDEF" |
| 1719 |
|
"GABCDEFGHIJKLMNOPQRSTUVWXYZabcdefabcdefghijklmnopqrstuvwxyz....." |
| 1720 |
|
"................................................................" |
| 1721 |
|
"................................................................"; |
| 1722 |
|
salt[2] = '\0'; |
| 1723 |
|
salt[0] = saltTable[buf[1]]; |
| 1724 |
|
salt[1] = saltTable[buf[2]]; |
| 1725 |
|
res = crypt( buf, salt ); |
| 1726 |
|
if ( strcmp( res+3, hash ) != 0 ) { |
| 1727 |
|
printf( "res+3 = <%s>, hash = <%s>\n", res+3, hash ); |
| 1728 |
|
exit( 0 ); |
| 1729 |
|
} |
| 1730 |
|
} |
| 1731 |
|
#endif /* KEYCHECK */ |
| 1732 |
time( &tloc ); |
time( &tloc ); |
| 1733 |
if (translate(buf, 0, 1)) |
if (translate(buf, 0, 1)) |
| 1734 |
{ |
{ |
| 1735 |
#ifdef KEYCHECK |
#ifdef KEYCHECK |
| 1736 |
ok++; |
ok++; |
| 1737 |
if ( ok + ng >= 100000000 ) { |
if ( ok + ng >= KCCNT ) { |
| 1738 |
printf( "\nok = %lu, ng = %lu\n", ok, ng ); |
printf( "\nok = %u, ng = %u\n", ok, ng ); |
| 1739 |
exit( 1 ); |
exit( 1 ); |
| 1740 |
} |
} |
| 1741 |
#endif |
#endif /* KEYCHECK */ |
| 1742 |
|
#ifndef KEYCHECK |
| 1743 |
if (cr) |
if (cr) |
| 1744 |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
| 1745 |
cr = 0; |
cr = 0; |
| 1754 |
buf[0], buf[1], buf[2], buf[3], |
buf[0], buf[1], buf[2], buf[3], |
| 1755 |
buf[4], buf[5], buf[6], buf[7], |
buf[4], buf[5], buf[6], buf[7], |
| 1756 |
buf[8], ctime(&tloc) ); |
buf[8], ctime(&tloc) ); |
| 1757 |
|
#endif /* not KEYCHECK */ |
| 1758 |
} |
} |
| 1759 |
else |
else |
| 1760 |
{ |
{ |
| 1761 |
#ifdef KEYCHECK |
#ifdef KEYCHECK |
| 1762 |
ng++; |
ng++; |
| 1763 |
if ( ok + ng >= 100000000 ) { |
if ( ok + ng >= KCCNT ) { |
| 1764 |
printf( "\nok = %lu, ng = %lu\n", ok, ng ); |
printf( "\nok = %u, ng = %u\n", ok, ng ); |
| 1765 |
exit( 1 ); |
exit( 1 ); |
| 1766 |
} |
} |
| 1767 |
#endif |
#endif /* KEYCHECK */ |
| 1768 |
|
#ifndef KEYCHECK |
| 1769 |
/* 魔改造 failed も表示する */ |
/* 魔改造 failed も表示する */ |
| 1770 |
if (cr) |
if (cr) |
| 1771 |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
| 1778 |
hash, |
hash, |
| 1779 |
buf[0], buf[1], buf[2], buf[3], |
buf[0], buf[1], buf[2], buf[3], |
| 1780 |
buf[4], buf[5], buf[6], buf[7], ctime(&tloc) ); |
buf[4], buf[5], buf[6], buf[7], ctime(&tloc) ); |
| 1781 |
|
#endif /* not KEYCHECK */ |
| 1782 |
} |
} |
|
#ifdef KEYCHECK |
|
|
printf( "ok = %lu, ng = %lu\n", ok, ng ); |
|
|
#endif |
|
| 1783 |
} |
} |
| 1784 |
} |
} |
| 1785 |
|
|