您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Encodes a secret message inside another.
// ==UserScript== // @name Secret Message Encoder // @name:de Geheime Nachrichten Kodierer // @namespace https://sme.luisafk.dev // @version 1.0.1742244079066 // @description Encodes a secret message inside another. // @description:de Kodiert eine geheime Nachricht in einer anderen. // @author LuisAFK // @match *://*/* // @icon https://sme.luisafk.dev/assets/favicon96.png // @website https://sme.luisafk.dev // @grant none // @supportURL https://github.com/lafkpages/sme/issues // @run-at document-idle // @license GPLv3 // ==/UserScript== (()=>{ // src/shared/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.fromCodePoint(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/index.ts var host = document.createElement("div"); host.id = "sme-inject-toast-host"; var shadow = host.attachShadow({ mode: "closed" }); var div = document.createElement("div"); div.id = "sme-inject-toast"; shadow.appendChild(div); document.body.appendChild(host); var style = document.createElement("style"); style.textContent = ` #sme-inject-toast { position: fixed; top: 20px; right: 20px; padding: 10px; z-index: 99999; background: wheat; border: 1px solid black; border-radius: 5px; transition: transform 0.5s ease-in-out 0s; transform: translateY(calc(-100% - 50px)); white-space: pre-line; } #sme-inject-toast.show, #sme-inject-toast:hover { transform: translateY(0px); } `; shadow.appendChild(style); document.addEventListener("select", onSelectionChange); document.addEventListener("selectionchange", onSelectionChange); function onSelectionChange() { let selectedText = window.getSelection()?.toString(); if (!selectedText) { const elm = document.activeElement; if (elm instanceof HTMLTextAreaElement || elm instanceof HTMLInputElement) { if (elm.selectionStart !== null && elm.selectionEnd !== null) { selectedText = elm.value.slice(elm.selectionStart, elm.selectionEnd); } } } let decodedSecret = null; if (selectedText) { try { decodedSecret = decodeSecret(selectedText); } catch {} } if (decodedSecret) { div.classList.add("show"); div.textContent = decodedSecret; } else { div.classList.remove("show"); } } })()