TL;DR
Si vous ne souhaitez pas lire l’article, installez Python puis en ligne de commandes installez les dépendances suivantes avant de lancer le script disponible en fin d’article :
pip install colorama pip install pycryptodome pip install discord.py
Obfusquer (rendre illisible) des messages privés sur Discord
Discord regorge de serveurs en tout genre, parfois politisés ou sensibles tels que ceux traitant de sujets borderline (le hacking pour ne citer que lui). Vous êtes donc rapidement susceptible un jour ou l’autre de discuter en message privé à certaines personnes de choses qui feraient mieux de rester privé en toute circonstances.
Malheureusement, ce n’est jamais complètement possible ! Discord n’étant de plus, pas un des logiciels de communication les plus sécurisés que ce soit au niveau de l’acheminement des données ou du nombre impressionnant de hackers tentant de s’emparer de votre token par n’importe quel moyen.
Alors si un jour pour une raison mystérieuse, vous souhaitez rendre illisibles vos communications avec autrui, plutôt que de supprimer l’ensemble de vos messages et ce, dans le but de les déchiffrer par la suite, ne cherchez pas plus loin : nous avons la solution.
Le membre Ranma Saotome vous a en effet concocté un script Python permettant de chiffrer/déchiffrer tous les messages privés que vous avez échangé avec n’importe qui en un rien de temps. Gardez toutefois à l’esprit que l’utilisation d’un self-bot est interdite selon les termes et conditions de Discord, bien que le risque soit faible, surtout avec le délai entre chaque actions que nous avons ajouté.
La première étape, est d’installer Python dans sa version 3.X, disponible à l’adresse suivante :
Lors de l’installation, n’oubliez pas de cocher la case « Add to path » si vous êtes sous Windows (inutile sous Linux).
Une fois installé, vous devrez dans un premier temps installer les dépendances du script :
pip install colorama pip install pycryptodome pip install discord.py
Une fois fait, vous n’aurez plus qu’à télécharger le script :
Ou le créer vous-même en local à l’aide du code suivant :
import time from os.path import isfile from json import dump, load from base64 import b64encode as b6e, b64decode as b6d from secrets import token_hex from Crypto.Cipher import AES from colorama import init, Fore, Style from discord.ext import commands from discord import DMChannel # init(autoreset=True) user_Account = commands.Bot(command_prefix="!", help_command=None, self_bot=True) @user_Account.event async def on_connect(): print('') print(Style.BRIGHT + Fore.LIGHTYELLOW_EX + '[!] Successfully connected', end='\n\n') print(Style.BRIGHT + Fore.LIGHTGREEN_EX + f'Welcome {user_Account.user}, your id is: {user_Account.user.id}') # @user_Account.command() async def encrypt(ctx): # """user = await user_Account.fetch_user(receiver) channel = user_Account.get_channel(user.id)""" await ctx.message.delete() messages = await ctx.channel.history(limit=1000).flatten() with open('token.json', 'r') as f: key = load(f)['aes_key'] for msg in messages: if msg.author.id == user_Account.user.id: try: await msg.edit(content=MANAGER().encryptMessage(key, str(msg.content))) time.sleep(0.5) # except ValueError: # Padding error happens for spec messages => b64 then try: await msg.edit(content=b6e(msg.content.encode()).decode()) except ValueError: print("message can't be encoded") # @user_Account.command() async def decrypt(ctx): # """user = await user_Account.fetch_user(receiver) channel = user_Account.get_channel(user.id)""" await ctx.message.delete() messages = await ctx.channel.history(limit=1000).flatten() with open('token.json', 'r') as f: key = load(f)['aes_key'] for msg in messages: # Ignore the command !decrypt or I can juste delete it messages[1:] if msg.author.id == user_Account.user.id: try: await msg.edit(content=MANAGER().decryptMessage(key, str(msg.content))) time.sleep(0.5) # except ValueError: # Padding error happens for spec messages => b64 then try: await msg.edit(content=b6d(msg.content.encode()).decode()) except ValueError: print("message can't be decoded") # def get_Token(): # if not isfile('token.json'): print(Style.BRIGHT + Fore.LIGHTYELLOW_EX + '[!] Token not found !!', end='\n\n') # with open('token.json', 'w') as f: print(Style.BRIGHT + Fore.LIGHTYELLOW_EX + '[!] Please enter your token: ') token = input('') dump({'token': b6e(token.encode()).decode(), 'aes_key': token_hex(16)}, f, ensure_ascii=False, indent=4) with open('token.json', 'r') as f: content = load(f) return b6d(content['token']).decode() # class USER: def __init__(self): self.TOKEN = get_Token() # def Login(self): user_Account.run(self.TOKEN, bot=False) # class MANAGER: def __init__(self): self.algo = AES self.MODE = self.algo.MODE_CBC self.pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16) self.unpad = lambda s: s[:-ord(s[len(s) - 1:])] self.iv = b'\x00' * 16 # def encryptMessage(self, key: str, message_content: str): return b6e(self.algo.new(key.encode(), self.MODE, self.iv).encrypt(self.pad(message_content).encode())).decode() def decryptMessage(self, key: str, message_content: str): return self.unpad(self.algo.new(key.encode(), self.MODE, self.iv).decrypt(b6d(message_content.encode())).decode()) # if __name__ == '__main__': print('SELF-bot messages editor by Ranma Saotome & bugfix by DK') User = USER() User.Login()
Il faudra renseigner dans un premier temps votre token afin de générer un fichier contenant votre clé AES et votre token pour permettre de chiffrer/déchiffrer dans les deux sens.
Une fois cela fait, rendez-vous dans les MP d’un de vos contacts et écrivez :
!encrypt
ou :
!decrypt
Afin de chiffrer ou déchiffrer les 1000 derniers messages recensés. (du plus récent au plus vieux). Si vous souhaitez en chiffrer davantage, il suffit de modifier la valeur « 1000 » contenue dans les fonctions encrypt et decrypt par le chiffre de votre choix :
messages = await ctx.channel.history(limit=1000).flatten()
Et voilà ! Vos messages seront désormais illisible pour les tierces personnes :
Poster un commentaire