Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Как програмно залогинится в XP ?
Посл.ответ Сообщение

Ранг: 7.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2006 11:13
· Личное сообщение · #1

Как програмно залогинится ?

ситуция такая:

На экране "нажмите Alt+Ct.."
Необходимо войти с заданным логином-паролем по команде из сети
предпологается написать для этого сужбу слушаящую некоторый порт на предмет команды

с целью быстрого запуска некоторых прог (типа флеша) а 30 компах в сети

Система Windows XP

Главный вопрос:
Как програмно залогинится ?
не "можно ли?" а "как?"



Ранг: 71.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 27 марта 2006 11:18
· Личное сообщение · #2

xf1700

На делфимастере статейка была.
Там подробненько описываеться.

www.delphimaster.ru



Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 27 марта 2006 14:02
· Личное сообщение · #3

У меня была другая проблема: как под XP программно выключиться . Я решил её эмулируя нажатие клавиш из обычной программы. В твоём случае тоже можно эмулировать нажатия клавиш, но только через службу. В аттаче лежит статья, как пользоваться API-функциями эмулирующими нажатие.

773a_Article.zip.zip




Ранг: 116.9 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 27 марта 2006 15:34
· Личное сообщение · #4

ищи описание msgina.dll и будет тебе счастие...

-----
Nothing just happens. You choose it to happen.




Ранг: 7.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2006 15:53
· Личное сообщение · #5

2agentru
можно уточнить название, ключевые слова?

2Vedrus и Viktoro
спасибо, попробуем



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 28 марта 2006 16:31
· Личное сообщение · #6

WlxLoggedOutSAS, WlxLoggedInSAS и т.д. всё это в msgina.dll



Ранг: 71.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 28 марта 2006 20:06
· Личное сообщение · #7

xf1700 пишет:
можно уточнить название, ключевые слова?


По поиску забей: переключение юзеров в ХР.




Ранг: 60.1 (постоянный)
Активность: 0.120
Статус: Участник

Создано: 29 марта 2006 21:05
· Личное сообщение · #8

Чувак! Убери пароль админа на *** и наслаждайся его учётной записью!!!



Ранг: 7.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 марта 2006 14:03 · Поправил: xf1700
· Личное сообщение · #9

Shidla
Чувак! я сам админ
и мне нужно именно то, что я описал выше

Vedrus пишет:
эмулировать нажатия клавиш, но только через службу.

пока что этот метод не действует(
и инфы по нему не нашел, а он был бы лучше всего..



Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 31 марта 2006 14:16 · Поправил: Vedrus
· Личное сообщение · #10

xf1700, в чем проблема? Из сервиса апи эмуляции нажатия клавиш не работают? Пробовал с ними поэксперементировать не из под сервиса, а из под обычной программы?



Ранг: 7.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 марта 2006 14:28
· Личное сообщение · #11

Однако, инфа всплывает:

bugtraq.ru/library/programming/keylogging.html



Ранг: 10.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 31 марта 2006 14:49 · Поправил: rmf
· Личное сообщение · #12

Тебе dll'ку надо создать, которую нужно прописать в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify

Подробнее смотри в MSDN, ну и использовать ф-ции из msgina.dll

Если чё, пиши в icq если не поймешь.



Ранг: 32.4 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 31 марта 2006 15:24
· Личное сообщение · #13

Vedrus пишет:
Из сервиса апи эмуляции нажатия клавиш не работают

Какие еще нажатия клавиш...
Берешь свой сервис и прописываешь username и password в текстовые поля командой SetWindowText а затем посылаешь WM_COMMAND на кнопку OK
Проблема лишь в том что тебе надо прошпионить окна чтобы потом найти их через FindWindow



Ранг: 7.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 марта 2006 22:19
· Личное сообщение · #14

Vedrus пишет:
xf1700, в чем проблема? Из сервиса апи эмуляции нажатия клавиш не работают? Пробовал с ними поэксперементировать не из под сервиса, а из под обычной программы?

Например: программа вызывает keybd_event раз в 2 секунды -
печатает букву А в любых полях ввода, кроме полей логина \ пароля
однако, beep раз в 2 сек слышно в любом случае
сервис, с той же функцией, работает так же.

По видимому, это просто так не прокатит.

rmf пишет:
Тебе dll'ку надо создать, которую нужно прописать в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify

по причине недостаточной прямоты моих рук, это, думаю, может выдать BSOD
в самый интересный момент, а таких моментов у нас предостаточно...



Ранг: 10.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 31 марта 2006 23:22
· Личное сообщение · #15

xf1700, сколько я не эксперементировал - BSOD'a не видел! Надо просто в код dll'ки 3 cтрочки добавить, чтобы всё работало! строчки найди в MSDN по поиску "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify"

Всё подробно описано



Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 01 апреля 2006 04:16 · Поправил: Vedrus
· Личное сообщение · #16

xf1700 пишет:
программа вызывает keybd_event раз в 2 секунды -
печатает букву А в любых полях ввода, кроме полей логина \ пароля

А фокус на поле ввода установлен? Ты пробовал сам нажимать ту последовательность клавиш, которую проге скармливаешь? А то может ты просто не в том окне. Тогда надо x раз имитировать нажатие Tab.



Ранг: 32.4 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 01 апреля 2006 12:28
· Личное сообщение · #17

Зачем эмулировать нажатия клавишь, когда всеми окнами легко можно манипульровать через WM сообщения. Это гораздо надежнее...



Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 01 апреля 2006 12:57
· Личное сообщение · #18

t3stament01 WM_XXX надёжнее, а эмуляция проще (в смысле не требует особых знаний Win32 API). Чем пользоваться каждый волен.



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 02 апреля 2006 10:30
· Личное сообщение · #19

Vedrus
Как их эмулировать?
Я только через WM_XXX знаю.



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 02 апреля 2006 10:34
· Личное сообщение · #20

В состоянии "Нет залогиненого пользователя" Winlogon ожидает прихода SAS (secure attention sequence=защищенная последовательность активации) либо от пользователя, нажавшего CTRL-ALT-DEL, либо от GINA DLL (она может генерировать свои SAS, отличные от стандартных, и оповещать Winlogon при помощи функции WlxSasNotify). В случае возникновения SAS Winlogon вызывает в GINA функцию WlxLoggedOutSAS. GINA, обработав данное событие, может либо перевести Winlogon в состояние "Есть залогиненный пользователь. Станция разблокирована", либо оставить его в текущем состоянии.

При возникновении SAS в состоянии "Есть залогиненный пользователь. Станция разблокирована" Winlogon вызывает функцию WlxLoggedOnSAS, после чего он может быть переведен в состояние "Нет залогиненого пользователя" или в состояние "Есть залогиненный пользователь. Станция заблокирована", либо оставлен в текущем состоянии.
WlxSasNotify



Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 02 апреля 2006 14:49 · Поправил: Vedrus
· Личное сообщение · #21

NullSession, смотри аттач моего первого поста. Там пример. Хотя функции, которые там используются скорее всего всё-равно обращаются к WM_XXX.

Слушай, а ты где нарыл эту инфу? В MSDN конечно я это видел, но может есть что-нибудь на русском. Было бы интересно разобраться. Можешь дать ссылку(и) или приаттачить?



Ранг: 7.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 апреля 2006 15:07
· Личное сообщение · #22

www.rsdn.ru/article/baseserv/extgina.xml



Ранг: 7.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 апреля 2006 15:10
· Личное сообщение · #23

The keybd_event function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt handler calls the keybd_event function.



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 02 апреля 2006 16:32
· Личное сообщение · #24

2 Vedrus
Ссылку запостил xf1700. Вроде бы та самая. Вообще как бы rsdn рулит. Он не так много денег (трафика) жрёт и информацию полезную на русском выдаёт, если только она на нём есть.



Ранг: 7.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 апреля 2006 17:57
· Личное сообщение · #25

xf1700 пишет:
bugtraq.ru/library/programming/keylogging.html


//Подключаемся к оконной станции
hWS = OpenWindowStation("Winsta0", FALSE, GENERIC_ALL);
SetProcessWindowStation(hWS);

//Подключаемся к рабочему столу
hDT = OpenDesktop("Winlogon", 0, FALSE, GENERIC_ALL);
SetThreadDesktop(hDT);


попытка сделать сервис, подобный описаннаму, пока что не удается
getLastError выдает "Ресурс занят"
на шаге SetThreadDesktop(hDT);
(пишем на delphi7)
в чем может быть дело?

И
Сервис, вызывающий Beep раз в 3сек не запускается или не бипАет после перезагрузки пк, но до того как кто либо загогинился..
в чем может быть дело?



Ранг: 7.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 апреля 2006 19:08
· Личное сообщение · #26

Решил сделать по простому, записать значения ключей ниже и вызвать ребут.

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WinLogon
DefaultUserName
DefaultPassword
DefaultDomainName
AutoAdminLogon

Отлично работает)
Но, интересуют другие способы.....



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 19 апреля 2006 14:01
· Личное сообщение · #27

Без переписывания msgina.dll это сложно. Как вариант: внутрь своей dll поместить код, который проверяет, не поступила ли команда по сети, и если поступит, вручную вызвать WlxLoggedOutSAS.
P.s. тебе ведь надо всего лишь быстро запустить прогу - тогда вызывай CreateProcessAsUser, а код внутри службы помещай, она будет порт слушать и ничего извращенского - остановил службу - отключил эту возможность, включил на автозапуск - на тебе удалённое выполнение.
Вот только проблема - а что если пошлют команду не сервера, а с другого компа, можно ведь будет под правами админа юзверям поработать. И это недостаток всех методов.


 eXeL@B —› Программирование —› Как програмно залогинится в XP ?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати