From e75a04efaf42f6606728b31aba7569263fc6cd65 Mon Sep 17 00:00:00 2001 From: Guilherme Brandt Date: Tue, 26 Feb 2019 22:07:48 -0300 Subject: [PATCH] =?UTF-8?q?Help=20autom=C3=A1tico,=20arquivo=20para=20flas?= =?UTF-8?q?hbang=20e=20popups?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- danger.yml | 13 ++++++++-- god/gui.py | 15 ++++++----- god/handler.py | 8 +++++- god/interactive.py | 64 ++++++++++++++++++++++++++++++++++------------ safe.yml | 8 +++++- 5 files changed, 82 insertions(+), 26 deletions(-) diff --git a/danger.yml b/danger.yml index 26a7013..a92d8a6 100644 --- a/danger.yml +++ b/danger.yml @@ -1,4 +1,4 @@ ---- #------------------------------------------------------------------------------- +--- #=============================================================================== # * danger.yml #=============================================================================== @@ -9,7 +9,8 @@ # Não conte com a execução contínua das instruções desse arquivo #=============================================================================== #------------------------------------------------------------------------------- -# Lista de processos que serão fechados (.exe é opcional) +# Lista de processos que serão fechados (o .exe é opcional) +#------------------------------------------------------------------------------- kill: - mspaint - chrome @@ -24,5 +25,13 @@ cmd: #- start mspaint #------------------------------------------------------------------------------- # Flashbang: Abre um bloco de notas maximizado, pra esconder a tela +# +# true ~> Habilita +# false ~> Desabilita #------------------------------------------------------------------------------- flashbang: false +#------------------------------------------------------------------------------- +# * Mensagem de aviso +#------------------------------------------------------------------------------- +# popup: Coooorrree berg!! +popup: false # Sem mensagem de aviso diff --git a/god/gui.py b/god/gui.py index 1cdcc9b..cc746df 100644 --- a/god/gui.py +++ b/god/gui.py @@ -1,7 +1,6 @@ """Gerenciador de interface do usuário -Esse módulo tem funções para gerenciar a interface com o usuário, incluindo CLI -e GUI. +Esse módulo tem funções para gerenciar a interface gráfica com o usuário. """ @@ -30,7 +29,8 @@ def confirm(text, title="God"): res = MessageBox(win32console.GetConsoleWindow(), text, title, - win32con.MB_YESNO | win32con.MB_ICONINFORMATION) + win32con.MB_YESNO | win32con.MB_ICONINFORMATION | + win32con.MB_SYSTEMMODAL) return res == win32con.IDYES @@ -49,7 +49,8 @@ def info(text, title="God"): MessageBox(win32console.GetConsoleWindow(), text, title, - win32con.MB_OK | win32con.MB_ICONINFORMATION) + win32con.MB_OK | win32con.MB_ICONINFORMATION | + win32con.MB_SYSTEMMODAL) def error(text, title="God"): @@ -67,7 +68,8 @@ def error(text, title="God"): MessageBox(win32console.GetConsoleWindow(), text, title, - win32con.MB_OK | win32con.MB_ICONERROR) + win32con.MB_OK | win32con.MB_ICONERROR | + win32con.MB_SYSTEMMODAL) def warning(text, title="God"): @@ -85,4 +87,5 @@ def warning(text, title="God"): MessageBox(win32console.GetConsoleWindow(), text, title, - win32con.MB_OK | win32con.MB_ICONWARNING) + win32con.MB_OK | win32con.MB_ICONWARNING | + win32con.MB_SYSTEMMODAL) diff --git a/god/handler.py b/god/handler.py index 9ec8a16..1c2b999 100644 --- a/god/handler.py +++ b/god/handler.py @@ -6,7 +6,6 @@ """ import os -import json import yaml import win32con @@ -17,6 +16,7 @@ import god import god.config as config import god.cli as cli +import god.gui as gui import god.log as log @@ -92,6 +92,9 @@ def danger(): for pname in danger_yml['cmd']: os.system(pname) + if 'popup' in danger_yml and danger_yml['popup']: + gui.warning(danger_yml['popup']) + except RuntimeError as ex: log.error("on_danger", ex) cli.error("OH GOD OH FUCK, I CAN'T RUN THE INSTRUCTIONS!!!!1!!1!!!") @@ -120,6 +123,9 @@ def safe(): for pname in safe_yml['cmd']: os.system(pname) + if 'popup' in safe_yml and safe_yml['popup']: + gui.info(safe_yml['popup']) + except RuntimeError as ex: log.error("on_safe", ex) cli.info("Hmmmmm, não consigo rodar essas instruções aqui...") diff --git a/god/interactive.py b/god/interactive.py index a3c44d6..d36bf88 100644 --- a/god/interactive.py +++ b/god/interactive.py @@ -7,6 +7,7 @@ import re import sys +from functools import wraps from colorama import Fore @@ -38,7 +39,7 @@ def run(): break else: cli.error( - f"\tComando não reconhecido `{command}`. Veja `help`.") + f"\tComando não reconhecido: `{command}`. Veja `help`.") except RuntimeError as ex: log.error("interactive", ex) @@ -46,6 +47,7 @@ def run(): def no_arg(cmd_func): """Wrapper para comandos sem parâmetro""" + @wraps(cmd_func) def func_wrapper(*args): if len(args) > 1: cli.error("\tNão esperava parâmetros, mas OK.") @@ -56,55 +58,69 @@ def func_wrapper(*args): def require_arg(cmd_func): """Wrapper para comandos com parâmetro""" + @wraps(cmd_func) def func_wrapper(*args): if len(args) != 1: cli.error("\tSintaxe incorreta. Veja `help`.") return None - else: - return cmd_func(*args) + return cmd_func(*args) return func_wrapper def numeric(cmd_func): """Wrapper para comandos com parâmetro numérico""" + @wraps(cmd_func) def func_wrapper(*args): if not args[0].isnumeric(): cli.error("\tEsperava um número. Veja `help`.") return None - else: - return cmd_func(int(args[0])) + return cmd_func(int(args[0])) return func_wrapper @no_arg def cmd_quit(): + """Fecha o God""" + god.stop() sys.exit(0) @no_arg def cmd_help(): + """Mostra ajuda para os comandos do God""" + + def _syntax(command): + options, method = command + return ("|".join(options)).ljust(30) + " : " + method.__doc__ + + commands_help = "\r\n\t".join(map(_syntax, _COMMAND_MAP.items())) + print(Fore.YELLOW + f""" GOD {version.current()} - sm|threshold X : Define o limite de memória para X Kb - sp|process X : Define o processo monitorado para X - sf|frequency X : Define a frequência de atualização para X Hz - ss|save : Salva as configurações - cc|clear : Limpa a tela - h|help : Mostra a ajuda - q|quit|exit : Sai do programa + {commands_help} """) @no_arg def cmd_save(): + """Salva as configurações""" + config.save() +@no_arg +def cmd_load(): + """Carrega as configurações""" + config.load() + + @no_arg def cmd_clear(): + """Limpa a tela""" + cli.clear() cli.interactive_header() @@ -112,6 +128,8 @@ def cmd_clear(): @require_arg @numeric def cmd_threshold(value): + """Define o limite de memória para X Kb""" + config.set('threshold', value) cli.print_settings() @@ -119,12 +137,15 @@ def cmd_threshold(value): @require_arg @numeric def cmd_frequency(value): + """Define a frequência de atualização para X Hz""" config.set('frequency', value) cli.print_settings() @require_arg def cmd_process(*parts): + """Define o processo monitorado para X""" + psname = ' '.join(parts) if not psname.endswith(".exe"): psname += ".exe" @@ -132,12 +153,23 @@ def cmd_process(*parts): cli.print_settings() +@require_arg +def cmd_flashbang(*parts): + """Define o arquivo de flashbang""" + + fname = ' '.join(parts) + config.set('flashbang_file', fname) + cli.print_settings() + + _COMMAND_MAP = { - ('q', 'quit', 'exit'): cmd_quit, ('h', 'help'): cmd_help, - ('ss', 'save'): cmd_save, - ('cc', 'clear'): cmd_clear, + ('cc', 'cls', 'clear'): cmd_clear, ('sm', 'threshold'): cmd_threshold, ('sf', 'frequency'): cmd_frequency, - ('sp', 'process'): cmd_process + ('sp', 'process'): cmd_process, + ('fb', 'flashbang'): cmd_flashbang, + ('ss', 'save'): cmd_save, + ('ls', 'load'): cmd_load, + ('q', 'quit', 'exit'): cmd_quit, } diff --git a/safe.yml b/safe.yml index 7de3fde..3bcc50e 100644 --- a/safe.yml +++ b/safe.yml @@ -1,3 +1,4 @@ +--- #=============================================================================== # * safe.yml #------------------------------------------------------------------------------- @@ -8,4 +9,9 @@ # Lista de linhas de comando que serão executadas #------------------------------------------------------------------------------- cmd: - - start mspaint \ No newline at end of file + - start mspaint +#------------------------------------------------------------------------------- +# * Mensagem de aviso +#------------------------------------------------------------------------------- +# popup: false # Sem mensagem de aviso +popup: They're gone