Várias cabeças pensam melhor que uma !. [RESOLVIDO]

13. Re: Várias cabeças pensam melhor que uma !.

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 02/06/2016 - 00:02h

ctw6av escreveu:

Mais uma vez eu estou por aqui para pedir opiniões e conselhos sobre um script para gerar uma wordlist onde será usada para saída padrão, arquivo ou por pipe o código é este http://pastebin.com/r3f0rMEm ainda estou trabalhando nele. Sou super iniciante em qualquer tipo de programação e minha ideia agora é não usar as saídas já dadas, ou seja, não ter a mesma senha testada duas vezes, alguém aqui já passou por isso e tem algo para compartilhar comigo ou ao menos um caminho para onde possa me apontar, ficarei grato pela ajuda de todos.

P.S: Já está funcional e foi testado com outros programas via pipes.

Bom o assunto fugiu um tiquinho mas a ideia inicial é a mesma eu só quero opiniões/dicas para não repetir os outputs o restante já está escrito, eu não gostaria de abrir arquivos para gravar pois imaginem 15 hrs rodando, quantas senhas ele gerará? tudo isso em um arquivo e procurando por repetições gastarei recursos que poderiam ser usados para aumentar o rendimento dos testes. ( ^_^ ).



  


14. Re: Várias cabeças pensam melhor que uma !. [RESOLVIDO]

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 06/07/2016 - 10:41h

Oi achei tua lógica pouco pythonica, parece mais C.
Vai aí umas dicas para encolher e simplificar este teu código.
Como gerar strings com os conjuntos de caracteres que tu queres:

>>> import string

>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'

>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

>>> string.digits
'0123456789'

>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

Como sortear:
>>> import random

>>> random.choice(string.ascii_lowercase)
'u'

>>> random.choice(string.ascii_uppercase)
'S'

>>> random.choice(string.digits)
'6'

Para evitar repetições:
Bom ai existem várias opções e quanto maior a lista mais recursos serão consumidos.
Uma opção seria guardar no tipo "set" que não tolera repetições, mas também tem a característica de não ser ordenada.
Exemplo:

Cria um "set" com as minúsculas. Veja que fica desordenada:
>>> s = set(string.ascii_lowercase)
>>> s
{'h', 'y', 'r', 'q', 'j', 'i', 'z', 'g', 'b', 's', 'u', 'e', 'v', 'a', 'c', 'p', 'd', 'w', 'm', 'x', 'l', 'n', 't', 'k', 'o', 'f'}

Tenta adicionar a string "3" ao set e consegue, pois não existe outro elemento igual:
>>> s.add('3')
>>> s
{'h', 'y', 'r', 'q', 'j', 'i', 'z', 'g', 'b', 's', '3', 'u', 'e', 'v', 'a', 'c', 'p', 'd', 'w', 'm', 'x', 'l', 'n', 't', 'k', 'o', 'f'}

Tenta incluir as strings "w" e "3" no set, mas como os elementos já estão lá a ordem é ignorada:
>>> s.add('w')
>>> s.add('3')
>>> s
{'h', 'y', 'r', 'q', 'j', 'i', 'z', 'g', 'b', 's', '3', 'u', 'e', 'v', 'a', 'c', 'p', 'd', 'w', 'm', 'x', 'l', 'n', 't', 'k', 'o', 'f'}

É isso. Espero ter ajudado.
Abraço


15. Re: Várias cabeças pensam melhor que uma !. [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 06/07/2016 - 14:27h

Muito bom, eu estou iniciando em python e não conhecia o set ainda vou dar uma estudada aqui. Obrigado!


16. Re: Várias cabeças pensam melhor que uma !. [RESOLVIDO]

Willian Moura
RWX

(usa Kali)

Enviado em 12/09/2016 - 21:16h

amigo, acho q uma estrutura for seria util, vou fazer algo e ja mando



17. Re: Várias cabeças pensam melhor que uma !. [RESOLVIDO]

Willian Moura
RWX

(usa Kali)

Enviado em 12/09/2016 - 21:19h

seria algo assim?
import os

lista = ['a','A','b','B','c','C','d','D','e','E','f','F','g','G','h','H','i','I','j','J','k','K','l','L','m','M','n','N','o','O','p','P','q','Q','r','R','s','S','t','T','u','U','v','V','w','W','x','X','y','Y','z','Z']
j = 0
opt = int(input("apenas 4, 6, ou 8 digitos: "))

if opt == 4:
digito_um = raw_input("digito um: ")
digito_dois = raw_input("digito dois: ")
digito_tres = raw_input("digito tres: ")
digito_quatro = raw_input("digito quatro: ")
senha = [digito_um, digito_dois, digito_tres, digito_quatro]
if opt == 6:
digito_um = raw_input("digito um: ")
digito_dois = raw_input("digito dois: ")
digito_tres = raw_input("digito tres: ")
digito_quatro = raw_input("digito quatro: ")
digito_cinco = raw_input("digito cinco: ")
digito_seis = raw_input("digito seis: ")
senha = [digito_um, digito_dois, digito_tres, digito_quatro, digito_cinco, digito_seis]
if opt == 8:
digito_um = raw_input("digito um: ")
digito_dois = raw_input("digito dois: ")
digito_tres = raw_input("digito tres: ")
digito_quatro = raw_input("digito quatro: ")
digito_cinco = raw_input("digito cinco: ")
digito_seis = raw_input("digito seis: ")
digito_sete = raw_input("digito sete: ")
digito_oito = raw_input("digito oito: ")
senha = [digito_um, digito_dois, digito_tres, digito_quatro, digito_cinco, digito_seis, digito_sete, digito_oito]


print "quebrando senha..."
if opt == 4:
for a in lista:
for b in lista:
for c in lista:
for d in lista:
passa = [a,b,c,d]
if senha == passa:
print "acesso concedido!"
print passa
break;
#else:
# print passa



if opt == 6:
for a in lista:
for b in lista:
for c in lista:
for d in lista:
for e in lista:
for f in lista:
passa = [a,b,c,d,e,f]
if senha == passa:
print "acesso concedido!"
print senha
break;
# else:
# print passa

if opt == 8:
for a in lista:
for b in lista:
for c in lista:
for d in lista:
for e in lista:
for f in lista:
for g in lista:
for h in lista:
passa = [a,b,c,d,e,f,g,h]
if senha == passa:
print "acesso concedido!"
print senha
break;
#se quiser ver eh so colocar para printar a variavel passa (da um efeito legal kkkk)



18. Re: Várias cabeças pensam melhor que uma !.

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 12/09/2016 - 21:33h

Cara, não dá para acreditar que escrevi este programa tosco kkkkkk, quando agente aprende um pouco mais e olha para trás percebe o quanto era leigo no assunto.

RWX, testarei aqui e já posto minha opinião.


19. Re: Várias cabeças pensam melhor que uma !. [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 12/09/2016 - 22:05h

Valeu @RWX bem legal esse script, obrigado pela atenção!


20. Re: Várias cabeças pensam melhor que uma !. [RESOLVIDO]

Willian Moura
RWX

(usa Kali)

Enviado em 13/09/2016 - 12:56h


De nada amigo, e obrigado !!


------------------------------------------------------------------------------------------------------------------------------------------
Não existem situações desesperadoras, existem pessoas que se desesperam em determinadas situações.


21. Re: Várias cabeças pensam melhor que uma !. [RESOLVIDO]

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 13/09/2016 - 23:45h

RWX escreveu:

seria algo assim?
import os

lista = ['a','A','b','B','c','C','d','D','e','E','f','F','g','G','h','H','i','I','j','J','k','K','l','L','m','M','n','N','o','O','p','P','q','Q','r','R','s','S','t','T','u','U','v','V','w','W','x','X','y','Y','z','Z']
j = 0
opt = int(input("apenas 4, 6, ou 8 digitos: "))

if opt == 4:
digito_um = raw_input("digito um: ")
digito_dois = raw_input("digito dois: ")
digito_tres = raw_input("digito tres: ")
digito_quatro = raw_input("digito quatro: ")
senha = [digito_um, digito_dois, digito_tres, digito_quatro]
if opt == 6:
.
.
.


Dei uma refatorada no teu código e cheguei nisso. dá pra limpar um pouco mais, mas acho que já está mais rápido.

import string

lista = string.ascii_letters
senha = []
passa = []


def entra_senha(opt):
global senha
if opt == 0:
return senha
senha.append(raw_input("Entre com um digito: "))
entra_senha(opt - 1)


def quebra_senha(length):
global passa
global senha
if (length) == 0:
if senha == passa:
print "acesso concedido!"
print passa
return passa
for char in lista:
if char == senha[length - 1]:
passa.insert(0, char)
continue
quebra_senha(length - 1)


while True:
opt = int(input("apenas 4, 6, ou 8 digitos: "))
if opt in (4,6,8):
break

entra_senha(opt)
print "quebrando senha..."
quebra_senha(opt)






01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts