// -----------------------------------------------------------------------
// ==UserScript==
// @name Revelador de texto rot13
// @description Decodifica texto que está entre rot13-start e rot13-end
// @version 0.6
// @author Wellington Gomes dos Santos
// @match *://*/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
const NAO = -1;
const tokenInicio = "rot13-start";
const tokenFim = "rot13-end";
// Obtém todo o conteúdo HTML da página
let html = document.body.innerHTML;
let existeTextoParaDecodificar = html.indexOf(tokenInicio);
if(existeTextoParaDecodificar === NAO){
return;
}
// Procura texto entre "rot13-start" e "rot13-end"
let start = html.indexOf(tokenInicio);
let end = html.indexOf(tokenFim);
// Cria um array para armazenar os elementos img
const textoArray = [];
while (start >= 0 && end >= 0) {
// Obtém o texto codificado entre os pontos de início e fim
let textoCodificado = html.substring(start, end);
// Remove o token a esquerda
textoCodificado = textoCodificado.slice(tokenInicio.length);
// Decodifica
let texto = rot13(textoCodificado)
// Remove espaços
texto = texto.trim();
// Adiciona o texto ao array
textoArray.push(texto);
// Encontra o próximo ponto de início e término
start = html.indexOf(tokenInicio, end);
end = html.indexOf(tokenFim, start);
}
//for (var i = 0; i < textoArray.length; i++) {
for (var i = textoArray.length - 1; i >= 0; i--) {
// ---------------
// DIV
// ---------------
var div = document.createElement("div");
//Bordas
div.style.border = "1px solid black";
div.style.borderLeft = "1px solid white";
//Margens
div.style.marginTop = "20px";
div.style.marginBottom = "20px";
//Centraliza
div.style.width = "50%";
div.style.marginLeft = "25%";
div.style.marginRight = "25%";
//Texto decodificado
var texto = document.createTextNode(textoArray[i]);
div.appendChild(texto);
const body = document.getElementsByTagName('body')[0];
body.insertBefore(div, body.firstChild);
}
// Função para decodificar a mensagem usando rot13
function rot13(str) {
var result = "";
for (var i = 0; i < str.length; i++) {
var charCode = str.charCodeAt(i);
if (charCode >= 65 && charCode <= 90) {
// Caracter maiúsculo
result += String.fromCharCode(((charCode - 65 + 13) % 26) + 65);
} else if (charCode >= 97 && charCode <= 122) {
// Caracter minúsculo
result += String.fromCharCode(((charCode - 97 + 13) % 26) + 97);
} else {
// Outros caracteres permanecem inalterados
result += str.charAt(i);
}
}
return result;
}
})();
Nenhum comentário:
Postar um comentário