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

 

Vasiliy!

Você obteve uma resposta?

 
Ainda não. Acho que eles vão ler esta linha e responder aqui mesmo. Aguardando.
 
Favor formar uma lista clara de perguntas.

A função funciona com um buffer de dados separado, não com arquivos de arquivo.
O algoritmo deflate é usado, e a função foi introduzida para ser usada no WebRequest, caso a resposta seja colhida pelo servidor.

O parâmetro-chave não é utilizado.
 
mql5:
Favor formar uma lista clara de perguntas.

A função funciona com o buffer de dados individual, não com os arquivos de arquivo.
O algoritmo de deflação é usado, e a função foi introduzida para ser usada no WebRequest, caso a resposta seja frita pelo servidor.

O parâmetro-chave não é utilizado.

Boa tarde!

Uma pergunta, o que significam os 4 bytes no final doCryptEncode() com o parâmetro CRYPT_ARCH_ZIP?

Se você usar o algoritmo dedeflação, você também pode descomprimir os arquivos ZIP sabendo como obter esses 4 bytes.

( Exemplo de descompilador ZIP na página 6)

 
Mikalas:

Boa tarde!

Uma pergunta, o que significam os 4 bytes no final doCryptEncode() com o parâmetro CRYPT_ARCH_ZIP?

Isto é para o controle de integridade, ADLER32 ou CRC32 (depende dos parâmetros de arquivamento (Adler32 é sempre usado em MQL) e pode estar faltando) dos dados da fonte
 
e os primeiros 2 bytes?
 
sanyooooook:
mas os primeiros 2 bytes?

O mais provável é que seja:

0x78 - sinal de dados embalados

0x5E - método de compressão

Estes bytes não mudam (eu verifiquei)

 
mql5:
Isto é para o controle de integridade, ADLER32 ou CRC32 (pode não existir) a partir dos dados de origem

Obrigado.

ZIP sem 4 bytes e CRC32 do arquivo ZIP não é desempacotado :(

Vasiliy, nosso empreendimento não vai funcionar

A menos, é claro, que os caras da MQ nos encontrem na metade do caminho e acrescentem uma bandeira para

funçãoCryptDecode(CRYPT_ARCH_ZIP, dados, chave, resultado,NO_READ_CRC) ;

ou tirar CRC32 do arquivo ZIP:

CryptDecode(CRYPT_ARCH_ZIP, dados, chave, resultado,USE_CRC_FROM_ZIP) ;

struct ZIP_HEADER
{
  uint   sign;
  ushort a_version;
  ushort bit_flag;
  ushort comp_method;
  ushort last_mod_time;
  ushort last_mod_date;
  //uint   crc_32;
  uchar  ll_crc;
  uchar  lh_crc;
  uchar  hl_crc;
  uchar  hh_crc;
  uint   pack_size;
  uint   unpack_size;
  ushort fn_len;
  ushort extr_field_len;
};
 
Mikalas:

Obrigado.

ZIP sem 4 bytes e CRC32 do arquivo ZIP não é desempacotado :(

Vasily, nossa idéia não vai funcionar.

A menos, é claro, que os caras da MQ nos encontrem na metade do caminho e acrescentem uma bandeira em

funçãoCryptDecode(CRYPT_ARCH_ZIP, dados, chave, resultado,NO_READ_CRC) ;

Podemos tentar escorregar em quatro bytes vazios?

mql5:
Isto é para o controle de integridade, ADLER32 ou CRC32 (depende dos parâmetros de arquivamento (MQL sempre usa Adler32) e não pode) dos dados da fonte
 
C-4:

Talvez tentar escorregar em quatro bytes vazios?

Eu tentei sem os últimos 4 bytes e com os últimos 4 bytes "0" - não funciona :(