Протестируйте пару алгоримов энтропии

Тема в разделе "WASM.ZEN", создана пользователем AndreyMust19, 15 дек 2008.

  1. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Давно, несколько дней писал алгоритмы энтропии чтобы определять упакованные фрагменты программы. Но результаты до сих пор не удоволетворительные. Стандартный алгоритм с log2 очень неточный (даже если считать энтропию кусками по 256 байт и считать среднее арифметическое). Здесь приложено несколько лучших вариантов алгоритма (самые точные, которые получились) на Visual C++ 6.0. Если у кого есть очень точный аглоритм (фактически дающий отношение упакованного файла к оригиналу), поделитесь буду рад.
     
  2. meduza

    meduza New Member

    Публикаций:
    0
    AndreyMust19
    Это не энтропия.
    Энтропия определяется по формуле Шеннона как раз через log2 и "точнее" ее не бывает, ибо энтропия такая по определению.
     
  3. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    meduza
    Но я вроде писал через log2 - посмотри, может где ошибка!
     
  4. meduza

    meduza New Member

    Публикаций:
    0
    AndreyMust19
    я уже приводил пример подсчета энтропии "в лоб" по Шенноновской формуле. Я вовсе не спорю, что ее надо обязательно считать через log2, обязательно "в лоб". Есть много вариантов оптимизации. Но энтропия должна оставаться энтропией, а не становится неким числом, характеризующим "отношение упакованного файла к оригиналу".
     
  5. gazlan

    gazlan Member

    Публикаций:
    0
    Вот здесь: http://forum.compression.ru/viewtopic.php?t=2148&sid=9940c03aac27b02878b9caaec83e29d5 интересный комментарий.
     
  6. Proteus

    Proteus Member

    Публикаций:
    0
    В ядре у линуска есть энтропийный детектор. Довольно простой и удобный. Чуть побольше вашего, но слямзить процедуру для личный целей там несложно...
     
  7. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Proteus, подробности пожалуйста...
     
  8. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    у меня нет времени ковырять алго, спрошу только что будет на ситуацию: взять файл у которого есть одна секция кода скажем на 200h байт и добавить в него 25 секций с рандомным мусором, где каждая секция колеблется от 10.000 гексов до 50.000 гексов, что будет ?
     
  9. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
  10. Proteus

    Proteus Member

    Публикаций:
    0
    Там рандомный генератор прямо в ядро вставлен. Он мусор из всяких прерываный и прочего накапливает. А потом выдаёт кому-нибудь если надо. А за качеством некий энтропийный детектор следит. Какая-то довольно простенькая процедура. Математику его я понять так и не смог. Но внутри заметил таблицу из чисел для CRC32 (zip полином), только не целиком, а какую-то прореженную (помойму каждое 16-тое число таблицы). Штука судя по всему довольно серьёзная, хотя при этом, не особо большая.

    Когда буду подальше от работы, могу носом в нужный исходник в ядре (или даже строку) ткнуть. Хотя наверное и самому найти не трудно будет. Где-то области раномного генератора..