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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24
151  Programación / Scripting / Re: [Código-PyQT4]Detectar campos de un formulario web - JaAViEr|0x5d en: 9 Abril 2012, 02:54 am
Un gusto poder 'enseñar' ! :D
152  Programación / Scripting / Re: [Código-PyQT4]Detectar campos de un formulario web - JaAViEr|0x5d en: 8 Abril 2012, 20:17 pm
Bueno es :D.

He estado mirando tus tutoriales y te agradecería que los explicases sin clases de por medio si es posible, implementar clases en tutoriales es bastante lioso :D.

De todas formas Qt4 parece bastante potente en cuanto a interfaces no? :)
Hola, buen día !
Pues la verdad para QT4 es necesario usar clases, pero bueno, enseguida te explico el código a mi forma :P:
Código
  1. from PyQt4 import QtCore, QtGui
  2. import sys, urllib, re
  3.  
No creo que sea necesario explicar eso :P
Código
  1.    self.setWindowTitle("Detectar campos de un formulario | 0x5d")
  2.  
Le damos un titulo a nuestra ventana(self(el mismo form))
Código
  1.    self.resize(510,570)
Le damos las dimensiones self.resize(ancho,altura)
Código
  1.    self.arbol = QtGui.QTreeWidget(self)
Creamos el Objeto QTreeWidget(); al poner 'self' dentro indico que se insertará en el mismo formulario y no en otro.
Código
  1.    self.arbol.setGeometry(5,70,500,500)
Le doy las propiedades de ubicación y ancho-alto. setGeometry(x,y,ancho,alto)
Código
  1.    self.label_url = QtGui.QLabel("URL/Host :", self).setGeometry(5,10,64,27)
Creo un Label para insertar un mensaje en el formulario, seguido le doy propiedades de ubicación y dimensiones
Código
  1.    self.input_url = QtGui.QLineEdit(self)
Creo el QLineEdit(); para poder escribir.
Código
  1.    self.input_url.setGeometry(73,10,430,27)
Le doy dimensiones y ubicación al QLineEdit();
Código
  1.    self.boton = QtGui.QPushButton("Extraer campos del formulario",self)
Creo un Botón
Código
  1.    self.boton.setGeometry(73,40,430,27)
Le doy propiedades de ubicación y dimensión al botón
Código
  1.    self.connect(self.boton, QtCore.SIGNAL("clicked()"), self.extractor)
Le digo al programa que al dar clic(QtCore.SIGNAL("clicked()")) en self.boton , nos dirija a la función def extractor()
Código
  1.    self.arbol.headerItem().setText(0,"Campos")
Con esto señalo la cabecera del QTreeWidget(); que luego los elementos aparecerán abajo. En este caso "Campos" (como ves en la imagen anterior)
 
Código
  1.  def extractor(self):
La función extractor que llamé desde self.connect()
Código
  1.    var = urllib.urlopen(str(self.input_url.text())).read()
Con str(self.input_url.text()) Obtengo el texto insertado en el QLineEdit() y lo abrimos con urllib.urlopen
Código
  1.    datos_r = []
  2.    for campos in re.findall("<input (.*)>",var):
  3.      if "name" in campos.lower():
  4. for cam in campos.split():
  5.  if re.findall("name=(.*)",cam):
  6.    datos_r.append(cam.replace('"',""))
  7.  
    Con eso obtengo los campos input del sitio web insertado, es cosa de saber Python, nada que ver con QT4
Código
  1. for x,y in enumerate(datos_r):
  2.      exec("primer_%s = QtGui.QTreeWidgetItem(self.arbol)"%x)
  3.      exec("self.arbol.topLevelItem(%s).setText(0, \"%s\")"%(x,y.replace("name=","")))
  4.  
Ahí es un poco más complicado el caso, puesto que para cada elemento a insertar en nuestro QTreeWidget(); Necesitamos una variable que contenga a este elemento. Uso for x,y enumerate(datos_r): para contabilizar cuantos campos encontró el programa y su valor. Que mediante el primer exec() creo una variable para cada elemento, quedando :
primer_0 = ...
primer_1 = ...
Pero dependiendo de cuanto elemento sea encontrado.
Posteriormente   
Código
  1. exec("self.arbol.topLevelItem(%s).setText(0, \"%s\")"%(x,y.replace("name=","")))
self.arbol.topLevelItem(%s) será:
self.arbol.topLevelItem(0)
self.arbol.topLevelItem(1)
self.arbol.topLevelItem(2)
etc Dependiendo de cuanto elemento se encuentra.
Luego con .setText(); insertamos el valor en la posición indicada por el x que contámos con enumerate();
Código
  1. app = QtGui.QApplication(sys.argv)
  2. form = aplica() # Instancia a la clase aplica()
  3. form.show() # Mostramos el formulario que es aplica()
  4. app.exec_() # Corremos la aplicación
  5.  

Intenté ser lo más claro posible y explicar línea por línea jaja

Saludos !
153  Programación / Scripting / Re: ¿Interfaz gráfica Python? en: 8 Abril 2012, 10:18 am
Hola, buen día !
Yo uso PyQT4 y me tiene maravillado !

Ahí unos tutoriales escritos por mi :D

[Tutorial]Aprende PyQT4 con RootCodes ! [Parte1]
[Tutorial]Aprende PyQT4 con RootCodes ! [Parte2]
[Tutorial]Aprende PyQT4 con RootCodes ! [Parte3]
[Tutorial]Aprende PyQT4 con RootCodes ! [Parte4]
154  Programación / Scripting / [Código-PyQT4]Detectar campos de un formulario web - JaAViEr|0x5d en: 8 Abril 2012, 04:21 am
Hola, buen día !

Sigo con mis prácticas en Python + QT4. Posterior a esto seguiré con el tutorial que estuve escribiendo para RootCodes... En esta oportunidad he traspasado este código en consola ~&gt; [Python]Detectar formulario y campos de un sitio web a PyQT. Así aprovechando de utilizar QTreeWidget(); Para aprender a usarlo y a la vez que ustedes vean como se usa.

Un ScreenShot de la App :



Y el Código :
Código
  1. # -*- coding: utf-8 -*-
  2. # Autor ~> JaAViEr|0x5d
  3. # Sitio Web ~> http://www.rootcodes.com
  4. # Twitter ~> @0x5d
  5.  
  6. from PyQt4 import QtCore, QtGui
  7. import sys, urllib, re
  8.  
  9. class aplica(QtGui.QWidget):
  10.  def __init__(self, parent=None):
  11.    QtGui.QWidget.__init__(self, parent)
  12.    self.setWindowTitle("Detectar campos de un formulario | 0x5d")
  13.    self.resize(510,570)
  14.    self.arbol = QtGui.QTreeWidget(self)
  15.    self.arbol.setGeometry(5,70,500,500)
  16.    self.label_url = QtGui.QLabel("URL/Host :", self).setGeometry(5,10,64,27)
  17.    self.input_url = QtGui.QLineEdit(self)
  18.    self.input_url.setGeometry(73,10,430,27)
  19.    self.boton = QtGui.QPushButton("Extraer campos del formulario",self)
  20.    self.boton.setGeometry(73,40,430,27)
  21.    self.connect(self.boton, QtCore.SIGNAL("clicked()"), self.extractor)
  22.    self.arbol.headerItem().setText(0,"Campos")
  23.  
  24.  def extractor(self):
  25.    var = urllib.urlopen(str(self.input_url.text())).read()
  26.    datos_r = []
  27.    for campos in re.findall("<input (.*)>",var):
  28.      if "name" in campos.lower():
  29. for cam in campos.split():
  30.  if re.findall("name=(.*)",cam):
  31.    datos_r.append(cam.replace('"',""))
  32.    #print "URL a enviar POST:",url_enviar.replace(">","")
  33.    for x,y in enumerate(datos_r):
  34.      exec("primer_%s = QtGui.QTreeWidgetItem(self.arbol)"%x)
  35.      exec("self.arbol.topLevelItem(%s).setText(0, \"%s\")"%(x,y.replace("name=","")))
  36.  
  37. app = QtGui.QApplication(sys.argv)
  38. form = aplica()
  39. form.show()
  40. app.exec_()
  41.  

Fuente: http://rootcodes.com/pyqt4detectar-campos-de-un-formulario-web/

Saludos, Javier.
155  Programación / Scripting / [Código-PyQT4]Binario a decimal y su inverso - JaAViEr | 0x5d en: 6 Abril 2012, 23:39 pm
Hola a todos !

Como le he vuelto a dar la vida a mi PC. Instalé el Debian de nuevo, no podía faltar instalar el amado QT4. Así que me propuse como práctica crear este mismo código Consola ~> [Python]Decimal a binario y su invero, que por cierto también pasé a la web ~> Binary Converter Online. Esta vez en PyQT4 primero les dejo el screenshot de como se ve:


Y Su código :
Código
  1. # -*- coding: utf-8 -*-
  2. # Autor : 0x5d ~> JaAViEr
  3. # Sitio Web ~> www.rootcodes.com
  4. # Twitter ~> @0x5d
  5.  
  6. from PyQt4 import QtGui, QtCore
  7. import sys
  8.  
  9. class testeo(QtGui.QWidget):
  10.  def __init__(self, parent=None):
  11.    QtGui.QWidget.__init__(self, parent)
  12.    self.setWindowTitle("Bin to Dec | 0x5d")
  13.    self.label_binario = QtGui.QLabel("Binario :", self).setGeometry(2,15,59,17)
  14.    self.input_binario = QtGui.QLineEdit(self)
  15.    self.input_binario.setGeometry(60,10,230,27)
  16.    self.label_resultado = QtGui.QLabel("Resultado :", self).setGeometry(2,50,80,17)
  17.    self.input_salida = QtGui.QLineEdit(self)
  18.    self.input_salida.setGeometry(80,43,210,27)
  19.    self.input_salida.setReadOnly(True)
  20.    self.boton_limpiar = QtGui.QPushButton("Limpiar campos", self)
  21.    self.boton_limpiar.setGeometry(1,75,140,27)
  22.    self.boton_convertir = QtGui.QPushButton("Convertir", self)
  23.    self.boton_convertir.setGeometry(145,75,140,27)
  24.    self.connect(self.boton_limpiar, QtCore.SIGNAL("clicked()"), self.clear_inputs)
  25.    self.connect(self.boton_convertir, QtCore.SIGNAL("clicked()"), self.conversor)
  26.  
  27.  def clear_inputs(self):
  28.    self.input_binario.setText("")
  29.    self.input_salida.setText("")
  30.  
  31.  def conversor(self):
  32.    numero = str(self.input_binario.text())
  33.    t = 0
  34.    for i,h in zip(numero[::-1],range(0,len(numero))): t+=int(i)*2**int(h)
  35.    self.input_salida.setText(str(t))
  36.  
  37. app = QtGui.QApplication(sys.argv)
  38. form = testeo()
  39. form.show()
  40. app.exec_()
  41.  
Y Decimal a Binario:

Código ~>:
Código
  1. # -*- coding: utf-8 -*-
  2. # Autor : 0x5d ~> JaAViEr
  3. # Sitio Web ~> www.rootcodes.com
  4. # Twitter ~> @0x5d
  5.  
  6. from PyQt4 import QtGui, QtCore
  7. import sys
  8.  
  9. class testeo(QtGui.QWidget):
  10.  def __init__(self, parent=None):
  11.    QtGui.QWidget.__init__(self, parent)
  12.    self.setWindowTitle("Dec to Bin | 0x5d")
  13.    self.label_binario = QtGui.QLabel("Decimal:", self).setGeometry(2,15,59,17)
  14.    self.input_binario = QtGui.QLineEdit(self)
  15.    self.input_binario.setGeometry(60,10,230,27)
  16.    self.label_resultado = QtGui.QLabel("Resultado :", self).setGeometry(2,50,80,17)
  17.    self.input_salida = QtGui.QLineEdit(self)
  18.    self.input_salida.setGeometry(80,43,210,27)
  19.    self.input_salida.setReadOnly(True)
  20.    self.boton_limpiar = QtGui.QPushButton("Limpiar campos", self)
  21.    self.boton_limpiar.setGeometry(1,75,140,27)
  22.    self.boton_convertir = QtGui.QPushButton("Convertir", self)
  23.    self.boton_convertir.setGeometry(145,75,140,27)
  24.    self.connect(self.boton_limpiar, QtCore.SIGNAL("clicked()"), self.clear_inputs)
  25.    self.connect(self.boton_convertir, QtCore.SIGNAL("clicked()"), self.conversor)
  26.  
  27.  def clear_inputs(self):
  28.    self.input_binario.setText("")
  29.    self.input_salida.setText("")
  30.  
  31.  def conversor(self):
  32.    resto = []
  33.    nuevo = [int(self.input_binario.text())]
  34.    while nuevo[-1]!=0:
  35.      resto.append(nuevo[-1]%2)
  36.      nuevo.append(nuevo[-1]/2)
  37.    s = ""
  38.    for i in resto[::-1]: s+="%s"%i
  39.    self.input_salida.setText(str(s))
  40.  
  41. app = QtGui.QApplication(sys.argv)
  42. form = testeo()
  43. form.show()
  44. app.exec_()
  45.  

Fuente : http://rootcodes.com/pyqt4binario-a-decimal-y-su-inverso/

Saludos, Javier.
156  Sistemas Operativos / GNU/Linux / Re: Postea tu .bashrc/alias/scripts/.vimrc en: 19 Febrero 2012, 11:06 am
Acabo de enchular mi prompt:
Código
  1. PS1="\[$(tput setaf 6)\]\w\[$(tput setaf 1)@$(tput setaf 3)Debian$(tput setaf 1) ~~> $(tput setaf 2)\]"
y pues mi aliases no tiene nada del otro mundo:
Código
  1. alias www="cd /var/www"                                                                                                                        
  2. alias casa="cd /home/jaavier"                                                                                                                  
  3. alias f5="sudo apt-get update &&sudo apt-get upgrade"                                                                                          
  4. alias c_alias="kate .bash_aliases"


Saludos, Javier.
157  Sistemas Operativos / GNU/Linux / Re: Rj 45 en: 19 Febrero 2012, 10:29 am
hola,
he innstalado la última versión de ubuntu en mi vieja torre pentium 4 y no detecta
la conexión por cable.
Me preguntaba si a alguien le ha pasado algo parecido o tiene la solución.

Gracias.
Hola, buen día.
Hoy instalé el KDE en mi Debian y pues tenía gnome... Y me encontré
con que no me detectaba la conexión tampoco, así que busqué el Widget Network Management
Y lo puse en el escritorio, di clic secundario y entré a Network Management Settings
Ahí pulsé el Botón de Añadir y luego solo di clic en "OK" , doble clic al ícono y solucioné mi problema :D

Espero sea eso y no problemas de controladores :D

Saludos.
158  Programación / Scripting / Re: [Python] en: 19 Febrero 2012, 10:25 am
Otra cosa...
No es necesario importart "os" solo para hacer una pausa.
En Python mejor utiliza "raw_input()", solo por limpieza en tu código.

PD: Así como el colega arriba usó el + para concatenar, puedes usar ,
Código
  1. print "Escribiste", var
  2.  
Código
  1. print "Escribiste %s"%var
  2.  
Son varias maneras :D
159  Programación / Programación General / Re: Sumar el numero de “a” que contiene la cadena asignada a una función [python] en: 19 Febrero 2012, 10:22 am
Los dos habéis repuesto de una manera clarísima y facilísima de entender, creo que me lie un poco con algo que vi para recorrer una lista o que se yo. jeje, es mi primer lenguaje y me cuesta un poco, pero soy constante :), he andado por varios foros preguntando siempre mis dudas de python, y de verdad que aqui es donde mejor lo explicais,

Muchas gracias!!!
No problem ! cualquier duda solo planteala ;)
160  Foros Generales / Noticias / Re: Rapidshare limita las descargas a 30 KB por segundo a los usuarios que no pagan en: 19 Febrero 2012, 07:04 am
Mejor que cierren a rapidshare :-\
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines