Крипто программирование Oflameron

Крипто программирование Oflameron

Vall

Транслятор для криптографического программирования (скорее - многогранной обфускации текста, но крипту можно добавить) Oflameron можно сгенерировать, например, в Deepseek по ИИ запросу.

https://aiscreenplay.pages.dev/

Запрос версии интерпретатора Oflameron 1.29


https://llmproject.livejournal.com/16812.html


Напиши HTML+JavaScript код веб-страницы, оптимизированной для просмотра на смартфоне с вертикальной ориентацией.


Элементы интерфейса:

Заголовок: "Интерпретатор языка Oflameron ver 1.29"


Поле №1 (textarea): "Псевдослучайное число (ключ для XOR)"


Начальное значение: 176684706477838432958329750074291851582748389687561895812160620129261977163358586401104946332014022802424840484736440263640058869150064213123847594034139965365510006253457917812163931669483321

Начальное значение использовать, если пользователь не ввёл ничего другого.

Подпись: "Введите ключ как строку цифр"

Поле №2 (textarea): "Код программы Oflameron"

Поле №3 (textarea, readonly): "Результат / Шифротекст"

Поле №4 (textarea, readonly): "HEX Результат / Шифротекст" то же самое содержимое, что и в Поле №3 но в виде HEX-кодов символов

Кнопки: RUN (запуск интерпретатора) и XOR (операция с ключом)

Блок для сообщений (div)

Интерпретатор Oflameron:

Переменные и константы:

h, q, l, k - числовые переменные, начальное значение 0 для всех

Константы: a=0, b=1, c=3, d=5, e=7, p=19, t=23, v=43, w=73

Нормализация чисел:

javascript

function normalize(num) {

  while (num > 127) num -= 127;

  if (num < 0) num = Math.abs(num);

  return num;

}


Нормализация чисел применяется после КАЖДОЙ математической операции к результату.

Допустимые операнды:

Константы: a, b, c, d, e, p, t, v, w

Переменные: h, q, l

k - используется ТОЛЬКО как индекс, НЕ как операнд

Операторы:

fXY - умножение: h = normalize(X * Y) (k+3)

gXY - сложение: h = normalize(X + Y) (k+3)

iXY - вычитание: h = normalize(Math.abs(X - Y)) (k+3)

lX - записать в l ASCII-код символа из позиции k + normalize(X) (k+2)

Если позиция вне строки > пропустить

mX - вывести символ с кодом normalize(X) в поле #3 (k+2)

Только если код 32-126 (печатные символы)

nq - заменить символ в позиции k + normalize(q) на символ с кодом normalize(h) (k+2)

Если позиция вне строки > пропустить

После замены продолжать обычное выполнение

Общие правила:

Исполнение строго слева направо

k - только увеличивается

Движение по коду:

f,g,i: k+3

l,m,nq: k+2

Ошибка/неизвестный символ: k+1  Если символ в строке кода не описан в алгоритме или не является оператором, то перейти к анализу следующего символа.

Ошибка: если ожидается операнд, но символ недопустим > k+1 (перейти к анализу следующего символа в строке программы)

Неизвестные символы: пропускаются (k+1). Это не является ошибкой. Просто пропускаются.

Самомодификация: через оператор nq

Сброс при RUN: обнулить h,q,l,k, очистить поле #3

Защита от циклов: максимум 100000 шагов

Операция XOR:

Выполняется: между ключом (поле #1) и текстом (поле #3)

Процесс:

Взять N = min(длина_ключа, длина_текста)

Для i=0..N-1: результат[i] = String.fromCharCode(код_ключа[i] ^ код_текста[i])

Заменить содержимое поля #3 на результат

Заменить содержимое поля #4 на результат в виде HEX кодов

Обратимость: XOR(XOR(текст, ключ), ключ) = текст

Сообщения: в отдельном div показывать:

"Ключ короче текста" (если ключ короче)

"Текст короче ключа" (если текст короче)

"XOR выполнен успешно"

Требования к реализации:

Чистый HTML/CSS/JavaScript без внешних библиотек

Адаптивная вёрстка для мобильных устройств

Кнопка RUN: запускает интерпретатор с кодом из поля #2

Кнопка XOR: выполняет операцию XOR как описано выше

Состояние: не сохраняется между запусками


Простое число (псевдослучайное число): используется только для XOR, проверка не требуется

Примеры (показать в нижней части веб страницы):

fbc > h = normalize(1*3) = 3, k+3

   где константы b=1 и c=3, результат -> h

   normalize - уменьшает результат на 127 до тех пор, пока он не станет меньше 127


ghc > h = normalize(h + 3), k+3

  где h - регистр с вычисляемыми значениями


lp > l = ASCII_код_в_позиции(k+19), k+2

    где константа p=19 Записать в переменную l символ из текущей позиции+19


ml > вывести символ с кодом normalize(l), k+2

    написать на экран символ с кодом normalize(l)


nq > code[k+normalize(q)] = символ_с_кодом normalize(h), k+2

    в строку программы в позицию q написать символ_с_кодом normalize(h)


Примечание:

Работа интерпретатора начинается после нажатия кнопки RUN с просмотра строки кода программы в Поле №2 (textarea). В строке кода программы СТРОГО должны быть только символы: a, b, c, d, e, p, t, v, w, h, q, l, k, f, g, i, l, m, n

Если в строке кода программы есть любые другие символы, то строку кода надо отредактировать удалив все иные символы. Отредактированную строку надо записать обратно в Поле №2 (textarea) и начать анализировать и исполнять отредактированный код программы

В листинге Интерпретатора использовать кодировку win-1251, не использовать эмодзи.


Интерпретатор допускает неоднозначные ситуации - обязанность контроля возлагается на программиста.


https://telegra.ph/Web-Site-07-03

Online Generate Processing https://chat.deepseek.com/share/3eat3zyntgaxiv81zu

Примеры программ:

Интерпретатор языка Oflameron использует код программы следующего вида:


fcdfhdghdihbmhghdghdghdghdghcmhghcghcmhihdihdihbmhghcghcghcghcmhihdihcmhgheghdghbmhihcmhihbmh


Эта программа выводит на экран слово Oflameron

В ней заданы только вычисления и вывод на экран.

Причём, стойкость такой программы к взлому ничтожная. Видны повторяющиеся блоки, наводящие на мысль о вычислениях.

Посмотрим, можно ли ее как-то модернизировать.


Перепишем программу в следующем виде:


Print fc=(dfhdghd)-(ihbmhg)*(hdghdghd)+g-(hdghcmhghcg)/74355-(hcmh+ihdihdi)*hbmh-ghcgh+(cghcghcm+hihdihcm)*hghegh-dghbmhi+hcmhihbmh


Уже больше похоже на уравнение. Можете его решить?

Продолжим. Например, вот так:



Решите задачу.

Какие должны быть значения переменных, чтобы на выходе программы получилось: 127865

Print fc=(dfhdghd)-(ihbmhg)*(hdghdghd)+g-(hdghcmhghcg)/74355-(hcmh+ihdihdi)*hbmh-ghcgh+(cghcghcm+hihdihcm)*hghegh-dghbmhi+hcmhihbmh


или вот так. Это тоже программа на Oflameron:


Даны переменные fc=(dfhdghd) ih=(bmhg)*(hdghdghd) g=(hdghcmhghcg)/74355 hc=(mh+ihdihdi)*hbmh-ghcgh Чему равно cgh=(cghcm+hihdihcm)*hghegh-dghbmhi+hcmhihbmh

Обфускатор https://chat.deepseek.com/share/uo6l2ke1tl6f6xv8qv



Описание:

Протестируем запрос, описывающий дополнительную функцию Интерпретатора - циклическое изменение символов, обозначающих те или иные константы, переменные и операторы.

Это должно сильно усложнить восприятие текста кода программы.



Константы: a, b, c, d, e, p, t, v, w

Переменные: h, q, l, k      Примечание: l - переменная, но при этом обознаяает и оператор

Операторы: f, g, i, l, m, n


Т.е. список всех символов, которые имеют служебное значение в Интерпретаторе следущий.


Список символов: a, b, c, d, e, p, t, v, w, h, q, l, k, f, g, i, m, n


Все другие символы, в т. числе и на верхнем регистре - ничего не значат в программе и должны быть пропущены.



Для формирования более сложного текста кода программы дополним Интерпретатор языка Oflameron функцией ротации управляющих символов.


1. Введем в JavaScript код Интерпретатора внутреннюю переменную STP, в которую пользователем будут помещаться целые числа на этапе редактирования веб страницы.

  Т.е. в процессе работы веб страницы с Интерпретатором (исполнения кода программы) STP можно считать константой

2. Значение в переменной STP показывает, на сколько нужно сдвинуть ВПРАВО по списку символов a, b, c, d, e, p, t, v, w, h, q, l, k, f, g, i, m, n их функционал. Функционал сдвигается циклически.

  Пример. Если STP=1 то исходя из списка a принимает значение b=1, b принимает значение с=3, c принимает значение b=5 и т.д. v принимает значение w=73, а при этом w начинает выполнять функции регистра h, h начинает выполнять функции q, символ q начинает выполнять функции l и т.д.

  Последний символ в строке a, b, c, d, e, p, t, v, w, h, q, l, k, f, g, i, m, n - символ n. Циклически сдвигая функции вправо мы получим, что n должен выполнять функции константы a и т.д. по списку столько циклов, сколько потребуется для исполнения программы.

  Соответственно, если сдвинуть 18 раз, все символы будут исполнять первоначальные функции.

3. Когда осуществляется сдвиг функций вправо? После исполнения каждого оператора происходит сдвиг функционала на STP вправо.

  Пример:  fcdfhd - сначала исполняется fcd как по умолчанию в алгоритме Интерпретатора. Т.е. выполняется fcd (умножение c на d) и по списку a, b, c, d, e, p, t, v, w, h, q, l, k, f, g, i, l, m, n все сдвигается на STP вправо. Допустим, STP=1, тогда f получает функционал g и теперь обозначает оператор сложения 

  В примере у нас вторым оператором идёт fhd, но теперь это сложение и выполняется сложение h+d

  Если возникает ошибка, например функционал оператора с двумя параметрами переназначается на оператор с одним параметром (или наоборот), то действие пропускается - стандартная обработка ошибок.

  Пользователь может намеренно использовать возникающие ошибки для обфускации кода программы.


Oflameron - © by Valery Shmelev

Report Page