CryptDecode mit Modifikator CRYPT_ARCH_ZIP - Wie verwenden? - Seite 3

 
Mikalas:

Wassilij!

Ist das Archiv nicht kaputt?

Nein, das ist es nicht. Von mir persönlich mit 7zip für den Test erstellt.

Sanya hat richtig bemerkt: CryptDecode dekodiert nur den komprimierten Teil des Archivs, aber wie man es dazu bringt, diesen komprimierten Teil zu dekodieren, bleibt ein Rätsel.

 

Hochladen

7zip und einfaches zip

Vielleicht wird 7zip nicht unterstützt?

 
Mikalas:

Hochladen

7zip und einfach zippen

Der Packer ist 7zip, das Archiv ist zip. Andere Packer kommen zu demselben Ergebnis. Sie können es selbst überprüfen. Nehmen Sie eine beliebige Datei und packen Sie sie mit einem beliebigen Zip-Packer. Versuchen Sie, das resultierende Archiv (.zip) mit CrypеDecode zu entpacken. - Wir erhalten einen Entpackungsfehler. Aber die Frage ist nicht einmal der Fehler beim Entpacken des gesamten Archivs, die Frage ist, wie man CryptDecode so konfiguriert, dass es die gepackte Partition aus dem Zip-Archiv entpacken kann.
 
C-4:
Der Packer ist 7zip, das Archiv ist zip. Andere Packer kommen zu demselben Ergebnis. Sie können es selbst überprüfen. Nehmen Sie eine beliebige Datei und packen Sie sie mit einem beliebigen Zip-Packer. Versuchen Sie, das resultierende Archiv (.zip) mit CrypеDecode zu entpacken. - Wir erhalten einen Entpackungsfehler. Aber die Frage ist nicht einmal der Fehler beim Entpacken des gesamten Archivs, die Frage ist, wie man CryptDecode so konfiguriert, dass es die gepackte Partition aus dem Zip-Archiv entpacken kann.

:)

Ihre Datei lässt sich nicht öffnen!

gehen zu

if ( handle != INVALID_HANDLE )
 
C-4:
Frage, wie man CryptDecode so konfiguriert, dass es eine gepackte Partition aus einem Zip-Archiv dekomprimieren kann.

könnte helfen

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, об этом сигнализирует флаг...
 

Wassilij!

Sie haben es nicht richtig gemacht, aber es funktioniert auch nicht richtig :(

Unerwarteter interner Fehler:

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:

Wassilij!

Sie haben es nicht richtig gemacht, aber es funktioniert auch nicht :(

Ich habe es richtig gemacht. Die Datei lässt sich nicht öffnen, weil sie sich im COMMON-Verzeichnis befinden sollte, das ist für mich praktischer.

Key[] muss nicht mit der Größe der Quelle übereinstimmen.

sanyooooook:

könnte helfen

http://blog2k.ru/archives/3392

Ich kann nicht in die Entwicklung einer Klasse zum Lesen von zip investieren, solange ich keine Dokumentation zur Hand habe und mir sicher bin, dass die Funktion CryptDecode das komprimierte Array richtig entpackt. Der Umgang mit der Struktur einer Zip-Datei ist eine triviale Aufgabe. Ich muss genau verstehen, warum die gepackten Daten von regular zip nicht mit den gepackten Daten von CryptDecode() übereinstimmen. Mit anderen Worten: Sie müssen genau verstehen, warum die gelben Abschnitte der beiden Dateien nicht übereinstimmen:

 

Und versuchen Sie, ein ZIP mitCryptEncode() zu erstellen,

vielleicht verwendet MQ seine eigene Verschlüsselungsmethode ähnlich wie ZIP

 
Mikalas:

Und versuchen Sie, ein ZIP mitCryptEncode() zu erstellen,

vielleicht verwendet MQ seine eigene Verschlüsselungsmethode ähnlich wie ZIP

Nun, das tut es, und dann vergleicht es die Ausgabe mit der des regulären Archivierungsprogramms
 
C-4:

Ich kann nicht in die Entwicklung einer Klasse investieren, um ein Zip zu lesen, solange ich keine Dokumentation habe und nicht sicher bin, dass die CryptDecode-Funktion das komprimierte Array richtig entpackt. Der Umgang mit der Struktur einer Zip-Datei ist eine triviale Aufgabe. Was ich verstehen muss, ist, warum die gepackten Daten von regular zip nicht mit den gepackten Daten von CryptDecode() übereinstimmen. Mit anderen Worten: Sie müssen genau verstehen, warum die gelben Abschnitte der beiden Dateien nicht übereinstimmen:

auf eine Antwort von MQ zu warten, wäre wahrscheinlich schneller)