Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Безопасность, Шифрование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2006, 11:27   #1
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию работа с "чужими" окнами

Перенесено из старого форума!

Gambler
Доброго времени суток! Недавно я встретил прогу, регистроция которой представляет из себя простой пароль (4 блока по 4 символа) и решил сломать его "в лоб". Но перебирать миллионы вариантов в ручную не хочется. Отсюда вопрос: Как втыкать 4 символа в блок, переходить в другой блок (так переходит по Tab), и по заполнению блоков символами нажимать на Enter.
zetrix вне форума Ответить с цитированием
Старый 29.10.2006, 11:28   #2
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Перенесено из старого форума!

plague
procedure ClickKey(key:word);
begin
keybd_event(key,0,0,0);
keybd_event(key,0,KEYEVENTF_KEYUP,0 );
end;
// Эмуляция нажатия кнопки
key=9 - это Tab
key=ord('a') - это символ 'a'
и т.д.

plague
Var H:HWND;
h:=findwindow(nil,'Password Entry');
// ищет окно с Caption = 'Password Entry'
setforegroundwindow(h);
// делает окно активным
ну дальше
ClickKey(...) какие тебе нужно.

rpy3uH
там у тебя 36 в 16-ой степени вариантов ты примерно 100 лет будешь их перебирать.

Gambler
Ну и кто говорил о каких-то 100 годах? Мой комп с поцем 2.8 Ghz справился с паролем за 25 мин. Я конечно не говорю что у меня был сложнейший пароль, он вообще оказался цифровым, но 16-тизначное число за 25 минут....и это еще на неоптимизированном алгоритме. По – моему неплохо.

plague
function EnumerateWindows(h: HWND; lParam: LPARAM): BOOL; stdcall;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear;
EnumWindows(@EnumerateWindows,0);
end;

function EnumerateWindows(h: HWND; lParam: LPARAM): BOOL;
var
txt:array[0..255] of char;
begin
GetWindowText(h, txt, 255);
Form1.ListBox1.Items.Add(Format('%d <-> %s',[h, txt]));
Result:=TRUE;
end;

там выведится весь список окон вержнего уровня
и фунцией setforegroundwindow(h);
можно по значению обратится к любому
zetrix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49
На чем пишутся стратегии типа "Казаков" и "Эпохи империи" Tayfun Свободное общение 3 26.06.2007 20:27