![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите перевести код! [D5, Win2k]
SVM © (2002-11-21 14:36:00)Есть код на C++, необходимо перевести на DELPHI.
Всем заранее спасибо!
void
DisplayPasswordWin2K
(void)
{
DWORD i, Hash = 0;
UNICODE_STRING EncodedString;
EncodedString.Length =
(USHORT) PasswordLength * sizeof (wchar_t);
EncodedString.MaximumLength =
((USHORT) PasswordLength * sizeof (wchar_t)) + sizeof (wchar_t);
EncodedString.Buffer =
(PWSTR) HeapAlloc
(GetProcessHeap (),
HEAP_ZERO_MEMORY,
EncodedString.MaximumLength);
// This is a brute force technique since the hash-byte
// is not stored as part of the encoded string - :>(.
for (i = 0; i 0x7e)
Viewable = FALSE;
}
else
Viewable = FALSE;
k = DWORD (p);
k++; k++;
p = (PBYTE) k;
}
if (Viewable)
{
printf
("The logon information is: %S/%S/%S.\n",
UserDomain,
UserName,
EncodedString.Buffer);
printf
("The hash byte is: 0x%2.2x.\n",
i);
}
}
HeapFree
(GetProcessHeap (),
0,
EncodedString.Buffer);
} // DisplayPasswordWin2K
apay (2002-11-22 20:05:00) [1]2 SVM
компилишь в .obj любым C-компилятором, который делает OMF, например борландовским bcc32.exe, потом в делфях пишешь
{$L myfile.obj}
procedure DisplayPasswordWin2K; external;
только printf может мешаться, но его можно заменить на апишную wsprintfA (на сях придетсянемного подправить).
но еще лучше подучить C++.
Игорь Шевченко (2002-11-22 12:44:00) [2]paul_shmakov © (22.11.02 12:41)
Спасибо. Осталось под WinXP проверить :-) Там, вроде, много дырок заткнули...
С уважением,
paul_shmakov (2002-11-22 12:41:00) [3]2 Игорь Шевченко:
программа PasswordReminder под w2k прекрасно работает :) т.е. пароль все так же хранится в адресном пространстве winlogon.
единственное, что они поправили - в win2k вместе с паролем не хранится байт, с которым этот пароль проксорен (в nt хранился). но и эта проблема легко решается перебором 256 вариантов (см. код вверху).
Игорь Шевченко (2002-11-22 10:44:00) [4]paul_shmakov © (21.11.02 21:01)
Руссинович про Win2K пишет, может, там оно уже поправлено ? :-)
SVM (2002-11-21 21:15:00) [5]Мда, думается, что мне никто не поможет...
2 apay Никогда с этим не сталкивался, можно поподробнее pliz
paul_shmakov (2002-11-21 21:03:00) [6]кстати, Russell Osterlund является главным инженером BoundChecker в NuMega :) вот и получается, что ближе к ядру, тем меньше случайных людей :)
paul_shmakov (2002-11-21 21:01:00) [7]2 Игорь Шевченко:
конечно, по всем правилам (да и по логике вещей) должен использоваться токен, но когда Russ Osterlund обнаружил, что пароль лежит в открытом виде (почти, он проксорен), то сразу стали искать, а где к нему обращения есть. в результате поиска выяснилось, что он используется при авторизации на удаленных машинах.
вот такие пироги.
см. изначальный пост в bugtraq
http://archives.neohapsis.com/archives/ntbugtraq/1998-1999/msg00178.html
там внизу ссылка - ответ Dave Mills.
raven79 (2002-11-21 19:32:00) [8]можно и так... но я так смотрю врод не сложно и переводить...
apay (2002-11-21 19:28:00) [9]а зачем переводить-то :), компильни в .obj и прилинкуй в дельфях:
{$L myobj.obj}
Игорь Шевченко (2002-11-21 17:06:00) [10]paul_shmakov © (21.11.02 16:48)
А Руссинович пишет, что Token используется...
paul_shmakov (2002-11-21 16:48:00) [11]автор полного кода - Russ Osterlund ( http://www.smidgeonsoft.com/). программа называется PasswordReminder. основана на том факте, что по nt/2k имя пользователя и пароль в открытом виде хранятся в процессе winlogon.exe (при условии использования стандартной gina dll). хранятся они там для осуществления аутентификации на удаленных машинах, хотя по идее для этих целей должен использоваться токен пользователя.
2 SVM:
надежда, что кто-то за вас выполнит тупую работу - это плохо :)
cdadmitriy (2002-11-21 14:58:00) [12]А сначало полный код можно ?
Игорь Шевченко (2002-11-21 14:53:00) [13]А вот хренушки... :-)