Показать сообщение отдельно
Старый 14.11.2016, 11:25   #18
Новичок
 
Регистрация: 14.11.2016
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Stenly76 пока неопределено
По умолчанию

Цитата:
Сообщение от user713 Посмотреть сообщение
Ой чувствую щас за некропостинг получу по ушам, но всёже... В конце всех фалов закриптованных 413 алгоритмом присутствуют дополнительные 20 байт... Линейка 20 нулей прекрасно кушает, НО всёже интересно откуда l2encdec берет эти байты? Заметил что при изменении 413 на 414 меняются только 4 байта в конце. Крипт/декрипт свой сделал, но вот непойму что это в конце. Какая-то контрольная сумма? Кто знает как ее просчитать?

P.S: в оригинальных файлах ладвы эти байты в конце не пустые, собственно это и смущает...

P.P.S: а еще кому знакома цифра 143114 - подскажите как бороться, у меня уже моск вывернулся в непонятном направлении :\
и от меня некропост
это CRC32 взятый начиная с самого начала включая заголовок (Lineage2Ver) и по результат от Енкрипта (до выравнивания нулями)

Добавлено через 9 минут
Цитата:
Сообщение от Hint Посмотреть сообщение
Зато теперь есть общедоступная реализация на php и delphi

В интернете подробной информации нет. Про RSA понятно по l2encdec (вывод процесса распаковки). Сжатие - логично, потому что размер файла меньше (плюс DStuff написал про использование zlib у себя в USAGE). То, что сначала сжимают, а потом шифруют через RSA - тоже понятно (иначе бы ничего не сжималось Заголовок и CRC видно в hex-редакторе (размер остального кратен 128, что намекает на RSA и размер ключа и блоков).
Так что единственное темное пятно - ключи, а вот их нигде нет

Кстати, твой вариант не всегда будет работать, потому что в последнем блоке, который неполный, данные могут быть смещены (не знаю почему и зачем). Из-за этого пришлось добавить костыль:
PHP код:
    if ($size != 0x7c
    { 
      
$p strlen($s) - $size
      while (
$p && $s[$p 1] != "\0") --$p
      
$s substr($s$p$size); 
    } 
    else 
    { 
      
$s substr($s, -$size); 
    } 
Добавлено через 3 минуты
Честно говоря, копался в этом больше из-за любопытства, а не по необходимости. Началось с разбора нового 'itemname-*.dat' (l2disasm уже не помогает, поэтому пришлось писать свою программу), а потом захотелось разобраться и с l2encdec.
Похоже догадался: идет выравнивание до кратности в 4ре байта.

Последний раз редактировалось Stenly76, 14.11.2016 в 11:25. Причина: Добавлено сообщение
Stenly76 вне форума   Ответить с цитированием