Ошибка при шифровании в драйвере

Тема в разделе "WASM.WIN32", создана пользователем ksu_ant, 9 фев 2006.

Статус темы:
Закрыта.
  1. ksu_ant

    ksu_ant New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    273
    Здравствуйте! Выручайте пожалуйста!

    Не мог зайти на форум.

    Возникла проблема с шифрованием данных.

    Зашифровав в одном месте (в программе), не могу расшифровать в другом (в драйвере), и наоборот. Причем, зашифрованное программой, нормально читается другой. В драйвере вообще не получилось разобрать зашифрованное.

    Примеры алгоритмов шифрования/дешифрования (в программах) приведены в аттаче.

    Пытаюсь в драйвере зашифровать:



    ///////



    CRYPT_INFORMATION ka;

    UCHAR psrc[32],key[32];

    CHAR keyl[]="123456789";

    PCRYPT_DATA cd;

    union {

    DWORD32 devSect[4];

    LARGE_INTEGER li;

    } sect;

    memset(§,0,sizeof(sect));



    RtlCopyMemory(&key[0],&keyl[0],9);

    USHORT kt=2;

    ka.KeyType=kt;



    memset(&cd,0,sizeof(cd));



    symmetric_key aes;



    CreateKey(&ka,key,9,&aes);

    sect.li.QuadPart = 0;

    RtlCopyMemory(psrc,&Data,sizeof(Data));

    AESEncryptCBC(psrc,sizeof(Data),sect.devSect,&aes);

    status = ZwCreateFile(&FileHandle,

    FILE_APPEND_DATA,

    &objectAttributes,

    &IoStatus,

    0,

    FILE_ATTRIBUTE_NORMAL,

    FILE_SHARE_WRITE,

    FILE_OPEN_IF,

    FILE_SYNCHRONOUS_IO_NONALERT,

    NULL,

    0);

    ZwWriteFile(FileHandle,

    NULL,

    NULL,

    NULL,



    &IoStatus,

    &psrc,

    sizeof(Data),

    NULL,

    NULL );

    CloseDataFile(FileHandle);



    ////////



    Все функции шифрования точно такие же, как в программе, с теми же типами, etc.

    После этого программа не может расшифровать зашифрованное драйвером.

    Я думаю, что это я где-то напутал с типами данных.

    Судя по отладочным сообщениям, ключи в драйвере формируются как попало (непредсказуемо :derisive:).

    Так сделать, как в программе:

    PUCHAR key=NULL;

    ....

    key=(PUCHAR)&keyl;

    RtlCopyMemory(key,&keyl,9);

    ...

    не дает компилятор DDK, приходится так:



    RtlCopyMemory(&key[0],&keyl[0],9);



    Если ошибка именно здесь, а я все-таки думаю, что она здесь, подскажите, пожалуйста, как мне исправить приведение типов и заполнение переменной "Ключ" так, чтобы и заработало шифрование, и компилятор мне это все собрал.
     
  2. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    Найди этот кусок в полученном драйвере (sys) и приведи здесь или проверь что делает RtlCopyMemory (это должна быть разверка в rep movsd + movsb) - в hiew или ida.
     
  3. ksu_ant

    ksu_ant New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    273
    Если Вы о том, туда ли копируются данные, то, при выводе отладочного сообщения уже в функции создания ключа, пароль (123...) печатается верно, следовательно данные скопировались так как нужно.

    Найди этот кусок в полученном драйвере (sys) и приведи здесь или проверь что делает RtlCopyMemory (это должна быть разверка в rep movsd + movsb) - в hiew или ida.

    Сейчас, к сожалению, я не могу выполнить Вашу просьбу.
     
  4. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    вот возьми для отладки

    вызывается так

    dump(device_extension->password.Buffer,KEYLENGTH);



    [​IMG] 158263201__src.rar
     
  5. ksu_ant

    ksu_ant New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    273
    To staier

    Спасибо.

    Вот показали мне, что у меня инициализационный вектор в функциях шифрования и дешифрования имеет разный размер, так как алгоритм шифрования я копировал, то этого не заметил.

    В функции шифрования, - ULONG32 iv[4];

    дешифрования, - ULONG32 iv[8];

    Может ли это быть корнем проблемы?

    И еще мне посоветовали попробовать задать конкретные значения данному вектору.

    Кто по этому поводу может чего сказать (я сейчас не могу проверить).
     
  6. ksu_ant

    ksu_ant New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    273
    Выкладываю пример шифрующего и дешифрующего драйверов.

    Один должен записать шифрованные данные в файл, другой, - расшифровать и вывести отладочным сообщением содержимое файла. Расшифровать не получается.

    Посмотрите, пожалуйста, где содержится ошибка.

    Если можно, подскажите как ее исправить, чтобы обмен шифрованными данными проходил нормально.
     
  7. ksu_ant

    ksu_ant New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    273
    Если можно, напишите хотя-бы мысли по поводу данной проблемы.

    Помогите, пожалуйста. Совсем в тупике.
     
Статус темы:
Закрыта.