Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Слабость ДСЧ, код апплетов немного обфусцирован 29.05.02 11:17 Число просмотров: 4301
Автор: Димитрий Статус: Незарегистрированный пользователь
|
> В целом всё правда если вдруг будет время добавлю свой > отчёт (полный).
К сожалению у меня масса других задач по работе, а полный тщательный анализ апплетов - дело долгое, хотя и интересное. Поэтому для начала ограничился просмотром registr.cab
> Хотел бы отметить ещё один факт : система по сути открытая > т.к. клиентская часть (включая шифрование) вся написана на > Java и JS.
Java-апплеты частично обфусцированы, хотя восстанавливать логику работы достаточно просто.
Истинные исходники с комментариями были бы куда полезнее для анализа.
> Хотя исходных кодов апплета нигде не лежит это ничего не > меняет т.к. нет защиты от интеллектуальной декомпиляции.
При хорошей обфускации во-первых сделать корерктную декомпиляцию тем же JAD'ом не получится, а во-вторых легче застрелиться, чем разобраться в получившихся "исходниках".
> Собственно большинство ошибок и замечаний было найдено > простым просмотром открытых текстов.
Наученный горьким опытом с ДСЧ, первым делом полез смотреть как устроен биологический ДСЧ в registr.cab
Код биологического ДСЧ вызвал разочарование. Слабость, ИМХО, пусть и теоретическая, но присутствует.
void this_mouseMoved(MouseEvent mouseevent)
{
if(_$7023 >= 511)
{
removeMouseMotionListener(l);
_$7412();
return;
} else
{
int i = mouseevent.getX();
int j = mouseevent.getY();
$7013[7023++] = (byte)(int)((long)(i ^ ~j) * System.currentTimeMillis());
setBackground(new Color(_$7023 / 2, _$7023 / 2, _$7023 / 2));
repaint();
return;
}
}
Вот часть результата работы данного датчика на P-III 733MHz, i815E, MS IntelliMouse PS/2, Win2000 Prof. Закономерности в работе прослеживаются отчетливо.
X Y T (Time milisec) dX dY dT Byte
115 121 1022652098851 -6 -1 30 7f
95 121 1022652098871 -20 0 20 9f
69 122 1022652098901 -26 1 30 c0
65 124 1022652098921 -4 2 20 92
65 125 1022652098951 0 1 30 d5
65 126 1022652098971 0 1 20 40
97 126 1022652099001 32 0 30 e0
155 126 1022652099021 58 0 20 d2
187 126 1022652099051 32 0 30 3e
188 126 1022652099071 1 0 20 c3
168 126 1022652099101 -20 0 30 a5
118 126 1022652099121 -50 0 20 47
78 126 1022652099151 -40 0 30 e1
75 126 1022652099171 -3 0 20 1e
89 126 1022652099221 14 0 50 b8
119 125 1022652099241 30 -1 20 bd
145 121 1022652099271 26 -4 30 e1
148 119 1022652099291 3 -2 20 f4
145 116 1022652099321 -3 -3 30 4a
107 94 1022652099341 -38 -22 20 42
Я бы рекомендовал добавить как минимум отдельный поток со счетчиком i = i+1, запускаемым в момент начала генерации Seed'а, и снимать со счетчика показания в моемнт возникнования события, вызванного движением мышки. За 10 мс прирастание такого счетчика происходит где-то на 50..200 тыс. (в зависимости от CPU). Последние две цифры имею хорошее вероятностное распределение. После окончания генерации Seed'а надо не забыть убить поток со счетчиком :-)
С уважением, Репан Димитрий
Компания "БИФИТ"
|
|
|