Encodes a secret message inside another.
当前为
// ==UserScript==
// @name Secret Message Encoder
// @name:de Geheime Nachrichten Kodierer
// @namespace https://sme-siz.pages.dev
// @version 0.1.5
// @description Encodes a secret message inside another.
// @description:de Kodiert eine geheime Nachricht in einer anderen.
// @author LuisAFK
// @match *://*/*
// @icon https://sme-siz.pages.dev/assets/favicon96.png
// @website https://sme-siz.pages.dev
// @grant none
// @supportURL https://github.com/lafkpages/sme/issues
// @run-at document-idle
// @license GPLv3
// ==/UserScript==
(()=>{
// src/encoders.ts
var one = "";
var zero = "";
var oneOne = "";
var zeroZero = "";
var oneZero = "";
var zeroOne = "";
var zeroZeroZero = "";
var oneOneOne = "";
var secretsRegEx = new RegExp(`[${zeroZeroZero}${oneOneOne}${zeroZero}${oneOne}${zeroOne}${oneZero}${zero}${one}]+`);
function binToString(b) {
const m = b.match(/[01]{8}/g);
if (!m) {
return null;
}
let s = "";
for (const c of m) {
s += String.fromCharCode(parseInt(c, 2));
}
return s;
}
function secretBinToString(b) {
b = b.replace(new RegExp(zeroZeroZero, "g"), "000");
b = b.replace(new RegExp(oneOneOne, "g"), "111");
b = b.replace(new RegExp(zeroOne, "g"), "01");
b = b.replace(new RegExp(oneZero, "g"), "10");
b = b.replace(new RegExp(zeroZero, "g"), "00");
b = b.replace(new RegExp(oneOne, "g"), "11");
b = b.replace(new RegExp(zero, "g"), "0");
b = b.replace(new RegExp(one, "g"), "1");
return binToString(b);
}
function decodeSecret(s) {
const b = s.match(secretsRegEx)?.[0];
if (!b) {
return null;
}
return secretBinToString(b);
}
// src/scriptlet.ts
var hideTransform = "translateY(calc(-100% - 50px))";
var div = document.createElement("div");
div.id = "sme-inject-toast";
div.style.position = "fixed";
div.style.top = "20px";
div.style.right = "20px";
div.style.padding = "10px";
div.style.zIndex = "99999";
div.style.background = "wheat";
div.style.border = "1px solid black";
div.style.borderRadius = "5px";
div.style.transition = "transform 0.5s ease-in-out 0s";
div.style.transform = hideTransform;
div.style.whiteSpace = "pre-line";
document.body.appendChild(div);
setInterval(() => {
const selectedText = window.getSelection()?.toString();
let decodedSecret = null;
if (selectedText) {
try {
decodedSecret = decodeSecret(selectedText);
} catch {}
}
if (decodedSecret) {
div.style.transform = "translateY(0px)";
div.textContent = decodedSecret;
} else {
div.style.transform = hideTransform;
}
}, 1000);
})()