CryptoJS

Laboratorio 4 criptografia y seguridad en redes.

  1.  
  2. // ==UserScript==
  3. // @name CryptoJS
  4. // @namespace tampermonkey-example
  5. // @version 1.1
  6. // @description Laboratorio 4 criptografia y seguridad en redes.
  7. // @match https://cripto.tiiny.site/
  8. // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js#sha512-a+SUDuwNzXDvz4XrIcXHuCf089/iJAoN4lmrXJg18XnduKK6YlDHNRalv4yd1N40OKI80tFidF+rqTFKGPoWFQ==
  9. // @author AkumuKernel
  10. // @license MIT
  11. // ==/UserScript==
  12. (function() {
  13. 'use strict';
  14. var CryptoJS = window.CryptoJS;
  15. // Parte 1
  16. var parrafoDiv = document.querySelector('p');
  17. if (!parrafoDiv) return;
  18. var textoCompleto = parrafoDiv.innerText;
  19. var oraciones = textoCompleto.split('. ');
  20. var contraseña = "";
  21. for (var i = 0; i < oraciones.length; i++) {
  22. var primeraLetra = oraciones[i].charAt(0);
  23. contraseña += primeraLetra;
  24. }
  25. if (contraseña.length > 24) {
  26. contraseña = contraseña.substring(0, 24);
  27. }
  28. console.log("La llave es:", contraseña);
  29.  
  30. // Parte 2
  31. var elementos = document.querySelectorAll('div[class^="M"]');
  32. var ids = [];
  33. elementos.forEach(function(elemento) {
  34. ids.push(elemento.id);
  35. });
  36. var repeticiones = {};
  37. var patron = /\d+/;
  38. for (i = 0; i < elementos.length; i++) {
  39. var clases = elementos[i].classList;
  40. for (var j = 0; j < clases.length; j++) {
  41. var clase = clases[j];
  42. if (patron.test(clase)) {
  43. if (repeticiones[clase]) {
  44. repeticiones[clase]++;
  45. } else {
  46. repeticiones[clase] = 1;
  47. }
  48. }
  49. }
  50. }
  51. var mensajeCifrado = "Los mensajes cifrados son: " + Object.keys(repeticiones).length;
  52. console.log(mensajeCifrado);
  53. // Parte 3
  54. var divs = document.getElementsByTagName('div');
  55. var contenidoDesencriptado = '';
  56. for (i = 0; i < divs.length; i++) {
  57. var div = divs[i];
  58. var id = div.id;
  59. var ciphertextBytes = CryptoJS.enc.Base64.parse(id);
  60. var decryptedBytes = CryptoJS.TripleDES.decrypt({ ciphertext: ciphertextBytes }, CryptoJS.enc.Utf8.parse(contraseña), {
  61. mode: CryptoJS.mode.ECB,
  62. padding: CryptoJS.pad.Pkcs7
  63. });
  64. var decryptedText = decryptedBytes.toString(CryptoJS.enc.Utf8);
  65. console.log(id + ": " + decryptedText);
  66. contenidoDesencriptado += decryptedText + ' ';
  67. }
  68. var palabrasDesencriptadas = contenidoDesencriptado.split(' ');
  69. var mensajeDesencriptado = document.createElement('p');
  70. for (var k = 0; k < palabrasDesencriptadas.length; k++) {
  71. mensajeDesencriptado.innerHTML += palabrasDesencriptadas[k] + '<br>';
  72. }
  73. document.body.appendChild(mensajeDesencriptado);
  74. })();
  75.