Encrypt and decrypt messages on Discord on the fly.
目前為
// ==UserScript==
// @name Discord encryption
// @namespace http://tampermonkey.net/
// @version 0.2
// @description Encrypt and decrypt messages on Discord on the fly.
// @author You
// @match https://discordapp.com/channels/477776237964689432/*
// @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js
// @grant none
// ==/UserScript==
var password = "adfaldskfjlkadsf";
// Replace any messages we manage to decrypt.
function decryptDiscordMessages(password) {
var nodes = document.getElementsByClassName('markup-2BOw-j');
for (var i = nodes.length; i--;) {
var text = nodes[i].innerText;
var decrypted = CryptoJS.AES.decrypt(text, password);
try {
var message = decrypted.toString(CryptoJS.enc.Utf8);
if (message == "") continue;
nodes[i].innerHTML = '<div style="color:red">' + message + '</div>';
} catch (error) {}
}
}
function registerObserver() {
var targetNode = document.getElementsByClassName('messagesWrapper-3lZDfY')[0];
if (targetNode == undefined) {
setTimeout(registerObserver, 10);
return;
}
var config = { childList: true, subtree: true };
var callback = function(mutationsList, observer) {
for(var mutation of mutationsList) {
if (mutation.type != 'childList') return;
decryptDiscordMessages(password);
}
};
var observer = new MutationObserver(callback);
observer.observe(targetNode, config);
}
registerObserver();
function registerMessageHook() {
setTimeout(registerMessageHook, 10);
var targetNode = document.getElementsByClassName('textArea-2Spzkt')[0];
if (targetNode == undefined) return;
targetNode.onkeydown = function(e){
var message = targetNode.value;
if (message.endsWith('/') && e.keyCode == 191) {
message = message.slice(0, -1);
console.log(message);
var cypher = CryptoJS.AES.encrypt(message, password);
targetNode.value = cypher;
}
};
}
registerMessageHook();