CryptDecode com modificador CRYPT_ARCH_ZIP - Como usar? - página 3

 
Mikalas:

Vasiliy!

O arquivo não está quebrado?

Não, não é. Feito por mim pessoalmente através do 7zip para o teste.

Sanya percebeu corretamente: CryptDecode decodifica apenas parte comprimida do arquivo, mas como fazer para decodificar esta parte comprimida permanece um mistério.

 

Upload

7zip e zip simples

Talvez a 7zip não seja suportada?

 
Mikalas:

Upload

7zip e apenas zip

O empacotador é 7zip, o arquivo é zip. Outros empacotadores dão o mesmo resultado. Você pode verificá-lo por si mesmo. Pegue qualquer arquivo, embale-o com qualquer empacotador de zíper. Tente desembalar o arquivo resultante (.zip) com CrypеDecode. - Receberemos um erro de desempacotamento. Mas a questão não é nem mesmo sobre o erro de desempacotar todo o arquivo, a questão é como configurar o CryptDecode para poder desempacotar a partição empacotada do arquivo zip.
 
C-4:
O empacotador é 7zip, o arquivo é zip. Outros empacotadores dão o mesmo resultado. Você mesmo pode verificá-lo. Pegue qualquer arquivo, embale com qualquer empacotador de zíper. Tente desembalar o arquivo resultante (.zip) com CrypеDecode. - Receberemos um erro de desempacotamento. Mas a questão não é nem mesmo sobre o erro de desempacotar todo o arquivo, a questão é como configurar o CryptDecode para poder desempacotar a partição empacotada do arquivo zip.

:)

Seu arquivo não será aberto!

ir para

if ( handle != INVALID_HANDLE )
 
C-4:
questionar como configurar o CryptDecode para ser capaz de descompactar uma partição embalada a partir de um arquivo zip.

pode ajudar

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!

Você não o fez direito, mas também não funciona direito :(

Erro interno inesperado:

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!

Você não o fez bem, mas também não funciona :(

Eu o fiz bem. O arquivo não abre porque deveria estar no diretório COMMON, é mais conveniente para mim.

Key[] não tem que corresponder ao tamanho da fonte.

sanyooooooook:

pode ajudar

http://blog2k.ru/archives/3392

Não posso investir no desenvolvimento de uma classe para leitura de zip a menos que tenha documentação em mãos e esteja confiante de que a função CryptDecode abrirá corretamente a matriz comprimida. Manipular a estrutura de um arquivo zip é uma tarefa trivial. Preciso entender exatamente por que os dados embalados do zip regular não correspondem aos dados embalados da CryptDecode(). Em outras palavras, você precisa entender exatamente porque as seções amarelas dos dois arquivos não correspondem:

 

E tente criar um ZIP comCryptEncode(),

talvez a MQ use seu próprio método de criptografia semelhante ao ZIP

 
Mikalas:

E tente criar um ZIP comCryptEncode(),

talvez a MQ use seu próprio método de criptografia semelhante ao ZIP

bem, ele faz, e então o compara com a saída do arquivador regular
 
C-4:

Não posso investir no desenvolvimento de uma classe para ler um Zip a menos que eu tenha documentação e confiança de que a função CryptDecode irá descompactar corretamente a matriz comprimida. Lidar com a estrutura de um arquivo zip é uma tarefa trivial. O que eu preciso entender é por que os dados embalados regularmente no zip não correspondem aos dados embalados pela CryptDecode(). Em outras palavras, você precisa entender exatamente porque as seções amarelas dos dois arquivos não correspondem:

esperar por uma resposta da MQ seria provavelmente mais rápido )