Skip to content

Instantly share code, notes, and snippets.

@renatovieiradesouza
Created July 9, 2019 23:06
Show Gist options
  • Save renatovieiradesouza/985d8923745898d53a8cba048f01d985 to your computer and use it in GitHub Desktop.
Save renatovieiradesouza/985d8923745898d53a8cba048f01d985 to your computer and use it in GitHub Desktop.
import requests, hashlib, json
#Recupera texto cifrado e diretrizes de decodificacao
def resgataTextoCifrado():
url = "https://api.codenation.dev/v1/challenge/dev-ps/generate-data"
query = {"token":"c335374e8256c92a323d169944a44c3267ce965a"}
headers = {
'Cache-Control': "no-cache",
'Host': "api.codenation.dev",
}
resposta = requests.request("GET", url, headers=headers, params=query)
if resposta.status_code == 200:
#Salva arquivo answer.json
arquivo = open("answer.json","w+")
arquivo.write(resposta.text)
else:
print("Falha ao obter dados. URL: " + url)
resgataTextoCifrado()
def decodificaTexto(textoParaDecifrar,qtdCasasDecifrar):
#Parametros de uso
alfabeto = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
#Transforma texto cifrado em array
tamanhoTextoCifrado = len(textoParaDecifrar);
tamanhoAlfabeto = len(alfabeto)
textoDecifrado = ''
letraEncontrada = ''
resumoCriptografico = ''
#Decifra texto
for x in range(tamanhoTextoCifrado):
for y in range(tamanhoAlfabeto):
if textoParaDecifrar[x] == alfabeto[y]:
posAtual = y;
posFinal = posAtual - qtdCasasDecifrar
if(posFinal < 0):
posFinal = len(alfabeto) - abs(posFinal)
letraEncontrada = alfabeto[posFinal]
else:
letraEncontrada = alfabeto[posFinal]
elif ( textoParaDecifrar[x] == " " ):
letraEncontrada = " "
elif( textoParaDecifrar[x] == "."):
letraEncontrada = "."
#Incrementa o texto decifrado em cada interação
textoDecifrado = textoDecifrado + letraEncontrada
#Criptografa o texto decifrado em sha1
resumoCriptografico = hashlib.sha1(textoDecifrado.encode())
#Criar json resultado
dados = {
"texto_decifrado" : textoDecifrado,
"resumo_criptografico" : resumoCriptografico.hexdigest()
}
python2json = json.dumps(dados)
return (python2json)
def atualizaArquivoJson(dados):
textoTratado = json.loads(dados)
#Append com dados finais para envio a Codenation
jsonFile = open("answer.json", "r")
data = json.load(jsonFile)
jsonFile.close()
# #Atualiza texto decifrado
tmp = data["decifrado"]
data["decifrado"] = textoTratado["texto_decifrado"]
# #Atualiza resumo criptografico
tmp = data["resumo_criptografico"]
data["resumo_criptografico"] = textoTratado["resumo_criptografico"]
# #Salva atualizações no arquivo json
jsonFile = open("answer.json", "w+")
jsonFile.write(json.dumps(data))
jsonFile.close()
atualizaArquivoJson(decodificaTexto("mnbrpw rb lqxxbrwp qxf hxd fruu ojru. axw onrw",9))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment