CONFIO 2

Obtener llave mediante las mayúsculas, contar clases M y descifrar mensajes

目前为 2023-11-12 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name CONFIO 2
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description Obtener llave mediante las mayúsculas, contar clases M y descifrar mensajes
  6. // @author Sebastián González
  7. // @match https://cripto.tiiny.site/
  8. // @grant none
  9. // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js#sha512-a+SUDuwNzXDvz4XrIcXHuCf089/iJAoN4lmrXJg18XnduKK6YlDHNRalv4yd1N40OKI80tFidF+rqTFKGPoWFQ==
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Función para obtener llave
  16. function obtenerLlave() {
  17. const contenido = document.body.innerText;
  18. const regex = /(?:^|[.!?]\s)([A-ZÁÉÍÓÚÑ])/g;
  19. let matches;
  20. const mayusculasEncontradas = [];
  21.  
  22. while ((matches = regex.exec(contenido)) !== null) {
  23. mayusculasEncontradas.push(matches[1]);
  24. }
  25.  
  26. if (mayusculasEncontradas.length > 0) {
  27. const mayusculasUnicas = mayusculasEncontradas.join('');
  28. console.log('La llave es:', mayusculasUnicas);
  29. return mayusculasUnicas;
  30. } else {
  31. console.log('No se encontró la llave.');
  32. return null;
  33. }
  34. }
  35.  
  36. // Función para contar mensajes cifrados y guardar los IDs
  37. function contarMcifrados() {
  38. const divsConClasesM = document.querySelectorAll('div[class^="M"]');
  39. const cantidadDivs = divsConClasesM.length;
  40. const idsMensajes = [];
  41.  
  42. divsConClasesM.forEach((div) => {
  43. const id = div.id;
  44. idsMensajes.push(id);
  45. });
  46.  
  47. console.log(`Los mensajes cifrados son: ${cantidadDivs}`);
  48. //console.log('IDs de los mensajes cifrados:', idsMensajes);
  49.  
  50. // Llamar a la función para descifrar mensajes
  51. const llave = obtenerLlave();
  52. if (llave) {
  53. const mensajesDescifrados = desencriptarMatriz(idsMensajes, llave);
  54.  
  55. // Imprimir todos los valores de los dos arrays
  56. for (let i = 0; i < Math.min(idsMensajes.length, mensajesDescifrados.length); i++) {
  57. console.log(`${idsMensajes[i]} ${mensajesDescifrados[i]}`);
  58. }
  59. }
  60. }
  61.  
  62. // Función para desencriptar una matriz de valores en base64 utilizando 3DES
  63. function desencriptarMatriz(matrizEncriptada, clave) {
  64. return matrizEncriptada.map(function(valorEnBase64) {
  65. var valorDecodificado = CryptoJS.enc.Base64.parse(valorEnBase64);
  66. var key = CryptoJS.enc.Utf8.parse(clave);
  67. var decrypted = CryptoJS.TripleDES.decrypt({
  68. ciphertext: valorDecodificado
  69. }, key, {
  70. mode: CryptoJS.mode.ECB,
  71. padding: CryptoJS.pad.Pkcs7
  72. });
  73. return CryptoJS.enc.Utf8.stringify(decrypted);
  74. });
  75. }
  76.  
  77. // Llamar a ambas funciones al cargar la página
  78. window.addEventListener('load', () => {
  79. contarMcifrados();
  80. });
  81.  
  82. })();