-
Автор темы
- #1
Всем привет! В этом посте я научу Вас привязывать свой софт к железу пользователя.
Обновлено (05.10.2021)
- Исправил серьезную ошибку с нахождением операционки на других системных дисках помимо диска C:\
Первый способ:
1) Будем доставать серийник диска на котором установлена Windows.
2) Регистрируемся на GitHub (no ad) и создаем свой GitHub Pages (no ad).
3) Вносим серийник человека в свою базу.
4) После запуска скрипта, скачивается страница вашей базы человеку, после чего ahk ищет совместимость серийника.
5) Если нашелся подходящий серийник, скрипт пропускает в главный функционал, если нет, требует авторизоваться.
Результат A_WinDir выглядит примерно так - C:\WINDOWS
Для того чтобы не возникало проблем с использование буквой диска, нужно убрать лишние буквы, в нашем случае это - WINDOWS.
По этому я использовал функцию RegExMatch, а вот результатом выступает Disk_7, Disk_8, Disk_10 в которых хранится диск с Windows в моем случае C:\
А вот сама DriveGet достает серийник из Disk1 (обратите внимание не Disk_7, а Disk_71), результат хранится в HWID (переменная).
URLDownloadToFile качает страницу с сайта в папку Temp хранящуюся на диске C (в моем случае), после чего скрипт читает все содержимое, а по завершению удаляет файл. Учтите, что ссылку на вашу базу нужно вставлять вместо - ВАША БАЗА.
Порядок действий:
1)
2)
3) Ссылку копируем обязательно в таком формате, как показано на скрине!
4) Вставляем в код, готово!
После того как скрипт прочёл содержимое - HWID, происходит сравнение текущего серийника пользователя с существующей базой. Если есть сходство, программа пропускает человека (срабатывает функция Goto, он в свою очередь пропускает строки связанные с меню авторизации, скрипт стартует со строчки true:)
Весь код первого способа:
Второй способ:
Этот способ работает по принципу парсинга страницы, идея - Bunnyscript ( https://yougame.biz/members/337981/ ).
1) Будем доставать серийник диска на котором установлена Windows.
2) Регистрируемся на GitHub (no ad) и создаем свой GitHub Pages (no ad).
3) Вносим серийник человека в свою базу.
4) После запуска скрипта, парсится страница вашей базы, после чего ahk ищет совместимость серийника.
5) Если нашелся подходящий серийник, скрипт пропускает в главный функционал, если нет, требует авторизоваться.
Код этого способа на 90% схож с предыдущим, по этому в детальном объяснении не нуждается.
Весь код второго способа:
Ребят, надеюсь Вам пригодились мои знания. Напоминаю, что я не являюсь программистом, занимаюсь этим делом ради удовольствия. В даном посте я использовал свой метод получения серийного номера диска (кроме GUI (меню) ), я считаю что это довольно простой способ и в тоже время надежный, ибо он состоит из 10 символов, а не из 20. Хочу поблагодарить Bunnyscript за решенную проблему с парсингом страницы. Скачивать файл, а потом удалять не совсем правильно. По этому рекомендую использовать второй способ! Пишите как Вам, делитесь своими знаниями в комментариях, давайте поможем друг другу ибо инноваторов становится всё меньше. Если Вас ещё что-то интересует (не по теме) пишите, попробую помочь чем смогу в следующих постах.
Также прошу обратить внимание, на то, как AutoHotKey прост в освоении, например я получил серийный номер диска всего 3-мя строчками кода. На других языках я ещё такого не встречал)).
Обновлено (05.10.2021)
- Исправил серьезную ошибку с нахождением операционки на других системных дисках помимо диска C:\
Первый способ:
1) Будем доставать серийник диска на котором установлена Windows.
2) Регистрируемся на GitHub (no ad) и создаем свой GitHub Pages (no ad).
3) Вносим серийник человека в свою базу.
4) После запуска скрипта, скачивается страница вашей базы человеку, после чего ahk ищет совместимость серийника.
5) Если нашелся подходящий серийник, скрипт пропускает в главный функционал, если нет, требует авторизоваться.
Код:
#NoEnv
Windows_Disk := A_WinDir
if Windows_Disk contains Windows
{
RegExMatch(Windows_Disk, "(.*)windows", Disk_7)
if Disk_71 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
{
DriveGet, HWID, Serial, %Disk_71%
}
RegExMatch(Windows_Disk, "(.*)Windows", Disk_8)
if Disk_81 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
{
DriveGet, HWID, Serial, %Disk_81%
}
RegExMatch(Windows_Disk, "(.*)WINDOWS", Disk_10)
if Disk_101 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
{
DriveGet, HWID, Serial, %Disk_101%
}
}
else
{
MsgBox, У тебя операционная система не Windows!
ExitApp
}
Для того чтобы не возникало проблем с использование буквой диска, нужно убрать лишние буквы, в нашем случае это - WINDOWS.
По этому я использовал функцию RegExMatch, а вот результатом выступает Disk_7, Disk_8, Disk_10 в которых хранится диск с Windows в моем случае C:\
А вот сама DriveGet достает серийник из Disk1 (обратите внимание не Disk_7, а Disk_71), результат хранится в HWID (переменная).
Код:
URLDownloadToFile, ВАША БАЗА, %a_temp%/key.txt
fileread, read, %a_temp%/key.txt
FileDelete, %a_temp%/key.txt
if read contains %HWID%
{
Goto, true
}
else
{
MsgBox, Добро пожаловать в поле регистрации!`nСкопированные данные отправьте автору программы.
Gui, Font, S16 CBlack Bold, Arial
Gui, Add, Text, x53 y0 w500 h30 , Твой ключ:
Gui, Font, ,
Gui, Add, Edit, x1 y31 w219 h21 +Center ReadOnly vEdit,
Gui, Add, Button, x35 y52 w153 h24 gClip , Копировать и закрыть
Gui, Show, w221 h76, Доступ
GuiControl, , Edit, % HWID
return
Clip:
Gui, Submit, NoHide
Clipboard := Edit
ExitApp
GuiClose:
ExitApp
}
true:
MsgBox, Добро пожаловать!
Порядок действий:
1)
2)
3) Ссылку копируем обязательно в таком формате, как показано на скрине!
4) Вставляем в код, готово!
После того как скрипт прочёл содержимое - HWID, происходит сравнение текущего серийника пользователя с существующей базой. Если есть сходство, программа пропускает человека (срабатывает функция Goto, он в свою очередь пропускает строки связанные с меню авторизации, скрипт стартует со строчки true:)
Весь код первого способа:
Код:
#NoEnv
Windows_Disk := A_WinDir
if Windows_Disk contains Windows
{
RegExMatch(Windows_Disk, "(.*)windows", Disk_7)
if Disk_71 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
{
DriveGet, HWID, Serial, %Disk_71%
}
RegExMatch(Windows_Disk, "(.*)Windows", Disk_8)
if Disk_81 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
{
DriveGet, HWID, Serial, %Disk_81%
}
RegExMatch(Windows_Disk, "(.*)WINDOWS", Disk_10)
if Disk_101 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
{
DriveGet, HWID, Serial, %Disk_101%
}
}
else
{
MsgBox, У тебя операционная система не Windows!
ExitApp
}
URLDownloadToFile, https://raw.githubusercontent.com/millioner1403/index.html/master/index.html, %a_temp%/key.txt
fileread, read, %a_temp%/key.txt
FileDelete, %a_temp%/key.txt
if read contains %HWID%
{
Goto, true
}
else
{
MsgBox, Добро пожаловать в поле регистрации!`nСкопированые данные отправте автору программы.
Gui, Font, S16 CBlack Bold, Arial
Gui, Add, Text, x53 y0 w500 h30 , Твой ключ:
Gui, Font, ,
Gui, Add, Edit, x1 y31 w219 h21 +Center ReadOnly vEdit,
Gui, Add, Button, x35 y52 w153 h24 gClip , Копировать и закрыть
Gui, Show, w221 h76, Доступ
GuiControl, , Edit, % HWID
return
Clip:
Gui, Submit, NoHide
Clipboard := Edit
ExitApp
GuiClose:
ExitApp
}
true:
MsgBox, Добро пожаловать!
Этот способ работает по принципу парсинга страницы, идея - Bunnyscript ( https://yougame.biz/members/337981/ ).
1) Будем доставать серийник диска на котором установлена Windows.
2) Регистрируемся на GitHub (no ad) и создаем свой GitHub Pages (no ad).
3) Вносим серийник человека в свою базу.
4) После запуска скрипта, парсится страница вашей базы, после чего ahk ищет совместимость серийника.
5) Если нашелся подходящий серийник, скрипт пропускает в главный функционал, если нет, требует авторизоваться.
Код этого способа на 90% схож с предыдущим, по этому в детальном объяснении не нуждается.
Весь код второго способа:
Код:
#NoEnv
Windows_Disk := A_WinDir
if Windows_Disk contains Windows
{
RegExMatch(Windows_Disk, "(.*)windows", Disk_7)
if Disk_71 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
{
DriveGet, HWID, Serial, %Disk_71%
}
RegExMatch(Windows_Disk, "(.*)Windows", Disk_8)
if Disk_81 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
{
DriveGet, HWID, Serial, %Disk_81%
}
RegExMatch(Windows_Disk, "(.*)WINDOWS", Disk_10)
if Disk_101 contains Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M
{
DriveGet, HWID, Serial, %Disk_101%
}
}
else
{
MsgBox, У тебя операционная система не Windows!
ExitApp
}
Parse := ComObjCreate("WinHttp.WinHttpRequest.5.1")
Parse.Open("GET", "https://raw.githubusercontent.com/millioner1403/index.html/master/index.html", false)
Parse.Send()
Parse.WaitForResponse()
Text := Parse.ResponseText
if Text contains %HWID%
{
Goto, true
}
else
{
MsgBox, Добро пожаловать в поле регистрации!`nСкопированые данные отправте автору программы.
Gui, Font, S16 CBlack Bold, Arial
Gui, Add, Text, x53 y0 w500 h30 , Твой ключ:
Gui, Font, ,
Gui, Add, Edit, x1 y31 w219 h21 +Center ReadOnly vEdit,
Gui, Add, Button, x35 y52 w153 h24 gClip , Копировать и закрыть
Gui, Show, w221 h76, Доступ
GuiControl, , Edit, % HWID
return
Clip:
Gui, Submit, NoHide
Clipboard := Edit
ExitApp
GuiClose:
ExitApp
}
true:
MsgBox, Добро пожаловать!
Также прошу обратить внимание, на то, как AutoHotKey прост в освоении, например я получил серийный номер диска всего 3-мя строчками кода. На других языках я ещё такого не встречал)).
Последнее редактирование: