#AutoIt3Wrapper_Res_File_Add=Image1.jpg, rt_rcdata, BACKGROUND #include #include #include #include #include #include #include #include #include #include #include #include #include #include "_TC_Container_Create.au3" #include "KeyFunctions.au3" #include "TruecryptFunctions.au3" #include "resources.au3" #RequireAdmin #Region ### START Koda GUI section ### Form=c:\users\hunter\desktop\programming\autoit\gui's for programs\encryption menu 5.kxf $Form1 = GUICreate("Encryption Menu", 518, 372, -1, -1) $cTab = GUICtrlCreateTab(3, 0, 513, 433) $aTabPos = ControlGetPos($Form1, "", $cTab) $cTab_0 = GUICtrlCreateTabItem("Create Encrypted Container") $aClientPos = _GUICtrlTab_GetDisplayRect(GUICtrlGetHandle($cTab)) TabPic() $Group4 = GUICtrlCreateGroup("", 109, 36, 313, 289) $ContainerName = GUICtrlCreateInput("", 121, 76, 217, 21) $ContainerSizeInput = GUICtrlCreateInput("", 121, 121, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER)) $ByteSuffixCombo = GUICtrlCreateCombo("", 249, 121, 60, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlSetData(-1, "KB|MB|GB", "MB") $EncryptionCombo = GUICtrlCreateCombo("", 121, 165, 121, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlSetData(-1, "AES|Serpent|Twofish|AES-Twofish|AES-Twofish-Serpent|Serpent-AES|Serpent-Twofish-AES|Twofish-Serpent", "AES") $HashCombo = GUICtrlCreateCombo("", 249, 165, 89, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlSetData(-1, "RIPEMD-160|SHA-512|Whirlpool", "RIPEMD-160") $FilesystemCombo = GUICtrlCreateCombo("", 121, 213, 121, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlSetData(-1, "FAT|NTFS", "FAT") $RPLCombo = GUICtrlCreateCombo("", 249, 213, 89, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlSetData(-1, "8|16|24|32|40|48|56|64", "32") $PasswordInput = GUICtrlCreateInput("", 121, 261, 217, 21) $RandomPassButton = GUICtrlCreateButton("Random", 341, 259, 75, 25) $GKCheckbox = GUICtrlCreateCheckbox("", 121, 295, 15, 17) $CreateButton = GUICtrlCreateButton("Create", 341, 292, 75, 25) $ContainerSizeText = GUICtrlCreateLabel("Container Size", 121, 103, 72, 17) $EncryptionText = GUICtrlCreateLabel("Encryption", 121, 148, 54, 17) $HashText = GUICtrlCreateLabel("Hash", 249, 149, 29, 17) $Filesystem = GUICtrlCreateLabel("Filesystem", 121, 196, 52, 17) $PasswordText = GUICtrlCreateLabel("Password", 121, 244, 50, 17) $ContainerNameText = GUICtrlCreateLabel("Container Name", 121, 59, 80, 17) $RPLText = GUICtrlCreateLabel("Random Password Length", 249, 196, 132, 17) $GKText = GUICtrlCreateLabel("Generate Key File", 139, 297, 140, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $Status = GUICtrlCreateLabel("", 49, 335, 170, 17) $StatusText = GUICtrlCreateLabel("Status :", 8, 335, 40, 17) $CECLabel = GUICtrlCreateLabel("Create Encrypted Container", 109, 26, 134, 17) $ProgressBar = GUICtrlCreateProgress(57, 351, 150, 17) $ProgressText = GUICtrlCreateLabel("Progress :", 8, 351, 47, 17) ;TabSheet 2 $TabSheet2 = GUICtrlCreateTabItem("Decrypt Encrypted Container") TabPic() $Group1a = GUICtrlCreateGroup("", 14, 36, 265, 99) $PasswordInput2 = GUICtrlCreateInput("", 30, 76, 217, 21) $PasswordInputRadio = GUICtrlCreateRadio("", 109, 98, 14, 17) GUICtrlSetState(-1, 1) $KeyFileRadio = GUICtrlCreateRadio("", 109, 113, 14, 17) $Decrypt = GUICtrlCreateButton("Decrypt", 30, 102, 75, 25) $PIText = GUICtrlCreateLabel("Password Input", 30, 59, 77, 17) $PIText2 = GUICtrlCreateLabel("Password Input", 126, 100, 77, 17) $KFText2 = GUICtrlCreateLabel("Key File", 126, 115, 41, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group1 = GUICtrlCreateGroup("", 14, 144, 265, 59) $Delete = GUICtrlCreateButton("Delete", 30, 164, 75, 25) $OpenFolder = GUICtrlCreateButton("Open Folder", 109, 164, 75, 25) $Refresh = GUICtrlCreateButton("Refresh", 188, 164, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group5 = GUICtrlCreateGroup("", 288, 36, 217, 263) $ContainersList = GUICtrlCreateList("", 296, 50, 201, 240) GUICtrlSetData(-1, "") GUICtrlCreateGroup("", -99, -99, 1, 1) $Status2 = GUICtrlCreateLabel("", 50, 351, 170, 17) $StatusText2 = GUICtrlCreateLabel("Status :", 8, 351, 40, 17) $ContainersText = GUICtrlCreateLabel("Containers", 287, 26, 54, 17) $POText = GUICtrlCreateLabel("Password Options", 14, 26, 89, 17) $COText = GUICtrlCreateLabel("Container Options", 14, 134, 88, 17) $Size1Group = GUICtrlCreateGroup("", 14, 211, 265, 33) $SizeText1 = GUICtrlCreateLabel("Size :", 19, 222, 30, 17) $Size1 = GUICtrlCreateLabel("", 61, 222, 170, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) ;Tabsheet 3 $TabSheet3 = GUICtrlCreateTabItem("Mounted Containers") TabPic() GUICtrlSetState(-1,$GUI_SHOW) $Group2 = GUICtrlCreateGroup("", 14, 103, 265, 59) $DismountLetter = GUICtrlCreateButton("Dismount", 70, 123, 75, 25) $DismountAll = GUICtrlCreateButton("Dismount All", 149, 123, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group3 = GUICtrlCreateGroup("", 14, 36, 265, 59) $Open = GUICtrlCreateButton("Open", 70, 56, 75, 25) $Format = GUICtrlCreateButton("Format", 149, 56, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $StatusText3 = GUICtrlCreateLabel("Status :", 8, 351, 40, 17) $Status3 = GUICtrlCreateLabel("", 50, 351, 170, 17) $MCOText = GUICtrlCreateLabel("Mounted Container Options", 14, 26, 133, 17) $DOText = GUICtrlCreateLabel("Dismount Options", 14, 94, 87, 17) $Containers2 = GUICtrlCreateGroup("", 288, 36, 217, 263) $ContainersList2 = GUICtrlCreateList("", 296, 50, 201, 240) GUICtrlSetData(-1, "") GUICtrlCreateGroup("", -99, -99, 1, 1) $ContainerText3 = GUICtrlCreateLabel("Containers", 287, 26, 54, 17) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Global $ContainersDir=""&@ScriptDir&"\Encrypted Containers" Global $TruecryptDir=""&@ScriptDir&"\TrueCrypt" Local $FileNameComp, $FileNameComp1, $mclist GenerateEncryptedContainers() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $CreateButton CreateContainer() Case $RandomPassButton GenerateRanPass() Case $Decrypt MountContainer() Case $DismountAll DismountAll1() Case $DismountLetter DismountLetter1() Case $Delete Delete() Case $OpenFolder OpenFolder() Case $Refresh GenerateEncryptedContainers() Case $Open OpenLetter() Case $Format Format() EndSwitch FileSize($Size1) WEnd Func Format() $Letter = ReadLetterContainersList2() if $Letter <> "" Then GUICtrlSetData($Status3, "Format Dialog Opened") _WinAPI_FormatDriveDlg($Letter, $SHFMT_OPT_QUICKFORMAT) EndIf EndFunc Func OpenLetter() $Letter = ReadLetterContainersList2() if $Letter <> "" Then GUICtrlSetData($Status3, "Opening "&$Letter&"") Run("Explorer "&$Letter&"") GUICtrlSetData($Status3, "Opened "&$Letter&"") EndIf EndFunc Func OpenFolder() GUICtrlSetData($Status2, "Opening Containers Folder") Run("Explorer.exe "&Chr(34)&""&$ContainersDir&"\"&Chr(34)&"") GUICtrlSetData($Status2, "Opened Containers Folder") EndFunc Func Delete() $Response="" $File1 = GUICtrlRead($ContainersList) $File = GUICtrlRead($ContainersList) $FileName = $File if $FileName <> "" Then $File2 = ""&$ContainersDir&"\"&$File&"" $File =""&chr(34) & $File2 & chr(34) & "" $Response = MsgBox(4, "", "Delete : "&$File1&"") if $Response = 6 Then GUICtrlSetData($Status2, "Deleting") Global $command1="Del /f /q "&$File&"" RunWait(@ComSpec & " /c " & $Command1, "", @SW_HIDE) if FileExists($File2) Then GUICtrlSetData($Status2, "Error Deleting "&$File1&"") Else GUICtrlSetData($Status2, ""&$File1&" Deleted") EndIf GUICtrlSetData($ContainersList, "") GUICtrlSetData($Size1, "") $FileNameComp1 = "" GenerateEncryptedContainers() EndIf EndIf EndFunc Func DismountLetter1() $Letter = ReadLetterContainersList2() $ContainersList2Data = GUICtrlRead($ContainersList2) if $Letter <> "" Then GUICtrlSetData($Status3, "Dismounting "&$Letter&"") DismountLetter($Letter, $TruecryptDir) $mclist1 = StringReplace($mclist, ""&$ContainersList2Data&"|", "") $mclist = $mclist1 GUICtrlSetData($ContainersList2, "") GUICtrlSetData($ContainersList2, $mclist) GUICtrlSetData($Status3, "Dismounted "&$Letter&"") EndIf EndFunc Func MountContainer() $PassRadio = 0 $Error = 0 $Password = "" if GUICtrlRead($PasswordInputRadio) = 1 Then $Password = PassInput() $PassRadio = 1 Else $Password = ReadKey() EndIf if $Password = "" Then $Error = 1 $File = GUICtrlRead($ContainersList) GUICtrlSetData($PasswordInput2, "") if $File <> "" Then $FileLoc = ""&chr(34)&""&$ContainersDir&"\"&$File&""&chr(34)&"" $Letter = GetFreeDriveLetter() if $Error <> 1 Then GUICtrlSetData($Status2, "Mounting") DecryptContainer($FileLoc, $Password, $Letter, $TruecryptDir) Else GUICtrlSetData($Status2, "Error") EndIf if FileExists($Letter) <> 1 Then if $PassRadio <> 1 Then GUICtrlSetData($Status2, "Incorrect Key File") Else GUICtrlSetData($Status2, "Incorrect Password") EndIf Else $mclist =""&$mclist&"Drive: "&$Letter&" - Container: "&$File&"|" GUICtrlSetData($ContainersList2, "") GUICtrlSetData($ContainersList2, $mclist) GUICtrlSetData($Status2, "Decrypted") EndIf EndIf GUICtrlSetState($PasswordInputRadio, 1) EndFunc Func ReadLetterContainersList2() if GUICtrlRead($ContainersList2) <> "" Then $Letter = GUICtrlRead($ContainersList2) $Letter = StringSplit($Letter, ":") $Letter = $Letter[2] $Letter = StringReplace($Letter, " ", "") $Letter = ""&$Letter&":" Return $Letter EndIf EndFunc Func DismountAll1() DismountAll($TruecryptDir) GUICtrlSetData($Status3, "Dismounted All Containers") GUICtrlSetData($ContainersList2, "") $mclist="" EndFunc Func GetFreeDriveLetter() For $x = 67 To 90 If DriveStatus(Chr($x) & ':\') = 'INVALID' Then Return(Chr($x) & ':') Next EndFunc Func ReadKey() $File = FileOpenDialog("Browse For A Key File", @ScriptDir, "Key Files (*.emk)") if @error Then Return "" Else Return DecryptKey($File) EndIf EndFunc Func FileSize($Input) $FileNameComp = GUICtrlRead($ContainersList) if $FileNameComp <> $FileNameComp1 Then $FileNameComp1 = GUICtrlRead($ContainersList) $FileName = $FileNameComp if $FileName <> "" Then $FileLoc = ""&$ContainersDir&"\"&$FileName&"" Local $iFileSize = FileGetSize($FileLoc) GUICtrlSetData($Input, ByteSuffix($iFileSize)) EndIf EndIf EndFunc Func ByteSuffix($iBytes) Local $iIndex, $aArray[9] = [' bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB'] While $iBytes > 1023 $iIndex += 1 $iBytes /= 1024 WEnd Return Round($iBytes) & $aArray[$iIndex] EndFunc Func Key() GenerateKey($Password, ""&$CName&" Key") EndFunc Func TabPic() $pic = GUICtrlCreatePic("", $aClientPos[0] + $aTabPos[0] - 1, $aClientPos[1] + $aTabPos[1], $aClientPos[2] - $aClientPos[0], $aClientPos[3] - $aClientPos[1]) _ResourceSetImageToCtrl($pic, "BACKGROUND") GuiCtrlSetState($pic ,$GUI_DISABLE) GuiCtrlSetState($pic ,$GUI_ONTOP) GUICtrlSetStyle($pic , $WS_CLIPSIBLINGS) EndFunc Func GenerateRanPass() GUICtrlSetData($PasswordInput, "") Global $length = GUICtrlRead($RPLCombo) Local $sText = "" For $i = 1 To $length $a = Random(1,2,1) if $a = "1" Then $sText &= Chr(Random(65, 122, 1)) Else $sText &=Random(1,9,1) EndIf Next GUICtrlSetData($PasswordInput, $stext) EndFunc Func PassInput() $Pass = GUICtrlRead($PasswordInput2) $Pass =""&chr(34) & $Pass & chr(34) & "" Return $Pass EndFunc Func CreateContainer() $Error = 0 AutoItSetOption("WinDetectHiddenText", 1) Opt("WinTitleMatchMode", 3) Global $PID_TC_Format = 0 if GUICtrlRead($ContainerSizeInput) = "" Then GUICtrlSetData($Status, "Error : Set A Container Size") $Error = 1 EndIf if $Error <> 1 Then if GUICtrlRead($ContainerName) = "" Then GUICtrlSetData($Status, "Error : Set A Name For The Container") $Error = 1 EndIf EndIf if $Error <> 1 Then if GUICtrlRead($PasswordInput) = "" Then GUICtrlSetData($Status, "Error : Set A Password") $Error = 1 EndIf EndIf if $Error = 1 Then Else GUICtrlSetData($ProgressBar, "0") Global $CName =GUICtrlRead($ContainerName) Global $Location =""&$ContainersDir&"\"&GUICtrlRead($ContainerName)&"" Global $Encryption =""&GUICtrlRead($EncryptionCombo)&"" Global $Hash =""&GUICtrlRead($HashCombo)&"" Global $Size = GUICtrlRead($ContainerSizeInput) if GUICtrlRead($ByteSuffixCombo)="KB" Then $Size2 = "KB" EndIf if GUICtrlRead($ByteSuffixCombo)="MB" Then $Size2 = "MB" EndIf if GUICtrlRead($ByteSuffixCombo)="GB" Then $Size2 = "GB" EndIf Global $Password =""&GUICtrlRead($PasswordInput) Global $FileSystem=""&GUICtrlRead($FileSystemCombo) GUICtrlSetData($ContainerSizeInput, "") GUICtrlSetData($ContainerName, "") GUICtrlSetData($PasswordInput, "") GUICtrlSetData($ByteSuffixCombo, "MB") GUICtrlSetData($EncryptionCombo, "AES") GUICtrlSetData($HashCombo, "RIPEMD-160") GUICtrlSetData($FileSystemCombo, "FAT") if GUICtrlRead($GKCheckbox) = 1 Then GUICtrlSetState($GKCheckbox, 4) Key() EndIf GUICtrlSetData($Status, "Creating") _TC_Container_Create($Location, $Encryption, $Hash, $Size, $Password, $FileSystem, $Size2) if FileExists($Location) = 0 Then GUICtrlSetData($Status, "Error") Else GUICtrlSetData($Status, "Finished") EndIf GUICtrlSetData($ProgressBar, "100") GenerateEncryptedContainers() EndIf EndFunc Func GenerateEncryptedContainers() if FileExists($ContainersDir) = 0 Then DirCreate($ContainersDir) EndIf Local $EncryptedContainersList = _FileListToArray($ContainersDir, "*", 1) if $EncryptedContainersList <> "" Then For $i = 1 To $EncryptedContainersList[0] GUICtrlSetData($ContainersList, $EncryptedContainersList[$i]) Next EndIf EndFunc