CryptDecode avec modificateur CRYPT_ARCH_ZIP - Comment l'utiliser ?

 

La vraie question est la suivante. Si j'ai bien compris, nous parlons de l'emballage et du déballage d'un réseau zippé. C'est une chose méga utile, mais je ne peux pas l'utiliser, la fonction CryptDecode s'entête à donner un résultat nul sur l'archive zip de test :

//+------------------------------------------------------------------+
//| 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));
  }

Peut-être que quelque chose d'autre doit être spécifié comme clé, ou bien j'ai une idée fausse de la valeur du modificateur CRYPT_ARCH_ZIP. En tout cas, la documentation ne contient pas d'exemple de la fonction, ce qui rend difficile la compréhension de son fonctionnement. La fonction GetLastError écrit 4001 - Unexpected Internal Error.

 
C-4:

La vraie question porte sur le sous-titre. Si j'ai bien compris, nous parlons de l'emballage et du déballage d'un réseau zippé. C'est une chose méga utile, mais je ne peux pas l'utiliser, la fonction CryptDecode s'entête à donner un résultat nul sur l'archive zip de test :

Peut-être que quelque chose d'autre doit être spécifié comme clé, ou bien j'ai une idée fausse de la valeur du modificateur CRYPT_ARCH_ZIP. Dans tous les cas, il n'y a pas d'exemple d'utilisation de la fonction dans la documentation, ce qui rend beaucoup plus difficile la compréhension de son fonctionnement. La fonction GetLastError écrit 4001 - Unexpected Internal Error.

mauvaise approche
 
sanyooooook:
pas la bonne approche
Plus de détails si vous le pouvez.
 

Une archive ZIP est une structure entière, mais la fonction archive/désarchive un tableau, c'est-à-dire que seul un tableau prêt à être désarchivé devrait être placé là.

En gros, il ne désarchive que la sortie de la fonction d'archivage.

 
C-4:
Plus de détails si vous le pouvez.
Ou quoi dans
link.zip
a été créé par la fonction d'archivage ?
 
sanyooooook:

Une archive ZIP est une structure entière, mais la fonction archive/désarchive un tableau, c'est-à-dire que seul un tableau prêt à être désarchivé devrait être placé là.

En gros, il ne désarchive que la sortie de la fonction d'archivage.

Je l'ai. Style MQ. L'essentiel est de décrypter le zip. Personne ne dispose-t-il d'une bibliothèque pour travailler avec des archives zip dans MQL ?
 
sanyooooook:
ou ce qui, sur
, a été créé par la fonction d'archivage ?
Non, ça dit zéro. CryptDecode décode le zip. J'ai essayé de créer une archive zip - les réponses de CryptEncode ne correspondent pas à celles des archiveurs habituels. Le fichier zippé de CryptEncode est beaucoup plus court, ce qui confirme indirectement votre théorie !
 
voici une description de la structure du fichier 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:
Non, ça dit zéro. CryptDecode décode le zip. J'ai essayé de créer une archive zip, CryptEncode et les archiveurs normaux ne correspondent pas. CryptEncode rend le fichier zippé beaucoup plus court, ce qui confirme indirectement votre théorie !

Ce n'est pas une théorie, c'est juste qu'ils ont l'habitude d'avoir tout prêt dans l'archiveur,

J'ai bêtement pensé que cela dézipperait des fichiers créés avec un archiveur normal.

 

Le problème est que je ne peux pas trouver les occurrences des tableaux d'octets donnés par CryptEncode dans une archive zip normale.

Le dossier est le même. Ainsi, dans une archive zip classique, il devrait y avoir un byte-array correspondant au byte-array CryptEncode

 
C-4:

Le problème est que je ne peux pas trouver les occurrences des tableaux d'octets émis par CryptEncode dans une archive zip normale.

), donc vous regardez dans le mauvais sens.