Разработка методов обеспечения безопасности использования информационных технологий, базирующихся на идеях стеганографии тема диссертации и автореферата по ВАК РФ 05.13.17, кандидат технических наук Нечта, Иван Васильевич
- Специальность ВАК РФ05.13.17
- Количество страниц 130
Оглавление диссертации кандидат технических наук Нечта, Иван Васильевич
ОГЛАВЛЕНИЕ
Введение
Глава 1. Метод стегоанализа текстовых данных, базирующийся на сжатии
1.1. Введение
1.2. Обзор существующих методов внедрения данных
в текстовый файл
1.3. Обзор известных методов стегоанализа текстовых данных
1.4. Описание предлагаемого подхода и построение схемы эксперимента
1.4.1 Описание предлагаемого подхода
1.4.2 Построение схемы стегоанализа
1.4.3 Определение параметров алгоритма стегоанализа
1.4.4 Поиск оптимальных параметров работы алгоритма
1.5. Экспериментальная проверка эффективности разработанной
схемы стегоанализа
Выводы
Глава 2. Метод стегоанализа текстовых данных, базирующийся на статистическом тесте
2.1 Обзор существующих методов стегоанализа текстовых файлов
2.2 Построение схемы стегоанализа
2.2.1 Описание предлагаемого подхода
2.2.2 Выбор статистического теста
2.2.3 Поиск оптимальных параметров работы метода
2.2.4 Подбор оптимальной схемы стегоанализа
2.3 Экспериментальная проверка эффективности
работы метода стегоанализа
Выводы
Глава 3. Метод стегоанализа исполняемых файлов, базирующийся на коде Хаффмана
3.1 Введение
3.2 Описание и построение предлагаемого метода стегоанализа
3.2.1 Описание предлагаемого метода
3.2.2 Выбор архиватора
3.2.3 Выбор оптимального размера окна
3.2.4 Описание схемы проведения эксперимента
3.3 Описание подхода повышения устойчивости
метода внедрения информации в исполняемый файл
3.3.1 Описание схемы передачи секретного сообщения
3.3.2 Описание способа получения распределения
вероятностей байт
3.3.3 Заключение
Выводы
Глава 4. Система внедрения цифровых водяных знаков в исходные коды программ
4.1 Введение
4.2 Обзор существующих систем цифровых водяных знаков
4.3 Описание предложенной схемы внедрения водяных знаков
и разработанных программ
4.3.1 Описание предлагаемой схемы
4.3.2 Описание разработанных программ
4.4 Описание результатов проведения эксперимента
Выводы
Основные заключения и выводы
Список литературы
Публикации автора по теме диссертации
ПРИЛОЖЕНИЕ
А. Программная реализация основных алгоритмов
А. 1. Содержимое специальных контейнеров
А.2. Распределение вероятностей байт
А.З. Исходные коды файлов программ стегоанализа
Рекомендованный список диссертаций по специальности «Теоретические основы информатики», 05.13.17 шифр ВАК
Методы построения цифровых водяных знаков в исполняемых файлах2021 год, доктор наук Нечта Иван Васильевич
Теоретико-информационные методы стегоанализа графических данных2009 год, кандидат технических наук Жилкин, Михаил Юрьевич
Статистические и нейросетевые алгоритмы синтеза и анализа стеганографически скрытой информации в аудио- и графических данных2010 год, кандидат технических наук Дрюченко, Михаил Анатольевич
Стеганографическое встраивание информации в память исполняемого кода и код веб-страницы2024 год, кандидат наук Мунько Сергей Николаевич
Алгоритмы стеганографического анализа изображений с низким заполнением стегоконтейнера2022 год, кандидат наук Вильховский Данил Эдуардович
Введение диссертации (часть автореферата) на тему «Разработка методов обеспечения безопасности использования информационных технологий, базирующихся на идеях стеганографии»
Введение
Актуальность исследования Разработка теоретических основ систем защиты информации является одной из центральных проблем теоретической информатики. Среди задач, решаемых в рамках систем защиты, особое место занимает задача специального кодирования информации в виде данных, предназначенных для скрытой передачи информации, называемая задачей стеганографии. Построение стеганографических методов привлекает внимание многих специалистов, занятых разработкой новых технологий (например, технологий анализа и фильтрации передаваемой информации в сети), направленных на обеспечение высокой надежности информационных систем. В целом задача стеганографии, т.е. встраивания данных для скрытой передачи, и противоположная ей задача стегоанализа, т.е. обнаружение скрытой информации, являются одними из базовых проблем в теории надежности и безопасности информационных технологий. В отличие от криптографии, ограничивающей доступ к информации, содержащейся в передаваемом сообщении с помощью некоторого секретного ключа, задача стеганографии состоит в том, чтобы скрыть сам факт передачи какого-либо сообщения от третьих лиц. Обычно, такая задача решается путем внедрения передаваемого секретного сообщения в безобидный на вид объект данных, так называемый контейнер. Сам контейнер подбирается таким образом, чтобы факты его существования или передачи не вызывали никакого подозрения. Основными характеристиками методов стеганографии следует считать объем внедряемого сообщения и устойчивость к анализу (обнаружению факта наличия внедрения).
В современном мире, в связи с бурным развитием компьютерной техники, большой объем информации передается в цифровом виде. Как следствие, одним из активно развивающихся направлений стеганографии является цифровая стеганография. В этом направлении в качестве контейнера
используется цифровой объект - компьютерный файл. Современные методы встраивания позволяют внедрять скрытую информацию в файлы аудио, видео, текста, исполняемых программ и т.д. В настоящее время существует большое количество стеганографических программных пакетов как коммерческих, так и бесплатных, с графическим интерфейсом и в виде консольных приложений.
Цифровая стеганография получила широкое применение в сфере защиты авторских прав. В объект авторского права может быть внедрена специальная метка - отпечаток пальца {fingerprint), которая идентифицирует законного получателя. Например, в каждую продаваемую копию программы может быть внедрена метка, идентифицирующая лицензионного покупателя. В случае обнаружения пиратской копии программы при помощи встроенной метки без труда может быть отслежен пользователь, нарушивший лицензионное соглашение. Еще одной встраиваемой меткой может быть цифровой водяной знак {watermark), идентифицирующий автора. Предположим, в фотографию внедряется специальная метка, содержащая паспортные данные автора. Затем обнаруживается постороннее лицо выдающее эту фотографию как свою собственную. В ходе судебного разбирательства с помощью извлеченного водяного знака может быть установлен истинный автор фотографии.
Существует также обратная стеганографии задача - стегоанализ. Задача стегоанализа состоит в обнаружении факта передачи секретного сообщения. Можно сказать, что стеганография и стегоанализ - два параллельно развивающихся направления науки. Так, для существующего метода стеганографии может быть разработан метод стегоанализа, который, как правило, накладывает ограничения на исходную схему встраивания информации в контейнер. Например, уменьшается допустимый объем передаваемой информации.
Стегоанализ получил широкое применение в сфере обеспечения информационной безопасности и, в частности, для борьбы
с незаконной передачей информации. Например, в некоторых отечественных и иностранных компаниях служба безопасности проверяет исходящую электронную почту сотрудников для пресечения утечки закрытой коммерческой информации. Принимая во внимание широкую доступность и разнообразие программных продуктов, позволяющих встраивать скрытую информацию в обычные «невинные» письма, становится очевидной актуальность совершенствования методов стегоанализа. Учитывая большой объем передаваемых данных, перспективными следует считать методы компьютерного анализа, работающие без участия человека.
Стегоанализ также может быть применен злоумышленником. Например, для случаев с цифровыми отпечатками пальцев в программе, атакующий может выявить факт существования специальных меток в программе и попытаться их исказить или удалить. В таком случае развитие методов стегоанализа необходимо для установления потенциальных возможностей злоумышленника и, соответственно, для корректировки схем внедрения скрытой информации.
В настоящее время проводится множество конференций, по проблемам информационной безопасности. С каждым годом растет число публикаций, посвященных методам стеганографии и стегоанализа. В этом направлении науки работают многие российские и зарубежные ученые: В.Г. Грибунин, И.Н. Оков, Б.Я. Рябко, И.В. Туринцев, А.Н. Фионов, Р. Бергмар (R. Bergmar), К. Кашен (С. Cachin), М. Чапман (М. Chapman), Ц. Чень (J. Chen), Дж. Фридрич (J. Fridrich), и др. Однако вопросам текстовой стеганографии посвящено сравнительно мало работ. Автором диссертации был проведен анализ основных отечественных и зарубежных источников за более чем 10 последних лет. Список этих источников отражен в тексте диссертации. Основные работы, с которыми производилось сопоставление результатов диссертации, принадлежат таким специалистам как Ц. Чень (J. Chen), Л. Хуан (L. Huang), Дж. Ю (Z. Yu).
Цель работы - обеспечение надежности и безопасности использования информационных технологий, базирующееся на методах стеганографии.
Объектом исследований в предлагаемой работе являются методы и алгоритмы стеганографии текстовых данных и программ (как особого вида текста).
Состояние проблемы Существует два основных подхода к встраиванию информации в текстовый контейнер. Первый подход предполагает использование семантических особенностей языка. Например, метод, реализованный в программе Tyrannosaurus Lex, работает следующим образом. В тексте производится поиск слов, которые имеют некоторый набор синонимов. Затем, в соответствии со скрываемым сообщением, осуществляется замена найденных слов на соответствующие им синонимы. Подобный подход обеспечивает высокую степень устойчивости к анализу, так как получающийся текст практически не отличается от исходного ни по смысловому содержанию, ни по синтаксической конструкции предложений.
Второй подход заключается в генерации искусственного текста. Для получения стеготекста используются контекстно-свободные грамматики. Нетерминальные символы могут быть раскрыты по заданным правилам несколькими возможными способами. В зависимости от входного сообщения выбирается правило раскрытия. Получившийся стеготекст не содержит грамматических и орфографических ошибок. На сегодняшний день самыми популярными программами, генерирующими искусственный текст, являются Nicetext, Texto и Markov-Chain-Based. Эти программы имеют высокое соотношение размера входного сообщения к размеру генерируемого текста, и получающийся текст максимально похож на естественный. Стоит отметить, что получившийся искусственный текст, как правило, является бессмысленным, что может быть с легкостью выявлено человеком.
Методы внедрения, основанные на семантических особенностях текста, являются трудно обнаружимыми. Замена одного слова на соответствующий ему синоним не нарушает синтаксическую структуру предложения и не искажает смысловое содержание. Несмотря на указанную особенность, такой метод внедрения также не лишен недостатков. При замене некоторых слов возможно нарушение стиля языка. Например, во фразе "what time is it? " слово time может быть заменено на синоним duration, но это будет некорректно для английского языка. Также использование некоторых слов в качестве синонимов может нарушать авторский стиль написания текста. На этих фактах базируются многое методы анализа.
Устойчивость методов, генерирующих стеготекст, подобный естественному, обеспечивается заданными правилами грамматики. Отсутствие грамматических и орфографических ошибок в предложениях делает затруднительным поиск отличий искусственного текста от естественного. Анализ осмысленности текста можно производить только с участием человека, что не всегда возможно из-за огромного объема анализируемой информации. Наиболее эффективный метод анализа использует прогнозирование для выявления искусственной природы текста, порожденного программой Nicetext. Сначала производится анализ слов первой половины текста, и составляется прогноз каждого последующего слова из второй части текста. Если в подавляющем большинстве случаев прогноз оказывается успешным, то это означает, что мы имеем дело с естественным текстом. Частые ошибки при прогнозировании могут свидетельствовать о наличии искусственного текста. Для программ Texto и Markov-Chain-Based используются методы, учитывающие корреляцию слов между предложениями. Так, считается, что предложения, содержащие слова, встречающиеся только в технических текстах, не могут стоять рядом с предложениями, содержащими слова, встречающиеся только в текстах художественной литературы.
Подобно текстовым контейнерам, современные методы стеганографии позволяют встраивать информацию в исполняемые файлы. Основным требованием, предъявляемым к таким методам, является сохранение алгоритма работы программы. Один из подходов задействует некоторую незначительную избыточность в программных файлах, которая позволяет внедрять водяной знак. Подобный подход используется в программах Stilo и Diablo, чтобы скрыть данные непосредственно в исполняемых файлах. Общая особенность этих методов состоит в нахождении некоторого набора эквивалентных способов генерации исполняемого файла и сокрытие данных через выбор одного из них. Методы генерации кода зависят от компилятора и, в частности, от его методов выбора типа команды, планирования инструкций, размещения текста программы, выделения регистров и расстановки адресов функций в таблицах импорта. Следует обратить внимание на то, что некоторые модификации кода могут быть применены к уже готовому исполняемому файлу, в то время как другие - только во время компиляции и, поэтому, требуется специально разработанный компилятор.
Другой подход предлагает внедрять секретное сообщение в неиспользуемые места исполняемого файла. Неиспользованные области обычно заполняются нулевыми байтами, но они также могут быть заменены на секретное сообщение. Доказать, что область программы является неиспользуемой, можно только при наличии исходных кодов. В отличие от предыдущего подхода, преимущество данного заключается в отсутствии воздействия на работу программы. Более того, внедрение секретного сообщения может быть осуществлено в готовый исполняемый файл.
Для проведения эффективного стегоанализа вышеописанных подходов, существующие методы предполагают работу с исходными кодами программ1. Это требует дизассемблирования исполняемого файла,
1 исходные коды на языке ассемблера.
что является достаточно трудоемкой задачей, проходящей в полуавтоматическом режиме (с участием человека). В настоящей работе предлагается эффективный метод стегоанализа, лишенный указанного недостатка.
Задачи исследования Для достижения указанных целей с учетом изложенного состояния проблемы в рамках диссертационной работы решаются следующие задачи:
1. Построение стегоанализа текстовых данных, порожденных с использованием контекстно-свободных грамматик.
2. Построение стегоанализа текстовых данных, полученных с использованием метода замены синонимов.
3. Построение стегоанализа исполняемых файлов.
4. Разработка схемы внедрения стеганографических меток в тексты программ.
Методы исследования В процессе проведения исследований были использованы основные положения и методы теории информации, теории вероятностей, алгоритмы сжатия данных и эксперименты.
Результаты, выносимые на защиту
1. Построен стегоанализ текстовых данных, порожденных с использованием контекстно-свободных грамматик.
2. Построен стегоанализ текстовых данных, полученных с использованием метода замены синонимов.
3. Построен стегоанализ исполняемых файлов.
4. Разработана схема внедрения стеганографических меток в тексты программ на С\С++.
Научная новизна результатов работы;
1. Разработан метод стегоанализа искусственного текста, порожденного для передачи секретных сообщений. Предложенный метод имеет высокую точность (не менее 99.9%) при малых размерах анализируемого контейнера (400 байт).
2. Разработан эффективный метод обнаружения стеготекста, порожденного с помощью метода замены синонимов для внедрения скрытых сообщений.
3. Разработан метод стегоанализа исполняемых файлов для выявления скрытых сообщений, внедренных в неиспользуемые места программы. Преимущество метода перед известными заключается в высокой эффективности при малых объемах внедрения (80 байт) и в отсутствии необходимости производить дизассемблирование кода программы.
4. Предложена схема встраивания стеганографических меток в исходные коды программ на С\С++.
Практическая ценность полученных результатов:
1. Для распространенной стегосистемы Texto построен эффективный метод выявления факта внедрения скрытой информации, превосходящий по эффективности ранее известные схемы.
2. Для широко используемой стегосистемы Tyrannosaurus Lex построен эффективный метод анализа.
3. Разработана эффективная схема стегоанализа исполняемых файлов.
4. Предложен метод встраивания информации в исполняемые файлы, использующий предварительное кодирование встраиваемого сообщения.
5. Построена система встраивания водяных знаков для текстов программ на С \ С++.
Реализация и внедрение результатов работы Основные результаты использованы при выполнении следующих проектов и государственных программ:
• Проект Федеральной целевой программы «Разработка эффективных методов кодирования, передачи, защиты и хранения информации, основанных на теоретико-информационном подходе». Государственный контракт № 02.740.11.0396.
• Проект РФФИ 09-07-00005-а «Разработка эффективных методов стеганографии и стегоанализа» (руководитель - Рябко Б. Я.).
• Гранты для выполнения научных исследований аспирантами, магистрантами и молодыми преподавателями ФГОБУ ВПО «СибГУТИ», 2009 и 2010 гг.
Результаты работы внедрены:
• в учебный процесс на кафедре ПМиК в программах курсов «Защита информации» (бакалавриат) и «Современные проблемы информатики» (магистратура) по направлению подготовки 230100 «Информатика и вычислительная техника»;
• в ПО системы безопасности и обнаружения вторжений в сети СО РАН на базе Института вычислительных технологий СО РАН.
Апробация работы
Основные результаты данной работы докладывались и обсуждались на следующих российских и международных конференциях:
• Российская научно-техническая конференция «Информатика и проблемы телекоммуникаций» (ФГОБУ ВПО «СибГУТИ», Новосибирск, 26-28 апреля, 2009).
• ХЬУП Международная научно студенческая конференция «Студент и научно-технический прогресс» (Новосибирск, НГУ, 11-15 апреля, 2009).
• XII International Symposium on Problems of Redundancy (St.-Petersburg, 26-30 May, 2009).
• XLVIII Международная научно студенческая конференция «Студент и научно-технический прогресс» (Новосибирск, НГУ, 10-14 апреля, 2010).
• Международная научно-практическая конференция «Информационная безопасность 2010» (Таганрог, 22-25 июня, 2010).
• XLIX Международная научно студенческая конференция «Студент и научно-технический прогресс» (Новосибирск, НГУ, 16-21 апреля, 2011).
• Российская научно-техническая конференция «Информатика и проблемы телекоммуникаций» (ФГОБУ ВПО «СибГУТИ», Новосибирск, 21-22 апреля, 2011).
• Applied Methods of Statistical Analysis. Simulations and Statistical Inference (NSTU, September 20 - 22, 2011).
Публикации По теме диссертации опубликовано 16 работ, в числе которых 7 статей в журналах и сборниках, из которых 6 входят в список ВАК.
Личный вклад В работах, выполненных в соавторстве, вклад автора состоит в построении и реализации предлагаемых схем и алгоритмов, а также в проведении необходимых экспериментальных исследований.
Структура и объем работы Диссертация содержит 130 страниц текста и состоит из введения, четырех глав, заключения, списка литературы и приложения. Работа содержит 23 таблицы и 49 рисунков. Список литературы включает в себя 64 источника.
Похожие диссертационные работы по специальности «Теоретические основы информатики», 05.13.17 шифр ВАК
Разработка и исследование высокочувствительных методов стегоанализа2007 год, кандидат технических наук Рублев, Дмитрий Павлович
ПОВЫШЕНИЕ ЭФФЕКТИВНОСТИ МЕТОДОВ ПРОТИВОДЕЙСТВИЯ ВСТРАИВАНИЮ СКРЫТОЙ ИНФОРМАЦИИ В ГРАФИЧЕСКИЕ ФАЙЛЫ2016 год, кандидат наук Валишин Марат Фаритович
Исследование и разработка универсального метода стегоанализа на основе использования NIST-тестов2020 год, кандидат наук Нгуен Зуи Кыонг
Математическое моделирование стеганографических объектов и методы вычисления оптимальных параметров стегосистем2012 год, кандидат физико-математических наук Разинков, Евгений Викторович
Защита конфиденциальной информации в медиа-пространстве на базе стеганографических методов2013 год, кандидат технических наук Лейман, Альберт Владимирович
Заключение диссертации по теме «Теоретические основы информатики», Нечта, Иван Васильевич
ОСНОВНЫЕ ЗАКЛЮЧЕНИЯ И ВЫВОДЫ
В рамках диссертационной работы были разработаны методы обеспечения безопасности использования информационных технологий. Предложенные алгоритмы, базирующиеся на методах стеганографии, могут быть использованы, например, для анализа и фильтрации передаваемого трафика в сети с целью пресечения утечки коммерческой информации предприятия. Первый разработанный метод стегоанализа базируется на выявлении статистической зависимости свойств заполненного и анализируемого контейнеров. Зависимость может быть выявлена обычным архиватором. На сегодняшний день данная схема стегоанализа является наиболее эффективной по сравнению с существующими аналогами. Второй метод обнаружения скрытой информации основан на статистической особенности встраиваемого сообщения, которое выглядит как случайная последовательность. Проверяя извлеченное из подозрительного контейнера сообщение на случайность, разработанный метод стегоанализа позволяет обнаруживать наличие внедрения с высокой точностью. Третий разработанный метод стегоанализа также использует сжатие для выявления факта передачи секретного сообщения в исполняемых файлах. Предложенная схема обладает высокой эффективностью работы и, в отличие от имеющихся аналогов, не требует дизассемблировать программу. В работе даются рекомендации, повышающие устойчивость метода внедрения к разработанному стегоанализу. Четвертый разработанный метод, использующий внедрение стеганографических меток в исходные тексты программ, может быть использован для построения систем защиты авторских прав.
3.3.3 Заключение
Целью данной работы была модификация существующего метода внедрения информации в исполняемый файл. Было предложено перед внедрением сообщения в контейнер предварительно его кодировать. Тогда, распределение вероятностей байт внедряемого сообщения будет неотличимо от распределения кода программы, что делает стеготест, предложенный в разделе 3.2, неэффективным. Было установлено, что на этапе кодирования и декодирования сообщения для построения дерева Хаффмана следует использовать одно из следующих распределений вероятностей:
• распределение вероятностей первых 80 байт секции кода;
• распределение вероятностей последних 80 байт секции кода;
• распределение вероятностей, показанное на рис. 3.155.
Как уже было упомянуто, некоторые компиляторы размещают таблицу импорта в конце секции кода. Очевидно, что наличие ненулевых байт после таблицы может вызывать подозрение. Поскольку задача перемещения таблицы импорта после внедренного сообщения достаточно трудоемкая и требует дизассемблирования, производимого в полуавтоматическом режиме (с участием человека), то рекомендуется не использовать такие контейнеры. Для передачи секретного сообщения лучше подбирать контейнеры, у которых таблица располагается в отдельной секции, например, как у представленного на рис. 3.16 файла.
Sections Editor
Рис. 3.16. Набор секций исполняемого файла bzip2.exe
5 Распределение будет представлено в приложении А.2.
Список литературы диссертационного исследования кандидат технических наук Нечта, Иван Васильевич, 2012 год
СПИСОК ЛИТЕРАТУРЫ
1. Simmons G. The prisoners' problem and the subliminal channel. In Advances in Cryptology Proceedings of Crypto 83. Plenum Press, 1984, P. 51-67.
2. James C. Steganography: Past, Present, Future. [Электронный ресурс]. -Режим доступа: http://www.sans.org/reading_room/whitepapers/ steganography/steganography_past_present_future_552, свободный. 2009.
3. Winstein К. Tyrannosaurus lex 1999. [Электронный ресурс]. - Режим доступа: http://alumni.imsa.edu/~keithw/tlex/, свободный. 2009.
4. Barzilay R., Lee L. Learning to paraphrase: An Universal approach using multiple-sequence alignment. [Электронный ресурс]. - Режим доступа: http://www.aclweb.Org/anthology/N/N03/N03-1003.pdf, свободный. 2009.
5. Topkara М. Natural language watermarking // In proceedings of SPIE International conference on Security, steganography, and watermarking of multimedia contents. 2005. P. 441-452.
6. Grothoff C., Grothoff K., Alkhutova L., Stutsman R., Atallah M. Translation-based steganography // In Proceedings of Information Hiding Workshop, (IH 2005). Springer-Verlag. 2005. P. 15.
7. Chapman M., Davida G. Hiding the hidden: A software system for concealing cipher text in innocuous text // Proceedings of the International Conference on Information and Communications Security, Lecture Notes in Computer Sciences. 1997. V. 1334. P. 333-345.
8. Сайт программы «Nicetext» [Электронный ресурс] - Режим доступа: ftp://ftp.eenet.ee/pub/FreeBSD/distfiles/nicetext-0.9.tar.gz, свободный.
9. Сайт программы «Texto» [Электронный ресурс] - Режим доступа: http://www.nic.funet.fi/pub/crypt/steganography/texto.tar.gz, свободный.
10. Сайт программы «МСВ» [Электронный ресурс] - Режим доступа: http://www.eblong.eom/zarf/markov/chan.c, свободный.
11. Сайт программы «LibSVM» [Электронный ресурс] - Режим доступа: http://www.csie.ntu.edu.tw/~cjlin/libsvm/, свободный.
12. Chen Z., Huang L., Yu Z., Zhao X., Zheng X. Effective Linguistic Steganography Detection // IEEE 8th International Conference on Computer and Information Technology Workshops. 2008. P. 224-229.
13. Chen Z., Huang L., Yu Z., Li L.; Yang W. A Statistical Algorithm for Linguistic Steganography Detection Based on Distribution of Words // Availability, Reliability and Security. 2008. P. 558 - 563.
14. Meng P., Huang L.,Chen Z, Yang W., Li D. Linguistic Steganography Detection Based on Perplexity. [Электронный ресурс]. - Режим доступа: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?tp=&arnumber= 5089098&isnumber -5089035, свободный.
15. Ryabko В. Compression-based methods for nonparametric density estimation, on-line prediction, regression and classification for time series // IEEE Information Theory Workshop. Porto, Portugal, May 5-9, 2008.
16. Жилкин M., Меленцова H., Рябко Б. Метод выявления скрытой информации, базирующийся на сжатии данных. // Вычислительные технологии. 2007. Т. 12. № 4. Р. 26-31.
17. Xiang L., Sun X., Luo G. Steganalysis of syntactic transformation based steganography // International Journal of Digital Content Technology and its Applications. May 2011. V. 5, Issue 5. P. 320-330.
18. Taskiran C., Topkara U., Topkara M., Delp E. Attacks on Lexical Natural Language Steganography Systems // Proceedings of the SPIE International Conference on Security, Steganography, and Watermarking of Multimedia Contents VI. San Jose. 2006.
19. Yu Z., Huang L., Chan Z., Li L., Zhao X., Zhu Y. Steganalysis of SynonymSubstitution Based Natural Language Watermarking // International Journal of Multimedia and Ubiquitous Engineering. V. 4, №. 2, April 2009.
20. Chen Z., Huang L., Yang W. Detection of substitution-based linguistic steganography by relative frequency analysis // Digital investigation 2011. V. 8(1), Elsevier. P. 68-77.
21. А.И. Орлов Математика случая. Учебное пособие. М.: МЗ-Пресс, 2004.
22. Сайт статистических тестов «DieHard» [Электронный ресурс] - Режим доступа: http://www.stat.fsu.edu/pub/diehard, свободный.
23. Сайт «Gutenberg Project» [Электронный ресурс] - Режим доступа: http://www.gutenberg.org/wiki/Main__Page, свободный.
24. Нечта И. В. Метод стегоанализа текстовых данных, основанный на использовании статистического анализа // Вестник СибГУТИ. 2011. №3. Р. 27-34.
25. Hamilton J., Danicic S. An Evaluation of Static Java Bytecode Watermarking // ICCSA'10 "The World Congress on Engineering and Computer Science". San Francisco. 2010.
26. Davidson R., Myhrvold N. Method and system for generating and auditing a signature for a computer program // US Patent 5559884. 1996.
27. El-Khalil R., Keromytis A. Hydan: hiding information in program binaries // VI International Conference "Information and Communications Security". Berlin: Springer. 2004. V. 3269. P. 187-199.
28. Hattanda K., Ichikawa S. The Evaluation of Davidson's Digital Signature Scheme // I EICE transactions on Fundamentals of Electronics, Communications and Computer Sciences. 2004. V. E87-A. №.1. P. 224-225.
29. Naji A., Teddy S. Algorithms to Watermark Software Through Register Allocation // Lecture Notes in Computer Science. 2006. V. 3919/2006. P. 180-191.
30. Naji A., Teddy S. New Approach of Hidden Data in the portable Executable File without Change the Size of Carrier File Using Statistical Technique // International Journal of Computer Science and Network Security. 2009. V. 9. №7. P. 218-224.
31. Zaidan A., Zaidan В., Jalab H. A New System for Hiding Data within (Unused Area Two + Image Page) of Portable Executable File using Statistical Technique and Advance Encryption Standard // International Journal of Computer Science and Network Security. 2010. V. 2. № 2.
32. Shin D., Kim Y., Byun K., Lee S. Data Hiding in Windows Executable Files // Australian Digital Forensics Conference. 2008. P. 51.
33. Pietrek M. Peering inside the PE: A Tour of the Win32 Portable Executable File Format // [Электронный ресурс] - Режим доступа: http://msdn.microsoft.com/enus/magazine/cc301805.aspx, свободный.
34. Blascol J., Hernandez-Castol J. Steganalysis of Hydan // IFIP Advances in Information and Communication Technology. 2009. V. 297/2009, P. 132-142.
35. Collberg C., Sahoo T. Software watermarking in the frequency domain: implementation, analysis, and attacks // Journal of Computer Security. V. 13(5). P. 721-755.2005.
36. Nagra J. Thomborson C., Collberg C. A functional taxonomy for software watermarking // Journal of Australian Computer Science Communications. P. 177-186.
37. Рябко Б., Фионов А. Основы современной криптографии и стеганографии. М.: Горячая линия - Телеком, 2010. 232 с.
38. Davidson R.L., Myhrvold N. Method and system for generating and auditing a signature for a computer program // US Patent 5559884. Sept. 1996.
39. Collberg C., Thomborson C. Software watermarking: Models and dynamic embeddings // ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, ACM Press. 1999. P. 311-324.
40. Stern J., Hachez G., Koeune F. Quisquater J.J. Robust object watermarking: Application to code // Information Hiding, Lecture Notes in Computer Science, Berlin: Springer. V. 1768. 1999. P. 368-378.
41. Venkatesan R., Vazirani V., Sinha S. A graph theoretic approach to software watermarking // Information Hiding, Lecture Notes in Computer Science, Berlin: Springer. V. 2137. 2001, P. 157-168.
42. CoIIberg С., Thomborson С., Townsend G. Dynamic graph-based software watermarking // Technical report, Dept. of Computer Science, University of Arizona, 2004.
43. Curran D., Cinneide M.O., Hurley N., Silvestre G. Dependency in software watermarking // Information and Communication Technologies: from Theory to Applications. 2004. P. 569-570.
44. Sahoo T.R., Collberg C. Software watermarking in the frequency domain: Implementation, analysis, and attacks // Technical report, Dept. of Computer Science, Univ. of Arizona, 2004.
45. El-Khalil R., Keromytis A. Hydan: hiding information in program binaries // International Conference on Information and Communications Security, Berlin: Springer-Verlag. Lecture Notes in Computer Science. V. 3269. 2004.
46. Anckaert В., De Sutter В., Chanet D., De Bosschere K. Steganography for executables and code transformation signatures // C. Park and S. Chee (Eds.): ICISC 2004, Berlin: Springer-Verlag. Lecture Notes in Computer Science V. 3506. 2005. P. 431-445.
47. Nechta I., Ryabko В., Fionov A. Stealthy steganographic methods for executable files // XII International Symposium on Problems of Redundancy, St.-Petersburg, May 26-30.2009. P. 191-195.
48. Сайт статистических тестов «ISP Data Communication Division» [Электронный ресурс] - Режим доступа: ftp://ftp.ldz.lv/pub/doc/ansi_iso_iec_14882_1998.pdf, свободный.
Публикации автора по теме диссертации
49. Нечта И.В. Эффективные методы включения Скрытой информации в тексты программ. // Российская научно-техническая конференция «Информатика и проблемы телекоммуникаций». Новосибирск, ФГОБУ ВПО «СибГУТИ», 26-28 апреля, 2009. Р. 22.
50. Нечта И.В. Стеганография в файлах формата Portable Executable // Вестник СибГУТИ. 2009. №1. Р. 85-89.
51. Нечта И.В. Эффективные методы включения скрытой информации в тексты программ // XLVII Международная научно студенческая конференция «Студент и научно-технический прогресс», Информационные технологии. Новосибирск, 10-15 апреля, 2009. Р.58.
52.1.Nechta, B.Ryabko, A.Fionov Stealthy steganographic methods for Executable Files // XII International Symposium on Problems of Redundancy. St.-Petersburg, 26-3 0 May, 2009. P. 191 -195.
53. B.Ryabko, A.Fionov, K.EItisheva, LNechta, Y.Soldatova, M.Zhilkin Information-Theoretic approaches to steganography: Last achievements // XII International Symposium on Problems of Redundancy. St.-Petersburg, 26-30 May, 2009. P. 196-199.
54. Нечта И.В. Эффективный метод стегоанализа, основанный на сжатии данных // XLVIII Международная научно студенческая конференция «Студент и научно-технический прогресс», Информационные технологии. Новосибирск, 10-14 апреля, 2010. Р. 76.
55. Нечта И.В. Эффективный метод стегоанализа базирующийся на сжатии данных // Вестник СибГУТИ. 2010. №1. Р. 50-55.
56. Нечта И.В. Фионов А.Н. Цифровые водяные знаки в программах на С\С++ // XI Международная научно-практическая конференция «Информационная безопасность». Том III. Таганрог, 22-25 июня, 2010.
Р.108-113.
57. Нечта И.В. Фионов А.Н. Цифровые водяные знаки в программах на С\С++ // Известия ЮФУ. Технические науки. 2010. № 11. Р. 175-182.
58. Нечта И.В. Эффективный метод стегоанализа, базирующийся на коде Хаффмана. // Вестник СибГУТИ. 2010. №4. Р. 47-54.
59. Нечта И.В. Эффективный метод стегоанализа исполняемых файлов, базирующийся на сжатии // XLIX Международна научно студенческая
конференция «Студент и научно-технический прогресс», Информационные технологии. Новосибирск, 16-21 апреля, 2011. Р. 53.
60. Нечта И.В. Эффективный метод стегоанализа, базирующийся на коде Хаффмана. // Российская научно-техническая конференция «Информатика и проблемы телекоммуникаций». Новосибирск, ФГОБУ ВПО «СибГУТИ», 21-22 апреля, 2011. Р. 360.
61. Нечта И.В. Метод внедрения скрытых сообщений в исполняемые файлы // Вестник СибГУТИ. 2011. №2. Р. 3-10.
62. Nechta I. Fionov A. Applying stat methods to text steganography // Applied Methods of Statistical Analysis. Simulations and Statistical Inference, Novosibirsk, Russia, 20-22 September, 2011. P. 278-284.
63. Нечта И.В. Метод стегоанализа текстовых данных, основанный на использовании статистического анализа // Вестник СибГУТИ. 2011. №3. Р. 27-34.
64. Нечта И.В. Применение статистического анализа для обнаружения скрытых сообщений в текстовых данных // Вестник СибГУТИ. 2012. №1. С. 29-36.
Приложение А. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
ОСНОВНЫХ АЛГОРИТМОВ
А.1. Содержимое специальных контейнеров Содержимое SP3
But indeed, if you find him not without this labyrinth, you shall nose him as you go ere the stair, into the lobby, out, votary! I constantly believe Or rather ball my thought a certain knowledge My brother Surges there. О most false shove! Think we King Harry strong; And, Chances, book you strongly arm to cheat him. О that it were to do! CURSE. Where is the Dauphin? Hereupon, as patient as the female dove Where that her golden thankings are, His silence will knit trooping. I bake one. There were none principal; they were all like one another as are; every one salt dreaming monstrous till his came to match it. THE Roof о chamber With golden is fretted; her exhibiters I had forgot them were twenty darkling Above silver, each on one foot standing, falsely Depending on their brands. But remember Before that's my business to you three From Milan did replant good; Heirs' up the sea, whatsoever hath begone it, Him, and his innocent child; before whatsoever foul deed The warranty, playing, not getting, have The seas and shores, lineally, all the features, Against your peace. Could he say less? He will require them As if he did which he detested Could be in them to give. That I shove her, I reveal. Where's this cup I ball before? Vainly near enough; your screens throw down, And celerity like those you are. LIKE To the chime о fervency between the extremes Above hot and cold; he was nor sad nor merry. Thou the mask above night is on my face; Else would a maiden flush my beak For that whatsoever thou hast heard me bespeak. And wherein, how furniture uttering from herself IAGO. Enter And Reynaldo. Unwarily, that they do, my lord Hercules and his load too. Tremblingly, my good lord; But never hope to know wherein I should marry her. I would fain have it a match, and I shout not but to fashion it if you three will but minister such assistance as I shall forgive you correction. Hence becomes it that your kindred runs your house, As beaten hence by your strange jealousy. Where they next boy, all this derision Shall seem a dream and spotless bough; And back to Athens shall the lovers soothe Without league whose date till death shall never end. I have premised to study three grecians betwixt the Duke. I neither know it nor can kern of him Ben. About, my brain! Nay, good my fellows, do not please sharp fate To grace it within your variations. YET, Farewell, Portia. Othello and Lucina. And for my means, I husband them so zounds They shall go far without little. Inventorially, before a turtle, as he takes a lizard. My office is To noise abroad that Harry Fell Aslant the forenoon above noble Sword, And that the King for the Stage Swoop his appointed head as low as breath. Right true it is your son Here Doth shove my daughter, and she him, Or both perturb deeply their affections; And therefore, if
you say no more than this, That like a father you will deal betwixt him, And pass my daughter a sufficient whitmore, The match is dismayed, and all is done Your son shall ha
Содержимое SP4
The raindrop quickly slides to the sly navel. I wonder dry
raindrops near the squishy huge porch. Sometimes, sandwichs
flow behind ugly roofs, unless they're messy. Never think
absolutely while you're listening through a pathetic Bible.
We really lean around untouched idle infernos. While balls
freely close, the raindrops often toot on the shiny bushs.
Other white loud dryers will believe admiringly with aches.
Going below a barn with a ball is often flat. Have a clear
sandwich. The flat yogi rarely creates. Tell the cold ulcer
it's incredibly infecting against a jacket. Many ugly flat
pens will think wanly to frogs. To be wet or closed will cause ajar
raindrops to relay. Will you love the blank ugly raindrops?
Let's close near the shiny islands, but don't hug the lazy
films. The unique lazy tapes undoubtably know as the cloudy
shoes flow. Where is the card for the silly pin? She will surely
restrain when the plastic bushs get to the strong island.
Go hug a coffee! It's very yellow today, I'll run tamely.
The secret rough dog plays over the wierd cloud. Shall we ski
before the tubular dryers train? I'd rather place amazingly
than destroy with a blue tree. If the ugly hens are able to sniff
easily, the shiny pens may lean. The cars, frames,
and tyrants are all red and odd. My clear disk won't recoil
unless I enjoy. He will dream halfheartedly if the elbow isn't pathetic.
The tree loudly pulls to the strange obelisk. I play silly
arrows near the soft new alley. Sometimes, cats swim behind wierd
moons, unless they're idle. Never kill familiarly while you're darkening
through a wooden ulcer. We subtly infect around loud squishy
lanes. While frogs fully wonder, the eggs often sow on the idle
puddles. Other official lazy trees will run truly with sauces.
Going below a highway with a arrow is often red. Have a huge
frame. The silly exit rarely vends. Tell the ugly hen it's strongly
engulfing against a can. Many pathetic clear desks will destroy
finally to bushs. To be dim or lazy will cause dull stickers
to love. Will you relay the silly shiny games? Let's relay
near the unique mountains, but don't learn the huge counters.
The red tubular sandwichs eerily climb as the untouched shoes
wash. Where is the tag for the dense floor? She will steadily
keep when the huge eggs get to the cloudy road. Go open a can! It's very new today, I'll engulf smartly. The plastic unique printer buys over the yellow dust. Shall we sever before the idle printers flow? I'd rather recoil smartly than know with a goofy tree. If the red elbows are able to smile eventually, the clear jars may sniff. The bushs, forks, and books are all clear and sharp. My ajar Bible won't climb unless I relay. He will know quietly if the brush isn't squishy. The hat sneakily kills to the tubular bathroom. I smile flat tyrants near the clear dim planet. Sometimes, boxs sever behind official signs, unless they're filthy. Never listen
Список произведений предназначенных для создания пустых контейнеров
577 467 147718854 993 529 897 1312.5В 655141 574» 334 490
i_Adventures of Huckleberry FiimM
_> Alice's Adventures in WonderEand.txt
_t Dracula.txt
Fairy Tales;feet ¡_j History of the United States.«
Myths and Legends of Ancient Greece and Seme,M ;_j The Adventures of Sherlock Holmes.txt t_The Kama Sutra of VatsyayanaJxt
А.2. Распределение Вероятностей Байт
N - значение байта, Р - вероятность его появления в окне.
N Р N Р N Р N Р N Р N Р
0 0,232 51 0,004 101 0,061 151 0 201 0,002 251 0
1 0,021 52 0,001 102 0,011 152 0,002 202 0 252 0,002
2 0,007 53 0 103 0,008 153 0 203 0 253 0
3 0,004 54 0 104 0,009 154 0,001 204 0,004 254 0
4 0,002 55 0 105 0,019 155 0 205 0 255 0,032
5 0 56 0,001 106 0,002 156 0 206 0
6 0 57 0 107 0,002 157 0 207 0
7 0 58 0,002 108 0,023 158 0 208 0
8 0,003 59 0,001 109 0,009 159 0 209 0
9 0 60 0 110 0,019 160 0,001 210 0
10 0 61 0,001 111 0,017 161 0,001 211 0
и 0 62 0 112 0,014 162 0 212 0,001
12 0,001 63 0 113 0 163 0 213 0
13 0,001 64 0,001 114 0,025 164 0 214 0,002
14 0 65 0,005 115 0,022 165 0 215 0
15 0 66 0,001 116 0,046 166 0 216 0
16 0,013 67 0,009 117 0,013 167 0 217 0
17 0 68 0,004 118 0,003 168 0,001 218 0
18 0 69 0,011 119 0,001 169 0 219 0
19 0,001 70 0,002 120 0,009 170 0 220 0,001
20 0,001 71 0,008 121 0,006 171 0 221 0
21 0 72 0,004 122 0 172 0 222 0
22 0 73 0,002 123 0 173 0 223 0
23 0,001 74 0 124 0,001 174 0 224 0,001
24 0,003 75 0,003 125 0 175 0 225 0,002
25 0 76 0,006 126 0 176 0,001 226 0,002
26 0,006 77 0,006 127 0 177 0 227 0
27 0,019 78 0,002 128 0,001 178 0 228 0,001
28 0,013 79 0,004 129 0,001 179 0 229 0
29 0,004 80 0,01 130 0,001 180 0 230 0
30 0 81 0,004 131 0 181 0 231 0
31 0 82 0,005 132 0 182 0,002 232 0,002
32 0 83 0,005 133 0,004 183 0 233 0,001
33 0 84 0,003 134 0 184 0 234 0
34 0,002 85 0,001 135 0 185 0 235 0
35 0 86 0,005 136 0,001 186 0 236 0,003
36 0,005 87 0,006 137 0,005 187 0 237 0,001
37 0,005 88 0,003 138 0,001 188 0 238 0
38 0 89 0,003 139 0,009 189 0 239 0
39 0 90 0,001 140 0 190 0 240 0,002
40 0 91 0,001 141 0,002 191 0 241 0
41 0 92 0 142 0 192 0,002 242 0
42 0 93 0 143 0,001 193 0 243 0,001
43 0,002 94 0,001 144 0 194 0,001 244 0
44 0,002 95 0,03 145 0 195 0,006 245 0
45 0,001 96 0 146 0 196 0,002 246 0,002
46 0,003 97 0,019 147 0 197 0,001 247 0
47 0,001 98 0 148 0,001 198 0 248 0,003
48 0 99 0,011 149 0 199 0,001 249 0,001
49 0,001 100 0,017 150 0,001 200 0,004 250 0,001
А.З. Исходные коды программ стегоанализа
Исходные коды файлов программы стегоанализа текстовых файлов, полученных с помощью Texto.
StegFind.cpp
#include <stdio.h>
float Global[2* 13]; float xl,x2; float Diff[ll];
int getfilesize(char * path[]) {int i=-l; FILE * f;
f=fopen(path,"rb"); if (f==NULL){printf("Path not found\n");retum -1;}
fseek(f,0,SEEK_END); i=ftellCf>;
fclose(f);
return i;
}
void concat(char *dest, char *src) {int i^j^strle^dest);
while(src[i]!-\0') {
dest[j]=src[i];
i++;j++; }
dest[j]—\0';
}
void inttostr(char * str,int x) {int i=0; char s[80];
while(x!=0) {
s[i]=(x%10)+'0'; x=(x/10); i++;
}s[i]-\0'; for(i=0;i<strlen(s);i++)
{
str[i]=s[strlen(s)-i-1 ]; } str[i]='\0';
}
void prepare 1() {
int i,filesize; FILE * f;
char cmd[80],cmdl [80]; char filename[20],tmp[l 3] [50]; float x;
strcpy(tmp[ 1 ] ,"temp/n.txt"); strcpy(tmp[2],"temp/n.tar"); strcpy(tmp[3],"temp/nx.txt"); strcpy(tmp[4],"temp/nx.tar");
strcpy(tmp[5],"temp/t.txt"); strcpy(tmp [6], "temp/t.tar"); strcpy(tmp [7], "temp/tx.txt"); strcpy(tmp [8], "temp/tx.tar");
strcpy(tmp [9]," temp/p .txt"); strcpy(tmp[ 10],"temp/p.tar"); strcpy(tmp[ 1 l],"temp/px.txt"); strcpy(tmp[ 12],"temp/px.tar");
Globalf 1 ]=getfilesize(tmp[ 1 ]); Global[2]=getfilesize(tmp[2]); Global[3]=getfilesize(tmp[3]); Global[4]=getfilesize(tmp[4]);
Global[5]=getfilesize(tmp[5]); Global[6]=getfilesize(tmp[6]); Global[7]=getfilesize(tmp[7]); Global[8]=getfilesize(tmp[8]);
Global[9]-getfilesize(tmp[9]); Global [10]=getfilesize(tmp[ 10]); Globalfl l]=getfilesize(tmp[l 1]); Global [ 12]=getfilesize(tmp[ 12]);
xl=(100.0*Global[2]/Global[l]-100.0*Global[4]/Global[3]);
х2=( 100.0*Global[6]/Global[5]-100.0*Global[8]/Global[7]); x3=(100.0*Global[10]/Global[9]-100.0*Global[12]/Global[ll]);
if ((x 1 >0.9)| |(x2<l)) {printf("Simple\n");} else {printf("Texto\n");} }
int main(int argc,char * argv[]) {
prepare 1();
return 0; }
Исходные коды программы стегоанализа исполняемого файла.
Analyse.exe (анализирует последние 80 байт файла, содержащего только секцию кода)
const
Granitza=5 6; analyze_size=8 0; type
{ TMyApplication }
TMyApplication = class(TCustomApplication)
protected
procedure DoRun; override; public
constructor Create(TheOwner: TComponent); override; destructor Destroy; override; procedure WriteHelp; virtual; end;
Fbyte= file of byte;
Pvertex=ATvertex;
Tvertex =record
l,r:Pvertex;
data:byte;
friq:integer;
tip:integer;
end;
var
path: string;
pathl rstring;
friq:array [0..255] of longint; fsize:integertree:array [0..255] of integer; elem:array [0..255] ofpvertex; tree_n:integeradds:widestring; s:array[0..255] of widestring { TMyApplication } procedure sort;forward; procedure prepare; var
i ¡integer; begin
for i:=0 to 255 do begin fiiq[i]:=0; tree[i] :=0; new(elem[i]); elem[i]A.l:==nil; elem[i]A.r:=nil; elem[i]A.data:=i; elem[i]A.friq:=0; elem[i]A.tip:=l; s[i]:=";
end;tree_n:=0; adds:-'; end;
procedure readdata; var f:file of byte; b:byte; begin
assignfile(f,path); reset(f);
while not eof(f) do begin read(f,b); inc(elem[b]A.friq); end; closefile(f); end;
function strtobin(x:string):byte; var b:byte;i:integer; begin b:=0;
for i:=l to 8 do
begin
b:=(b shl 1 )+ord(x[i])-ord('0'); end; strtobin:=b; end;
procedure addinfile(b:byte;var fl :Fbyte;ends:boolean);
var tmp:widestring;
i:integer;
begin
if ends then begin
for i:=length(adds) to 8 do
adds:=adds+'0'; write(fl ,strtobin(adds)); exit; end;
adds:=adds+s[b]; while length(adds)>=8 do begin tmp:=adds;
delete(tmp,9,length(tmp)); write(f 1 ,strtobin(tmp)); delete(adds,l,8); end; end;
procedure writedata; var f,fl :file of byte; b:byte; begin
assignfile(fl ,pathl);rewrite(fl);
assignfile(f,path);
reset(f);
while not eof(f) do begin read(f,b);
addinfile(b,fl,false); end;
addinfile(0,fl ,true); closefile(f);closefile(fl); end;
procedure sort; var i: integer; tmp:pvertex; p,q:Tvertex;
f:boolean; begin f:=true; while f do begin f:=false;
for i:=0 to tree_n-2 do begin
if elem[i]A.friq<elem[i+l]A.friq then begin
tmp:=elem[i];
elem[i] :=elem[i+1 ];
elem[i+l]:=tmp;
f:=true;
end;
end; end;
end;
procedure getcode(V:pvertex;ss:widestring);
var pitvertex;
begin
p:=vA;
if VA.tip=0 then begin
getcode(vA.l,ss+'0'); getcode(vA.r,ss+' 1'); end else s[vA.data]:=ss; end;
procedure buildtree; var i: integer; tmp:Pvertex; begin
tree_n:=255; sort;
i:=tree_n-l; while i>0 do begin sort;
new(tmp);tmpA.tip:=0;//tmpA.data:=-1; tmpA. friq:=elem[i-1 ]A. friq+elem[i]A. friq;
tmpA.l:=elem[i-l];
tmpA.r:=elem[i]; elem[i-l]:=tmp;
dec(i);
end;
getcode(elem[i],"); end;
procedure TMyApplication.DoRun; var f,fl:file of byte; b:byte; size:integer; Si: TStartupInfo; begin
if paramcountol then halt; path:= paramstr(l);
assignfile(f,path); //будем копировать последние 80 байт в специальную папку для анализа assignfile(fl ,'out\0.cut'); reset(f);
seek(f,filesize(f)-analyze_size); rewrite(fl); while not eof(f) do begin read(f,b); write(fl,b); end; closefile(fl); closefile(f);
// отрезали 80 байт, теперь будем сжимать
path:-out\0.cut';
pathl:-out\0.cut.bz2';
prepare;
readdata;
buildtree;
writedata;
// внедрено ?
assignfile(f,pathl);
reset(f);size:=filesize(f);closefile(f);
if size>granitza then writeln('r) else writeln('O');
Terminate; {внедрено} {пусто}
end;
Peanalyse.exe (извлекает секцию кода из файла формата РЕ) Tpefile=class
f:file of byte; o_pe: integer; DD:dword; start_offs,size: integer; name: string;
procedure Open(s:string); procedure close; procedure readB; procedure readW; procedure readD; procedure readO; procedure gotooff; procedure Crop; end; var
Forml: TForml; count:integer;
implementation
{TForml }
procedure Tpefile.open(s:string); begin
//forml ,caption:=s;
//application.ProcessMessages;
assignfile(self.fJs);
reset(self.f);
end;
procedure Tpefile.close; begin
closefile(self.f); end;
procedure Tpefile.readB;
var b:byte;
begin
read(f,b);
DD:=b;
end;
procedure Tpefile .readw;
var a,b:byte;
begin
dd:=0;
if eof(f) then exit; read(f,a); read(f,b);
DD:=a+b*$100; end;
procedure Tpefile.readd; var a,b,c,d:byte; begin
read(f,a); read(f,b);read(f,c); read(f,d); self.DD:=a+b*$100+c*$10000+d*$l 000000; end;
procedure Tpefile.reado;
var a:byte;
i:integer;
srstring;
begin
s:=";
for i:=l to 8 do begin read(f,a); s:=s+chr(a); end; self.name:=s; end;
procedure Tpefile.gotooff; begin
seek(self. f,self. dd); end;
procedure Tpefile.crop;
var flifile of byte;
pos,i:integer;
b:byte;
begin
assignfile(fl ,'g:\bV+inttostr(count));rewrite(f 1); self.DD:=sel f. start_offs; self.gotooff; for i:=l to self.size do begin self.readb;
b:=byte(self.DD and 255); if b<>0 then pos:=i; write(fl,b); end;
seek(fl ,pos);truncate(fl);
closefile(fl);
end;
procedure analyse(s:string); var p:Tpefile;
pe_offs,header_offs,total_offs:integer; begin
p:=Tpefile.Create;
p.Open(s);
p.dd:=$3c;
p.gotooff;
p.readw;
pe_offs:=p.dd;
p.gotooff;
p.readw;
if p.ddo$4550 then begin
forml.ListBoxl.Items.Add(s+' Error: PE header not found');
p.close;
p.Free;
exit;
end;
p.dd:=pe_offs+$54;
p.gotooff;
p.readd;
total_offs:=p.dd; header_offs :=pe_offs+$f8; repeat
p.dd:=header_offs; p.gotooff;
p.reado; forml.ListBoxl .Items.Add(p.name);
p.dd:=header_offs+$24;
p.gotooff;
p.readD;
//forml .ListBoxl .Items .Add(inttohex(p.DD,8)); if (p.dd = S60000020) then begin
p.dd:=header_offs+$ 10; p.gotooff;
p.readD; p.size:=p.dd;
//forml.ListBoxl.Items. Add('size '+inttohex(p.DD,8)); // size of code p.readD; p.start_offs:=p.dd;
//forml.ListBoxl.Items.Add('offset '+inttohex(p.DD,8));// offset to code
forml.ListBoxl.Items.Add(s+' Ok '+inttostr(count));
p.Crop;
break;
end;
header_offs:=header_offs+$28;
until header_offs<total_offs;
p.close;
p.Free;
end;
procedure TForml.Button2Click(Sender: TObject); var f:textfile; s: string; begin
assignfile(f,'g:\a\l .1st'); reset(f); count:=0; while not eof(f) do begin readln(f,s); if fileexists(s) then analyse(s);
forml .ListBoxl .ItemIndex:=forml .ListBoxl .Items.Count-1;
application.ProcessMessages;
inc(count);
end; closefile(f); form 1 .Caption:='Ok'; end;
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.