Jump to content

Encrypted KEY identification


Recommended Posts

sorry for bothering you.
I have a project, before opening a program, I require to enter a KEY (first code) the KEY matches the code set in the code (Local $sKey = 'I48fsE2Tcy1s3zRfa0jw')

#include <MsgBoxConstants.au3>

; Khai báo danh sách các key
Global $keyList[100000]
$keyList[0] = "I48fsE2Tcy1s3zRfa0jw"   ; Key 1


; Biến toàn cục
Global $maxAttempts = 1  ; Số lần nhập sai tối đa
Global $lockDuration = 300 ; Thời gian khóa (5 phút), tính bằng giây
Global $regPath = "HKCU\Software\MyAutoItApp" ; Đường dẫn trong Registry
Global $attemptCount = RegRead($regPath, "AttemptCount") ; Đọc số lần nhập sai từ Registry
Global $lockTime = RegRead($regPath, "LockTime") ; Đọc thời gian khóa từ Registry (theo thời gian hệ thống)

; Nếu chưa có dữ liệu trong Registry, đặt giá trị ban đầu cho $attemptCount
If @error Then $attemptCount = 0

; Kiểm tra nếu chương trình đang bị khóa
If $attemptCount >= $maxAttempts Then
    ; Kiểm tra xem thời gian khóa đã hết chưa
    If Not @error Then
        Local $currentTime = _NowSeconds()
        If ($currentTime - $lockTime) < $lockDuration Then
            Local $remainingTime = $lockDuration - ($currentTime - $lockTime)
            MsgBox($MB_ICONERROR, "Thông báo", "Bạn đã nhập sai quá nhiều lần. Vui lòng thử lại sau " & Int($remainingTime) & " giây.")
            Exit
        Else
            ; Đặt lại số lần thử và xóa thời gian khóa nếu đã qua 5 phút
            $attemptCount = 0
            RegWrite($regPath, "AttemptCount", "REG_DWORD", $attemptCount)
            RegDelete($regPath, "LockTime")
        EndIf
    EndIf
EndIf

; Hàm trả về thời gian hệ thống hiện tại dưới dạng giây
Func _NowSeconds()
    Return @HOUR * 3600 + @MIN * 60 + @SEC
EndFunc

; Hàm kiểm tra key nhập vào
Func CheckKey()
    Local $userKey
    While True
        $userKey = InputBox("Kiểm tra Key", "Vui lòng nhập key để sử dụng chương trình:", "", "*")

        ; Kiểm tra nếu người dùng ấn nút Cancel thì thoát chương trình
        If @error Then
            MsgBox($MB_ICONERROR, "Thông báo", "Bạn đã hủy. Chương trình sẽ thoát.")
            Exit
        EndIf

        ; Kiểm tra xem người dùng có nhập gì không
        If $userKey == "" Then
            MsgBox($MB_ICONERROR, "Thông báo", "Bạn chưa nhập key! Vui lòng nhập key để tiếp tục.")
        Else
            ; Nếu người dùng nhập key sai
            For $i = 0 To UBound($keyList) - 1
                If $userKey == $keyList[$i] Then
                    MsgBox($MB_OK, "Thông báo", "Key đúng. Mở chương trình...")
                    ; Đặt lại số lần nhập sai nếu key đúng
                    RegWrite($regPath, "AttemptCount", "REG_DWORD", 0)
                    Return True
                EndIf
            Next
            ; Nếu key sai, đếm số lần nhập sai
            $attemptCount += 1
            MsgBox($MB_ICONERROR, "Thông báo", "Key sai! Bạn còn " & ($maxAttempts - $attemptCount) & " lần thử.")

            ; Cập nhật số lần nhập sai vào Registry
            RegWrite($regPath, "AttemptCount", "REG_DWORD", $attemptCount)

            ; Kiểm tra xem số lần nhập sai đã đạt giới hạn chưa
            If $attemptCount >= $maxAttempts Then
                ; Lưu thời gian khóa vào Registry dưới dạng giây
                RegWrite($regPath, "LockTime", "REG_DWORD", _NowSeconds())
                MsgBox($MB_ICONERROR, "Thông báo", "Bạn đã nhập sai quá 1 lần. Chương trình sẽ bị khóa trong 5 phút.")
                Exit
            EndIf
        EndIf
    WEnd
EndFunc

; Gọi hàm kiểm tra key trước khi mở chương trình
If Not CheckKey() Then
    Exit ; Thoát nếu key không đúng
EndIf

; =======================
; Phần code chính bắt đầu từ đây
; =======================

And now I want the first code to be able to recognize the KEY, which I encrypted (the second code)
 

#include <GUIConstantsEx.au3>
#include <Crypt.au3>

; Chuỗi cần mã hóa
Local $sKey = 'I48fsE2Tcy1s3zRfa0jw'
Local $sPassword = 'MySecretPassword'

; Tạo đối tượng AES
Local $hAES = _Crypt_Startup()
Local $sEncrypted = _Crypt_EncryptData($sKey, $sPassword, $CALG_AES_256)

; Tạo GUI
Local $hGUI = GUICreate("Mã hóa AES", 500, 200)

; Tạo ô nhập liệu (Input) để hiển thị mã hóa
Local $hInput = GUICtrlCreateInput($sEncrypted, 10, 10, 460, 30)

; Tạo nút để sao chép (optional)
Local $hButtonCopy = GUICtrlCreateButton("Sao chép", 10, 50, 100, 30)

; Hiển thị GUI
GUISetState(@SW_SHOW, $hGUI)

; Vòng lặp xử lý sự kiện
While 1
    ; Lắng nghe sự kiện GUI
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit

        Case $hButtonCopy
            ; Sao chép nội dung trong ô nhập liệu vào clipboard khi bấm nút
            ClipPut(GUICtrlRead($hInput))
            MsgBox(0, "Thông báo", "Đoạn mã đã được sao chép vào clipboard.")
    EndSwitch
WEnd

 

Link to comment
Share on other sites

Never ever store a key, password, login, ... in clear in a program.

Store a strong hash of the value, let user enter value, compute its hash and compare hashes.

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...