Laboratorio 4 criptografia y seguridad en redes.
// ==UserScript==
// @name CryptoJS
// @namespace tampermonkey-example
// @version 1.1
// @description Laboratorio 4 criptografia y seguridad en redes.
// @match https://cripto.tiiny.site/
// @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js#sha512-a+SUDuwNzXDvz4XrIcXHuCf089/iJAoN4lmrXJg18XnduKK6YlDHNRalv4yd1N40OKI80tFidF+rqTFKGPoWFQ==
// @author AkumuKernel
// @license MIT
// ==/UserScript==
(function() {
'use strict';
var CryptoJS = window.CryptoJS;
// Parte 1
var parrafoDiv = document.querySelector('p');
if (!parrafoDiv) return;
var textoCompleto = parrafoDiv.innerText;
var oraciones = textoCompleto.split('. ');
var contraseña = "";
for (var i = 0; i < oraciones.length; i++) {
var primeraLetra = oraciones[i].charAt(0);
contraseña += primeraLetra;
}
if (contraseña.length > 24) {
contraseña = contraseña.substring(0, 24);
}
console.log("La llave es:", contraseña);
// Parte 2
var elementos = document.querySelectorAll('div[class^="M"]');
var ids = [];
elementos.forEach(function(elemento) {
ids.push(elemento.id);
});
var repeticiones = {};
var patron = /\d+/;
for (i = 0; i < elementos.length; i++) {
var clases = elementos[i].classList;
for (var j = 0; j < clases.length; j++) {
var clase = clases[j];
if (patron.test(clase)) {
if (repeticiones[clase]) {
repeticiones[clase]++;
} else {
repeticiones[clase] = 1;
}
}
}
}
var mensajeCifrado = "Los mensajes cifrados son: " + Object.keys(repeticiones).length;
console.log(mensajeCifrado);
// Parte 3
var divs = document.getElementsByTagName('div');
var contenidoDesencriptado = '';
for (i = 0; i < divs.length; i++) {
var div = divs[i];
var id = div.id;
var ciphertextBytes = CryptoJS.enc.Base64.parse(id);
var decryptedBytes = CryptoJS.TripleDES.decrypt({ ciphertext: ciphertextBytes }, CryptoJS.enc.Utf8.parse(contraseña), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var decryptedText = decryptedBytes.toString(CryptoJS.enc.Utf8);
console.log(id + ": " + decryptedText);
contenidoDesencriptado += decryptedText + ' ';
}
var palabrasDesencriptadas = contenidoDesencriptado.split(' ');
var mensajeDesencriptado = document.createElement('p');
for (var k = 0; k < palabrasDesencriptadas.length; k++) {
mensajeDesencriptado.innerHTML += palabrasDesencriptadas[k] + '<br>';
}
document.body.appendChild(mensajeDesencriptado);
})();