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

H

Hackers Academy

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
wrangler65 Интересно Обход sms уведомлений и вход в лк: Cовременные методы работы с брут ба 2025 Карты/CC/Банки/Enroll 0
semsvm Интересно Брут/Чекер Hotmail Account Checker 1.0 - 2025 Готовый софт 0
B Брут на Bongacams Предоставляю работу. Ищу специалиста. 0
5 Продам Dedicated Servers (rdp).БРУТ Дедики/VPN/соксы/ssh 1
S Продам Выделенные серверы и VPS под брут/скан (1-10Gbps) Сайты/Хостинг/Сервера 0
slovokek НУЖНО НАПИСАТЬ БРУТ Предоставляю работу. Ищу специалиста. 1
S Продам Брут дедики по низким ценам Покупка/Продажа 2
S Выделенные серверы и VPS под брут/скан (1-10Gbps) | Brute/PortScan friendly servers with 1-10Gbps(unlimited unshared) Сайты/Хостинг/Сервера 0
S Раздача дедиков(брут) Раздачи и сливы 5
Р Интересно Брут TD Bank на BAS Готовый софт 2
K Интересно Нужны базы Грузии под брут Предоставляю работу. Ищу специалиста. 0
K Требуется брут почт Предоставляю работу. Ищу специалиста. 2
АнАлЬнАя ЧуПаКаБрА Интересно [Private UBC] Брут/чек на сайт связанный с Ethereum Проекты UBC 0
АнАлЬнАя ЧуПаКаБрА Интересно Пишем брут на любой(почти) банк [OFX] Программирование 1
АнАлЬнАя ЧуПаКаБрА Интересно Yandex | OPEN BULLET | config (брут, без захода на почту) Готовый софт 3
АнАлЬнАя ЧуПаКаБрА WISH | OPEN BULLET | config (брут/чек) Готовый софт 7
АнАлЬнАя ЧуПаКаБрА Boxberry | OPEN BULLET | config (брут/чек) Готовый софт 1
A Продам Продажа брут дедиков • RDP Дедики/VPN/соксы/ssh 2
M Куплю дорого дэдики брут Дедики/VPN/соксы/ssh 2
C Куплю Куплю брут Citibank Бюджет резиновый Покупка/Продажа 0
E Проверено Продажа dedicated server от amazon (не брут) Дедики/VPN/соксы/ssh 2
S Проверено Продажа дедиков. Наивысшее качество среди брут RDP., лояльные цены! Доступы - FTP, shell'ы, руты, sql-inj, БД 1
C Прием смс на реальные номера US|Продажа ssh-tunel (не Брут) Ищу работу. Предлагаю свои услуги. 9
Allen Слив снифа банков IOS/Android (+ Бонус банк брут) Раздачи и сливы 3
C Раздам proxy под брут из приват софта Раздачи и сливы 17
1 Dedicated Servers - мануал для чайников (Брут дедиков) Уязвимости и взлом 0
АнАлЬнАя ЧуПаКаБрА Брут|чекер сервиса WISH Готовый софт 0
G Перехват хеша NTLMv2-SSP и брут пароля с помощью документа Полезные статьи 1
АнАлЬнАя ЧуПаКаБрА Gmail брут Готовый софт 4
K Брут-форс формы входа роутеров Уязвимости и взлом 0
K Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa ЧАСТЬ 2 Уязвимости и взлом 0
K Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa Уязвимости и взлом 0
Ж Брут база 100% валид Раздачи и сливы 2
G Брут и проверка баланса Yandex Money Готовый софт 1
G Брут & чекер сервиса BigStockPhoto Готовый софт 7
G Брут Gmail Готовый софт 1
S Брут-чекер Spotify Готовый софт 0
S [UBC FREE] брут на немецкий шоп Проекты UBC 0
АнАлЬнАя ЧуПаКаБрА UBC Брут Чекер казино Проекты UBC 0
R Проверено Скоростные Дедики под Дамп, Брут Дедики/VPN/соксы/ssh 1
F Куплю Скупаю брут дедики (Rdp) Покупка/Продажа 0
А Брут RMS Полезные статьи 18
A Брут/чекер для платёжки(не топовой) Предоставляю работу. Ищу специалиста. 1
Q Забугор почты под брут Раздачи и сливы 3
L Куплю Скупаю ЛЮБЫЕ БРУТ дедики! Покупка/Продажа 0
I Брут-форс и эксплуатация скомпрометированных WordPress Уязвимости и взлом 0
T Брут для skype Готовый софт 3
S Куплю Куплю банк брут\чекер Покупка/Продажа 8
АнАлЬнАя ЧуПаКаБрА Вейп за брут пп Раздачи и сливы 3

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