您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
// ==UserScript== // @name CRIPTO LAB 4 // @namespace http://tampermonkey.net/ // @version 0.4 // @description try to take over the world! // @author ESCM // @match https://cripto.tiiny.site/ // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js#sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw== // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js#sha512-E8QSvWZ0eCLGk4km3hxSsNmGWbLtSCSUcewDQPQWZF6pEU8GlT8a5fF32wOl1i8ftdMhssTrF/OhyGWwonTcXA== // @icon https://www.google.com/s2/favicons?sz=64&domain=tiiny.site // @grant none // @license MIT // ==/UserScript== var $ = jQuery; $(document).ready(core); function getKey(className) { var p = document.getElementsByClassName(className)[0] != undefined ? document.getElementsByClassName(className)[0].textContent : document.getElementsByTagName('p')[0]; var arr = p.split(/\r?\n/), s = ""; arr.forEach(cur => { if(cur.length > 0) s += cur[0]; }); return s; } function getMC() { function isInt(str) { return /^\d+$/.test(str); } var mensajesCifrados = [], patronChar = 'M'; var arrDivsMensajes = (function() { var divsMensajes = []; // caso en que el patron sea 'M' + numero if(document.querySelectorAll("[class^=" + patronChar + "]")[0] != undefined) { Array.from(document.querySelectorAll("[class^=" + patronChar + "]")).forEach(cur => { if(isInt(cur.className.substring(1))) divsMensajes.push(cur); }); } else { Array.from(document.getElementsByTagName('div')).forEach(cur => { // en el caso de que el patronChar no sea 'M' // comprobamos que el div tenga id, que su primer caracter sea una letra y que el resto sea un numero if(cur.id.length > 0 && /^[a-zA-Z]+$/.test(cur.className[0]) && isInt(cur.className.substring(1))) { divsMensajes.push(cur); } }); } // divsMensajes es el arreglo que contiene a todos los divs de la forma: // M + numero o Char + numero divsMensajes.forEach((cur, i) => divsMensajes[i] = cur.id); return divsMensajes; })(); return {mensajesCifrados: arrDivsMensajes, cantidadMensajesCifrados: arrDivsMensajes.length}; } function descifrar(mensajesCifrados, key) { mensajesCifrados.mensajesCifrados.forEach((cur, i) => { var decrypted = CryptoJS.TripleDES.decrypt(cur, CryptoJS.enc.Utf8.parse(key.substr(0, 24)), {mode: CryptoJS.mode.ECB}); // mostrar cifrado descifrado console.log('%c' + cur + " " + "%c" + decrypted.toString(CryptoJS.enc.Utf8), "color:lightblue; font-size: 14px", "color:red; font-size: 14px; font-family:monospace"); // agregar msjes descifrados al documento var elem = $('<p id="descifrado_'+(i+1)+'">' + decrypted.toString(CryptoJS.enc.Utf8) + '</p>'); // algo de style elem.css({"margin":"0px", "background-image": "linear-gradient(to right, blue, red, yellow, orange, green, pink, brown, gray, white, black, purple, lightblue)", "-webkit-background-clip": "text", "color": "transparent", "font-size": "22px", "font-family": "monospace" }); $('body').append(elem); }); } function core() { console.clear(); var className = 'Parrafo', key = getKey(className); console.log("La llave es: %c" + key, "color:green; font-size: 14px; font-family:monospace"); var mensajesCifrados = getMC(); console.log('Los mensajes cifrados son: %c' + mensajesCifrados.cantidadMensajesCifrados, "color: yellow; font-size: 14px; font-family:monospace"); descifrar(mensajesCifrados, key); }