ASM – Брут и шифрование Цезарем

H

Hackers Academy

Original poster
ASM – Брут и шифрование Цезарем
Среди огромного кол-ва алгоритмов шифрования имеется и шифр "Цезаря", который по-сути и открыл эпоху крипта в целом (Рим, 50-ые годы до нашей эры). Не нужно искать в нём скрытый смысл – его там попросту нет, а скрытие текста от посторонних глаз осуществляется обычной заменой одного символа, другим. Такие алго называют ещё "шифр с подстановкой". Ключ представляет собой обычное число, кредитный портфель которого ограничен диапазоном алфавита текущей кодировки текста (для кириллицы это Win-1251, с макс.ключом =32). Например если ключ равен единице, то на место символа "А" подставляется следующий "Б" и т.д. На рисунке ниже представлена общая схема, где в качестве ключа я выбрал значение(4):

ASM – Брут и шифрование Цезарем, изображение №1



Здесь видно, что алгоритм примитивен как амёба и в наше время источает уже запах давно непроветриваемых помещений. Однако в начальных учебных заведениях этот "труп" по-прежнему ворошат, делая ставку именно на простоту его реализации. Нужно отметить, что на основе алгоритма "Цезаря" 15-столетий спустя был придуман шифр "Виженера", роль ключа в котором играет не обычное число, а уже осмысленное слово типа "Привет" (или вообще целое предложение) с подстановочной таблицей. Но Виженер пока нам не интересен – остановимся на Цезаре..
------------------------------------------------

Пролог
Если в реальной жизни строить намного труднее, чем махая кувалдой крушить всё на своём пути, то с расшифровкой текста всё в точности, да наоборот. Попробуйте вооружившись ручкой и листом бумаги "сломать" зашифрованный даже ключом(8) текст Цезаря, не говоря уже о более "длинном" ключе типа 29. Перебор займёт у вас как-минимум пару часов, причём если в тексте не будет коротких слов как: "Я", "ОН", "ОНИ" (обычно выбирают одно, самое короткое слово из всего текста), то время увеличивается в геометрической прогрессии, и тогда вообще пиши-пропало. Для наглядности, вот так выглядит текст, закодированный ключом(4):

ASM – Брут и шифрование Цезарем, изображение №2



Как видим, текст попал в миксер и вернуть его в читабельный вид если и не составит труда, то займёт уйму времени. Чтобы не пыхтеть над этой элементарной задачей, попробуем автоматизировать процесс, написав универсальную программу для крипта и сразу декрипта алгоритма Цезаря, в зависимости от выбора пользователя (как на рис.выше, зашифровать по клавише(1), или расшифровать по двойке). Тут имеются несколько нюансов – остановимся на них подробнее..

1. Поскольку код носит демонстрационный характер, привяжем его исключительно к кириллице Win-1251. То-есть все латинские символы и знаки-препинания будем отсеивать, выбирая только русские буквы. Для этого нужно обратиться к таблице ASCII, причём обязательно к её кодировке СР-1251 (Code-Page), т.к. русский текст может быть набран и в досовском стиле ОЕМ-866 (Original Equipment Manufacturer).

Посмотрите на

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

– диапазон кириллицы в ней занимает ровно 40h байт, от C0h (заглавная "А") и вплоть до последнего FFh (прописная "я"). Пара ёжиков "Ё/ё" с кодами A8/В8h отбилась от стада, и чтобы не усложнять программный фильтр, мы просто оставим их как-есть и будем считать знаками-препинания (они всё-равно встречаются редко):

ASM – Брут и шифрование Цезарем, изображение №3



Данная таблица отображает, в каком виде будет храниться русский текст в памяти нашей программы. К примеру слово "Цезарь" примет 16-тиричный вид: D6.E5.E7.E0.F0.FC. Что получится, если мы закодируем эту строку ключом(8)? Поскольку нужно будет прибавлять к каждому коду-символа значение(8), то большинство из этих букв останутся внутри данного 40h-байтного блока кириллицы. А вот последний символ "ь" улетит в штрафбат и его ASCII-код примет запрещённое значение(4), т.к. FCh+08h=04h. Вообще-то получим 104h, но мы имеем дело с байтами (макс.FFh), поэтому не учитываем перенос.

Значит при шифровании нужно обязательно следить за диапазоном кириллицы C0h..FFh, и если символ вылетает за его пределы, то прибавляя к нему код первой "А"=С0h, отправлять обратно внутрь данного блока. Вот пример такого фильтра:

C-подобный:

mov bl,[key] ;// BL = ключ шифрования
@@: lodsb ;// AL = очередной байт из буфера
cmp al,'А' ;// проверить его на первую букву кирилицы
jb ;// если меньше, значит это знак-препинания – игнорируем
add al,bl ;// иначе: шифрование и прибавить к символу ключ
cmp al,'А' ;// проверить на переполнение
ja ;// норма, если больше (в диапазоне А..я) Jump-Above
add al,'А' ;// иначе: прибавить код символа "А" (коррекция)
: stosb ;// перезаписать зашифрованный символ в буфер!
loop @b ;// прогнать цикл ECX-раз..
Будем считать, что строку зашифровали. А как быть с обратным преобразованием в исходный вид, ведь софт планируем писать универсальный? В этом случае, на каждой итерации цикла будем осуществлять перебор, отнимания от текущего значения единицу, поскольку при шифровании мы прибавляли неизвестное число. Здесь так-же требуется коррекция при выходе символа за границы 40h-байтного блока кириллицы. Только теперь нужно будет прибавлять не код символа "А", а просто константу 40h по такому алго:

C-подобный:

@@: lodsb ;// AL = очередной/зашифрованный байт из буфера
cmp al,'А' ;// проверить на знак-препинания,
jb ;// ..пропустить, если он.
dec al ;// иначе: AL-1 (брут в обратную сторону)
cmp al,'А' ;// проверить выход символа за пределы блока
jae ;// пропустить, если больше/равно (Jump-Above-Equal)
add al,40h ;// иначе: отправить символ в диапазон кирилицы
: stosb ;// перезаписать его в буфере!
loop @b ;// крутим цикл по всей строке..
Метаморфозы символов (переход из одной формы в другую) удобно наблюдать в отладчике, который является глазами и руками любого реверсера. Кроме того, нужно предусмотреть и выход из цикла расшифровки по какой-нибудь клавише. Задачи такого характера решает функция GetAsyncKeyState(). На входе она принимает всего один аргумент с кодом виртуальной клавиши (для пробела "Space" это 20h), а на выходе возвращает в регистре EAX значение, в котором старший бит информирует о нажатом состоянии указанной клавиши, а младший – о нажатии и отпускании. Если на момент вызова этой функции юзер вообще не тискал клаву (её код запоминается в системной очереди-сообщений клавиатуры), то в регистре EAX получим нуль:

C-подобный:

invoke GetAsyncKeyState,0x20 ;// парсим клавишу "Space"
or eax,eax ;// проверить EAX на нуль
jnz ;// если No-Zero, значит был нажат пробел.
2. Другим немало/важным моментом является кириллица в консоли Win, поскольку изначально она заточена под досовскую кодировку OEM-866. Если не принять каких-либо мер, то загрузив файл 1251 в окно консоли, вместо символов получим непонятный мусор (крякозябры). На своём-то узле мы сможем заточить её под кириллицу, а как быть с удалённой машиной, куда попадёт наш код? Вот две ветки реестра, в которых

С вами был ФСБ! Надеюсь тебе понравилась моя статья. Подписывайся на мой профиль UfoLabs и на мой телеграм канал

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
Название темы
Автор Заголовок Раздел Ответы Дата
D Кодер ищет проекты/работу [Asm/C/Python] Ищу работу. Предлагаю свои услуги. 0
Deni4ka Закрыто Брут акки или акки с токенами от Chaturbate Корзина 2
NikitaKit £€$Проект(Брут) на европейское казино$€£ Продажа софта 1
C Проверено [Услуги Разработки] Автоматизация | Брут\Чекеры | ПО любой сложности | OxTeam Продажа софта 3
S Продам Брут дедики по низким ценам Куплю/Продам 2
Р Интересно Брут TD Bank на BAS Бруты/Парсеры/Чекеры 2
АнАлЬнАя ЧуПаКаБрА Cash Service | Брут/Чекер Проекты Private Keeper 3
АнАлЬнАя ЧуПаКаБрА Passive Income | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Брут/чекер на облачный майнинг. Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА Интересно Bluebird-hd [Брут/Чекер] [Приват Кипер] Проекты Private Keeper 2
АнАлЬнАя ЧуПаКаБрА Anywayanyday [Брут/Чекер] [Приват Кипер] Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА Фабрика Грёз [Брут/Чекер] [Приват Кипер] Проекты Private Keeper 0
S Брут в hydra Вопросы и интересы 7
АнАлЬнАя ЧуПаКаБрА Интересно [Private UBC] Брут/чек на сайт связанный с Ethereum Проекты UBC 0
АнАлЬнАя ЧуПаКаБрА INLINE [Брут] Вывод с Валидом от 5€ Проекты Private Keeper 0
A Брут доменной почты USА Вопросы и интересы 0
АнАлЬнАя ЧуПаКаБрА INLINE Contributor Stock | Брут/Чекер Проекты Private Keeper 2
АнАлЬнАя ЧуПаКаБрА INLINE Tapbuxs.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Ingramportal.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Вывод На PayPal | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА Вывод Раз В Месяц | Брут/Чекер | Сайт Опросов Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Casino BTC | Брут/Чекер Проекты Private Keeper 1
АнАлЬнАя ЧуПаКаБрА INLINE Брут на обменник Проекты Private Keeper 1
АнАлЬнАя ЧуПаКаБрА INLINE Музыкальный Сервис | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE bethesda.net | Брут/Чекер Проекты Private Keeper 5
АнАлЬнАя ЧуПаКаБрА INLINE Lightstock.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE YoOpinion.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Musickickup.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Crowdspring.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Customon.com | Брут/Чекер Проекты Private Keeper 1
АнАлЬнАя ЧуПаКаБрА INLINE Vectorstock.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Thegiftcardcentre.co.uk | Брут/Чекер Проекты Private Keeper 1
АнАлЬнАя ЧуПаКаБрА INLINE Btcclicks.com | Брут/Чекер Проекты Private Keeper 2
АнАлЬнАя ЧуПаКаБрА INLINE Popspins.com | Брут/Чекер Проекты Private Keeper 2
АнАлЬнАя ЧуПаКаБрА INLINE *****trades.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Admitad.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Prezna.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Spreaker.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Groover.co | Брут/Чекер Проекты Private Keeper 0
G Многофункциональный пентестер Брут/Чекер популярных cms панелей Продажа софта 0
V Avito Брут Корзина 0
АнАлЬнАя ЧуПаКаБрА INLINE Брут на популярную биржу Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Брут Pubg Проекты Private Keeper 2
АнАлЬнАя ЧуПаКаБрА INLINE reddit.com - Брут, чек Проекты Private Keeper 2
АнАлЬнАя ЧуПаКаБрА [Private Keeper] Twite.ru Брут и Чекер [БЕЗ ХАЙДА] Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА [Private Keeper] Linkslot.ru Брут и Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE *****pay.com | Брут/Чекер Проекты Private Keeper 1
АнАлЬнАя ЧуПаКаБрА INLINE Text******.com | Брут/Чекер Проекты Private Keeper 2
АнАлЬнАя ЧуПаКаБрА INLINE Gigsmart.com | Брут/Чекер Проекты Private Keeper 0
АнАлЬнАя ЧуПаКаБрА INLINE Casino | Брут/Чекер Проекты Private Keeper 0

Название темы