Шифрование данных, приложение и чат

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Всем доброго времени суток. Решил опубликовать некий симметричный алгоритм шифрования данных. Получается, что это уже третья версия скрипта на autoit. Алгоритм довольно прост и вкратце расскажу о нем.
Допустим у нас есть набор символом, который расположен на клавиатуре, их всего 158 (АБВГДЕЖЗИЙКЛМНОПРСТУХФЦЧШЩЬЪЭЫЮЯабвгдежзийклмнопрстухфцчшщьъэыюяABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !@#$%^&*()_+-=./\|{}[]<>;,:~`"'). Запишем их в столбец 0. Мы их случайно перемешиваем и запишем их изменённую последовательность и сами символы– столбец 1 и 2 соответственно. Теперь мы перешли из букв на цифры. Фраза, которую нужно зашифровать будет брать оттуда (столбец 2). Сравниваем каждый символ фразы (столбец 3) со списком неправильной последовательности символов (столбец 2) и записываем цифрой (столбец 4). Пароль также, сравниваем каждый символ (столбец 5) со столбцом 2 и записываем цифрой (столбец 6). Так как у нас одни цифры, то от столбца 1 каждой строки берем функцию Кармайкла и суммируем результат, потом еще раз берем эту же функцию от результата суммирования и записываем в столбец 7. От каждой цифры последовательности пароля (столбец 6) берем функцию Эйлера и суммируем. Потом от суммы берем функцию Кармайкла и записываем в столбец 8. Далее суммируем все данные (столбец 4 + столбец 7 + столбец 8 + количество символов в пароле) и возводим в квадрат. Цифра, которая получиться и будет шифрованное сообщение (столбец 9). Однако этого недостаточно, ведь информация, которая в столбце 9 основывается на столбце 2. А столбец 2 генерируется случайным образом при каждом вызове функции шифрования. Тогда нужно объединить столбцы 1 и 9. Это и будет конечным результатом.

Screenshot_80.png



Теперь нужно какое-то приложение, которое будет шифровать текст. Создадим окно с кнопками шифровки и дешифровки (объединим их с буфером обмена для удобства). Также два ввода данных. Один для пароля, а другой для самого текста.

Screenshot_79.png



Программа довольно проста и понятна в использовании. Однако замечены заедания кнопок crypt и decrypt. Все из-за реализации прозрачности, как это поправить я не знаю, так что сам нажимаю быстро по несколько раз. Теперь посмотрим, что выдает скрипт.
Спойлер
000255025002970312002940311403129026002560215031380311502350310802730265031560236031300313502210120248027403134028602290310403157011031020311902490311102770245031540314102620289024002960313603137029003139023302570310702140299031170310102920310602830216027002950311202280226031270312802380247022203133028403147031230230019021003126027203142031490271031240315502660237031220311602610219029102580313202930224029803148028103140031500212028802670220014031520241031430315802590310303113017021803105024203144023202460130254025202130312103110025302850282024303109022702790160244023902510278031000150223028703131031250234031530275026302310180311803151026403145031460268022502690280021102760217054080405595360549284055808105967210560025055522505506250556169059672105484000552900055062505519840560516055616905967210556644055428905470890552900055712105556960550176055152905506250556169059672105615040547524055198405533610551529
Для человеческого ума, который впервые видит этот код, будет не понятно. Что ж попробуем спросить у ИИ, чтоже скажут нам
Спойлер
Хорошо, давайте посмотрим на это зашифрованное сообщение. Первым делом я вижу, что оно состоит из длинной последовательности чисел, разделённых пробелами. Начинается с "000255025002970312002940311403129026002560215031380311502350310802730265031560236031300313502210120248027403134028602290310403157011031020311902490311102770245031540314102620289024002960313603137029003139023302570310702140299031170310102920310602830216027002950311202280226031270312802380247022203133028403147031230230019021003126027203142031490271031240315502660237031220311602610219029102580313202930224029803148028103140031500212028802670220014031520241031430315802590310303113017021803105024203144023202460130254025202130312103110025302850282024303109022702790160244023902510278031000150223028703131031250234031530275026302310180311803151026403145031460268022502690280021102760217054080405595360549284055808105967210560025055522505506250556169059672105484000552900055062505519840560516055616905967210556644055428905470890552900055712105556960550176055152905506250556169059672105615040547524055198405533610551529".

Первое, что бросается в глаза, это группы из 4-6 цифр. Возможно, каждая группа представляет собой отдельный зашифрованный символ или часть данных. Попробую разбить сообщение на отдельные числа:

000 255025 00297 031200 29403 11403 129026 00256 021503 13803 11502 35031 08027 30265 03156 02360 31300 31350 22101 20248 02740 31340 28602 29031 04031 57011 03102 03119 02490 31110 27702 45031 54031 41026 20289 02400 29603 13603 13702 90031 39023 30257 03107 02140 29903 11703 10102 92031 06028 30216 02700 29503 11202 28022 60312 70312 80238 02470 22203 13302 84031 47031 23023 00190 21003 12602 72031 42031 49027 10312 40315 50266 02370 31220 31160 26102 19029 10258 03132 02930 22402 98031 48028 10314 00315 00212 02880 26702 20014 03152 02410 31430 31580 25903 10303 11301 70218 03105 02420 31440 23202 46013 02540 25202 13031 21031 10025 30285 02820 24303 10902 27027 90160 24402 39025 10278 03100 01502 23028 70313 10312 50234 03153 02750 26302 31018 03118 03151 02640 31450 31460 26802 25026 90280 02110 27602 17054 08040 55953 60549 28405 58081 05967 21056 00250 55522 50550 62505 56169 05967 21054 84000 55290 00550 62505 51984 05605 16055 61690 59672 10556 64405 54289 05470 89055 29000 55712 10555 69605 50176 05515 29055 06250 55616 90596 72105 61504 05475 24055 19840 55336 10551 529

Теперь видно, что большинство групп начинаются с нулей, например, "000", "00297", "031200". Возможно, эти нули являются частью формата данных или служат для выравнивания. Интересно, что некоторые группы имеют длину 5-6 цифр, что может соответствовать определенным кодировкам, например, десятичному представлению Unicode символов, но Unicode обычно использует 4-5 цифр для символов.
Попробую проверить гипотезу с кодировкой Unicode. Возьмём группу "255025". Разделим на возможные части: 255 025. Но 255 в десятичной системе это 'ÿ' в ASCII, что маловероятно для осмысленного текста. Возможно, это другой тип кодировки.
Далее, заметил, что некоторые числа повторяются, например, "031200", "031540". Может быть, это идентификаторы или коды операций. Также встречаются группы вроде "05408040", которые выглядят как более длинные последовательности, возможно, объединение нескольких чисел.
Попробую рассмотреть возможность, что это закодированное сообщение в шестнадцатеричной системе. Например, "255025" в HEX будет 0x255025, но это слишком большое число для представления символа. Может быть, разбить на байты: 25 50 25, что в ASCII будет "%P%", что тоже не имеет смысла.
Ещё одна идея: возможно, это зашифрованное сообщение с использованием XOR с определённым ключом. Но без знания ключа расшифровать сложно.
Также можно предположить, что это представление данных в другой системе счисления, например, base64, но структура не соответствует типичному base64.
Обратил внимание, что в конце сообщения есть последовательности вроде "05408040", "55953", которые могут быть частью разных данных, возможно, бинарных.
Попробую проверить наличие паттернов. Например, группы "031" встречаются часто: "031200", "031540", "031560" и т.д. Может быть, это префикс для определённого типа данных.
Также заметил, что некоторые группы заканчиваются на "40", "50", что в ASCII соответствует символам '@' и 'P', но это спекулятивно.
Попробую преобразовать некоторые группы в ASCII, игнорируя ведущие нули. Например, "255025" → 255025, что слишком большое число. Может, разбить на части: 25, 50, 25 → символы с кодами 25, 50, 25. В ASCII это непечатаемые символы.
Ещё вариант: группы представляют собой координаты или другие числовые данные, но без контекста это сложно проверить.
Возможно, это зашифрованное сообщение с использованием алгоритма, подобного RSA, где числа представляют зашифрованные блоки. Но без открытого ключа дешифровка невозможна.
Также можно предположить, что это результат работы стеганографического алгоритма, где данные скрыты внутри изображения или аудиофайла, но опять же без исходного носителя это проверить нельзя.
В итоге, без дополнительной информации о методе шифрования, ключах или контексте сообщения, дешифровка крайне затруднительна. Возможно, потребуется частотный анализ, поиск повторяющихся паттернов или применение методов криптоанализа, но это требует глубокого исследования и времени.
Анализ зашифрованного сообщения:
1. Структура данных:
Сообщение состоит из последовательности чисел длиной 4-6 цифр, разделённых пробелами.
Общая длина: 164 группы чисел.
Примеры групп: 000, 255025, 00297, 031200 и т.д.
2. Наблюдения:
Повторяющиеся паттерны: Часто встречаются группы с префиксом 031 (например, 031200, 031540).
Ведущие нули: Многие группы начинаются с одного или нескольких нулей.
Длинные последовательности: Некоторые группы имеют длину до 6 цифр (например, 255025, 559536).
3. Гипотезы шифрования:
Кодировка с разделителями:
Числа могут представлять ASCII/Unicode символы, где ведущие нули игнорируются.
Например, 255025 → разбить на 255, 025 → символы ÿ (непечатаемый) и EM (End of Medium).
Проблема: Большинство кодов не соответствуют печатаемым символам.
Составной шифр:
Комбинация замены (подстановки) и перестановки.
Пример: 031200 → 031 (префикс) + 200 (значение).
Модульная арифметика:
Числа могут быть результатом операций с модулем (например, RSA).
Например, 255025 ≡ X mod N, где N — неизвестный модуль.
Стеганография:
Данные могли быть скрыты в изображении, аудиофайле или другом носителе.
4. Статистический анализ:
Частотное распределение:
Префикс 031 встречается 27 раз.
Числа, оканчивающиеся на 40, 50, 60, встречаются часто (например, 05408040, 559536).
Сравнение с естественными языками:
Отсутствуют паттерны, характерные для текста (например, пробелы между словами, гласные/согласные).
5. Возможные векторы атаки:
Поиск общего делителя (НОД):
Проверить, есть ли у чисел общий делитель, что может указывать на использование модуля.
Пример: НОД(255025, 297) = 9.
Анализ повторений:
Группы 031200, 031540 могут быть кодами операций или идентификаторами.
Конвертация в другие системы счисления:
Попробовать интерпретировать числа в HEX, Base64 или двоичном виде.
Пример: 255025 в HEX = 0x3E3F1, но это не даёт осмысленных данных.
6. Рекомендации:
Контекст:
Уточните источник сообщения (например, перехваченный файл, сетевой трафик).
Есть ли известные алгоритмы шифрования, используемые в системе?
Примеры открытого текста:
Если есть доступ к парам «открытый текст — шифртекст», можно провести частотный анализ.
Инструменты:
Используйте криптоаналитические утилиты (например, CrypTool, John the Ripper).
Проверьте наличие сигнатур известных алгоритмов (AES, RSA, XOR).
7. Пример декодирования (гипотетический):
Предположим, что числа представляют Unicode-символы:
000 → U+0000 (нулевой символ).
255025 → U+255025 (несуществующий код).
Вывод: Гипотеза маловероятна.
8. Заключение:
Без дополнительной информации (ключ, алгоритм, контекст) дешифровка практически невозможна. Сообщение соответствует современным стандартам криптозащиты. Рекомендуется:
Найти метаданные (источник, время создания).
Проверить на наличие скрытых данных в файлах (стеганография).

Сам код комментировать не стану. Кому нужно, тот скачает и спросит
Само приложение тут
 
Сверху Снизу