|
|
|
Декодер | замена текста. |
|
|
FREEON |
28.1.2019, 6:38
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 28.1.2019, 4:24) Код --lua log "clear" log "mode compact"
local s="%D0%9A%D0%BE%D0%B4%20%7Benglish%20text%7D%20%D0%9A%D0%BE%D0%B4%20lua!!!" -- Код {english text} Код lua!!! log(s)
local t={} t["%D0%9A"]="К" t["%D0%BE"]="о" t["%D0%B4"]="д" -- добавить только кириллицу, остальные символы не надо -- ключи заглавными буквами
for v in pairs(t) do -- добавление ключей в таблицу, если был "%D0%9A", то добавляется "%d0%9a" t[v:lower()]=t[v] end
for i=32, 127 do t["%" .. string.format("%X", i)]=string.char(i) end -- добавление ключей в таблицу, все символы ascii с 32 по 127 s=s:gsub("%%[Dd][01]%%%x%x", t) -- замена кириллицы s=s:gsub("%%..", t) -- замена спецсимволов log(s) -- результат чо-то вроде получылось (IMG: style_emoticons/default/smile.gif) URL-декодер: %D0%A2%D0%B5%D0%BA%D1%81%D1%82 -> Текст
Код --lua log "clear" log "mode compact"
local s="Cirus-code-master%20%D0%B1%D0%BE%D0%B6%D1%8D%D0%BD%D1%8C%D0%BA%D0%B0!:)" -- Код {english text} Код lua!!! log(s)
local t={} t["%D0%90"]="А" t["%D0%91"]="Б" t["%D0%92"]="В" t["%D0%93"]="Г" t["%D0%94"]="Д" t["%D0%95"]="Е" t["%D0%81"]="Ё" t["%D0%96"]="Ж" t["%D0%97"]="З" t["%D0%98"]="И" t["%D0%99"]="Й" t["%D0%9A"]="К" t["%D0%9B"]="Л" t["%D0%9C"]="М" t["%D0%9D"]="Н" t["%D0%9E"]="О" t["%D0%9F"]="П" t["%D0%A0"]="Р" t["%D0%A1"]="С" t["%D0%A2"]="Т" t["%D0%A3"]="У" t["%D0%A4"]="Ф" t["%D0%A5"]="Х" t["%D0%A6"]="Ц" t["%D0%A7"]="Ч" t["%D0%A8"]="Ш" t["%D0%A9"]="Щ" t["%D0%AA"]="Ъ" t["%D0%AB"]="Ы" t["%D0%AC"]="Ь" t["%D0%AD"]="Э" t["%D0%AE"]="Ю" t["%D0%AF"]="Я" t["%D0%B0"]="а" t["%D0%B1"]="б" t["%D0%B2"]="в" t["%D0%B3"]="г" t["%D0%B4"]="д" t["%D0%B5"]="е" t["%D1%91"]="ё" t["%D0%B6"]="ж" t["%D0%B7"]="з" t["%D0%B8"]="и" t["%D0%B9"]="й" t["%D0%BA"]="к" t["%D0%BB"]="л" t["%D0%BC"]="м" t["%D0%BD"]="н" t["%D0%BE"]="о" t["%D0%BF"]="п" t["%D1%80"]="р" t["%D1%81"]="с" t["%D1%82"]="т" t["%D1%83"]="у" t["%D1%84"]="ф" t["%D1%85"]="х" t["%D1%86"]="ц" t["%D1%87"]="ч" t["%D1%88"]="ш" t["%D1%89"]="щ" t["%D1%8A"]="ъ" t["%D1%8B"]="ы" t["%D1%8C"]="ь" t["%D1%8D"]="э" t["%D1%8E"]="ю" t["%D1%8F"]="я"
for v in pairs(t) do -- добавление ключей в таблицу, если был "%D0%9A", то добавляется "%d0%9a" t[v:lower()]=t[v] end
for i=32, 127 do t["%" .. string.format("%X", i)]=string.char(i) end -- добавление ключей в таблицу, все символы ascii с 32 по 127
s=s:gsub("%%[Dd][01]%%%x%x", t) -- замена кириллицы s=s:gsub("%%..", t) -- замена спецсимволов log(s) -- результат
|
|
|
|
FREEON |
28.1.2019, 14:39
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
А можно ли скриптом сделать зеркальный текст? Что бы он отображался задом наперед? (IMG: style_emoticons/default/wink.gif) Например: Цитата Не только Леонардо да Винчи пишет задом наперед! >>> !дерепан модаз тешип ичниВ ад одраноеЛ окьлот еН
|
|
|
|
FREEON |
28.1.2019, 16:09
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
Возник вопрос решил допилить генератор морзянки... Код --lua --log "clear" log "mode compact"
--local s="Текст-Text-123!" -- Текс который хотим зашифровать в морзянку, вставить между "" --log(s) local file= io.open([[C:\123.txt]], "r") -- файл с текстом local result_file = io.open([[C:\456.txt]], "w") -- куда сохранить результат local t={} t["1"]=".----" t["2"]="..---" t["3"]="...--" t["4"]="....-" t["5"]="....." t["6"]="-...." t["7"]="--..." t["8"]="---.." t["9"]="----." t["0"]="-----" t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-" t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-." t["?"]="..--.." t["!"]="--..--" t[","]=".-.-.-" t["A"]=".-" t["B"]="-..." t["C"]="-.-." t["D"]="-.." t["E"]="." t["F"]="..-." t["G"]="--." t["H"]="...." t["I"]=".." t["J"]=".---" t["K"]="-.-" t["L"]=".-.." t["M"]="--" t["N"]="-." t["O"]="---" t["P"]=".--." t["Q"]="--.-" t["R"]=".-." t["S"]="..." t["T"]="-" t["U"]="..-" t["V"]="...-" t["W"]=".--" t["X"]="-..-" t["Y"]="-.--" t["Z"]="--.." t["А"]=".-" t["Б"]="-..." t["В"]=".--" t["Г"]="--." t["Д"]="-.." t["Е"]="." t["Ё"]="." t["Ж"]="...-" t["З"]="--.." t["И"]=".." t["Й"]=".---" t["К"]="-.-" t["Л"]=".-.." t["М"]="--" t["Н"]="-." t["О"]="---" t["П"]=".--." t["Р"]=".-." t["С"]="..." t["Т"]="-" t["У"]="..-" t["Ф"]="..-." t["Х"]="...." t["Ц"]="-.-." t["Ч"]="---." t["Ш"]="----" t["Щ"]="--.-" t["Ь"]="-..-" t["Ъ"]="-..-" t["Ы"]="-.--" t["Э"]="..-.." t["Ю"]="..--" t["Я"]=".-.-" for v in pairs(t) do -- добавление ключей в таблицу, если был "%Т", то добавляется "%т" t[v:lower()]=t[v] end
if file and result_file then -- если файлы открылись for v in file:lines() do result_file:write(string.gsub(v, ".", t).."\r\n") -- поиск и замена текста из таблицы 't' end
file:close() result_file:close() else log ("Файлы отсутствуют или недоступны для чтения/записи") end
--log(s) -- результат
Что я посылал: Цитата Всем привет faer И что получил Цитата .--сем привет ..-..-..-. Получается что для латинских букв создался нижний регистр, а для кириллицы нет, в чом загвоздка? (IMG: style_emoticons/default/huh.gif)
|
|
|
|
FREEON |
28.1.2019, 17:00
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 28.1.2019, 16:20) Работает только с латиницей. Используйте: Код Код --lua log "clear" log "mode compact" local text = clipboard () -- получить из буфера обмена текст в переменную text log (text) -- отобразить в логе значение переменной text wait (300) -- пауза 300 мсек local arr = clipboard (0, "string", "word") -- получить из буфера обмена текст в массив с разбивкой по строкам словам log() local t={} t["1"]=".----" t["2"]="..---" t["3"]="...--" t["4"]="....-" t["5"]="....." t["6"]="-...." t["7"]="--..." t["8"]="---.." t["9"]="----." t["0"]="-----" t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-" t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-." t["?"]="..--.." t["!"]="--..--" t[","]=".-.-.-" t["A"]=".-" t["B"]="-..." t["C"]="-.-." t["D"]="-.." t["E"]="." t["F"]="..-." t["G"]="--." t["H"]="...." t["I"]=".." t["J"]=".---" t["K"]="-.-" t["L"]=".-.." t["M"]="--" t["N"]="-." t["O"]="---" t["P"]=".--." t["Q"]="--.-" t["R"]=".-." t["S"]="..." t["T"]="-" t["U"]="..-" t["V"]="...-" t["W"]=".--" t["X"]="-..-" t["Y"]="-.--" t["Z"]="--.." t["А"]=".-" t["Б"]="-..." t["В"]=".--" t["Г"]="--." t["Д"]="-.." t["Е"]="." t["Ё"]="." t["Ж"]="...-" t["З"]="--.." t["И"]=".." t["Й"]=".---" t["К"]="-.-" t["Л"]=".-.." t["М"]="--" t["Н"]="-." t["О"]="---" t["П"]=".--." t["Р"]=".-." t["С"]="..." t["Т"]="-" t["У"]="..-" t["Ф"]="..-." t["Х"]="...." t["Ц"]="-.-." t["Ч"]="---." t["Ш"]="----" t["Щ"]="--.-" t["Ь"]="-..-" t["Ъ"]="-..-" t["Ы"]="-.--" t["Э"]="..-.." t["Ю"]="..--" t["Я"]=".-.-" for v in pairs(t) do -- добавление ключей в таблицу, если был "%Т", то добавляется "%т" t[string_lower(v)]=t[v] end --if --если в буфере есть текст for v in file:lines() do s=s:write(string.gsub(v, ".", t).."\r\n") -- поиск и замена текста из таблицы 't' end log(s) -- результат отобразить в логе clipboard (???) -- результат записать в буфер
Исправил... но решил немного модернизировать скрипт...ну что бы текст брался из буфера затем записывался в лог, далее обробатывался результат выдавался в лог и записывался в буфер...но чо то столкнулся с трудностями lua не понятно куда и какие запихивать переменные...караааул
|
|
|
|
FREEON |
28.1.2019, 20:51
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
Ну да так и получается что многие серверы хитрят с кодировкой и расшифровкой морзянки...они дописывают либо спец символы или пробелы. Вот можно сделать по аналогии как изменится код если к примеру в генерации в конце приписывать пробел. имеем t["1"]=".----" Код local s=text:gsub(".", t) --нужно добавить пробел в конец нужно получить ".---- " в итоге символы будут разделены одним пробелом, а слова двойным, что позволяет декодировать символы в текст. Тода для дешифровки нужно переделать маску(где записывали в бинарном виде)
|
|
|
|
FREEON |
28.1.2019, 21:29
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 28.1.2019, 21:18) Код for v in pairs(t) do -- добавление ключей в таблицу, если был "Т", то добавляется "т" А толку с этого? При дешифровке регистр не важен? В таблице будет 2 ключа: Код Т. е. при дешифровке символа '-' получим 'T' или 'т'. Причем, предсказать какую именной из этих букв получим нельзя, порядок ключей в таблице не определён. при дешифровке да он лишний, можно писать заглавной. А вот при генерации это важно так как мы не знаем как пользователь напишет. Если решит написать Т то такой код есть и его обработает, а если напишет "т" тогда ключа для генерации не будет, поэтому мелкий регистр это нужная страховка(запасной путь). Если замутить и генирацию и дешифровку в одном скрипте тогда нужны два регистра, а если делать отдельные скрипты для генерации один(ключи нужны) для дешифровки(то не нужны) другой. Так же придется делать отдельный(?) скрипт для дешифровки латиницы и кириллицы так как многие символы совпадают, это должен пользователь выбирать в какой язык переводить. Ну или приделать деление что бы в процессе декодирования пользователь мог сам поставить галку, но не знаю так наверное замутить нельзя
|
|
|
|
FREEON |
28.1.2019, 22:04
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 28.1.2019, 21:50) Либо делать 2 таблицы. Одна для кириллицы, другая для латиницы. Но опять же будет проблема если в тексте будет разный язык. Либо делать 1 таблицу, в которой все символы будут отличаться.
Лучше сделать два скрипта, отдельно для латиницы: Код t["1"]=".----" t["2"]="..---" t["3"]="...--" t["4"]="....-" t["5"]="....." t["6"]="-...." t["7"]="--..." t["8"]="---.." t["9"]="----." t["0"]="-----" t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-" t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-." t["?"]="..--.." t["!"]="--..--" t[","]=".-.-.-" t["A"]=".-" t["B"]="-..." t["C"]="-.-." t["D"]="-.." t["E"]="." t["F"]="..-." t["G"]="--." t["H"]="...." t["I"]=".." t["J"]=".---" t["K"]="-.-" t["L"]=".-.." t["M"]="--" t["N"]="-." t["O"]="---" t["P"]=".--." t["Q"]="--.-" t["R"]=".-." t["S"]="..." t["T"]="-" t["U"]="..-" t["V"]="...-" t["W"]=".--" t["X"]="-..-" t["Y"]="-.--" t["Z"]="--.."
и кириллицы: Код t["1"]=".----" t["2"]="..---" t["3"]="...--" t["4"]="....-" t["5"]="....." t["6"]="-...." t["7"]="--..." t["8"]="---.." t["9"]="----." t["0"]="-----" t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-" t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-." t["?"]="..--.." t["!"]="--..--" t[","]=".-.-.-" t["А"]=".-" t["Б"]="-..." t["В"]=".--" t["Г"]="--." t["Д"]="-.." t["Е"]="." t["Ё"]="." t["Ж"]="...-" t["З"]="--.." t["И"]=".." t["Й"]=".---" t["К"]="-.-" t["Л"]=".-.." t["М"]="--" t["Н"]="-." t["О"]="---" t["П"]=".--." t["Р"]=".-." t["С"]="..." t["Т"]="-" t["У"]="..-" t["Ф"]="..-." t["Х"]="...." t["Ц"]="-.-." t["Ч"]="---." t["Ш"]="----" t["Щ"]="--.-" t["Ь"]="-..-" t["Ъ"]="-..-" t["Ы"]="-.--" t["Э"]="..-.." t["Ю"]="..--" t["Я"]=".-.-"
так же к примеру некоторые символы кодируются одинаково, это ( ) Е Ё Ь Ъ и для них не важно также при декодировании какой будет результат(допустим первый попавшийся символ из таблицы), не критично что в слове к примеру будет е или ё, или две скобки (текст(
|
|
|
|
FREEON |
28.1.2019, 23:01
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 28.1.2019, 22:39) А пробел как при этом кодируется? Как отличать пробел от разделителя.
нет, мы будем использовать как символ деления символов и слов. для наглядности пробел заменим " " на "\" Изначально строка выглядит так: как\делаполучается мы в конце буквы при генерации кода дописываем local s=text:gsub(".", t) + \ --дописываем маской в результате что у нас было t["К"]="-.-" примет такой вид "-.-\"и в итоге пилот код сгенерирует такой: Код -.-\.-\-.-\\-..\.\.-..\.-\ к а к д е л а ➀ ➁ ➀ \ ➂ ➃ ➄ ➁
Для пилота нет разницы пробел там стоит или \ он и то и то видит как символ, а если нет такого ключа то он будет читать до первого \, а второй пропускает, что не нарушает структуру слов (IMG: style_emoticons/default/cool.gif) Для большей наглядности привиду пример где мы делали url декодер если в пример записать % о он никак не мешает декодировать декодируемый текст:%%D0%B1%%D0%BE%%D0%B6%%D1%8D%%D0%BD%%D1%8C%%D0%BA%%D0%B0 результат:%б%о%ж%э%н%ь%к%а то бишь слова(буквы) разделены
|
|
|
|
cirus |
29.1.2019, 0:50
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26744
Пользователь №: 16.971
Возраст: 29
|
Код --lua log "clear" log "mode compact"
local text=[[-.-\.-\-.-\\\-..\.\.-..\.-\]] -- "Как дела" --local text="Как дела" -- [[-.-\.-\-.-\\\-..\.\.-..\.-\]] log(text)
local t, t1, temp = {}, {}, {} t["А"]=".-" t["Б"]="-..." t["В"]=".--" t["Г"]="--." t["Д"]="-.." t["Е"]="." t["Ё"]="." t["Ж"]="...-" t["З"]="--.." t["И"]=".." t["Й"]=".---" t["К"]="-.-" t["Л"]=".-.." t["М"]="--" t["Н"]="-." t["О"]="---" t["П"]=".--." t["Р"]=".-." t["С"]="..." t["Т"]="-" t["У"]="..-" t["Ф"]="..-." t["Х"]="...." t["Ц"]="-.-." t["Ч"]="---." t["Ш"]="----" t["Щ"]="--.-" t["Ь"]="-..-" t["Ъ"]="-..-" t["Ы"]="-.--" t["Э"]="..-.." t["Ю"]="..--" t["Я"]=".-.-" for v in pairs(t) do temp[string_lower(v)]=t[v] end for v in pairs(temp) do t[v]=temp[v] end t["1"]=".----" t["2"]="..---" t["3"]="...--" t["4"]="....-" t["5"]="....." t["6"]="-...." t["7"]="--..." t["8"]="---.." t["9"]="----." t["0"]="-----" t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-" t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-." t["?"]="..--.." t["!"]="--..--" t[","]=".-.-.-" for v in pairs(t) do t1[t[v]]=v end -- таблица для дешифровки, копия 't' только ключи и значения ключей поменяны местами
local x=0 for v in text:gmatch("[%.%-%\\]") do x=x+1 end -- подсчёт точек, тире и слешей в строке
if x > #text*50/100 then -- если их больше 50%, считаем что передана шифрованная строка text=string.gsub(text:gsub("(.-)\\", t1), "\\\\", " ") -- дешифруем else text=string.gsub(string.gsub(text:gsub("([^ ])", "%1\\"), "%s", "\\\\"), "[^\\]", t) -- иначе шифруем end log (text)
|
|
|
|
FREEON |
29.1.2019, 1:18
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 29.1.2019, 0:50) Код --lua log "clear" log "mode compact"
local text=[[-.-\.-\-.-\\\-..\.\.-..\.-\]] -- "Как дела" --local text="Как дела" -- [[-.-\.-\-.-\\\-..\.\.-..\.-\]] log(text)
local t, t1, temp = {}, {}, {} t["А"]=".-" t["Б"]="-..." t["В"]=".--" t["Г"]="--." t["Д"]="-.." t["Е"]="." t["Ё"]="." t["Ж"]="...-" t["З"]="--.." t["И"]=".." t["Й"]=".---" t["К"]="-.-" t["Л"]=".-.." t["М"]="--" t["Н"]="-." t["О"]="---" t["П"]=".--." t["Р"]=".-." t["С"]="..." t["Т"]="-" t["У"]="..-" t["Ф"]="..-." t["Х"]="...." t["Ц"]="-.-." t["Ч"]="---." t["Ш"]="----" t["Щ"]="--.-" t["Ь"]="-..-" t["Ъ"]="-..-" t["Ы"]="-.--" t["Э"]="..-.." t["Ю"]="..--" t["Я"]=".-.-" for v in pairs(t) do temp[string_lower(v)]=t[v] end for v in pairs(temp) do t[v]=temp[v] end t["1"]=".----" t["2"]="..---" t["3"]="...--" t["4"]="....-" t["5"]="....." t["6"]="-...." t["7"]="--..." t["8"]="---.." t["9"]="----." t["0"]="-----" t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-" t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-." t["?"]="..--.." t["!"]="--..--" t[","]=".-.-.-" for v in pairs(t) do t1[t[v]]=v end -- таблица для дешифровки, копия 't' только ключи и значения ключей поменяны местами
local x=0 for v in text:gmatch("[%.%-%\\]") do x=x+1 end -- подсчёт точек, тире и слешей в строке
if x > #text*50/100 then -- если их больше 50%, считаем что передана шифрованная строка text=string.gsub(text:gsub("(.-)\\", t1), "\\\\", " ") -- дешифруем else text=string.gsub(string.gsub(text:gsub("([^ ])", "%1\\"), "%s", "\\\\"), "[^\\]", t) -- иначе шифруем end log (text) а в lua нет set delimiter ' ' ? Код for i, word in pairs(split(text, "<(.-)>")) do print(word) end
function split(string, delimiter) -- Got this function from [url=https://helloacm.com/split-a-string-in-lua/]https://helloacm.com/split-a-string-in-lua/[/url] result = {};
for match in (string..delimiter):gmatch("(.-)"..delimiter) do table.insert(result, match); end
return result; end
This code replaces the parts in the format "<(.-)>" Example: Input: "Hello<a>World</a>!" Expected Output: {"Hello", "<a>", "World", "</a>", "!"} Real Output: {"Hello", "World", "!"} Код
s = "Hello<a>World</a>!" for a in s:gsub('%b<>','\0%0\0'):gmatch'%Z+' do print(a) end
|
|
|
|
FREEON |
29.1.2019, 1:46
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1318
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 29.1.2019, 1:43) Нет. А для чего нужен?
для разделения вместо крывуль (IMG: style_emoticons/default/sad.gif) а во чо-то похожее нашел... записывает в с столбик и через пробел Код --lua function split(s, sep) local fields = {}
local sep = sep or " " local pattern = string.format("([^%s]+)", sep) string.gsub(s, pattern, function(c) fields[#fields + 1] = c end)
return fields end
t = split("a,b,c,d,e,f,g",",") for i,j in pairs(t) do log(i,j) end
Код --lua local arr = {"Один", "Два", "Три", "Четыре"} log (table.concat(arr, " ")) -- разделитель пробел
http://uopilot.tati.pro/index.php?title=Table.concat_(Lua)
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|