AutoIt Encryption

AutoIt Encryption

AutoIt is a Windows-first scripting language people use to drive the GUI, batch-install software, and glue together admin tasks. Scripts compile to standalone executables that are easy to hand around. That convenience means anyone can open the binary—or the source—and read your strings with almost no effort.

Passwords for unattended logins, internal URLs, and licence blobs do not belong in cleartext if you ship the EXE outside your desk. StringEncrypt outputs AutoIt that decrypts those values when the script runs, which stops the laziest string dumps.

Pair it with a professional AutoIt Obfuscator and sleep safely.

String encryption supports both UNICODE (wchar_t type) and ANSI (char type) strings.

AutoIt encryption (UNICODE Example)

Plaintext reference: StringEncrypt sample

; encrypted with https://www.stringencrypt.com (v1.5.0) [AutoIt]
#include <Array.au3>

; $myString = "StringEncrypt sample"
Global $myString[21] = [ 0xA563, 0x3342, 0x5851, 0xCCCD, 0xBE55, 0x0AF3, 0x325E, 0x4503, _
                         0x3609, 0x879A, 0x417C, 0x928A, 0xF10D, 0xA2C7, 0x657E, 0x1CC1, _
                         0xE0D9, 0xD386, 0x9B91, 0x69A9, 0x88DC ]

Local $YlXPs
Local $hXEKQ
Local $ScIiV
Local $AKRTZ
Local $GxvFh
Local $BsxRV
Local $kydHi
Local $zXPyn

For $zXPyn = 0 to 20
    $YlXPs = $myString[$zXPyn]
    $YlXPs = BitAND(BitOR(BitShift(BitAND($YlXPs, 0xFFFF), 6), BitShift(BitAND($YlXPs, 0xFFFF), -10)), 0xFFFF)
    $YlXPs = BitAND(BitAND($YlXPs, 0xFFFF) - 0x9BBA, 0xFFFF)
    $YlXPs = BitAND(BitAND($YlXPs, 0xFFFF) + $zXPyn, 0xFFFF)
    For $hXEKQ = 0 to 1
        $YlXPs = BitAND(BitOR(BitShift(BitAND($YlXPs, 0xFFFF), 8), BitShift(BitAND($YlXPs, 0xFFFF), -8)), 0xFFFF)
        $YlXPs = BitAND(BitXOR($YlXPs, BitAND(BitShift(BitAND($YlXPs, 0xFFFF), -14), 0xFFFF)), 0xFFFF)
    Next
    $YlXPs = BitAND(BitXOR(BitAND($YlXPs, 0xFFFF), 0xFFFF), 0xFFFF)
    For $ScIiV = 0 to 2
        $YlXPs = BitAND(BitAND($YlXPs, 0xFFFF) + $zXPyn, 0xFFFF)
        $YlXPs = BitAND(BitOR(BitShift(BitAND($YlXPs, 0xFFFF), -Mod($zXPyn, 16)), BitShift(BitAND($YlXPs, 0xFFFF), 16 - Mod($zXPyn, 16))), 0xFFFF)
        $YlXPs = BitAND(BitXOR(BitAND($YlXPs, 0xFFFF), 0xFFFF) + 1, 0xFFFF)
    Next
    $YlXPs = BitAND(BitXOR($YlXPs, $zXPyn), 0xFFFF)
    $YlXPs = BitAND(BitXOR($YlXPs, BitAND(BitShift(BitAND($YlXPs, 0xFFFF), -15), 0xFFFF)), 0xFFFF)
    $YlXPs = BitAND(BitXOR($YlXPs, BitShift(BitAND($YlXPs, 0xFFFF), 15)), 0xFFFF)
    $YlXPs = BitAND(BitAND($YlXPs, 0xFFFF) + 1, 0xFFFF)
    $YlXPs = BitAND(BitXOR($YlXPs, BitAND(BitShift(BitAND($YlXPs, 0xFFFF), -9), 0xFFFF)), 0xFFFF)
    $YlXPs = BitAND(BitXOR($YlXPs, BitShift(BitAND($YlXPs, 0xFFFF), 8)), 0xFFFF)
    $YlXPs = BitAND(BitOR(BitShift(BitAND($YlXPs, 0xFFFF), 12), BitShift(BitAND($YlXPs, 0xFFFF), -4)), 0xFFFF)
    For $AKRTZ = 0 to 2
        For $GxvFh = 0 to 3
            For $BsxRV = 0 to 2
                $YlXPs = BitAND(BitOR(BitShift(BitAND($YlXPs, 0xFFFF), -Mod($zXPyn, 16)), BitShift(BitAND($YlXPs, 0xFFFF), 16 - Mod($zXPyn, 16))), 0xFFFF)
                $YlXPs = BitAND(BitOR(BitShift(BitAND($YlXPs, 0xFFFF), 8), BitShift(BitAND($YlXPs, 0xFFFF), -8)), 0xFFFF)
            Next
            $YlXPs = BitAND(BitAND($YlXPs, 0xFFFF) + 1, 0xFFFF)
            $YlXPs = BitAND(BitAND($YlXPs, 0xFFFF) - 0xEA26, 0xFFFF)
        Next
        For $kydHi = 0 to 1
            $YlXPs = BitAND(BitOR(BitShift(BitAND($YlXPs, 0xFFFF), -7), BitShift(BitAND($YlXPs, 0xFFFF), 9)), 0xFFFF)
            $YlXPs = BitAND(BitAND($YlXPs, 0xFFFF) - $zXPyn, 0xFFFF)
        Next
    Next
    $YlXPs = BitAND(BitXOR($YlXPs, BitShift(BitAND($YlXPs, 0xFFFF), 8)), 0xFFFF)
    $myString[$zXPyn] = ChrW(BitAND($YlXPs, 0xFFFF))
Next

$myString = _ArrayToString($myString, "")

AutoIt encryption (ANSI Example)

Plaintext reference: StringEncrypt sample

; encrypted with https://www.stringencrypt.com (v1.5.0) [AutoIt]
#include <Array.au3>

; $myString = "StringEncrypt sample"
Global $myString[21] = [ 0x24, 0xB0, 0xFD, 0x87, 0xEE, 0x32, 0xBD, 0x0E, _
                         0x68, 0xB8, 0xB5, 0x42, 0xE7, 0xD6, 0xFA, 0x41, _
                         0x6A, 0xC4, 0x7A, 0x87, 0xC5 ]

Local $BKkRc
Local $SHOlV
Local $lzHUA
Local $Qfbjs
Local $rzHQx
Local $oAzcR
Local $nzTej
Local $TKFYV
Local $SXDqp
Local $wWvBD
Local $PjyzV

For $PjyzV = 0 to 20
    $BKkRc = $myString[$PjyzV]
    $BKkRc = BitAND(BitOR(BitShift(BitAND($BKkRc, 0xFF), 4), BitShift(BitAND($BKkRc, 0xFF), -4)), 0xFF)
    $BKkRc = BitAND(BitXOR(BitAND($BKkRc, 0xFF), 0xFF), 0xFF)
    For $SHOlV = 0 to 3
        For $lzHUA = 0 to 3
            $BKkRc = BitAND(BitAND($BKkRc, 0xFF) - 0x9D, 0xFF)
            $BKkRc = BitAND(BitAND($BKkRc, 0xFF) + $PjyzV, 0xFF)
        Next
        $BKkRc = BitAND(BitAND($BKkRc, 0xFF) - 1, 0xFF)
    Next
    For $Qfbjs = 0 to 3
        $BKkRc = BitAND(BitAND($BKkRc, 0xFF) - $PjyzV, 0xFF)
    Next
    For $rzHQx = 0 to 1
        $BKkRc = BitAND(BitAND($BKkRc, 0xFF) - 1, 0xFF)
        $BKkRc = BitAND(BitXOR($BKkRc, $PjyzV), 0xFF)
        For $oAzcR = 0 to 1
            $BKkRc = BitAND(BitXOR($BKkRc, BitAND(BitShift(BitAND($BKkRc, 0xFF), -6), 0xFF)), 0xFF)
            $BKkRc = BitAND(BitXOR($BKkRc, BitShift(BitAND($BKkRc, 0xFF), 7)), 0xFF)
            $BKkRc = BitAND(BitAND($BKkRc, 0xFF) + $PjyzV, 0xFF)
        Next
    Next
    $BKkRc = BitAND(BitXOR($BKkRc, $PjyzV), 0xFF)
    $BKkRc = BitAND(BitOR(BitShift(BitAND($BKkRc, 0xFF), 2), BitShift(BitAND($BKkRc, 0xFF), -6)), 0xFF)
    $BKkRc = BitAND(BitAND($BKkRc, 0xFF) - 1, 0xFF)
    For $nzTej = 0 to 3
        For $TKFYV = 0 to 3
            $BKkRc = BitAND(BitXOR($BKkRc, $PjyzV), 0xFF)
        Next
    Next
    $BKkRc = BitAND(BitXOR(BitAND($BKkRc, 0xFF), 0xFF), 0xFF)
    For $SXDqp = 0 to 3
        $BKkRc = BitAND(BitXOR($BKkRc, BitAND(BitShift(BitAND($BKkRc, 0xFF), -7), 0xFF)), 0xFF)
    Next
    $BKkRc = BitAND(BitXOR($BKkRc, BitShift(BitAND($BKkRc, 0xFF), 5)), 0xFF)
    For $wWvBD = 0 to 1
        $BKkRc = BitAND(BitAND($BKkRc, 0xFF) - 1, 0xFF)
    Next
    $myString[$PjyzV] = Chr(BitAND($BKkRc, 0xFF))
Next

$myString = _ArrayToString($myString, "")