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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 24
1  Comunicaciones / Redes / Re: Programa de control remoto lan sin usar cliente en: 8 Octubre 2018, 22:18 pm
Hola!

Si el computador en la LAN tiene algún puerto abierto o servicio desactualizado, capaz puedes encontrar un exploit ya funcionando en Metasploit. Utiliza nmap para verificar que puertos tiene abiertos y a que corresponde cada uno de ellos.

Saludos!
2  Seguridad Informática / Hacking / Re: Como hacer que cuando mando un mail no se envié a la bandeja de spam. en: 8 Octubre 2018, 21:59 pm
Hola Hermer!

Posiblemente no sea problema del html en si, sino de la IP de procedencia. Si estás usando un hosting compartido entonces tienes mayor probabilidad de que tu correo llegue al SPAM, porque muchos servicios están ocupando la misma IP para enviar distinto contenido, lo que es considerado como SPAM para las grandes empresas de correos electrónicos como lo es el servicio de Google: Gmail. Muchos envíos de correos electrónicos por parte de una IP a un servidor en específico hace que ésta quede listada en una lista negra, que es utilizada y compartida por estas grandes empresas como Gmail, para saber cuando filtrar un contenido y cuando no.

Saludos!
3  Seguridad Informática / Bugs y Exploits / Re: Ejecutar programa como administrador en: 8 Octubre 2018, 06:38 am
Hola!

Yo he probado escalar privilegios en Windows 7 con Potato. Según el Github funciona para Windows 7, 8, 10 y un par de servidores.

Saludos!
4  Programación / Scripting / Re: Contador de tiempo en Python en: 27 Mayo 2015, 06:26 am
Código
  1. '''
  2. Autor: JaAViEr|0x5d
  3. Twitter: @javieresteban__
  4. Website: http://www.codigo.ga
  5. '''
  6. from time import sleep
  7. import threading
  8.  
  9. class Timer(threading.Thread):
  10.  
  11. def __init__(self, tiempo):
  12.  
  13. threading.Thread.__init__(self)
  14. self.tiempo = tiempo
  15. self.status = True
  16.  
  17. def run(self):
  18.  
  19. for i in range(self.tiempo):
  20.  
  21. sleep(1)
  22.  
  23. self.status = False
  24.  
  25. tiempo = Timer(5)
  26. tiempo.start()
  27. n = raw_input("Nombre :> ")
  28. if tiempo.status:
  29.  
  30. print "Tu nombre es", n
  31.  
  32. else:
  33.  
  34. print "Tardaste mas de 5 segundos en responder"
Un ejemplo usando Thread, así podemos ejecutar otra tarea mientras el tiempo se cuenta por separado.

Saludos.
5  Programación / Scripting / [PyQT4] Memoriza :: "Entrenando tu memoria" :: JaAViEr en: 15 Mayo 2015, 17:40 pm
Hola!

Siguiendo con las prácticas en PyQT4, traigo una aplicación "juego" que luce así:


Enseguida explico más o menos en que consiste.

La aplicación se encarga de generar Números/Letras/Números y Letras (según cada gusto) de forma totalmente aleatoria, con la longitud que tu desees. Además de seleccionar un tiempo "límite" para memorizar el valor generado, una vez acabado este tiempo límite, el valor es oculto, para que tu escribas la respuesta y evaluar si lo que memorizaste corresponde realmente a la cifra que generó y mostró por los X segundos que lo configuraste.

Una vez lanzada la aplicación y configurada, damos clic en ¡Establecer Configuración! , lo que nos da un nuevo cuadro, que luce así:

Damos clic en "Comenzar" y tendremos esto:

Una vez acabado el tiempo, el QLineEdit se resetea para que ingreses lo que memorizaste:

Una vez ingresado el valor que memorizaste, presiona ENTER, si el valor fue correcto, entonces tu racha aumentará en +1 , de lo contrario se reiniciará a 0.

Sin más que agregar, el código:
Código
  1. # -*- coding: utf-8 -*-
  2. '''
  3. Juego Memoriza :: Entrenando tu Memoria
  4. Autor: JaAViEr | 0x5d
  5. Twitter: https://twitter.com/javieresteban__
  6. Website: http://codigo.ga
  7. '''
  8. from PyQt4 import QtCore, QtGui
  9. import sys
  10. from random import randint, sample
  11. import threading
  12. from time import sleep
  13.  
  14. try:
  15.  
  16. _fromUtf8 = QtCore.QString.fromUtf8
  17.  
  18. except AttributeError:
  19.  
  20. def _fromUtf8(s):
  21.  
  22. return s
  23. try:
  24.  
  25. _encoding = QtGui.QApplication.UnicodeUTF8
  26. def _translate(context, text, disambig):
  27.  
  28. return QtGui.QApplication.translate(context, text, disambig, _encoding)
  29.  
  30. except AttributeError:
  31.  
  32. def _translate(context, text, disambig):
  33.  
  34. return QtGui.QApplication.translate(context, text, disambig)
  35.  
  36. class formA(QtGui.QWidget):
  37.  
  38. def __init__(self, parent=None):
  39.  
  40. self.largo = 4
  41. QtGui.QWidget.__init__(self, parent)
  42. self.resize(359, 131)
  43. self.gridLayout = QtGui.QGridLayout(self)
  44. self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
  45. self.tabWidget_inicial = QtGui.QTabWidget(self)
  46. self.tabWidget_inicial.setStyleSheet(_fromUtf8("font-weight:bold;"))
  47. self.tabWidget_inicial.setObjectName(_fromUtf8("tabWidget_inicial"))
  48. self.tab = QtGui.QWidget()
  49. self.tab.setObjectName(_fromUtf8("tab"))
  50. self.gridLayout_2 = QtGui.QGridLayout(self.tab)
  51. self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
  52. self.label_tipo = QtGui.QLabel(self.tab)
  53. self.label_tipo.setObjectName(_fromUtf8("label_tipo"))
  54. self.gridLayout_2.addWidget(self.label_tipo, 0, 2, 1, 1)
  55. self.pushButton_comenzar = QtGui.QPushButton(self.tab)
  56. self.pushButton_comenzar.setObjectName(_fromUtf8("pushButton_comenzar"))
  57. self.gridLayout_2.addWidget(self.pushButton_comenzar, 2, 0, 1, 3)
  58. self.spinBox_largo = QtGui.QSpinBox(self.tab)
  59. self.spinBox_largo.setMinimum(1)
  60. self.spinBox_largo.setProperty("value", 4)
  61. self.spinBox_largo.setObjectName(_fromUtf8("spinBox_largo"))
  62. self.gridLayout_2.addWidget(self.spinBox_largo, 1, 0, 1, 1)
  63. self.comboBox_tipo = QtGui.QComboBox(self.tab)
  64. self.comboBox_tipo.setObjectName(_fromUtf8("comboBox_tipo"))
  65. self.comboBox_tipo.addItem(_fromUtf8(""))
  66. self.comboBox_tipo.addItem(_fromUtf8(""))
  67. self.comboBox_tipo.addItem(_fromUtf8(""))
  68. self.gridLayout_2.addWidget(self.comboBox_tipo, 1, 2, 1, 1)
  69. self.label_largo = QtGui.QLabel(self.tab)
  70. self.label_largo.setObjectName(_fromUtf8("label_largo"))
  71. self.gridLayout_2.addWidget(self.label_largo, 0, 0, 1, 1)
  72. self.label_tiempo = QtGui.QLabel(self.tab)
  73. self.label_tiempo.setObjectName(_fromUtf8("label_tiempo"))
  74. self.gridLayout_2.addWidget(self.label_tiempo, 0, 1, 1, 1)
  75. self.spinBox_tiempo = QtGui.QSpinBox(self.tab)
  76. self.spinBox_tiempo.setPrefix(_fromUtf8(""))
  77. self.spinBox_tiempo.setObjectName(_fromUtf8("spinBox_tiempo"))
  78. self.spinBox_tiempo.setMinimum(1)
  79. self.gridLayout_2.addWidget(self.spinBox_tiempo, 1, 1, 1, 1)
  80. self.tabWidget_inicial.addTab(self.tab, _fromUtf8(""))
  81. self.gridLayout.addWidget(self.tabWidget_inicial, 0, 0, 1, 1)
  82.  
  83. self.valores_elementos()
  84. self.connect(self.pushButton_comenzar, QtCore.SIGNAL("clicked()"), self.establecer_configuracion)
  85.  
  86. def establecer_configuracion(self):
  87.  
  88. self.tiempo = int(self.spinBox_tiempo.value())
  89. self.largo = int(self.spinBox_largo.value())
  90. form_b.show()
  91. form_b.label_segundos_restantes.setText("%s segundos" % self.tiempo)
  92.  
  93.  
  94. def valores_elementos(self):
  95.  
  96. self.setWindowTitle(_translate("self", "Memoriza :: www.codigo.ga", None))
  97. self.label_tipo.setText(_translate("self", "Tipo de juego", None))
  98. self.pushButton_comenzar.setText(_translate("self", "¡Establecer configuración!", None))
  99. self.comboBox_tipo.setItemText(0, _fromUtf8("Números"))
  100. self.comboBox_tipo.setItemText(1, _translate("self", "Letras", None))
  101. self.comboBox_tipo.setItemText(2, _translate("self", "Números y Letras", None))
  102. self.label_largo.setText(_translate("self", "Largo", None))
  103. self.label_tiempo.setText(_translate("self", "Tiempo para memorizar", None))
  104. self.spinBox_tiempo.setSuffix(_fromUtf8(" segundos"))
  105. self.tabWidget_inicial.setTabText(self.tabWidget_inicial.indexOf(self.tab), _translate("self", "Configuración de Memoriza", None))
  106.  
  107.  
  108. class formB(QtGui.QWidget):
  109.  
  110. def __init__(self, parent=None):
  111.  
  112. self.valor_generado = ""
  113. self.racha = 0
  114. QtGui.QWidget.__init__(self, parent)
  115. self.setObjectName(_fromUtf8("self"))
  116. self.resize(215, 104)
  117. self.gridLayout = QtGui.QGridLayout(self)
  118. self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
  119. self.splitter = QtGui.QSplitter(self)
  120. self.splitter.setOrientation(QtCore.Qt.Vertical)
  121. self.splitter.setObjectName(_fromUtf8("splitter"))
  122. self.label_memoriza = QtGui.QLabel(self.splitter)
  123. self.label_memoriza.setStyleSheet(_fromUtf8("font-weight: bold; font-size: 17px;"))
  124. self.label_memoriza.setObjectName(_fromUtf8("label_memoriza"))
  125. self.lineEdit_valor_memorizar = QtGui.QLineEdit(self.splitter)
  126. self.lineEdit_valor_memorizar.setReadOnly(True)
  127. self.lineEdit_valor_memorizar.setObjectName(_fromUtf8("lineEdit_valor_memorizar"))
  128. self.gridLayout.addWidget(self.splitter, 0, 0, 1, 2)
  129. self.label_tiempo_restante = QtGui.QLabel(self)
  130. self.label_tiempo_restante.setObjectName(_fromUtf8("label_tiempo_restante"))
  131. self.gridLayout.addWidget(self.label_tiempo_restante, 1, 0, 1, 1)
  132. self.label_segundos_restantes = QtGui.QLabel(self)
  133. self.label_segundos_restantes.setStyleSheet(_fromUtf8("font-style: italic; font-weight: bold;"))
  134. self.label_segundos_restantes.setObjectName(_fromUtf8("label_segundos_restantes"))
  135. self.gridLayout.addWidget(self.label_segundos_restantes, 1, 1, 1, 1)
  136. self.pushButton_comenzar = QtGui.QPushButton(self)
  137. self.pushButton_comenzar.setObjectName(_fromUtf8("pushButton_comenzar"))
  138. self.gridLayout.addWidget(self.pushButton_comenzar, 3, 0, 1, 2)
  139. self.label_racha = QtGui.QLabel(self)
  140. self.label_racha.setObjectName(_fromUtf8("label_racha"))
  141. self.gridLayout.addWidget(self.label_racha, 2, 0, 1, 1)
  142. self.label_valor_racha = QtGui.QLabel(self)
  143. self.label_valor_racha.setStyleSheet(_fromUtf8("font-weight:  bold;"))
  144. self.label_valor_racha.setObjectName(_fromUtf8("label_valor_racha"))
  145. self.gridLayout.addWidget(self.label_valor_racha, 2, 1, 1, 1)
  146.  
  147. self.connect(self.pushButton_comenzar, QtCore.SIGNAL("clicked()"), self.empezar)
  148. self.connect(self.pushButton_comenzar, QtCore.SIGNAL("returnPressed()"), self.empezar)
  149. self.connect(self.lineEdit_valor_memorizar, QtCore.SIGNAL("returnPressed()"), self.cambia_valor)
  150. self.renombrar_elementos_widget()
  151. QtCore.QMetaObject.connectSlotsByName(self)
  152.  
  153. def cambia_valor(self):
  154.  
  155. qstring = str(self.lineEdit_valor_memorizar.text())
  156. # mensaje = QtGui.QMessageBox()
  157.  
  158. if qstring == self.valor_generado and len(self.valor_generado) > 0 and len(qstring) > 0:
  159.  
  160. # mensaje.setText(_fromUtf8("¡Respuesta correcta!"))
  161. self.pushButton_comenzar.setFocus(True)
  162. self.lineEdit_valor_memorizar.setText("")
  163. self.valor_generado = False
  164. self.racha = self.racha + 1
  165. self.label_valor_racha.setText(str(self.racha))
  166. self.empezar()
  167.  
  168. else:
  169.  
  170. self.lineEdit_valor_memorizar.setText("")
  171. self.valor_generado = False
  172. # mensaje.setText(_fromUtf8("¡Respuesta Incorrecta!"))
  173. self.racha = 0
  174. self.correr = False
  175. self.label_valor_racha.setText("0")
  176. self.empezar()
  177.  
  178. # mensaje.exec_()
  179.  
  180. def generar_numero(self):
  181.  
  182. valor = ""
  183. for i in range(form_a.largo,):
  184.  
  185. valor = valor + str(randint(0, 9))
  186.  
  187. return valor
  188.  
  189. def generar_letras(self):
  190.  
  191. valor = ""
  192. lista = list("abcdefghijklmnopqrstuvwxyz")
  193. len_lista = len(lista) - 1
  194. for i in range(form_a.largo):
  195.  
  196. valor = valor + lista[randint(0,len_lista)]
  197.  
  198. return valor
  199.  
  200. def generar_alfanumerico(self):
  201.  
  202. valor = ""
  203. lista_abc = list("abcdefghijklmnopqrstuvwxyz")
  204. lista_digitos = list("0123456789")
  205. largo = form_a.largo / 2
  206. len_lista_abc = len(lista_abc) - 1
  207. len_lista_digitos = len(lista_digitos) - 1
  208. for i in range(largo):
  209.  
  210. valor = valor + lista_abc[randint(0,len_lista_abc)]
  211.  
  212. for i in range(largo):
  213.  
  214. valor = valor + lista_digitos[randint(0,len_lista_digitos)]
  215.  
  216. return ''.join(sample(valor, len(valor)))
  217.  
  218. def empezar(self):
  219.  
  220. opcion = form_a.comboBox_tipo.currentIndex()
  221. self.lineEdit_valor_memorizar.setReadOnly(True)
  222. if opcion == 0:
  223. self.valor_generado = self.generar_numero()
  224. self.lineEdit_valor_memorizar.setText(self.valor_generado)
  225. elif opcion == 1:
  226. self.valor_generado = self.generar_letras()
  227. self.lineEdit_valor_memorizar.setText(self.valor_generado)
  228. elif opcion == 2:
  229. self.valor_generado = self.generar_alfanumerico()
  230. self.lineEdit_valor_memorizar.setText(self.valor_generado)
  231.  
  232. t = Timer()
  233. t.start()
  234.  
  235. def renombrar_elementos_widget(self):
  236.  
  237. self.setWindowTitle(_translate("self", "Tablero", None))
  238. self.label_memoriza.setText(_translate("self", "<html><head/><body><p align=\"center\"><span style=\" font-size:13pt;\">Memoriza</span></p></body></html>", None))
  239. self.lineEdit_valor_memorizar.setText(_translate("self", "", None))
  240. self.label_tiempo_restante.setText(_translate("self", "Tiempo restante", None))
  241. self.label_segundos_restantes.setText(_translate("self", "10 segundos", None))
  242. self.label_racha.setText(_translate("self", "Racha", None))
  243. self.label_valor_racha.setText(_translate("self", "0", None))
  244. self.pushButton_comenzar.setText(_translate("self", "Comenzar", None))
  245.  
  246. class Timer(threading.Thread):
  247.  
  248. def __init__(self, parent=None):
  249.  
  250. threading.Thread.__init__(self, parent)
  251.  
  252. def run(self):
  253.  
  254. tiempo_restante = form_a.tiempo
  255.  
  256. for i in range(form_a.tiempo):
  257. form_b.label_segundos_restantes.setText("%s segundos" % tiempo_restante)
  258. tiempo_restante = tiempo_restante - 1
  259. sleep(1)
  260.  
  261. form_b.label_segundos_restantes.setText("0 segundos")
  262. form_b.lineEdit_valor_memorizar.setText("")
  263. form_b.lineEdit_valor_memorizar.setReadOnly(False)
  264. form_b.lineEdit_valor_memorizar.setFocus(True)
  265.  
  266. app = QtGui.QApplication(sys.argv)
  267. form_b = formB()
  268. form_a = formA()
  269. form_a.show()
  270. app.exec_()

Fuente: http://codigo.ga/python/pyqt4-memoriza-entrenando-la-memoria/

Saludos, Javier.
6  Programación / Scripting / Re: [Python + QT4] Problema con barra de navegador hecho con python y QT4 en: 15 Mayo 2015, 07:03 am
Hola, buen día.

No entiendo para que tienes una barra de direcciones si quieres tener una página fija. Mejor solo carga la url que quieres y elimina el QLineEdit de la URL.

Saludos.
7  Programación / Scripting / [PyQT4] Inicio de Sesión estilo "Caja Fuerte" :: JaAViEr en: 15 Mayo 2015, 01:07 am
Hola, buen día, luego de meses y meses y meses (na', nunca tanto), de no escribir nada en el Blog, ni mucho menos programar alguna cosilla en PyQT4, he vuelto.

En esta ocasión traigo un Inicio de Sesión basado en el sistema de las antiguas Cajas Fuertes, dónde para ingresar al contenido de dicha caja, necesitabas una combinación de números. Aclaro que esto es solo una prueba de concepto, lo publico solo con dicha intención.

El programa luce así exactamente:


Más abajo explico como funciona, ahora adjunto el código:
Código
  1. # -*- coding: utf-8 -*-
  2. '''
  3. Prueba de Concepto sobre Inicio de sesión con Dial de QT4
  4. Autor: JaAViEr | 0x5d
  5. Twitter: https://twitter.com/javieresteban__
  6. Website: http://codigo.ga
  7. '''
  8. from PyQt4 import QtCore, QtGui
  9. import sys
  10. try:
  11. _fromUtf8 = QtCore.QString.fromUtf8
  12. except AttributeError:
  13. def _fromUtf8(s):
  14. return s
  15.  
  16. try:
  17. _encoding = QtGui.QApplication.UnicodeUTF8
  18. def _translate(context, text, disambig):
  19. return QtGui.QApplication.translate(context, text, disambig, _encoding)
  20. except AttributeError:
  21. def _translate(context, text, disambig):
  22. return QtGui.QApplication.translate(context, text, disambig)
  23.  
  24. class Form(QtGui.QWidget):
  25.  
  26. def __init__(self, parent=None):
  27.  
  28.  
  29. estilo_elementos = '''background:qlineargradient(spread:reflect, x1:0.523, y1:0.778, x2:0.545455, y2:0, stop:0 rgba(0, 176, 140, 214), stop:1 rgba(255, 255, 255, 255));
  30. color: #000;padding: 10px;'''
  31. QtGui.QWidget.__init__(self, parent)
  32. self.clave = [220,1, 1000]
  33. self.usuario = "jaavier"
  34. self.intento_clave = []
  35. self.setObjectName(_fromUtf8("self"))
  36. self.setFixedSize(400, 484)
  37. self.setStyleSheet(_fromUtf8("font-weight:bold; font-size: 15px;background:qlineargradient(spread:reflect, x1:0.523, y1:0.778, x2:0.545455, y2:0, stop:0 rgba(0, 176, 140, 214), stop:1 rgba(255, 255, 255, 255));"))
  38. self.gridLayout = QtGui.QGridLayout(self)
  39. self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
  40. self.splitter_2 = QtGui.QSplitter(self)
  41. self.splitter_2.setOrientation(QtCore.Qt.Vertical)
  42. self.splitter_2.setObjectName(_fromUtf8("splitter_2"))
  43. self.lcdNumber_numeros = QtGui.QLCDNumber(self.splitter_2)
  44. self.lcdNumber_numeros.setObjectName(_fromUtf8("lcdNumber_numeros"))
  45. self.lcdNumber_numeros.setStyleSheet(estilo_elementos)
  46. self.dial_contrasena = QtGui.QDial(self.splitter_2)
  47. self.dial_contrasena.setMaximum(1000)
  48. self.dial_contrasena.setStyleSheet("background: rgb(85, 255, 255)")
  49. self.dial_contrasena.setObjectName(_fromUtf8("dial_contrasena"))
  50. self.gridLayout.addWidget(self.splitter_2, 3, 0, 1, 1)
  51. self.label_usuario = QtGui.QLabel(self)
  52. self.label_usuario.setStyleSheet(_fromUtf8("font-weight:bold; font-size: 15px;"))
  53. self.label_usuario.setObjectName(_fromUtf8("label_usuario"))
  54. self.label_usuario.setStyleSheet("background: transparent")
  55. self.gridLayout.addWidget(self.label_usuario, 0, 0, 1, 1)
  56. self.lineEdit_usuario = QtGui.QLineEdit(self)
  57. self.lineEdit_usuario.setStyleSheet(estilo_elementos)
  58. self.lineEdit_usuario.setObjectName(_fromUtf8("lineEdit_usuario"))
  59. self.gridLayout.addWidget(self.lineEdit_usuario, 1, 0, 1, 1)
  60. self.label_contrasena = QtGui.QLabel(self)
  61. self.label_contrasena.setObjectName(_fromUtf8("label_contrasena"))
  62. self.label_contrasena.setStyleSheet("background: transparent")
  63. self.gridLayout.addWidget(self.label_contrasena, 2, 0, 1, 1)
  64. self.pushButton_reiniciar = QtGui.QPushButton(self)
  65. self.pushButton_reiniciar.setObjectName(_fromUtf8("pushButton_reiniciar"))
  66. self.gridLayout.addWidget(self.pushButton_reiniciar, 4, 0, 1, 1)
  67. self.pushButton_reiniciar.setStyleSheet(estilo_elementos)
  68. self.renombrarObjetos()
  69. QtCore.QObject.connect(self.dial_contrasena, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber_numeros.display)
  70. QtCore.QObject.connect(self.pushButton_reiniciar, QtCore.SIGNAL(_fromUtf8("clicked()")), self.limpiar_campos)
  71. QtCore.QMetaObject.connectSlotsByName(self)
  72.  
  73. def limpiar_campos(self):
  74.  
  75. self.lineEdit_usuario.setText("")
  76. self.intento_clave = []
  77. self.dial_contrasena.setValue(0)
  78. mensaje_reinicio = QtGui.QMessageBox()
  79. mensaje_reinicio.setText(_fromUtf8("Formulario reiniciado con éxito"))
  80.  
  81. def keyPressEvent(self, evento):
  82.  
  83. tecla = evento.key()
  84.  
  85. if tecla == 32:
  86.  
  87. usuario = str(self.lineEdit_usuario.text())
  88. self.intento_clave.append(int(self.lcdNumber_numeros.value()))
  89. self.dial_contrasena.setValue(0)
  90. if self.intento_clave == self.clave and usuario == self.usuario:
  91.  
  92. mensaje = QtGui.QMessageBox()
  93. mensaje.setText("Bienvenido, " + usuario)
  94. mensaje.exec_()
  95. self.limpiar_campos()
  96.  
  97. def renombrarObjetos(self):
  98.  
  99. self.setWindowTitle(_translate("self", "Iniciar Sesión :: WWW.CODIGO.GA", None))
  100. self.label_usuario.setText(_translate("self", "Usuario", None))
  101. self.label_contrasena.setText(_translate("self", "Contraseña", None))
  102. self.pushButton_reiniciar.setText(_translate("self", "Reiniciar campos", None))
  103.  
  104. app = QtGui.QApplication(sys.argv)
  105. formulario = Form()
  106. formulario.show()
  107. app.exec_()
Bien, dentro del código, específicamente en las líneas 32 y 33 tenemos dos variables:
Código
  1. self.clave = [220,1, 1000]
  2. self.usuario = "jaavier"
  3.  
Como vemos, self.usuario es la variable de nuestro usuario válido y self.clave es una Lista, cuyo valor es [220, 1, 1000], lo que quiere decir que esa es nuestra combinación para ingresar de forma correcta. En ves de 3 dígitos en la combinación, pueden ser los que se te antojen.

Para ingresar nuestra combinación (220, 1, 1000), es necesario utilizar nuestro cursor e ir moviendo la "perilla" (QDial), a medida que vayamos moviendo esta, el valor se irá viendo en la pantalla estilo "LCD" en la parte superior. Cuando hayas encontrado los números de tu combinación, debes presionar la tecla "Espacio", de esta forma le decimos al programa que el número que vemos en el LCD, forma parte de nuestra combinación, una vez hecho esto con la primera cifra, el QDial vuelve a 0, lo que quiere decir que ahora debes buscar el segundo número de tu combinación, presionar espacio y así lo mismo con el tercer, cuarto, quinto, etc dígito.

Si la combinación resulta correcta, deberías obtener algo como esto:


Fuente: http://codigo.ga/python/pyqt4-inicio-de-sesion-estilo-caja-fuerte/

Saludos, Javier.
8  Programación / Scripting / Re: python y wxpython en: 12 Marzo 2015, 15:41 pm
Si, excelente ya había escuchado de py2exe, y que tal pyinstaller?????

Otra cosa mas, lo grande del programa afecta su desempeño??? O de plano debería optar por otro lenguaje de programación????
Hola nuevamente!

Nunca he probado PyInstaller, por lo que no me aventuro a responder algo sobre esto.
Respecto a lo grande del programa (Referente al peso), prefiero que sea un poco más pesado y esté programado en Python,
que tener que aprender a programar la misma aplicación en algún lenguaje compilado.

Saludos, Javier.
9  Programación / Scripting / Re: python y wxpython en: 11 Marzo 2015, 03:46 am
Yo he usado Py2EXE para proyectos Python con QT4 , la desventaja es que genera un ejecutable algo pesado, pues incorpora las librerías que usa tu code, además del interprete (eso creo)

Saludos.
10  Programación / Desarrollo Web / [Código-javascript]Palabras más utilizadas en un Sitio Web en: 25 Noviembre 2014, 10:00 am
Hola, muy buen día.

El código javascript que publicaré más abajo se encarga de capturar todas las palabras dentro de algún elemento, clase o id. Nos creará un pequeño formulario "flotante", en el cuál nos pedirá "Longitud", "Veces", "Elemento" (Filtros).


¿ Que es eso de "Filtros"?
Los dos primeros son una especie de filtros, así mostramos resultados más específicos.
  • Longitud: Busca palabras con la longitud que tu deseas (&gt;=)
  • Veces: Cantidad de veces que aparece en la web
  • Elemento: Acá ingresamos en que elemento de la web deseamos buscar Las palabras más utilizadas. El script al usar jQuery, nos permite insertar en este campo ".clases", "#ids" o simplemente elementos como &lt;body&gt;
Una vez rellenes los campos, el programa te dará una salida con una tabla como esta:

Ejemplo basado en el portal de noticias http://actualidad.rt.com

Sin más, el código:
Código
  1. var script = document.createElement('script');
  2. script.src = 'http://code.jquery.com/jquery-latest.js';
  3. document.getElementsByTagName('head')[0].appendChild(script);
  4.  
  5. var times_form;
  6. var element_form;
  7. var length_form;
  8. var l_temp;
  9. var dict = {};
  10. var new_dict = {};
  11. var splited = "";
  12. var counter;
  13. var get_data = function (text, length) {
  14.  
  15. splited = text.split(" ");
  16.  
  17.  for ( var a in splited ) {
  18.  
  19. if( dict[splited[a]] ) {
  20.  
  21.      splited[a] = splited[a].toLowerCase();
  22. dict[splited[a]] = dict[splited[a]] + 1;
  23.  
  24. } else {
  25.  
  26.      if ( splited[a].length >= length ) {
  27.  
  28.      splited[a] = splited[a].toLowerCase();
  29.        dict[splited[a]] = 1;
  30.  
  31.   }
  32.  
  33.    }
  34.  
  35. }
  36.  
  37. };
  38.  
  39. var extract = function (element, length, times) {
  40.  
  41.  new_dict = {};
  42.  dict = {};
  43.  
  44.  $(element).each( function () {
  45.  
  46.  get_data($(this).text(), length);
  47.  
  48. });
  49.  
  50.  for ( var c in dict ) {
  51.  
  52.    if ( dict[c] >= times ) {
  53.  
  54.      new_dict[c] = dict[c];
  55.  
  56.    }
  57.  
  58.  }  
  59.  
  60.  var output = "<table border='1'>"+
  61.      "<thead>"+
  62.      "<th>Palabra</th>"+
  63.      "<th>Longitud</th>"+
  64.      "<th>Apariciones</th>"+
  65.      "</thead>"+
  66.      "<tbody>";
  67.  counter = 0;
  68.  for( var l in new_dict ) {
  69.  
  70.    counter++;
  71.    l_temp = l.replace("<", "&lt;");
  72.    l_temp = l_temp.replace(">", "&gt;");
  73.    output = output + "<tr>"+
  74.      "<td>" + l_temp + "</td><td>" + l.length + "</td><td>" + new_dict[l] + "</td>"+
  75.      "</tr>";
  76.  
  77.  }
  78.  output = output + "</tbody></table>";
  79.  
  80.  show_results(output);
  81.  return new_dict;
  82.  
  83. };
  84.  
  85. var find = function (word) {
  86.  
  87.  if ( new_dict[word] ) {
  88.  
  89.   show_results(String(new_dict[word]));
  90.  
  91.  } else {
  92.  
  93.   show_results("Word Not found");
  94.  
  95.  }
  96.  
  97. };
  98.  
  99. var search = function () {
  100.  
  101.  length_form = $("input[name=length_craw]").val();
  102.  times_form = $("input[name=times_craw]").val();
  103. element_form = $("input[name=element_craw]").val();
  104.  if( length_form.length > 0 && times_form.length > 0 && element_form.length > 0 ) {
  105.  
  106.    extract(element_form, length_form, times_form);
  107.  
  108.  }
  109.  
  110. };
  111.  
  112. var show_form = function () {
  113.  
  114.  $("<div class='show_words' style='border-radius:5px;box-shadow:0px 0px 10px #000;overflow:scroll;font-family:Trebuchet MS;width:auto;height:6cm;background-color:#fff;border:1px solid;position:fixed;top:12%;left:2%;padding:5px;z-index:30;'>"+
  115.    "<center><h2>Palabras más utilizadas</h2></center><input style='padding: 2px;border: 1px solid;border-radius: 4px;margin: 4px;' name='length_craw' placeholder='Longitud'>&nbsp;<input style='padding: 2px;border: 1px solid;border-radius: 4px;margin: 4px;' name='times_craw' placeholder='Veces'><br/>"+
  116.    "<input style='padding: 2px;border: 1px solid;border-radius: 4px;margin: 4px;' name='element_craw' placeholder='Elemento'>&nbsp;<button onclick='search()' style='padding: 2px;border: 1px solid;border-radius: 4px;margin: 4px;'>¡Buscar!</button>&nbsp;<button onclick='$(\".show_words\").fadeOut();' style='padding: 2px;border: 1px solid;border-radius: 4px;margin: 4px;'>Cerrar</button>"+
  117.    "<div class='words_content'></div></div>").appendTo("body");
  118.  
  119. };
  120.  
  121. var show_results = function (content) {
  122.  
  123.  $(".words_content").html("Total:" + counter + "<br/>" + content);
  124.  
  125. };
  126.  
  127. show_form();

FUENTE ORIGINAL : http://codigo.ga/javascript/javascriptpalabras-mas-utilizadas-en-sitio-web/


Sin más que agregar... gracias por leer :-)

Saludos, Javier.
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 24
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines