CryptDecode con modificador CRYPT_ARCH_ZIP - ¿Cómo utilizarlo?

 

La pregunta real es esta. Según tengo entendido, estamos hablando de empaquetar/desempaquetar la matriz de cremallera. Es algo mega útil, pero no puedo usarlo, la función CryptDecode da obstinadamente un resultado nulo en el archivo zip de prueba:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   uchar array[];
   uchar key[]={0};
   uchar result[];
   int handle = FileOpen("link.zip", FILE_READ|FILE_BIN|FILE_COMMON);
   FileReadArray(handle, array);
   FileClose(handle);
   int d = CryptDecode(CRYPT_ARCH_ZIP, array, key, result);
   printf(GetLastError());
   printf("Read totals: " + (string)ArraySize(array));
  }

Quizás haya que especificar algo más como clave, o tengo una idea equivocada sobre el valor del modificador CRYPT_ARCH_ZIP. En cualquier caso, no hay ningún ejemplo de cómo utilizar la función en la documentación, lo que hace mucho más difícil entender su funcionamiento. La función GetLastError escribe 4001 - Unexpected Internal Error.

 
C-4:

La pregunta real es esta. Según tengo entendido, estamos hablando de empaquetar/desempaquetar la matriz de cremallera. Es algo mega útil, pero no puedo usarlo, la función CryptDecode da obstinadamente un resultado nulo en el archivo zip de prueba:

Tal vez debería especificarse algo más como clave, o tengo una idea equivocada sobre el valor del modificador CRYPT_ARCH_ZIP. En cualquier caso, la documentación no contiene un ejemplo de la función, lo que dificulta la comprensión de su funcionamiento. La función GetLastError escribe 4001 - Unexpected Internal Error.

enfoque erróneo
 
sanyooooook:
no es el enfoque correcto
Más detalles si puedes.
 

Un archivo ZIP es una estructura completa, pero la función archiva/desarchiva un array, es decir, sólo debe colocarse un array listo para desarchivar.

A grandes rasgos, sólo desarchiva la salida de la función de archivo.

 
C-4:
Más detalles si puedes.
O lo que en
link.zip
ha sido creado por la función de archivo?
 
sanyooooook:

El archivo ZIP es una estructura completa, pero la función archiva/desarchiva un array, es decir, sólo debe colocarse un array listo para desarchivar.

A grandes rasgos, sólo desarchiva la salida de la función de archivo.

Lo tengo. Estilo MQ. Sin embargo, lo principal es descifrar el zip. ¿Nadie tiene por casualidad una biblioteca para trabajar con archivos zip en MQL?
 
sanyooooook:
o lo que en
fue creado por la función de archivo?
No, dice cero. CryptDecode descifra el zip. Intenté crear un archivo zip - las respuestas de CryptEncode no coinciden con las de los archivadores normales. El archivo comprimido de CryptEncode es mucho más corto, lo que confirma indirectamente tu teoría.
 
aquí se describe la estructura de los archivos http://blog2k.ru/archives/3391
Описание формата ZIP файла
  • 2014.05.29
  • Евгений Жирнов (jirnov@gmail.com)
  • blog2k.ru
ZIP файл состоит из трех областей: сжатые/несжатые данные, (последовательность структур Local File Header, сами данные и необязательных Data descriptor)центральный каталог (последовательность структур Central directory file header)описание центрального каталога (End of central directory record) С начала файла идет набор из Local File Header...
 
C-4:
No, dice cero. CryptDecode descifra el zip. He intentado crear un archivo zip, CryptEncode y los archivadores normales no coinciden. CryptEncode hace que el archivo comprimido sea mucho más corto, lo que confirma indirectamente tu teoría.

No es una teoría, es que están acostumbrados a tenerlo todo listo en el archivador,

Tontamente pensé que descomprimiría los archivos hechos con un archivador normal.

 

El problema es que no puedo encontrar las ocurrencias de la matriz de bytes dadas por CryptEncode en un archivo zip normal.

El archivo es el mismo. Así, en un archivo zip clásico, debería haber una matriz de bytes correspondiente a la matriz de bytes CryptEncode

 
C-4:

El problema es que no puedo encontrar las ocurrencias de la matriz de bytes dadas por CryptEncode en un archivo zip normal.

), por lo que estás buscando en el camino equivocado.