Discord encryption

Encrypt and decrypt messages on Discord on the fly.

目前為 2019-02-21 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Discord encryption
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Encrypt and decrypt messages on Discord on the fly.
  6. // @author You
  7. // @match https://discordapp.com/channels/477776237964689432/*
  8. // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. var password = "adfaldskfjlkadsf";
  13.  
  14. // Replace any messages we manage to decrypt.
  15. function decryptDiscordMessages(password) {
  16. var nodes = document.getElementsByClassName('markup-2BOw-j');
  17. for (var i = nodes.length; i--;) {
  18. var text = nodes[i].innerText;
  19. var decrypted = CryptoJS.AES.decrypt(text, password);
  20. try {
  21. var message = decrypted.toString(CryptoJS.enc.Utf8);
  22. if (message == "") continue;
  23. nodes[i].innerHTML = '<div style="color:red">' + message + '</div>';
  24. } catch (error) {}
  25. }
  26. }
  27. function registerObserver() {
  28. var targetNode = document.getElementsByClassName('messagesWrapper-3lZDfY')[0];
  29. if (targetNode == undefined) {
  30. setTimeout(registerObserver, 10);
  31. return;
  32. }
  33.  
  34. var config = { childList: true, subtree: true };
  35. var callback = function(mutationsList, observer) {
  36. for(var mutation of mutationsList) {
  37. if (mutation.type != 'childList') return;
  38. decryptDiscordMessages(password);
  39. }
  40. };
  41. var observer = new MutationObserver(callback);
  42. observer.observe(targetNode, config);
  43. }
  44. registerObserver();
  45.  
  46. function registerMessageHook() {
  47. setTimeout(registerMessageHook, 10);
  48. var targetNode = document.getElementsByClassName('textArea-2Spzkt')[0];
  49. if (targetNode == undefined) return;
  50.  
  51. targetNode.onkeydown = function(e){
  52. var message = targetNode.value;
  53. if (message.endsWith('/') && e.keyCode == 191) {
  54. message = message.slice(0, -1);
  55. console.log(message);
  56. var cypher = CryptoJS.AES.encrypt(message, password);
  57. targetNode.value = cypher;
  58. }
  59. };
  60. }
  61. registerMessageHook();