|
|
@@ -0,0 +1,43 @@ |
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
|
|
|
|
# Cryptography functions (hashing and cyphers). |
|
|
|
|
|
|
|
import hashlib |
|
|
|
|
|
|
|
from irc.base_command import BaseCommand |
|
|
|
|
|
|
|
class Calc(BaseCommand): |
|
|
|
def get_hooks(self): |
|
|
|
return ["msg"] |
|
|
|
|
|
|
|
def get_help(self, command): |
|
|
|
if command == "hash": |
|
|
|
return ("Return the hash of a string using a given algorithm, " + |
|
|
|
"e.g. '!hash sha512 Hello world!'.") |
|
|
|
else: |
|
|
|
return ("{0} a string with a given key using a given algorithm, " + |
|
|
|
"e.g. '!{1} blowfish some_key Hello world!'.").format( |
|
|
|
command.capitalize(), command) |
|
|
|
|
|
|
|
def check(self, data): |
|
|
|
if data.is_command and data.command in ["hash", "encrypt", "decrypt"]: |
|
|
|
return True |
|
|
|
return False |
|
|
|
|
|
|
|
def process(self, data): |
|
|
|
if not data.args: |
|
|
|
self.connection.reply(data, "what do you want me to do?") |
|
|
|
return |
|
|
|
|
|
|
|
if data.command == "hash": |
|
|
|
algo = data.args[0] |
|
|
|
if algo in hashlib.algorithms: |
|
|
|
string = ' '.join(data.args[1:]) |
|
|
|
result = eval("hashlib.{0}(string)".format(algo)).hexdigest() |
|
|
|
self.connection.reply(data, result) |
|
|
|
else: |
|
|
|
self.connection.reply(data, "unknown algorithm: {0}".format( |
|
|
|
algo)) |
|
|
|
|
|
|
|
else: |
|
|
|
self.connection.reply(data, "not implemented yet!") |