Скачать MetaTrader 5

CryptDecode с модификатором CRYPT_ARCH_ZIP - Как использовать?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vasiliy Sokolov
23170
Vasiliy Sokolov  

Собственно вопрос в сабже. Как понимаю, речь идет именно об упаковке/распаковке zip массива. Это мегаполезная штука, вот только у меня не получилось ее использовать, функция CryptDecode упорно выдает ноль на тестовом zip архиве:

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

Возможно что-то другое надо указать в качестве ключа, или я не правильно понимаю значение модификатора CRYPT_ARCH_ZIP. В любом случае, в документации нет примера работы с функцией, что существенно осложняет ее понимание работы. Функция GetLastError пишет 4001 - Неожиданная внутренняя ошибка.

Alexandr Bryzgalov
31273
Alexandr Bryzgalov  
C-4:

Собственно вопрос в сабже. Как понимаю, речь идет именно об упаковке/распаковке zip массива. Это мегаполезная штука, вот только у меня не получилось ее использовать, функция CryptDecode упорно выдает ноль на тестовом zip архиве:

Возможно что-то другое надо указать в качестве ключа, или я не правильно понимаю значение модификатора CRYPT_ARCH_ZIP. В любом случае, в документации нет примера работы с функцией, что существенно осложняет ее понимание работы. Функция GetLastError пишет 4001 - Неожиданная внутренняя ошибка.

не верный подход
Vasiliy Sokolov
23170
Vasiliy Sokolov  
sanyooooook:
не верный подход
Подробней если можно.
Alexandr Bryzgalov
31273
Alexandr Bryzgalov  

ZIP-архив эта целая структура, функция же архивирует\разархивирует массив, т.е. сувать туда нужно только готовый для деархивации массив.

грубо говоря, разархивирует только то, что получается на выходе архивирующей функции.

Alexandr Bryzgalov
31273
Alexandr Bryzgalov  
C-4:
Подробней если можно.
или то что в
link.zip
было создано функцией архивации?
Vasiliy Sokolov
23170
Vasiliy Sokolov  
sanyooooook:

ZIP-архив эта целая структура, функция же архивирует\разархивирует массив, т.е. сувать туда нужно только готовый для деархивации массив.

грубо говоря, разархивирует только то, что получается на выходе архивирующей функции.

Понятно. В стиле MQ. Хотя главное есть - дешифровка zip'а. Не у кого нет случайно библиотеки по работе с zip-архивами на MQL?
Vasiliy Sokolov
23170
Vasiliy Sokolov  
sanyooooook:
или то что в
было создано функцией архивации?
Не, пишет ноль. CryptDecode декодирует zip. Пробовал создавать zip архив - ответы CryptEncode с штатными архиваторами не совпадают. У CryptEncode заархивированный файл получается гораздо короче, что косвенно подтверждает, твою теорию!
Alexandr Bryzgalov
31273
Alexandr Bryzgalov  
вот описание структуры файла 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...
Alexandr Bryzgalov
31273
Alexandr Bryzgalov  
C-4:
Не, пишет ноль. CryptDecode декодирует zip. Пробовал создавать zip архив - ответы CryptEncode с штатными архиваторами не совпадают. У CryptEncode заархивированный файл получается гораздо короче, что косвенно подтверждает, твою теорию!

это не теория это так и есть, просто привыкли что в архиваторе всё готовое,

я тоже с дуру подумал что разархивирует файлы сделанные нормальным архиватором.

Vasiliy Sokolov
23170
Vasiliy Sokolov  

Проблема в том, что я не нахожу вхождений байт-массива выданного CryptEncode в обысном zip архиве.

 

Файл один и тотже. Значит в классическом zip архиве, должен быть участок соответсвующий байт-коду выданному функцией CryptEncode 

Alexandr Bryzgalov
31273
Alexandr Bryzgalov  
C-4:

Проблема в том, что я не нахожу вхождений байт-массива выданного CryptEncode в обысном zip архиве.

 

), значит не так ищешь.
12345678...10
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий