Реверс инженеринг (алгоритма сжатия)

OtherSide
Уже с Приветом
Posts: 8079
Joined: 01 Mar 2008 15:14

Реверс инженеринг (алгоритма сжатия)

Post by OtherSide » 13 Jun 2018 12:56

Попала в руки древняя софтина, из которой нужно выжать данные.
Определил, что использует БД firebird, часть полей зашифрована
Смог определить соответвие зашифрованным данным, и разшифрованым.
Алгоритм шифрования на 99% один и тот же, т.к. копировал и подсовывал для чтения программе данные и она их читала. Если ручками вносить помехи пишет Read stream error

Image

расшифровывается вот в такое
2=1.17;7=1.17;8=1.17;$$$$
Первые 3 символа понятно что - длина в HEX (20 - длина потока 32 байта, первая 2 длина '20')

Думаю, что это остальные это какой то стандартный алгоритм сжатия. На эти мысли наводит то, что выходные строки, отличающиеся на 1-2 символа зашифрованы с отличием где-то 20-30%, остальное так же

Подскажите куда копать, чем может быть запаковано

User avatar
Boriskin
Уже с Приветом
Posts: 17467
Joined: 30 Aug 2001 09:01
Location: RU-BE-ON-QC-ON

Re: Реверс инженеринг (алгоритма сжатия)

Post by Boriskin » 13 Jun 2018 15:33

Какая ось, какой объем шифрования/сжатия (отдельные строки, килобайты етс), примерный возраст софта и насколько быстро происходит сжатие - разжатие? Требуется ли вводить пароль или оно само распаковывается?
Ответы на эти вопросы могут существенно уменьшить кол-во кандидатов.
Тупизна как Энтропия. Неумолимо растет.

OtherSide
Уже с Приветом
Posts: 8079
Joined: 01 Mar 2008 15:14

Re: Реверс инженеринг (алгоритма сжатия)

Post by OtherSide » 13 Jun 2018 15:43

Boriskin wrote:
13 Jun 2018 15:33
Какая ось, какой объем шифрования/сжатия (отдельные строки, килобайты етс), примерный возраст софта и насколько быстро происходит сжатие - разжатие? Требуется ли вводить пароль или оно само распаковывается?
Ответы на эти вопросы могут существенно уменьшить кол-во кандидатов.
На самом деле обновления софта происходят до сих пор, но судя по всему был начат в какой то гос конторе чуть ли в 90х, БД FireBird и похоже это написано на делфи.
Расжатие происходит мгновенно, там зашифрованы отдельные строки, объем - ну как обычно в БД объем строк с наименованиями.. в пределах 200-300 символов. Для юзера вообще это шифрование никак незаметно, столкнулся уже когда возникла потребоность перенести базу в MSSQL и использовать в своей версии софта.

Вот скрин из ib expert для наглядности

https://snag.gy/vmM0YN.jpg

Image

User avatar
AndreyT
Уже с Приветом
Posts: 2989
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: Реверс инженеринг (алгоритма сжатия)

Post by AndreyT » 13 Jun 2018 16:01

Так а что показывает статистика по более длинным строкам: это все таки делается ради сжатия или ради шифрования?
Best regards,
Андрей

OtherSide
Уже с Приветом
Posts: 8079
Joined: 01 Mar 2008 15:14

Re: Реверс инженеринг (алгоритма сжатия)

Post by OtherSide » 13 Jun 2018 16:13

AndreyT wrote:
13 Jun 2018 16:01
Так а что показывает статистика по более длинным строкам: это все таки делается ради сжатия или ради шифрования?
я на 90% уверен что это просто самопальная защита от копирования данных. Вот посчитал строку на экране, получилось 238 (или около того), в БД зашифрованная 250 байт
подозрение на то что упакованная каким то алгоритмом, потом что строки в упакованном виде очень похожи, если распакованные данные отличаются на 1-2 символа. А я насколько знаю, современные виды шифрования при замене одного символа меняют строку до неузнаваемости
Image
Last edited by OtherSide on 13 Jun 2018 16:19, edited 1 time in total.

User avatar
Boriskin
Уже с Приветом
Posts: 17467
Joined: 30 Aug 2001 09:01
Location: RU-BE-ON-QC-ON

Re: Реверс инженеринг (алгоритма сжатия)

Post by Boriskin » 13 Jun 2018 16:17

Позырь, может это LZ/LZW фигня. Оно старинное и широко применяется в раскладах когда надо иметь возможность что-то разжать очень быстро и без вычислительных затрат, а одноразовые затраты на сжатие не волнуют.

ЗЫ Самопал - это было бы слишком сложно :-)
Тупизна как Энтропия. Неумолимо растет.

OtherSide
Уже с Приветом
Posts: 8079
Joined: 01 Mar 2008 15:14

Re: Реверс инженеринг (алгоритма сжатия)

Post by OtherSide » 13 Jun 2018 16:22

Boriskin wrote:
13 Jun 2018 16:17
Позырь, может это LZ/LZW фигня. Оно старинное и широко применяется в раскладах когда надо иметь возможность что-то разжать очень быстро и без вычислительных затрат, а одноразовые затраты на сжатие не волнуют.

ЗЫ Самопал - это было бы слишком сложно :-)
я так понимаю в алгоритмах сжатия получается словарь + сам текст, а где тут словарь не понятно и как без него проверить алгоритм

User avatar
Flash-04
Уже с Приветом
Posts: 54853
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Реверс инженеринг (алгоритма сжатия)

Post by Flash-04 » 13 Jun 2018 18:20

Я так понял автор не умеет дизассемблером пользоваться, иначе бы тему не создавал.
Not everyone believes what I believe but my beliefs do not require them to.

OtherSide
Уже с Приветом
Posts: 8079
Joined: 01 Mar 2008 15:14

Re: Реверс инженеринг (алгоритма сжатия)

Post by OtherSide » 13 Jun 2018 18:34

Дизасемблером да пользовался последний раз лет 15 назад даже не знаю что сейчас используют. Поставил IDA под ним приложение не запускается

OtherSide
Уже с Приветом
Posts: 8079
Joined: 01 Mar 2008 15:14

Re: Реверс инженеринг (алгоритма сжатия)

Post by OtherSide » 14 Jun 2018 19:04

пробовал загружать программу через IDA - при запуске вылетает.
к процессу вроде цепляется, но куда ставить брекпоинт?

если руками править значения в базе, вылетает окошко stream read error. На вылет этого окошка можно поставить брекпоинт, что бы дойти через callstack до нужного места

User avatar
VovaK98
Уже с Приветом
Posts: 1430
Joined: 04 Mar 2002 10:01
Location: Tampa

Re: Реверс инженеринг (алгоритма сжатия)

Post by VovaK98 » 14 Jun 2018 20:33

XOR
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.

User avatar
ALV00
Уже с Приветом
Posts: 1095
Joined: 08 Mar 2002 10:01
Location: MA

Re: Реверс инженеринг (алгоритма сжатия)

Post by ALV00 » 14 Jun 2018 21:20

Flash-04 wrote:
13 Jun 2018 18:20
Я так понял автор не умеет дизассемблером пользоваться, иначе бы тему не создавал.
А Вы, Flash, должны вообще такие задачи в уме решать :) Это же простейшее упражнение на криптоанализ.

User avatar
AndreyT
Уже с Приветом
Posts: 2989
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: Реверс инженеринг (алгоритма сжатия)

Post by AndreyT » 14 Jun 2018 22:20

ALV00 wrote:
14 Jun 2018 21:20
Flash-04 wrote:
13 Jun 2018 18:20
Я так понял автор не умеет дизассемблером пользоваться, иначе бы тему не создавал.
А Вы, Flash, должны вообще такие задачи в уме решать :) Это же простейшее упражнение на криптоанализ.
Вы имеете в виду

Image

или

Image

???
Best regards,
Андрей

User avatar
Uzito
Уже с Приветом
Posts: 4783
Joined: 06 Feb 2002 10:01
Location: NJ, USA

Re: Реверс инженеринг (алгоритма сжатия)

Post by Uzito » 14 Jun 2018 22:25

Сдается мне это обычный XOR длинной маской.

VladDod
Уже с Приветом
Posts: 45933
Joined: 06 May 2001 09:01

Re: Реверс инженеринг (алгоритма сжатия)

Post by VladDod » 14 Jun 2018 23:12

Извиняюсь ... а это не банальный вопрос кодировки второй половины ASCII ?

Windows-1251----->Привет
КОИ-8 -------------->оПХБЕР
DOS-866 ----------->ЏаЁўҐв
в реале супруги редко бывают друзьями, так как их отношения подпорчены сексом (с)Роза
Плавали-Знаем! (C)

User avatar
ALV00
Уже с Приветом
Posts: 1095
Joined: 08 Mar 2002 10:01
Location: MA

Re: Реверс инженеринг (алгоритма сжатия)

Post by ALV00 » 15 Jun 2018 00:25

AndreyT wrote:
14 Jun 2018 22:20
Вы имеете в виду
или
???
Например, так
phpBB [video]

User avatar
Flash-04
Уже с Приветом
Posts: 54853
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Реверс инженеринг (алгоритма сжатия)

Post by Flash-04 » 15 Jun 2018 01:59

ALV00 wrote:
14 Jun 2018 21:20
Flash-04 wrote:
13 Jun 2018 18:20
Я так понял автор не умеет дизассемблером пользоваться, иначе бы тему не создавал.
А Вы, Flash, должны вообще такие задачи в уме решать :) Это же простейшее упражнение на криптоанализ.
может и должен, но не хочу :D я уже затрахался на работе всеми этими упражнениями заниматься. дайте отдохнуть наконец!!!
Not everyone believes what I believe but my beliefs do not require them to.

User avatar
AndreyT
Уже с Приветом
Posts: 2989
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: Реверс инженеринг (алгоритма сжатия)

Post by AndreyT » 15 Jun 2018 03:41

VladDod wrote:
14 Jun 2018 23:12
Извиняюсь ... а это не банальный вопрос кодировки второй половины ASCII ?

Windows-1251----->Привет
КОИ-8 -------------->оПХБЕР
DOS-866 ----------->ЏаЁўҐв
Тема не будет полна без упоминания "бНОПНЯ ВХРЮК?", тем более что возможность более чем подходящая :)
Best regards,
Андрей

OtherSide
Уже с Приветом
Posts: 8079
Joined: 01 Mar 2008 15:14

Re: Реверс инженеринг (алгоритма сжатия)

Post by OtherSide » 15 Jun 2018 20:35

VladDod wrote:
14 Jun 2018 23:12
Извиняюсь ... а это не банальный вопрос кодировки второй половины ASCII ?

Windows-1251----->Привет
КОИ-8 -------------->оПХБЕР
DOS-866 ----------->ЏаЁўҐв
дело не в кодировке, т.к. не прослеживается посимвольного соответвия, и длина не совпадает с оригиналом.
Подозрения что это пожато, а не зашифровано, т.к. похожие надписи с разным окончанием (отличающимся не сильно, т.е. на 3-5 символов) тоже отличаются в конце. Надписи, которые начинаются одинаково, но вторая половина другая отличаются в начале и в конце. Поэтому подозрение, что там в начале словарь для разжатия, а дальше поток битов

Return to “Вопросы и новости IT”