Exemplo n.º 1
0
def menu_encoding_arquivos_base64(tela_anterior):
    titulo = 'Encoding base64'
    layout = retorna_layout_padrao_base64_arquivos(titulo)
    tela_encoding_base64 = sg.Window(titulo, layout)
    while True:
        evento, valores = tela_encoding_base64.read()
        if evento in ('retornar', None):
            utilidades_menus.voltar_para_tela_anterior(tela_anterior,
                                                       tela_encoding_base64)
            break
        utilidades_menus.verificar_eventos_gerais(titulo, evento,
                                                  tela_encoding_base64)

        if evento == 'executar':
            resultado = base64_arquivos.encoding_base64_arquivos(
                valores['pesquisa'])
            if not resultado:
                print(dicionarios.retorna_erro_arquivo())
                continue
            try:
                with open(valores['salvar'], 'w') as arquivo:
                    arquivo.write(resultado)
                print(dicionarios.retorna_mensagem_sucesso_salvar())
            except:
                print(dicionarios.retorna_mensagem_erro_salvar())
Exemplo n.º 2
0
def menu_opcoes():
    # Criação do layout do menu opções.
    opcoes_cifras = dicionarios.retorna_lista_cifras_com_chaves()
    tela_opcoes = sg.Window('CriPython: Opções', retorna_layout_opcoes(opcoes_cifras))
    resposta = ''
    while True:
        evento, valores = tela_opcoes.read(timeout=1000)
        if evento in ('retornar', None):
            tela_opcoes.close()
            break
        utilidades_menu.verificar_eventos_gerais('Opcoes', evento, tela_opcoes)
        if evento == 'nova_opcao':
            for indice_cifra, cifra in enumerate(opcoes_cifras):  # Atualizar a tela para mostrar apenas as chaves da cifra escolhida atualmente.
                '''
                OBS: São utilizadas duas listas de opções. Uma no idioma padrão português e outra no idioma selecionado pelo usuario.
                Isso é necessário pois todas as chaves que estão conectadas na interface dos botões e inputs estão em português.
                '''
                if valores["nova_opcao"] == cifra:  # Revelar apenas a cifra escolhida
                    tela_opcoes.Element(opcoes_cifras_port[indice_cifra]).update(visible=True)
                    tela_opcoes.Element(opcoes_cifras_port[indice_cifra]).unhide_row()
                else:  # Esconder as outras
                    tela_opcoes.Element(opcoes_cifras_port[indice_cifra]).hide_row()
        if evento == 'aplicar':
            resposta = banco_de_dados.aplicar_novas_configuracoes(valores)
            tela_opcoes.close()
            opcoes_cifras = dicionarios.retorna_lista_cifras_com_chaves()  # Atualizar os nomes de opções de cifras caso mude o idioma.
            tela_opcoes = sg.Window('CriPython: Opções', retorna_layout_opcoes(opcoes_cifras))
        elif evento == 'restaurar':
            resposta = banco_de_dados.restaurar_padrao()
            tela_opcoes.close()
            opcoes_cifras = dicionarios.retorna_lista_cifras_com_chaves() 
            tela_opcoes = sg.Window('CriPython: Opções', retorna_layout_opcoes(opcoes_cifras))
        elif resposta:  # Imprimir respostas (é preciso esperar um pouco para imprimi-las, por isso é utilizado o timeout).
            print(resposta)
            resposta = ''
Exemplo n.º 3
0
def executar_menu_cifra(titulo_cifra, tela_anterior, dicionario_funcoes_cifras, layout_cifra):
    # Criará a janela do menu da cifra e verificará os eventos ocorridos nela (ex: botões clicados, tela foi fechada, inputs,...)
    tela_cifra = sg.Window(titulo_cifra, layout_cifra)
    while True:
        evento, valores = tela_cifra.read()
        if evento in ('retornar', None):
            utilidades_menus.voltar_para_tela_anterior(tela_anterior, tela_cifra)
            break
        utilidades_menus.verificar_eventos_gerais(titulo_cifra, evento, tela_cifra)
        if evento == 'encriptar' or evento == 'traduzir' or evento == "utilizar_chave_padrao":
            for opção, criptografar in dicionario_funcoes_cifras.items():
                if valores[opção]:  # Verificar a opção escolhida pelo usuário e executar a função referente a ela (armazenada no dicionário).
                    if evento == "utilizar_chave_padrao":
                        lista_chaves = banco_de_dados.retorna_chaves_padroes(titulo_cifra, opção)
                        if not lista_chaves:
                            print(dicionarios.retorna_mensagem_com_bordas(dicionarios.retorna_erro_chave_padrao(), 127))
                            break
                    else:
                        lista_chaves = []
                        for nome_item, chave in valores.items():  # Loop para procurar as chaves utilizadas (já que alguns modos utilizam mais que 1)
                            if 'chave' in nome_item:
                                lista_chaves.append(chave)
                    if lista_chaves:  # Caso seja encontrado alguma chave, a cifra atual precisa de uma chave para funcionar.
                        print(dicionarios.retorna_mensagem_com_bordas(criptografar(lista_chaves, valores['mensagem']), 127))
                    else:  # Caso nenhuma chave tenha sido encontrada, a cifra atual não necessita de chave.
                        print(dicionarios.retorna_mensagem_com_bordas(criptografar(valores['mensagem']), 127))
Exemplo n.º 4
0
def executar_menu_utilitarios(titulo, dicionario_funcoes, tela_anterior,
                              layout_utilitario):
    tela_utilitario = sg.Window(titulo, layout_utilitario)
    while True:
        evento, valores = tela_utilitario.read()
        if evento in ('retornar', None):
            utilidades_menus.voltar_para_tela_anterior(tela_anterior,
                                                       tela_utilitario)
            break
        utilidades_menus.verificar_eventos_gerais(titulo, evento,
                                                  tela_utilitario)
        if evento == 'executar':
            for opcao, funcao in dicionario_funcoes.items():
                if valores[opcao]:
                    funcao(valores['mensagem'])
Exemplo n.º 5
0
def menu_decoding_arquivos_base64(tela_anterior):
    titulo = 'Decoding base64'
    layout = retorna_layout_padrao_base64_arquivos(titulo)
    tela_decoding_base64 = sg.Window(titulo, layout)
    while True:
        evento, valores = tela_decoding_base64.read()
        if evento in ('retornar', None):
            utilidades_menus.voltar_para_tela_anterior(tela_anterior,
                                                       tela_decoding_base64)
            break
        utilidades_menus.verificar_eventos_gerais(titulo, evento,
                                                  tela_decoding_base64)

        if evento == 'executar':
            try:
                with open(valores['pesquisa'], 'r') as arquivo:
                    cod_base64 = arquivo.read()
                print(
                    base64_arquivos.decoding_base64_arquivos(
                        valores['salvar'], cod_base64))
            except:
                print(dicionarios.retorna_erro_arquivo())
Exemplo n.º 6
0
def menu_conversor_bases_numericas(tela_anterior):
    titulo = 'Conversor bases numéricas'
    dict_funcoes = {
        'Binário': bases_numericas.verificar_num_bin,
        'Octal': bases_numericas.verificar_num_octal,
        'Decimal': bases_numericas.verificar_num_decimal,
        'Hexadecimal': bases_numericas.verificar_num_hexadecimal,
        'Binário-Octal': bases_numericas.converter_binario_para_octal,
        'Binário-Decimal': bases_numericas.converter_binario_para_decimal,
        'Binário-Hexadecimal':
        bases_numericas.converter_binario_para_hexadecimal,
        'Octal-Binário': bases_numericas.converter_octal_para_binario,
        'Octal-Decimal': bases_numericas.converter_octal_para_decimal,
        'Octal-Hexadecimal': bases_numericas.converter_octal_para_hexadecimal,
        'Decimal-Binário': bases_numericas.converter_decimal_para_binario,
        'Decimal-Octal': bases_numericas.converter_decimal_para_octal,
        'Decimal-Hexadecimal':
        bases_numericas.converter_decimal_para_hexadecimal,
        'Hexadecimal-Binário':
        bases_numericas.converter_hexadecimal_para_binario,
        'Hexadecimal-Octal': bases_numericas.converter_hexadecimal_para_octal,
        'Hexadecimal-Decimal':
        bases_numericas.converter_hexadecimal_para_decimal
    }
    layout_conversor = retorna_layout_calculadora_bases_numericas()
    tela_conversor = sg.Window(titulo, layout_conversor)
    while True:
        evento, valores = tela_conversor.read()
        if evento in ('retornar', None):
            utilidades_menus.voltar_para_tela_anterior(tela_anterior,
                                                       tela_conversor)
            break
        utilidades_menus.verificar_eventos_gerais(titulo, evento,
                                                  tela_conversor)

        if evento == 'executar':
            numero_digitado = valores['mensagem']
            primeira_base = ''
            numero_convertido = ''
            segunda_base = ''
            for base_numerica, selecionado in valores.items():
                if selecionado:
                    if not primeira_base:  # Verificando se o numero digito pelo usuario bate com a primeira base numerica selecionada
                        primeira_base = base_numerica
                        verificacao_de_num = dict_funcoes[primeira_base](
                            numero_digitado)
                        if not verificacao_de_num and str(
                                verificacao_de_num
                        ) != '0':  # Usuario digitou numero errado, mostrar mensagem de erro.
                            numero_convertido = dicionarios.retorna_erro_numero_invalido(
                            )
                            break
                    else:
                        segunda_base = base_numerica[:-1]
                        if primeira_base != segunda_base:
                            numero_convertido = str(
                                dict_funcoes[f'{primeira_base}-{segunda_base}']
                                (numero_digitado))
                        else:
                            numero_convertido = bases_numericas.tirar_zeros_a_esquerda(
                                numero_digitado)
                        break
            print(
                dicionarios.retorna_mensagem_com_bordas(
                    numero_convertido, 127))