2013-09-01 4 views
1

Так что я делаю некоторое тестирование с шифрованием данных на курс, который я принимаю в школе (для этого задания мы должны использовать только среду Windows), и я «Могу ли я использовать встроенный в Windows инструмент« cipher.exe », который отлично подходит для того, что нам нужно делать.Просмотр зашифрованного файла зашифрованного файла на NTFS (EFS)

Я сделал небольшой .txt-файл (мой простой текст), и я зашифровал его с помощью «cipher/e PlainText.txt», который не имеет ошибки. Тем не менее, я хочу также иметь возможность просматривать зашифрованный текст. Как бы это сделать? Я попробовал войти в систему как пользователь, у которого не было надлежащего доступа к файлу, и вместо того, чтобы видеть зашифрованный текст, он просто пуст, говоря «Access Denied».

Благодарим вас за любые идеи.

+1

Используйте инструмент, который обращается к секторам необработанного диска. WinHex может открыть тома, понять файловую систему и открыть файл в «сыром режиме». – usr

+0

спасибо за это; достаточно простой ответ! я пытался понять, есть ли способ посмотреть текст изначально в Windows (или Linux из любопытства), но я не мог понять, что он вышел. – bezdomnyi

+0

Я не знаю, есть ли способ или нет. Вот почему я официально не отвечаю. Я думаю о резервном режиме для CreateFile здесь ... Могу выполнить эту работу. – usr

ответ

1

Как вы открыть зашифрованный файл, чтобы прочитать его сырые зашифрованное содержимое (например, для резервного копирования/восстановления) заключается в использовании:

апи функции.

Написание кода на лету, в гипотетическом гибридном языке:

void ExportEncryptedFileToStream(String filename, Stream targetStream) 
{ 
    Pointer context; 

    res = OpenEncryptedFileRaw("C:\Users\Ian\wallet.dat", 0, ref context); 
    if (res <> ERROR_SUCCESS) 
     RaiseWin32Error(res); 
    try 
    { 
     res = ReadEncryptedFileRaw(exportCallback, null, context); 
     if (res != ERROR_SUCCESS) 
     RaiseWin32Error(res); 
    } 
    finally 
    { 
     CloseEncryptedFileRaw(context) 
    } 
} 

function ExportCallback(pbData: PBYTE, pvCallbackContext: PVOID, ulLength: ULONG): DWORD 
{ 
    Stream targetStream = Stream(pvCallbackContext); 

    try 
    { 
     targetStream.Write(pbData, ulLength); 
    } 
    catch (Exception e) 
    { 
     return ERROR_WRITE_FAULT; 
    } 
    return ERROR_SUCCESS; 
} 

Примечание: Любой код выпущен в общественное достояние. Никакой атрибуции не требуется.

Смежные вопросы