Главная страница
    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.009 c
1-37143
Spook
2002-12-29 12:28
2003.01.13
F1 не нажимается


6-37260
kalishenko stas
2002-11-14 15:03
2003.01.13
Проблема с сокетами


4-37446
AndrewVolkov
2002-11-22 19:01
2003.01.13
Объясните пожалуйста, как можно посмотреть этот массив???


1-37213
jen_bond
2002-12-30 21:41
2003.01.13
Запись информации в ini


14-37344
Сатир
2002-12-21 21:04
2003.01.13
А кто бреет бороду?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский