Greasy Fork is available in English.
Desarrollo laboratorio 4
// ==UserScript==
// @name Laboratorio 4
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Desarrollo laboratorio 4
// @author vania
// @match https://cripto.tiiny.site/
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @license MIT
// @grant none
// @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js#sha256-6rXZCnFzbyZ685/fMsqoxxZz/QZwMnmwHg+SsNe+C/w=
// ==/UserScript==
(function() {
'use strict';
// Obtener todos los elementos con la clase "Parrafo"
var parrafos = document.getElementsByClassName("Parrafo");
// Crear una variable para almacenar la contraseña
var contraseña = "";
// Recorrer los elementos y obtener el primer carácter de cada oración
for (var i = 0; i < parrafos.length; i++) {
var parrafo = parrafos[i];
var oraciones = parrafo.textContent.trim().split(".");
for (var j = 0; j < oraciones.length; j++) {
var oracion = oraciones[j].trim();
if (oracion.length > 0) {
var primerCaracter = oracion.charAt(0);
contraseña += primerCaracter;
}
}
}
// Asegurarse de que la contraseña tenga exactamente 24 bytes
if (contraseña.length < 24) {
while (contraseña.length < 24) {
contraseña += contraseña; // Concatenar la propia contraseña para llenar el espacio restante
}
} else if (contraseña.length > 24) {
contraseña = contraseña.slice(0, 24); // Truncar la contraseña a 24 bytes
}
// Imprimir la contraseña en la consola
console.log("La llave es: " + contraseña);
const classes = document.querySelectorAll('*[class]');
// Obtener todos los elementos div que tienen una clase con la estructura "M+N"
const regexClass = /^M\d+$/;
const matchedDivs = Array.from(classes).filter((element) => regexClass.test(element.className));
console.log(`Los mensajes cifrados son: ${matchedDivs.length}`);
// Función para descifrar el contenido cifrado de un ID
function desencriptar3DES(mensajeCifrado, clave) {
// Convertir la clave a un objeto WordArray
var claveWordArray = CryptoJS.enc.Utf8.parse(clave);
// Convertir el mensaje cifrado a un objeto WordArray
var mensajeCifradoWordArray = CryptoJS.enc.Base64.parse(mensajeCifrado);
// Desencriptar el mensaje utilizando 3DES en modo ECB
var mensajeDesencriptado = CryptoJS.TripleDES.decrypt({
ciphertext: mensajeCifradoWordArray
}, claveWordArray, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
// Convertir el mensaje desencriptado a una cadena de texto
var mensajeDesencriptadoTexto = mensajeDesencriptado.toString(CryptoJS.enc.Utf8);
// Devolver el mensaje desencriptado
return mensajeDesencriptadoTexto;
}
// Descifrar cada ID cifrado y mostrar el texto cifrado y descifrado en la consola
matchedDivs.forEach((div) => {
var encryptedID = div.id;
var decryptedID = desencriptar3DES(encryptedID, contraseña);
console.log(`${encryptedID} ${decryptedID}`);
div.innerText = decryptedID
});
})();