1

Тема: АНК: Менеджер паролей Steam

Доброго времени суток. Посколько Стим не поддерживает ввод пароля Ctrl C Ctrl V, я использовал небольшой скрипт, по аналогии с менеджером паролей в опере:

; ========================Настройки аккаунтов======================
; Аккаунт 1
ACC1 = имя аккаунта
PASS1 = пароль аккаунта

;===================================================================

^Enter::
WinWaitActive, Вход в Steam, , 1 ; ожидание окна авторизации    
if ErrorLevel
{
    Send {Ctrldown}{Enter}{Ctrlup} ; если окно не найдено, отправить Ctrl Enter
    return
}
else
    MouseClick, left,  127,  99 ; выбор поля
          Send,{CTRLDOWN}{vk41}{CTRLUP} ; выделить Ctrl A
            Send,{Del} ; очистка, если не пусто
               SendInput, %ACC1%  ; вставить логин
;
    MouseClick, left,  135,  132 ; выбор поля
          Send,{CTRLDOWN}{vk41}{CTRLUP} ; выделить Ctrl A
            Send,{Del} ; очистка, если не пусто
               SendInput, %PASS1% ; вставить пароль
    MouseClick, left,  153,  196 ; нажать ок    
return

И всё прекрасно работало, но теперь у меня ещё один акк, и добавилась ещё одна пременная. Теперь есть несколько вопросов: 1. Как сделать чтобы при нажатии Ctrl Enter появлялось окно с выбором аккаунта?
2. Можно ли как-нибудь зашифровать пароли, все в открытом виде лежат?
3. Как добавлять аккаунты в переменные посредством выпадающего меню в трее?

2

Re: АНК: Менеджер паролей Steam

1. Можно. Создание окна. Для выбора вариантов из списка обычно используются DropDownList, ComboBox или ListBox.
Пример:

; создаём изначально скрытое окно,
; которое будет появляться при нажатии Ctrl + Enter

   Gui, Add, DDL, vDDL w80, 1 аккаунт||2 аккаунт|3 аккаунт
   Gui, Add, Button,, OK
   Return

ButtonOK:
   Gui, Submit      ; текст из выбранного пункта сохраняется в переменную DDL и окно скрывается
   MsgBox, % DDL
   Return
   
^Enter::Gui, Show

2. Можно. При шифровании символы заменяются другими по определённому алгоритму. Придумываешь алгоритм, и шифруешь текст. Пример.
3. Конкретизируй, как ты себе это представляешь.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: АНК: Менеджер паролей Steam

Только не могу понять, как мне в одну переменную

% DDL

записать два значения, логин и пароль.
У меня вот что получилось

; ========================Настройки аккаунтов======================

; Аккаунт 1
ACC1 = steamacc1
PASS1 = 1234

; Аккаунт 2
ACC2 = steamacc2
PASS2 = 12345

; Аккаунт 3
ACC3 = steamacc3
PASS3 = 123456

;===================================================================

; создаём изначально скрытое окно,
; которое будет появляться при нажатии Ctrl + Enter

   Gui, Add, DDL, vDDL w80, steamacc1||steamacc2|steamacc3
   Gui, Add, Button,, OK
   Return

ButtonOK:
   Gui, Submit      ; текст из выбранного пункта сохраняется в переменную DDL и окно скрывается
  ; MsgBox, % DDL
WinWaitActive, Вход в Steam, , 1 ; ожидание окна авторизации    
if ErrorLevel
{
    Send {Ctrldown}{Enter}{Ctrlup} ; если окно не найдено, отправить Ctrl Enter
    return
}
else
    MouseClick, left,  127,  99 ; выбор поля
          Send,{CTRLDOWN}{vk41}{CTRLUP} ; выделить Ctrl A
            Send,{Del} ; очистка, если не пусто
               SendInput, % DDL  ; вставить логин
    MouseClick, left,  135,  132 ; выбор поля
          Send,{CTRLDOWN}{vk41}{CTRLUP} ; выделить Ctrl A
            Send,{Del} ; очистка, если не пусто
               SendInput, %PASS1% ; вставить пароль
    MouseClick, left,  153,  196 ; нажать ок    
return
   Return
   
^Enter::Gui, Show

Но ведь переменная содерижт только логин, как записать пароль туда, и нужны ли вобще эти

; Аккаунт 1
ACC1 = steamacc1
PASS1 = 1234

; Аккаунт 2
ACC2 = steamacc2
PASS2 = 12345

; Аккаунт 3
ACC3 = steamacc3
PASS3 = 123456

переменные или надо по другому записать?

4

Re: АНК: Менеджер паролей Steam

Опция Altsubmit позволяет записать в переменную DDL номер выбранного пункта вместо его имени.
Код обрезан для примера.
Далее используются переменные %ACC% и %PASS%

; ========================Настройки аккаунтов======================

; Аккаунт 1
ACC1 = steamacc1
PASS1 = 1234

; Аккаунт 2
ACC2 = steamacc2
PASS2 = 12345

; Аккаунт 3
ACC3 = steamacc3
PASS3 = 123456

;===================================================================

; создаём изначально скрытое окно,
; которое будет появляться при нажатии Ctrl + Enter

   Gui, Add, DDL, vDDL w80 AltSubmit, steamacc1||steamacc2|steamacc3
   Gui, Add, Button,, OK
   Gui, show
   Return

ButtonOK:
   Gui, Submit      ; текст из выбранного пункта сохраняется в переменную DDL и окно скрывается
   ACC := ACC%DDL%
   PASS := PASS%DDL%
  MsgBox, %ACC% `n %PASS%

5 (изменено: BgoN, 2011-06-02 19:39:17)

Re: АНК: Менеджер паролей Steam

Вот, посмотрите пожалуйста, что у меня получилось:

Key1 = AutoHotkey forever!
Key2 = Хрен поймёшь, что тут написано.
Key3 = 1234567890
;====================Пароли======================
Shifr = шифрованный пароль
Shifr2 = шифрованный пароль2
Shifr3 = шифрованный пароль3


Text := Cipher(Shifr, Key3, Key2, Key1) ; Дешифруем, ключи в обратном порядке.
Text2 := Cipher(Shifr2, Key3, Key2, Key1) ; Дешифруем, ключи в обратном порядке.
Text3 := Cipher(Shifr3, Key3, Key2, Key1) ; Дешифруем, ключи в обратном порядке.

; ========================Настройки аккаунтов======================

; Аккаунт 1
ACC1 = steamacc1
PASS1 = %Text%

; Аккаунт 2
ACC2 = steamacc2
PASS2 = %Text2%

; Аккаунт 3
ACC3 = steamacc3
PASS3 = %Text3%

;===================================================================

; создаём изначально скрытое окно,
; которое будет появляться при нажатии Ctrl + Enter

   Gui, Add, DDL, vDDL w80 AltSubmit, steamacc1||steamacc2|steamacc3
   Gui, Add, Button,, OK
   Gui, show
   Return

ButtonOK:
   Gui, Submit      ; текст из выбранного пункта сохраняется в переменную DDL и окно скрывается
   ACC := ACC%DDL%
   PASS := PASS%DDL%
; MsgBox, %ACC% `n %PASS%
WinWaitActive, Вход в Steam, , 1 ; ожидание окна авторизации    
if ErrorLevel
{
    Send {Ctrldown}{Enter}{Ctrlup} ; если окно не найдено, отправить Ctrl Enter
    return
}
else
    MouseClick, left,  127,  99 ; выбор поля
          Send,{CTRLDOWN}{vk41}{CTRLUP} ; выделить Ctrl A
            Send,{Del} ; очистка, если не пусто
               SendInput, %ACC%  ; вставить логин
    MouseClick, left,  135,  132 ; выбор поля
          Send,{CTRLDOWN}{vk41}{CTRLUP} ; выделить Ctrl A
            Send,{Del} ; очистка, если не пусто
               SendInput, %PASS% ; вставить пароль
    MouseClick, left,  153,  196 ; нажать ок    
return
   Return
   
^Enter::Gui, Show



; =============== Функция шифровки/дешифровки ====================

Cipher(Src, Key1, Key2 = 0, Key3 = 0)  ; Два последних ключа необязательны.
{
  Loop, 3
  {
    If not Key%A_Index%
      Break
    StringSplit, Keys, Key%A_Index%  ; Разбиваем фразу на отдельные ключи.
    Dest =
    Loop, Parse, Src  ; Перебор символов текста.
    {
      Index := Mod(A_Index, Keys0) + 1  ; Чтобы Index не вышел за пределы
                                        ; числа символов в ключевой фразе.
      Key := Asc(Keys%Index%)   ; Очередной ключ.
      Code := Asc(A_LoopField)  ; Код очередного символа текста.
      Dest .= Chr(Code = Key ? Code : Code ^ Key) ; Шифруем и добавляем.
    }
    Src := Dest
  }
  Return Dest
}

Этот вариант работает, но стартует не от горячих клавиш, а сразу же при запуске? И вопрос, нужно ли хранить ключи

Key1 = AutoHotkey forever!
Key2 = Хрен поймёшь, что тут написано.
Key3 = 1234567890

в теле скрипта? Безопасно ли это?

6

Re: АНК: Менеджер паролей Steam

Закомментируй строку

Gui, show

перед первым

return

Хранить пароли вообще небезопасно.

7 (изменено: BgoN, 2011-03-10 01:20:58)

Re: АНК: Менеджер паролей Steam

InFlames пишет:

Закомментируй строку

Сделал, только теперь строка

WinWaitActive, Вход в Steam, , 1 ; ожидание окна авторизации

Игнорируется и скрипт не ждёт окна стим, работает везде.

InFlames пишет:

Хранить пароли вообще небезопасно.

Просто какой тогда смысл в шифровании, если ключи на виду?

8

Re: АНК: Менеджер паролей Steam

А зачем хранить ключи в теле скрипта? Они вводятся через диалоговое окно перед расшифровкой.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: АНК: Менеджер паролей Steam

Скрипт будет ждать окно стима после нажатия на кнопку ОК. Всё так же, как и в первом примере.

10

Re: АНК: Менеджер паролей Steam

Поскольку скрипт стал обрастать совершенно не понятными мне значениями, остановился на таком способе:

#NoEnv
#SingleInstance force

; Аккаунт 1
ACC1 = 
PASS1 = 

; Аккаунт 2
ACC2 = 
PASS2 = 

^1::
WinWaitActive, Вход в Steam, , 1 ; ожидание окна авторизации
if ErrorLevel
{
    return
}
else
MouseClick, left,  127,  99 ;выбор первого поля
 Send, {CTRLDOWN}{vk41}{CTRLUP} ;очистка поля, если не пусто
 Send,{Del}  
 SendInput, %ACC1%
MouseClick, left,  135,  132
 Send, {CTRLDOWN}{vk41}{CTRLUP} ;очистка поля, если не пусто
 Send,{Del}  
SendInput, %PASS1% ;
MouseClick, left,  153,  196
return

^2::
WinWaitActive, Вход в Steam, , 1 ; ожидание окна авторизации
if ErrorLevel
{
    return
}
else
MouseClick, left,  127,  99
Send, {CTRLDOWN}{vk41}{CTRLUP}
Send,{Del}  
SendInput, %ACC2%
MouseClick, left,  135,  132
Send, {CTRLDOWN}{vk41}{CTRLUP}
Send,{Del}  
SendInput, %PASS2% ;
MouseClick, left,  153,  196
return

И упаковал в exe.

11

Re: АНК: Менеджер паролей Steam

BgoN, какие горячие клавиши? (в AutoHotkey еще плаваю). Можно ещё скрин, как пример.

12 (изменено: BgoN, 2011-03-31 12:22:14)

Re: АНК: Менеджер паролей Steam

hrnvam пишет:

какие горячие клавиши?

Ctrl+1, Ctrl+2

Можно ещё скрин

Скрин чего?

13

Re: АНК: Менеджер паролей Steam

спс, скрин ненужен

14 (изменено: BgoN, 2011-06-02 17:44:03)

Re: АНК: Менеджер паролей Steam

Пытаюсь довести скрипт до ума и вот что получилось:

#SingleInstance force

Key1 = ключевое слово
Login1 = логин 1
Shifr1 = шифрованный пароль 1
Text1 := Cipher(Shifr1, Key1) 
Login2 = логин 2
Shifr2 = шифрованный пароль 2
Text2 := Cipher(Shifr2, Key1) 

^1::
WinWaitActive, Вход в Steam, , 1 
     if ErrorLevel
         {
             Return
         }
     else 
         MouseClick, left,  127,  99 
             Send,{CTRLDOWN}{vk41}{CTRLUP} 
             Send,{Del}           
             SendInput, %Login1%
         MouseClick, left,  135,  132
             Send, {CTRLDOWN}{vk41}{CTRLUP} 
             Send,{Del}  
             SendInput, %Text1%
         MouseClick, left,  153,  196
Return

^2::
WinWaitActive, Вход в Steam, , 1 
     if ErrorLevel
         {
             Return
         }
     else 
         MouseClick, left,  127,  99 
             Send,{CTRLDOWN}{vk41}{CTRLUP} 
             Send,{Del}           
             SendInput, %Login2%
         MouseClick, left,  135,  132
             Send, {CTRLDOWN}{vk41}{CTRLUP} 
             Send,{Del}  
             SendInput, %Text2%
         MouseClick, left,  153,  196
Return

Cipher(Src, Key1)
{
  Loop, 3
  {
    If not Key%A_Index%
      Break
    StringSplit, Keys, Key%A_Index%  
    Dest =
    Loop, Parse, Src  
    {
      Index := Mod(A_Index, Keys0) + 1 
                                        
      Key := Asc(Keys%Index%)   
      Code := Asc(A_LoopField)  
      Dest .= Chr(Code = Key ? Code : Code ^ Key) 
    }
    Src := Dest
  }
  Return Dest
}

Пожалуйста подскажите, как сделать вот эту часть

^1::
WinWaitActive, Вход в Steam, , 1 
     if ErrorLevel
         {
             Return
         }
     else 
         MouseClick, left,  127,  99 
             Send,{CTRLDOWN}{vk41}{CTRLUP} 
             Send,{Del}           
             SendInput, %Login1%
         MouseClick, left,  135,  132
             Send, {CTRLDOWN}{vk41}{CTRLUP} 
             Send,{Del}  
             SendInput, %Text1%
         MouseClick, left,  153,  196
Return

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

15 (изменено: BgoN, 2011-06-05 13:20:05)

Re: АНК: Менеджер паролей Steam

Этот вариант с GUI

#SingleInstance force
Del = {CTRLDOWN}{vk41}{CTRLUP}{Del}

; Аккаунт 1
ACC1 = steamacc1
PASS1 = 12345

; Аккаунт 2
ACC2 = steamacc2
PASS2 = 12345

; Аккаунт 3
ACC3 = steamacc3
PASS3 = 12345


   Gui, Add, DDL, vDDL w80 AltSubmit, steamacc1||steamacc2|steamacc3
   Gui, Add, Button,, OK
   Gui, show
   Return

ButtonOK:
   Gui, Submit      ; текст из выбранного пункта сохраняется в переменную DDL и окно скрывается
   ACC := ACC%DDL%
   PASS := PASS%DDL%


WinWaitActive, Вход в Steam, , 1 ; ожидание окна авторизации    
     if ErrorLevel
         {
             Send {Ctrldown}{Enter}{Ctrlup} ; если окно не найдено, отправить Ctrl Enter
             return
         }
     else
         MouseClick, left,  127,  99 
             Send,%Del%           
             SendInput, %ACC%
         MouseClick, left,  135,  132
             Send,%Del%
             SendInput, %PASS%
        ;MouseClick, left,  153,  196 ; нажатие на клавишу ок
   
^Enter::
WinWaitActive, Вход в Steam, , 1 ; ожидание окна авторизации  
if ErrorLevel
{
    Send {Ctrldown}{Enter}{Ctrlup} ; если окно не найдено, отправить Ctrl Enter
    return
}
else
Gui, Show

мне пришлось бросить, потому как окно было ужасным, и не информативным, и решил сделать просто по горячим кнопкам, но там тоже не все гладко с повторением одного и того же куска скрипта. Но совсем не давно на этом форуме нашёл программу при помощи которой можно это самое окно нарисовать. Я нарисовал

Gui, Add, Button, x172 y110 w100 h30 , ОК
Gui, Add, Button, x272 y110 w100 h30 , Отмена
Gui, Add, ListBox, x12 y20 w260 h90 
Gui, Add, Button, x272 y20 w100 h30 , Удалить
Gui, Show, x283 y268 h152 w379, Управление паролями
Return

Вот только как бы я не бился, не могу совместить этот кусок с

   Gui, Add, DDL, vDDL w80 AltSubmit, steamacc1||steamacc2|steamacc3
   Gui, Add, Button,, OK
   Gui, show
   Return

ButtonOK:
   Gui, Submit      ; текст из выбранного пункта сохраняется в переменную DDL и окно скрывается
   ACC := ACC%DDL%
   PASS := PASS%DDL%

Пожалуйста помогите.

16

Re: АНК: Менеджер паролей Steam

Вот почти получилось, только куда размеры вставлять?

Gui, Add, ListBox, DDL vDDL w80 AltSubmit, steamacc1||steamacc2|steamacc3  
   Gui, Add, Button,, OK
   Gui, show
   Return

ButtonOK:
   Gui, Submit      ; текст из выбранного пункта сохраняется в переменную DDL и окно скрывается
   ACC := ACC%DDL%
   PASS := PASS%DDL%

17 (изменено: BgoN, 2011-06-07 23:07:19)

Re: АНК: Менеджер паролей Steam

Ура! Сделал сам.

#SingleInstance force
CtrlEnter = {Ctrldown}{Enter}{Ctrlup}
Del = {CTRLDOWN}{vk41}{CTRLUP}{Del}

; Аккаунты 
ACC1 = First
PAS1 = 12345
ACC2 = Second
PAS2 = 12345
ACC3 = Third
PAS3 = 12345

; Окно Gui
     Gui, Add, ListBox, DDL vDDL w80 AltSubmit x12 y20 w260 h90, Первый|Второй|Третий
     Gui, Add, Button, x172 y110 w100 h30, OK 
     Gui, Add, Button, x272 y110 w100 h30, Отмена
     
ButtonОтмена:
     Gui, Cancel
Return 

ButtonOK:
     Gui, Submit      ; Текст из выбранного пункта сохраняется в переменную DDL и окно скрывается
     ACC := ACC%DDL%
     PAS := PAS%DDL%
  Sleep 100 
     MouseClick, left,  127,  99 
         Send % Del          
         SendInput % ACC
     MouseClick, left,  135,  132
         Send % Del
         SendInput % PAS
    ;MouseClick, left,  153,  196 ; Автологин
Return

^Enter::
  WinWaitActive, Вход в Steam, , 0 ; Ожидание окна авторизации  
     if ErrorLevel ; Если окно не найдено
        {
           Send % CtrlEnter 
           Return
        }
     else
Gui, Show, x283 y268 h152 w379, Управление паролями
Return

http://imglink.ru/pictures/07-06-11/2df9cdf08075a138b98e4d757c24639c.jpg