CryptDecode con modificador CRYPT_ARCH_ZIP - ¿Cómo utilizarlo? - página 8

 
Mikalas:
Lo he probado - no funciona :(

¿Entiendo que CryptDecode utiliza CRC32? - Si es así, puedes tomar el hash CRC32 del archivo y deslizarlo al final de la matriz empaquetada:

struct ZIP_HEADER
{
  ...
  ushort last_mod_date;
  uint   crc_32;            // Берем это число и помещаем его в конец массива, который нужно распаковать
  uchar  ll_crc;
  ...
};
Z.I. Ahora leo que el hash es un atributo opcional y en algunos casos se puede rellenar con ceros.
 

No, no CRC32, Adler32

(ellos corrigieron el texto, y ellos lo corrigieron y yo lo corregí - releer )

¡¡¡¡¡Escribí, no funciona!!!!!

 
Mikalas:

No, no CRC32, Adler32

(han corregido el texto, léelo de nuevo)

¡¡¡¡¡Escribí, no funciona!!!!!

Sí:

Mikalas:

... y el CRC32 del archivo ZIP que he pegado - no se descompone :(

 
Mikalas:

Gracias.

ZIP sin 4 bytes y CRC32 del archivo ZIP no se descompone :(

Vasily, nuestra idea no funcionará.

A menos que, por supuesto, los chicos de MQ se encuentren con nosotros a mitad de camino y añadan una bandera en

functionCryptDecode(CRYPT_ARCH_ZIP, data, key, result,NO_READ_CRC) ;

o tomar el CRC32 del archivo ZIP:

CryptDecode(CRYPT_ARCH_ZIP, data, key, result,USE_CRC_FROM_ZIP) ;

No es necesario añadir una bandera. Basta con cambiar CryptDecode para que acepte el código CRC, si existe. Si falta y el campo de código se rellena con ceros, no se utiliza el código CRC, eso es todo. Además, no todos los archivos pueden contener hash:

A veces es imposible calcular los datos en el momento de escribirLocalFileHeader, entonces se escribenceros encrc32,compressedSize yuncompressedSize, eltercer bit engeneralPurposeBitFlag se pone a uno y después deLocalFileHeader se añade una estructura comoData descriptor.

http://blog2k.ru/archives/3391

 
C-4:

No es necesario añadir una bandera. Simplemente cambie CryptDecode para que acepte el código CRC, si lo hay. Si no existe y el campo de código se rellena con ceros, el código CRC no se utiliza, eso es todo. Además, no todos los archivos pueden contener hash:

No sé cómo MQ implementó la función, así que hice algunas sugerencias

( quizás con una bandera les sea más fácil hacerlo)

 
¡Querido MQ! Por favor, denos una respuesta. ¿Podría hacer que la coincidencia de hash sea opcional?
 

Eso estaría muy bien.

Acceso rápido a un gran número de ficheros en un archivo ZIP

Una pequeña base de datos con acceso rápido a los archivos - ¡super!

Abra el ZIP - haga una tabla de correspondencia y "corra" a través de las compensaciones.

 

... Deben estar pensando.

Deben sorprenderse de que los artesanos locales encuentren un uso tan inesperado paraCRYPT_ARCH_ZIP.

Mikalas:

Eso estaría muy bien.
Acceso rápido a un gran número de ficheros en un archivo ZIP
Base de datos pequeña con acceso rápido a los archivos - ¡super!
Abrir ZIP - hacer una tabla de coincidencias y "correr" a través de las compensaciones.

+100 Archivar es muy útil. Con la conservación total del control del contenido por parte de MQ, por supuesto.

 
C-4:

... Deben estar pensando.

Deben sorprenderse de que los artesanos locales encuentren un uso tan inesperado paraCRYPT_ARCH_ZIP.

+100 Archivar es muy útil. Con la preservación total del control de contenidos de MQ, por supuesto. Los archivos exe y ejecutables dentro del archivo no deben ser.

¡Vasiliy!

No importa si hay un EXE o no.

Puedo "construir" un ejecutable a partir de archivos aparentemente sin importancia,

añadiendo o modificando bytes.

No es necesario utilizar el ZIP para hacerlo.

Mientras podamos descargar y guardar archivos, ¡hacer un EXE es pan comido!

 
Mikalas:

¡Vasiliy!

No importa si hay un EXE o no.

Puedo "construir" un archivo ejecutable a partir de archivos aparentemente sin importancia.

No es necesario utilizar el ZIP para ello.

De hecho, sí. Es posible cifrar un archivo ejecutable para que no se diferencie de un conjunto aleatorio de bytes.