terminat0r Воо, это ближе к делу.
Цитата: Закодить это в него не изменяя стандартный формат раздела сложно если вообще возможно
За это - отдельное спасибо. Теперь понял, что идея не факт, что выполнима, а если и выполнима - то затрат будет множество.
Скажите, а что можно демону проверять? Манагеры работают с офисом, 1с, и тд. Но они же могут отлучится на обед\перекур\по нужде. И еще - МБР же можно самому восстановить, соответственно потом ввести слитый пароль, или нет?А демон можно наверное и на AutoIT написать. Кстати о нем и о сабже, но уже не о всей системе а просто о контейнерах:
Есть скрипт(сорец приведен ниже) который монтирует контейнер при подключении флешки. Довольно удобно, если отлучаешься от компа не на долго. Правда его косяк в том что пароль хранится в нем, и можно отреверсить, тем более, что AutoIT декомпиллится отлично.
Возможности:
1.Валидность USB накопителя проверяется по хэшу серийного номера USB накопителя.
2. Все данные в реестре шифруются по вашему ключу с помощью алгоритма RC4.
3. Ключевой файл хранится только в самой программе и генерируется лишь после того как подключен привязанный USB накопитель, после чего сразу удаляется.
4. При извлечении валидного USB накопителя, зашифрованный контейнер отключается с параметром /force.
5. Никаких лишних окон и вопросов, все прозрачно.
Минусов хватает, но мб найдется энтузиаст и допилит сие творение.
[more=исходник]
Код: #include <md5.au3> ; библиотека для работы с md5
#include <constants.au3>
#include <string.au3>
If WinExists(@ScriptName) Then Exit ; Запрещаем повторный запуск скрипта
AutoItWinSetTitle(@ScriptName)
AutoItSetOption ("TrayIconHide", 1 ) ; Спрятать иконку в трее
AutoItSetOption ("TrayIconDebug", 1 )
$key = "0x1234Af3d21" ; Ключ шифрования, должен быть такой-же как и в конфигураторе
$truecrypt = "C:\Program Files\TrueCrypt\TrueCrypt.exe" ; Путь до TrueCrypt
$drive = BinaryToString(_StringEncrypt(0,RegRead("HKCU\Software\USBToken","Flash"),$key,2))
$serial = _StringEncrypt(0,RegRead("HKCU\Software\USBToken","Serial"),$key,2)
$passwd = BinaryToString(_StringEncrypt(0,RegRead("HKCU\Software\USBToken","Master"),$key,2))
$path = BinaryToString(_StringEncrypt(0,RegRead("HKCU\Software\USBToken","Path"),$key,2))
$mount = _StringEncrypt(0,RegRead("HKCU\Software\USBToken","Mount"),$key,2)
While 1
if DriveStatus($drive) <> "READY" OR md5(DriveGetSerial($drive)) <> $serial AND DriveStatus($mount) = "READY" then
Run($truecrypt & ' /f /q /d ' & $mount)
endif
if DriveStatus($drive) = "READY" AND md5(DriveGetSerial($drive)) = $serial AND DriveStatus($mount) <> "READY" then
$file = FileOpen(@TempDir & "\master.key", 2)
FileWrite ($file, _StringEncrypt(1,RegRead("HKCU\Software\USBToken","Serial") & RegRead("HKCU\Software\USBToken","Master") & RegRead("HKCU\Software\USBToken","Mount") & RegRead("HKCU\Software\USBToken","Flash") & RegRead("HKCU\Software\USBToken","Path") & @ComputerName & @UserName, $key,2))
FileClose($file)
Run($truecrypt & ' /a /q /s /b /v ' & $path & " /l " & $mount & " /k " & @TempDir & "\master.key" & " /p " & $passwd)
Sleep(2000)
FileDelete(@TempDir & "\master.key")
else
endif
Sleep(5000)
WEnd