CryptDecode avec modificateur CRYPT_ARCH_ZIP - Comment l'utiliser ? - page 3

 
Mikalas:

Vasiliy !

L'archive n'est pas cassée ?

Non, ça ne l'est pas. Fait par moi personnellement via 7zip pour le test.

Sanya l'a bien remarqué : CryptDecode ne décode que la partie compressée de l'archive, mais la façon de lui faire décoder cette partie compressée reste un mystère.

 

Télécharger

7zip et zip simple

Peut-être que 7zip n'est pas supporté ?

 
Mikalas:

Télécharger

7zip et juste zip

L'emballeur est 7zip, l'archive est zip. D'autres emballeurs donnent le même résultat. Vous pouvez le vérifier par vous-même. Prenez n'importe quel fichier, emballez-le avec n'importe quel packer zip. Essayez de décompresser l'archive résultante (.zip) avec CrypеDecode. - Nous obtiendrons une erreur de déballage. Mais la question ne concerne pas l'erreur de décompression de l'archive entière, la question est de savoir comment configurer CryptDecode pour pouvoir décompresser la partition compressée à partir de l'archive zip.
 
C-4:
L'emballeur est 7zip, l'archive est zip. D'autres emballeurs donnent le même résultat. Vous pouvez le vérifier vous-même. Prenez n'importe quel fichier, emballez avec n'importe quel emballeur zip. Essayez de décompresser l'archive résultante (.zip) avec CrypеDecode. - Nous obtiendrons une erreur de déballage. Mais la question ne concerne pas l'erreur de décompression de l'archive entière, la question est de savoir comment configurer CryptDecode pour pouvoir décompresser la partition compressée à partir de l'archive zip.

:)

Votre fichier ne s'ouvre pas !

aller à

if ( handle != INVALID_HANDLE )
 
C-4:
question comment configurer CryptDecode pour pouvoir décompresser une partition emballée à partir d'une archive zip.

pourrait aider

http://blog2k.ru/archives/3392

Чтение ZIP файла
  • 2014.06.04
  • Евгений Жирнов (jirnov@gmail.com)
  • blog2k.ru
Алгоритм получения данных из ZIP файла: находим запись EOCDзагружаем записи Central directory file headerдля каждой Central directory file header, находим и загружаем Local File Headerданные располагаются сразу после Local File Header, иногда размер данных записывается после самих данных в структуру Data descriptor, об этом сигнализирует флаг...
 

Vasiliy !

Tu ne l'as pas bien fait, mais ça ne marche pas bien non plus :(

Erreur interne inattendue :

uchar array[];
   uchar key[];
   uchar result[];
   int handle = FileOpen( "test.zip", FILE_READ|FILE_BIN );
   if ( handle != INVALID_HANDLE )
   {
     uint array_size = FileReadArray( handle, array );
     FileClose( handle );
     
     Print( "Read totals: ", array_size );
     ArrayResize( key, array_size );
     for ( int i = 0; i < int( array_size ); i++ ) key[i] = 0;
     ResetLastError();
     int d = CryptDecode( CRYPT_ARCH_ZIP, array, key, result );
   
    if ( d < 1 )
     {
       Print( GetLastError() );
     } 
   }
 
Mikalas:

Vasiliy !

Tu ne l'as pas bien fait, mais ça ne marche pas non plus :(

Je l'ai bien fait. Le fichier ne s'ouvre pas car il devrait être dans le répertoire COMMON, c'est plus pratique pour moi.

Key[] ne doit pas nécessairement correspondre à la taille de la source.

sanyooooook:

pourrait aider

http://blog2k.ru/archives/3392

Je ne peux pas investir dans le développement d'une classe pour la lecture de zip à moins d'avoir de la documentation en main et d'être sûr que la fonction CryptDecode va dézipper correctement le tableau compressé. La manipulation de la structure d'un fichier zip est une tâche triviale. Ce que je dois comprendre, c'est pourquoi les données emballées du zip régulier ne correspondent pas à celles de CryptDecode(). En d'autres termes, je dois savoir exactement pourquoi les données zippées ne correspondent pas aux données emballées. En d'autres termes, vous devez comprendre exactement pourquoi les sections jaunes des deux fichiers ne correspondent pas :

 

Et essayez de créer un ZIP avecCryptEncode(),

peut-être que MQ utilise sa propre méthode de cryptage similaire au ZIP

 
Mikalas:

Et essayez de créer un ZIP avecCryptEncode(),

peut-être que MQ utilise sa propre méthode de cryptage similaire à celle du ZIP.

Et bien, il le fait, et ensuite il le compare à la sortie de l'archiveur régulier.
 
C-4:

Je ne peux pas investir dans le développement d'une classe pour lire un Zip si je n'ai pas la documentation et la confiance que la fonction CryptDecode va dézipper correctement le tableau compressé. Traiter la structure d'un fichier zip est une tâche triviale. Ce que j'ai besoin de comprendre est pourquoi les données emballées du zip régulier ne correspondent pas aux données emballées de CryptDecode(). En d'autres termes, vous devez comprendre exactement pourquoi les sections jaunes des deux fichiers ne correspondent pas :

attendre une réponse de MQ serait probablement plus rapide ;)