среда, 28 апреля 2010 г.

Надежность текстового сообщения, где каждой букве соответствует свой уникальный символ

I. Введение.

Когда-то давным давно в детстве в моей школе, а если быть точным моем классе пошла мода писать шифрограммы ;) Причем каждой буковке русского алфавита ставили свой уникальный символ и далее, используя этим символы писали сообщение тем кому доверяли.

Нет, школа была не с каким-нить "перенаклоном", а обычного типа, с обычными детьми. Сказал бы, что была "гоп"-типа, где сущестовали "ты с какого района пацанчик?", но  это уже тема другого общения.

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

Мы тогда думали, что верх надежности... Но так ли это ? ;)

Эта запись, покажет насколько это надежно и где это можно применять.

П. Анализ.

Приведу еще раз метод шифрования. Если зашифровать текстовое сообщение, скажем на русском языке, где каждой букве из алфавита сопоставить уникальный символ и создать таким образом "словарь замены", а после уже все сообщении поменять на уникальные символы из алфавита,  то эта шифрование будет надежным, как правило!

  1. Слова применяемые в языке имеют избыточность и особенность.
  2. Каждая буква может встречаться больше\меньше чем какая-либо другая
  3. Как правило при написании предложения используются пробелы.

Поясню п.1. возьмем слова "масса", "касса", как видим есть особеность "сс". Так что видя шифровки вида 1112131312 мы можем предполагать о том что "13" это возможно "с" или "н", а ведь есть слова где встречаются и "нн" ;) Замечу, что это не одна особенность русского языка, есть и другие.

Поясню п.2 можно взять самую большую книгу на русском языке, к примеру "Война и Мир" и подсчитать частоты встречаемости каждой буквы, в век ЭВМ и Интернет эту задачу не очень долго осуществить. Далее взяв шифро-текст, подсчитать частоты встречаемости каждого символа и можно строить предположения о каких-либо сопоставлениях символов с буквами, а учитывая при этом п.1 это еще и помогает ;)

Поясню п.3 при проделаных п.2 и п.1 моно выявить предлоги, можно также выделить, где начинаются слова и где они заканчиваются.

Дальше дело техники.

III. Че ваще никогда не юзать что-ли ?

Этот вид шифрования надежен только тогда, когда встречается мало нюансов и текст шифруемого сообщения не имеет большой длины.

суббота, 17 апреля 2010 г.

Получение адреса загрузки Kernel32 через PEB

Всем до боли знакомый способ получения адреса загрузки динамической kernel32.dll посредством доступа к PEB:

.code:0040100A 64 A1 30 00 00+ mov eax, large fs:30h
.code:00401010 8B 40 0C mov eax, [eax+0Ch]
.code:00401013 8B 40 1C mov eax, [eax+1Ch]
.code:00401016 8B 00 mov eax, [eax]
.code:00401018 8B 40 08 mov eax, [eax+8]

После свой работы на Windows 7 x64, поверг меня немного в изумление ;) по найденому адресу распологается совсем другая динамическая библеотека, это kernelbase।dll. Нет, я конечно слышал об отличиях, но столкнулся на практике только сегодня )))

Об этом можно почитать тут и здесь . Весьма ясно и не противоречиво написанно чего и где находится и как искать нужное ! ;)