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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Temas
Páginas: [1]
1  Seguridad Informática / Seguridad / Análisis "inteligente" de seriales. en: 15 Enero 2014, 17:27 pm
No sabia bien en donde colocar el post, asi que lo dejo acá.
He tenido experiencia con algoritmos de IA, Clustering y machine learning en general y hace tiempo le he estado dando vueltas al asunto de analizar secuencias de números para tratar de predecir secuencias válidas.
Ejemplo:
Tengo un juego de seriales válidos:
2121 2442 3234
5432 3432 6423
....

Con algún algoritmo de inferencia de asociaciones, regresión o reconocimiento de patrones:
¿Pudiera ser posible deducir los seriales válidos de la secuencia y/o determinar que asociaciones existen entre los valores que la componen?
Si alguien tiene experiencia práctica en algo así y quisiera compartirla aquí estaría muy agradecido.
2  Programación / Scripting / Tk en Python usando OOP en: 3 Noviembre 2008, 16:43 pm
Bueno que hace tiempo no posteo nada... realmente he estado bastante liado con el trabajo... Interesante este curso, lastima que no siga... No obstante aportare mi granito..

Las interfaces graficas, por un problema de reusabilidad, organizacion y otras razones deben programarse utilizando un modelo orientado a objetos.

Nota sobre los Frames: Los frames son widgets que pueden contener otros widgets como botones, etiquetas, etc. Permiten agrupar controles.

Código
  1. from Tkinter import *
  2. class Application(Frame):
  3.  """ GUI application which counts button clicks. """
  4.  def __init__(self, master):
  5.    """ Inicializa el Frame. """
  6.    Frame.__init__(self, master)
  7.    self.grid()
  8.    self.bttn_clicks = 0    # the number of button clicks
  9.    self.create_widgets()
  10.  
  11.  def create_widgets(self):
  12.    """ Crea widgets. """
  13.    self.lbl = Label(self, text="Total Clicks: 0")
  14.    self.lbl.grid()
  15.  
  16.    self.bttn = Button(self, text="ClickMe", command=self.update_count)
  17.    self.bttn.grid()
  18.  
  19.  def update_count(self):
  20.    """ Increase click count and display new total. """
  21.    self.bttn_clicks += 1
  22.    self.lbl["text"] = "Total Clicks: "+ str(self.bttn_clicks)
  23.  
  24. root = Tk()
  25. root.title("Click Counter")
  26. root.geometry("200x50")
  27.  
  28. app = Application(root)
  29.  
  30. root.mainloop()
  31.  

En este ejemplo se muestra como manejar Frames de forma independiente. En vez de heredar la clase Frame heredamos Tk.
Código
  1. from Tkinter import *
  2.  
  3. class FrameMan(Tk):
  4.  """ Gestion de Frames. """
  5.  def __init__(self):
  6.    """ Initialize the frame. """
  7.    Tk.__init__(self)
  8.    self.grid()
  9.  
  10.    self.title("Simple Calculator.")
  11.    self.resizable(width = 0, height = 0)
  12.    self.geometry("200x75")
  13.  
  14.    self.result = 0
  15.    self.createWidgets()
  16.  
  17.  def createWidgets(self):
  18.    """ Creamos el Frame y demas controles hijos. """
  19.    self.myFrame1 = Frame(self)
  20.    self.myFrame2 = Frame(self)
  21.    self.myFrame1.grid(row = 0, column = 0)
  22.    self.myFrame2.grid(row = 0, column = 1)
  23.  
  24.    self.Label1 = Label(self.myFrame1, text = "Este es el Frame 1")
  25.    self.Label2 = Label(self.myFrame2, text = "Este es el Frame 2")
  26.    self.Label1.grid()
  27.    self.Label2.grid()
  28.  
  29.    self.Button1 = Button(self, text = "Dest 1", command = self.destF1)
  30.    self.Button2 = Button(self, text = "Dest 2", command = self.destF2)
  31.    self.Button1.grid(row = 1, column = 0)
  32.    self.Button2.grid(row = 1, column = 1)
  33.  
  34.  def runApp(self):
  35.    """ Ejecutamos la aplicacion. """
  36.    self.mainloop()
  37.  
  38.  def destF1(self):
  39.    self.myFrame1.destroy()
  40.  
  41.  def destF2(self):
  42.    self.myFrame2.destroy()
  43.  
  44. root = FrameMan().runApp()
  45.  

Por ultimo dos variantes de un mismo programa. Es una calculadora simple donde escogemos la operacion a realizar. Buen ejemplo, puesto que muestra el uso de diferentes controles, asi como el uso del layout manager grid().

Variante 1:

Código
  1. from Tkinter import *
  2.  
  3. def showWindows():
  4.  root = Tk()
  5.  root.title("Simple Calculator.")
  6.  root.resizable(width = 0, height = 0)
  7.  root.geometry("370x75")
  8.  Application(root)
  9.  root.mainloop()
  10.  
  11. class Application(Frame):
  12.  """ Calculadora simple usando Tkinter. """
  13.  def __init__(self, master):
  14.    """ Initialize the frame. """
  15.    Frame.__init__(self, master)
  16.    self.grid()
  17.    self.result = 0
  18.    self.create_widgets()
  19.  
  20.  def create_widgets(self):
  21.    """ Creamos controles hijos. """
  22.    self.numb1 = Entry(self)
  23.    self.numb1.grid(row = 0, column = 0, columnspan = 2, sticky = E)
  24.    self.numb1.insert(0, "0")
  25.  
  26.    self.lblop = Label(self, text="?")
  27.    self.lblop.grid(row = 0, column = 1, sticky = E)
  28.  
  29.    self.numb2 = Entry(self, text = "0")
  30.    self.numb2.grid(row = 0, column = 2, columnspan=2, sticky = E)
  31.    self.numb2.insert(0, "0")
  32.  
  33.    self.lblEqual = Label(self, text = "=")
  34.    self.lblEqual.grid(row = 0, column = 5, sticky = E)
  35.  
  36.    self.lblResult = Label(self, text = "Result")
  37.    self.lblResult.grid(row = 0, column = 6, sticky = E)
  38.  
  39.    self.opr = StringVar()
  40.    self.opr.set = "?"
  41.  
  42.    self.optSum = Radiobutton(self,
  43.                              text = "+",
  44.                              variable = self.opr,
  45.                              value = "+",
  46.                              command = self.upd_opr
  47.                              ).grid(row = 1, column = 0, sticky = W)
  48.  
  49.    self.optRest = Radiobutton(self,
  50.                              text = "-",
  51.                              variable = self.opr,
  52.                              value = "-",
  53.                              command = self.upd_opr
  54.                              ).grid(row = 2, column = 0, sticky = W)
  55.  
  56.    self.optMult = Radiobutton(self,
  57.                              text = "*",
  58.                              variable = self.opr,
  59.                              value = "*",
  60.                              command = self.upd_opr
  61.                              ).grid(row = 1, column = 1, sticky = W)
  62.  
  63.    self.optDiv = Radiobutton(self,
  64.                              text = "/",
  65.                              variable = self.opr,
  66.                              value = "/",
  67.                              command = self.upd_opr
  68.                              ).grid(row = 2, column = 1, sticky = W)
  69.  
  70.    self.btnCalc = Button(self, text = "Calcular", command = self.calc)
  71.    self.btnCalc.grid(row = 1, column = 2, rowspan = 2, sticky = E)
  72.  
  73.  def upd_opr(self):
  74.    self.lblop["text"] = self.opr.get()
  75.  
  76.  def calc(self):
  77.    """ Realizamos el calculo escogido. """
  78.    if self.opr.get() == "+":
  79.      self.result = float(self.numb1.get()) + float(self.numb2.get())
  80.      self.lblResult["text"] = self.result
  81.    elif self.opr.get() == "-":
  82.      self.result = float(self.numb1.get()) - float(self.numb2.get())
  83.      self.lblResult["text"] = self.result
  84.    elif self.opr.get() == "*":
  85.      self.result = float(self.numb1.get()) * float(self.numb2.get())
  86.      self.lblResult["text"] = self.result
  87.    elif self.opr.get() == "/":
  88.      self.result = float(self.numb1.get()) / float(self.numb2.get())
  89.      self.lblResult["text"] = self.result
  90.  
  91. showWindows()
  92.  

Variante 2:

Código
  1. from Tkinter import *
  2.  
  3. class SimpleCalc(Tk):
  4.  """ Calculadora simple usando Tkinter. """
  5.  def __init__(self):
  6.    """ Initialize the frame. """
  7.    Tk.__init__(self)
  8.    self.grid()
  9.  
  10.    self.title("Simple Calculator.")
  11.    self.resizable(width = 0, height = 0)
  12.    self.geometry("370x75")
  13.  
  14.    self.result = 0
  15.    self.createWidgets()
  16.  
  17.  def createWidgets(self):
  18.    """ Creamos el Frame y demas controles hijos. """
  19.    self.myFrame = Frame(self)
  20.    self.myFrame.grid()
  21.  
  22.    self.numb1 = Entry(self.myFrame)
  23.    self.numb1.grid(row = 0, column = 0, columnspan = 2, sticky = E)
  24.    self.numb1.insert(0, "0")
  25.  
  26.    self.lblop = Label(self.myFrame, text="?")
  27.    self.lblop.grid(row = 0, column = 1, sticky = E)
  28.  
  29.    self.numb2 = Entry(self.myFrame, text = "0")
  30.    self.numb2.grid(row = 0, column = 2, columnspan=2, sticky = E)
  31.    self.numb2.insert(0, "0")
  32.  
  33.    self.lblEqual = Label(self.myFrame, text = "=")
  34.    self.lblEqual.grid(row = 0, column = 5, sticky = E)
  35.  
  36.    self.lblResult = Label(self.myFrame, text = "Result")
  37.    self.lblResult.grid(row = 0, column = 6, sticky = E)
  38.  
  39.    self.opr = StringVar()
  40.    self.opr.set = "?"
  41.  
  42.    self.optSum = Radiobutton(self.myFrame,
  43.                              text = "+",
  44.                              variable = self.opr,
  45.                              value = "+",
  46.                              command = self.updOpr
  47.                              ).grid(row = 1, column = 0, sticky = W)
  48.  
  49.    self.optRest = Radiobutton(self.myFrame,
  50.                              text = "-",
  51.                              variable = self.opr,
  52.                              value = "-",
  53.                              command = self.updOpr
  54.                              ).grid(row = 2, column = 0, sticky = W)
  55.  
  56.    self.optMult = Radiobutton(self.myFrame,
  57.                              text = "*",
  58.                              variable = self.opr,
  59.                              value = "*",
  60.                              command = self.updOpr
  61.                              ).grid(row = 1, column = 1, sticky = W)
  62.  
  63.    self.optDiv = Radiobutton(self.myFrame,
  64.                              text = "/",
  65.                              variable = self.opr,
  66.                              value = "/",
  67.                              command = self.updOpr
  68.                              ).grid(row = 2, column = 1, sticky = W)
  69.  
  70.    self.btnCalc = Button(self.myFrame, text = "Calcular", command = self.calcRes)
  71.    self.btnCalc.grid(row = 1, column = 2, rowspan = 2, sticky = E)
  72.  
  73.    self.btnSal = Button(self.myFrame, text = "Salir", command = self.quitApp)
  74.    self.btnSal.grid(row = 1, column = 3, rowspan = 2, sticky = E)
  75.  
  76.  def updOpr(self):
  77.    self.lblop["text"] = self.opr.get()
  78.  
  79.  def runApp(self):
  80.    """ Ejecutamos la aplicacion. """
  81.    self.mainloop()
  82.  
  83.  def quitApp(self):
  84.    """ Funcion que llama al evento destroy() del objeto Tk. """
  85.    self.quit()
  86.  
  87.  def calcRes(self):
  88.    """ Realizamos el tipo de calculo escogido. """
  89.    if self.opr.get() == "+":
  90.      self.result = float(self.numb1.get()) + float(self.numb2.get())
  91.      self.lblResult["text"] = self.result
  92.    elif self.opr.get() == "-":
  93.      self.result = float(self.numb1.get()) - float(self.numb2.get())
  94.      self.lblResult["text"] = self.result
  95.    elif self.opr.get() == "*":
  96.      self.result = float(self.numb1.get()) * float(self.numb2.get())
  97.      self.lblResult["text"] = self.result
  98.    elif self.opr.get() == "/":
  99.      self.result = float(self.numb1.get()) / float(self.numb2.get())
  100.      self.lblResult["text"] = self.result
  101.    else:
  102.      tkMessageBox.showerror(title="Error!!!", message="Escoja un operador.").show()
  103.  
  104. #Corremos la aplicacion
  105. root = SimpleCalc().runApp()
  106.  

El metodo OOP o POO, como prefieran es harto flexible, y aunque en algunos casos complica la solucion a un problema, cuando se trata de interfaces graficas y eventos se hace conveniente su uso.
Para dudas respecto al codigo, busquen la(s) palabra(s) clave de la sección de codigo que despierte dudas en la ayuda de Python.
3  Programación / Java / Exelente tutorial de JDBC-MySQL en: 20 Septiembre 2007, 22:42 pm
Uno de los mejores tutos que he visto del tema... muy simple pero con lo necesario para obtener los fundamentos de como trabajr con el API JDBC para MySQL
http://www.mysql-hispano.org/page.php?id=24&pag=1
4  Programación / Java / Busco libro!!! en: 2 Julio 2007, 19:59 pm
ALGORITMOS Y EJERCICIOS RESUELTOS EN JAVA del autor  David Camacho Fernández... alguien sabe donde puedo descargarlo???
Aunque quisiera me es imposible pagarlo desde mi pais..........

http://www.agapea.com/ALGORITMOS-Y-EJERCICIOS-RESUELTOS-EN-JAVA-n96646i.htm
al que le interese y pueda pagarlo..................
5  Programación / Java / Mirando se Aprende.......... (Ejemplos Java) en: 29 Junio 2007, 15:42 pm
Bueno... amigos... creanme, yo he aprendido un monton compilando codigos de aqui y alla, y luego observando el comportamiento del programa o pasandolo el depurador.......

Debido a que me he enfrascado en un proyecto serio con Java (buscando la forma de implementar este lenguaje en las escuelas de nivel medio y superior relacionadas a la informatica)... he ido elaborando algunos ejercicios y ejemplos....

Por ahora solo les traigo un ejemplo....

Comprobar si un numero dado es primo.


Código
  1. //Descripcion: Programa  que permite comprobar si un numero dado es primo.            
  2. //Autor: alvk4r                                                                                                                    
  3. //Uso: java PrimeCheck [numero]
  4. import java.lang.*;
  5.  
  6. public class PrimeCheck {
  7.  public static void main(String[] args) {
  8.    int N = Integer.parseInt(args[0]);
  9.    int mod, i = 0;
  10.    int[] primes = { 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,
  11.      73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,
  12.      173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,
  13.      271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,
  14.      383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,
  15.      491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,
  16.      613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,
  17.      733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,
  18.      857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,
  19.      983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,
  20.      1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,
  21.      1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,
  22.      1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,
  23.      1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,
  24.      1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,
  25.      1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,
  26.      1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,
  27.      1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,
  28.      1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999};
  29.    boolean ver = true;
  30.  
  31.    while ((i <= 303) && (primes[i] < N)) {
  32.      mod = N % primes[i];
  33.      if (mod == 0) {
  34.        ver = false;
  35.        break;
  36.      }
  37.      i++;
  38.    }
  39.  
  40.    if (ver == false){
  41.    System.out.println("El numero " + N + " es divisible por " + primes[i]);
  42.    System.out.println("El numero " + N + " no es primo.");
  43.    }
  44.    else
  45.      System.out.println("El numero " + N + " probablemente sea primo.");
  46.  }
  47. }


Mas adelante le implementare el metodo Rabin-Miller, para poder estar mucho mas seguros si el numero es primo o no. Pero bueno, este metodo no me parece mal para empezar, puesto que cerca del 98,5% de los numeros no primos son divisibles por algun numero primo menor que 2000. Aunque da errores con algunos numeros, aun no se por que razon, estos son los menos.

Por si alguien tiene dudas de su funcionamiento este es un ejemplo de como ejecutarlo:

Código:
java PrimeCheck 23543
6  Programación / Java / Robocode en: 31 Mayo 2007, 16:24 pm
Robocode es un simulador de batalla de robots donde podemos divertirnos y aprender Java.
Aunque claro, es necesario tener conocimientos (Elementales) de Java para Jugar.

Basicamente funciona asi:
Creamos un robot, y luego lo "soltamos en la arena" para que pelee, mientras dura la batalla no tendremos control sobre el... asi que es necesario haberlo programado bien.

La pagina del proyecto es:
http://sourceforge.net/projects/robocode/

Si buscan robocode en el buscador de SourceForge encontraran cosas interesantes, otros proyectos relacionados.

Mas adelante, si a alguien le interesa, estudielo y busquemos la forma de elaborar un torneo con los interesados.

Pueden contactarme a traves del servicio de mensajeria del foro, y si existe el suficiente interes como para crear una comunidad de robocode con los usuarios que habemos aqui, de paso aprovechemos este hilo y cualquier duda o lo que quieran acerca de Robocode, puede ser posteado aca...

"Tengo en mente elaboara un sitio..., cuando este listo aviso... si alguien quiere ayudar.... es bienvenido"
7  Programación / Java / Ejem... Que injusticia!!!!!!!!!!!!!!!!!!!!!!!!!!!!! en: 25 Mayo 2007, 15:15 pm
Hola amigos... si sigo asi me van a acabar diciendo el pedigue~o...
El asunto es que tengo que hacer un programa para la empresa con Jsdk 1.6 (Java Standard Development Kit), y ... nada que no puedo acceder a los sitios de Sun para descargarlo... dado el bloqueo del gobierno norteamericano contra mi pais...
Y aunque aca en mi trabajo no tengo problemas dado que uso Linux (Xubuntu), en casa tengo Windows y no puedo cambiar el SO... (debido a que no soy el unico que trabaja en ella)....
Bueno quisiera saber si alguno de ustedes conocen un mirror o sitio de donde pueda descargar las cosas de Java que me hacen falta.

----
Lo siento... no me di cuenta y escribi el post fuera del subforo de java
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines