1 (изменено: Delros, 2021-01-14 20:51:27)

Тема: AutoHotKey: нужен код для перебора четырехзначных чисел

Нужен код для перебора четырехзначных чисел. В игре - это пин-код от сундука, вводить его можно бесконечно, пин четырехзначный. После ввода пароля окно ввода закрывается и нужно заново нажать "E" чтобы открыть окно ввода. Было бы неплохо, чтобы он еще и показал цифру на котором остановился, но думаю такого не возможно. Помогите пожалуйста.

2

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Всё возможно и перебор кода и отображение. Главное что бы игра принимала эмуляцию, что посылает скрипт.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Вот примерно такой код подбора пароля с настройками:

#SingleInstance Force
#NoEnv

; Настройки:

Key = F2	; Клавиша - Старт / Пауза.
I := 1		; С какой цифры начать (1 = 0001).
Wait := 200	; Время задержки после нажатия 'E'.
Wait2 := 500	; Время задержки после ввода пароля.

; Конец настроек.

Hotkey, % Key, Start, On, UseErrorLevel

#If Start
F2:: Start := 0		; Выключить подбор пароля.
#If

#If !Start
Start:	; [Включить / Продолжить] / Остановить подбор пароля:
Start := 1

While % Start
{
 SendInput, E
 Sleep, % Wait
 S := SubStr("000" . I, -3)

 SendInput, % S
 ToolTip, Пароль: %S%,0,0
 Sleep, % Wait2
 I++
}
Return
#If

~Esc:: ToolTip	; Убрать подсказку.
Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

4 (изменено: serzh82saratov, 2021-01-14 22:01:26)

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

__Михаил__ пишет:

#If !Start

А не подскажете, как это работает?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

5

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

serzh82saratov

Думаю вопрос намёк - откуда стырил?
Всё по феншую - у вас.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

6

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Delros

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

#SingleInstance Force
#NoEnv
SetBatchLines -1

; Настройки:

Key = F2	; Клавиша - Старт / Пауза.
I := 1		; С какой цифры начать (1 = 0001).
Wait := 200	; Время задержки после нажатия 'E'.
Wait2 := 500	; Время задержки после ввода пароля.
Rand := 1	; 1: Включить случайный 4-х значный ввод пароля.

; Конец настроек.

Hotkey, % Key, Start, On, UseErrorLevel

Keys := ""

#If Start
F2:: Start := 0		; Выключить подбор пароля.

#If

#If !Start

Start:	; [Включить / Продолжить] / Остановить подбор пароля:
Start := 1

While % Start
{
 If Rand	; Если нужно случайно:
 {
  Random, I ,1, 9999
  If InStr(Keys , I)	; Запрет повтора.
   Continue
 }
 SendInput, E
 Sleep, % Wait

 Keys .= I . ","
 
 S := SubStr("000" . I, -3)

 SendInput, % S
 ToolTip, Пароль: %S%,0,0
 Sleep, % Wait2
 I++
}
Return

#If


~Esc:: ToolTip	; Убрать подсказку.
Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

7

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

__Михаил__ пишет:

Думаю вопрос намёк - откуда стырил?

Нет.
Что это выполняет в вашем коде?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

8

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

serzh82saratov

Проверка переменной 'Start', если вернёт 'Ложь' (а при старте скрипта так оно и будет) - нажатие на горячую клавишу 'F2' запустит подбор пароля.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

9

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

А где там F2 которая подчиняется этой директиве?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

10

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

serzh82saratov

Ага, косяк, не заметил когда удалял лишние строки из тест-скрипта.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

11

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Версия с рабочей сменой клавиши. Теперь должно работать корректно.

#SingleInstance Force
#NoEnv
SetBatchLines -1

; Настройки:

Key = F2	; Клавиша - Старт / Пауза.
I := 1		; С какой цифры начать (1 = 0001).
Wait := 200	; Время задержки после нажатия 'E'.
Wait2 := 500	; Время задержки после ввода пароля.
Rand := 1	; 1: Включить случайный 4-х значный ввод пароля.

; Конец настроек.

Hotkey, % Key, Start, On, UseErrorLevel
Return


Stop:	; Выключить подбор пароля.
Start := (Start > 1 ? 0 : 2)
KeyWait, %A_ThisHotkey%, U
Hotkey, % Key, Start, On, UseErrorLevel
Return


Start:	; [Включить / Продолжить] / Остановить подбор пароля:
Start := 1

Hotkey, % Key, Off
Hotkey, % Key " Up", Stop, On, UseErrorLevel

KeyWait, %A_ThisHotkey%, U

While % Start
{
 If Rand	; Если нужно случайно:
 {
  Random,I,1,9999
  If InStr(Keys,I)	; Запрет повтора.
   Continue
 }
 SendInput, E
 Sleep, % Wait

 Keys .= I ","
 S := SubStr("000" I, -3)

 SendInput, % S
 ToolTip, Пароль: %S%,0,0
 Sleep, % Wait2
 I++
}
Return


~Esc:: ToolTip	; Убрать подсказку.
Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

12

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Запрет повтора

Тоже косяк.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

13

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

serzh82saratov

Единственный косяк в таком виде, что я обнаружил - бесконечный цикл когда будет добавлены все 9999 вариантов (или сколько выйдет вместе с нулями?). Но не думаю что до этого дойдёт. По хорошему бы определять переполнение, но уже лень.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

14

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Это да. Но тут сама проверка повтора не работает.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

15

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Не заметил ошибок на коротких пределах (9). При 99 доходит до 91 максимально и дальше рандом не хочет идти.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

16 (изменено: serzh82saratov, 2021-01-15 02:11:59)

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

__Михаил__ пишет:

дальше рандом не хочет идти.

А именно из за неправильной проверки повтора.


Rand := 1
Start := 1
min := 0
max := 99
Count := min

While Start && (Count < max + 1)
{
	If Rand	 
	{
		Random, S, min, max
		S := Format("{:04}", S)  
		If InStr(Keys, S)
			Continue
	}
	Else 
		S := Format("{:04}", min++)
	Keys .= S " " 
	ToolTip, % "Пароль: " (S)  "`nПроход: " (Count), 10, 10 
	Count++ 
}
MsgBox % Keys
Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

17

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

serzh82saratov

Всё же не понял где именно ошибка. Цифра (как есть от Random) просто добавлялась в строку 'Keys'. При коротких тестах - всё отлично работало.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

18

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Ошибка элементарная: если добавлена например 12, то 1 и 2 будут считаться повтором.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

19

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

serzh82saratov

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

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

20

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Да, тут была где то тема рандом без повтора.
Вариант который здесь, я бы сказал худший из возможных.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

21 (изменено: __Михаил__, 2021-01-17 14:32:27)

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Последняя правка, вроде всё верно теперь.
Переменная 'I ' при 0 - случайный ввод пароля, иначе с какого номера начать.

#SingleInstance Force
#NoEnv
SetBatchLines -1

; Настройки:

Key = F2	; Клавиша - Старт / Пауза.
I := 0		; С какой цифры начать (1 = 0001). Если 0 - случайный ввод пароля.
Wait := 200	; Время задержки после нажатия 'E'.
Wait2 := 1000	; Время задержки после ввода пароля.

; Конец настроек.

Hotkey, % Key, Start, On, UseErrorLevel

If (I = 0)	; Если нужно случайно:
{
 Loop, 9999
  Str .= Format("{:04}", A_Index) "|"	; Создать строку верного содержания (0001-9999).
 Sort, Str, Random D|			; Отсортировать случайно.

 List := Array()	; Создать массив.
 Loop, Parse, Str, |
  List[A_Index]	:= A_LoopField	; Добавить в него строки.
}
Return



Stop:	; Выключить подбор пароля:
Start := (Start > 1 ? 0 : 2)
KeyWait, %A_ThisHotkey%, U
Hotkey, % Key, Start, On, UseErrorLevel
Return


Start:	; [Включить / Продолжить] подбор пароля:
Start := 1

Hotkey, % Key, Off
Hotkey, % Key " Up", Stop, On, UseErrorLevel

KeyWait, %A_ThisHotkey%, U

While % Start && (Abs(I) < 10000)
{
 If (I < 1)	; Если нужно случайно:
 {
  SendInput, E
  Sleep, % Wait

  S := List[Abs(I-1)]

  SendInput, % S
  ToolTip, Пароль: %S%,0,0
  Sleep, % Wait2
  I--
 }
 Else	; Обычный подбор:
 {
  SendInput, E
  Sleep, % Wait

  S := Format("{:04}", I)

  SendInput, % S
  ToolTip, Пароль: %S%,0,0
  Sleep, % Wait2
  I++
 }
}
ToolTip, % "Завершено: " Abs(I),0,0
Return


~Esc:: ToolTip	; Убрать подсказку.
Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

22

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

__Михаил__
Можешь сделать следующее: идет подбор чисел от 0000 до 9999, после каждого введенного числа, скрипт нажимает на кнопку (Координаты назначу сам). И так бесконечно. Пример: вводится число 0001, нажимается кнопка, вводится число 0002 нажимается кнопка. И так до выключения скрипта

23

Re: AutoHotKey: нужен код для перебора четырехзначных чисел

Основной код есть, добавить свои наработки очень легко.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101