Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: 0x5d en 26 Abril 2014, 05:55 am



Título: [Código-PyQT4]Protector de Archivo - JaAViEr
Publicado por: 0x5d en 26 Abril 2014, 05:55 am
Hola, buenos días!

El siguiente programa tiene por función el poder restaurar un archivo que se ha modificado o eliminado.

El funcionamiento del programa es muy sencillo

(https://dl.dropboxusercontent.com/s/kooaq4wk6q2dzg4/Captura%20de%20pantalla%202014-04-25%2023.47.58.png)

Clic en "Buscar..." , ubicamos el archivo que deseamos proteger y damos clic en "Abrir" , una vez hecho esto el programa ya estará atento a los cambios del programa. El programa lanzará un alerta en caso de que:
  • El archivo se haya eliminado.
  • El archivo se haya modificado.
Junto con cualquiera de ambas alertas el programa nos dará la posibilidad de restaurar a la versión anterior (A la versión del archivo al momento de ejecutarse este programa y seleccionar el archivo)
Sin más que decir, el código
Código
  1. # -*- coding: utf-8 -*-
  2.  
  3. #Autor: JaAViEr | 0X5D
  4. #Twitter: @javieresteban__
  5.  
  6. from PyQt4 import QtCore, QtGui
  7. import sys, threading, os
  8.  
  9. try:
  10.    _fromUtf8 = QtCore.QString.fromUtf8
  11. except AttributeError:
  12.    def _fromUtf8(s):
  13. return s
  14.  
  15. class Formulario(QtGui.QWidget):
  16.  
  17. def __init__(self):
  18.  
  19. QtGui.QWidget.__init__(self)
  20. self.setWindowTitle("Protector de Archivos :: 2014")
  21. self.setFixedSize(400, 48)
  22. self.gridLayout = QtGui.QGridLayout(self)
  23. self.label = QtGui.QLabel(self)
  24. self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
  25. self.archivo = QtGui.QLineEdit(self)
  26. self.archivo.setDisabled(True)
  27. self.gridLayout.addWidget(self.archivo, 0, 1, 1, 1)
  28. self.boton = QtGui.QPushButton(self)
  29. self.gridLayout.addWidget(self.boton, 0, 2, 1, 1)
  30. self.label.setText("Archivo:")
  31. self.boton.setText("Buscar...")
  32. self.connect(self.boton, QtCore.SIGNAL("clicked()"), self.buscar_archivo)
  33. self.connect(self.archivo, QtCore.SIGNAL("returnPressed()"), self.empezar)
  34.  
  35. def buscar_archivo(self):
  36.  
  37. self.file = QtGui.QFileDialog.getOpenFileName(self, 'Buscar Archivo', '')
  38. leer = open(self.file, "rb")
  39. self.lineas = leer.read()
  40. leer.close()
  41. self.archivo.setText(self.file)
  42. self.size = os.path.getsize(self.file)
  43. self.empezar()
  44.  
  45. def empezar(self):
  46.  
  47. h = Hilo()
  48. h.start()
  49.  
  50. class Hilo(threading.Thread):
  51.  
  52. def run(self):
  53.  
  54. while True:
  55. try:
  56. open(form.file)
  57. estado = True
  58. except:
  59. estado = False
  60.  
  61. if estado:
  62. tama = os.path.getsize(form.file)
  63. if tama == form.size:
  64. pass
  65. else:
  66. self.restaurar()
  67. else:
  68. self.restaurar()
  69.  
  70. def restaurar(self):
  71.  
  72. try:
  73. f = open(form.file, "wb")
  74. f.write(form.lineas)
  75. f.close()
  76. QtGui.QMessageBox.about(None, 'Alerta',_fromUtf8('El archivo se restauró exitosamente!'))
  77. except:
  78. QtGui.QMessageBox.about(None, 'Alerta',_fromUtf8('Error al intentar restaurar!'))
  79. app = QtGui.QApplication(sys.argv)
  80. form = Formulario()
  81. form.show()
  82. app.exec_()
  83.  

Saludos, Javier.


Título: Re: [Código-PyQT4]Protector de Archivo - JaAViEr
Publicado por: BigBear en 26 Abril 2014, 20:36 pm
buen code , parece que volviste a programar javier.


Título: Re: [Código-PyQT4]Protector de Archivo - JaAViEr
Publicado por: 0x5d en 27 Abril 2014, 06:42 am
buen code , parece que volviste a programar javier.
Estoy intentando retomar el ritmo de PyQT4 :) , hace mucho no programaba Python :)