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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Conexion a socket
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Conexion a socket  (Leído 3,691 veces)
lomaximo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Conexion a socket
« en: 25 Mayo 2012, 01:34 am »

Buenas amigos, soy nuevo por aqui, tengo una preguntilla, estoy haciendo un bot que se conecta a vnc mediante socket y me diga que vnc no tienen pass para poder conectarse...
Soy algo principiante en java por lo que me esta sacando de quicio esto del socket
Código:
String scanVnc(int host)
{

try {

echoSocket.setSoTimeout(1000);
echoSocket = new Socket(host, 5900);
echoSocket.setSoTimeout(1000);
        out = new PrintWriter(echoSocket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(
                                    echoSocket.getInputStream()));
    } catch (UnknownHostException e) {
        System.out.println("1 Don't know about"+host);
        return("1 Don't know about"+host);
    } catch (IOException e) {
        System.out.println("2 Couldn't get I/O for "
                           + "the connection to:"+host);
        return("2 Couldn't get I/O for "
                + "the connection to:"+host);
       
    }
    try {
echoSocket.close();
} catch (IOException e) {

e.printStackTrace();
System.out.println("Erreeror");
}
return host;

}

Mi problema es que en lo que va de una ip a otra si no encuentra nada en ellas, se tira dios y su madre ahi...
como podria hacer para qeu según detecte que no hay ningun vnc salte a otra ip sin tardar tanto?.
Un saludo


En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Conexion a socket
« Respuesta #1 en: 25 Mayo 2012, 05:26 am »

Hola bueno, no deberías tratar al host como un String, o como un int, deberías usar el Objeto concebido para esta tarea, un InetSocketAddres así podrás especificar el timeout en el método connect del socket, A continuación pongo un ejemplo:

Código
  1. package vnclookup;
  2.  
  3. import java.io.IOException;
  4. import java.net.InetSocketAddress;
  5. import java.net.Socket;
  6.  
  7. /**
  8.  *
  9.  * @author ryogi
  10.  */
  11. public class VNCLookUp {
  12.  
  13.    private static InetSocketAddress isa;
  14.  
  15.    public static void main(String[] args) {
  16.        try {
  17.            isa = new InetSocketAddress( args[0],
  18.                    Integer.parseInt(args[1]));
  19.        } catch (ArrayIndexOutOfBoundsException |
  20.                NumberFormatException ex) { // Usar esta linea solo si se tiene el JDK 7 (que permite multicatching)
  21.            System.out.println("[E] Argumentos invalidos.");
  22.            System.exit(-1);
  23.        }
  24.        System.out.println("[+] Intentando " + isa.getHostName()
  25.                + ":" + isa.getPort());
  26.  
  27.        if ( isServerUp(isa) ) {
  28.            System.out.println("[*] Server encontrado.");
  29.        } else {
  30.            System.out.println("[*] Server no encontrado.");
  31.        }
  32.    }
  33.  
  34.    public static boolean isServerUp (InetSocketAddress isa) {
  35.        Socket sock = new Socket();
  36.        try {
  37.            sock.connect(isa, 5000);
  38.        } catch ( IOException ioe) {
  39.            return false;
  40.        }
  41.        return true;
  42.    }
  43. }
  44.  
Puedes ver como en la linea subrayada se intenta conectar el InetSocketAddress con un timeout de 5 segundos:
Código
  1. sock.connect(isa, 5000);

puedes usarlo de la siguiente manera:
Código
  1. java VNCLookUp 192.168.0.1 5900
Donde el primer argumento es la IP y el segundo es el puerto. El código fue probado con un server x11vnc

Espero sea de ayuda.

Saludos


« Última modificación: 25 Mayo 2012, 05:31 am por RyogiShiki » En línea

lomaximo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Conexion a socket
« Respuesta #2 en: 25 Mayo 2012, 12:00 pm »

Muchisimas gracias, implante ese codigo y ahora va un poquito mas rapido, pero se nota la diferencia, ahora solo me falta encontrar un servidor vnc para poder hacer pruevas y ver cuando tiene auth y demas...
Muchas gracias, si tengo alguna duda más la posteare por aqui..

PD: ah una cosa, alguien sabe cual es el timeout medio que tarda en conectarse a un vnc, esque 5 me parece muy alto, y tarda mucho de pasar de una ip a otra, pero tampoco quiero que no llege a conectarse por ponerlo
« Última modificación: 25 Mayo 2012, 12:03 pm por lomaximo » En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Conexion a socket
« Respuesta #3 en: 25 Mayo 2012, 16:02 pm »

Puedes mejorar bastante la velocidad cambiando la siguiente linea:

Código
  1. System.out.println("[+] Intentando " + isa.getHostName()
  2.                + ":" + isa.getPort());

por:

Código
  1. System.out.println("[+] Intentando " + isa.getHostString()
  2.                + ":" + isa.getPort());

O en particular usando el método getHostString() envés de getHostName()

Así como lo que usas es IPs no se intenta resolver el nombre y debería mejorar.

Saludos.
« Última modificación: 25 Mayo 2012, 16:08 pm por RyogiShiki » En línea

lomaximo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Conexion a socket
« Respuesta #4 en: 26 Mayo 2012, 17:27 pm »

Gracias de nuevo, tengo otra duda sobre este tema jjejeje
a ver, me he conectado a un servidor rdp, en localhost, como podría desde java sin que se me muestre ninguna imagen, teniendo el usuario y pass guardado en el código de java y que sepa si el usuario es admitido o no?
porque he provado con esto
Código:
try {
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
                                echoSocket.getInputStream()));
    } catch (IOException e1) {e1.printStackTrace();}

    String line = null;
try {
System.out.println("1");
while ((line = in.readLine( )) != null)
{
System.out.println(line);
System.out.println("2");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    return true;
pero no me muestra nada en pantalla, solo el 1 de esta linea
Código:
System.out.println("1");
pero en cambio el 2 de la linea
Código:
System.out.println("2");
no lo muestra, se que se queda en el bucle, pero no llego a comprender porque no me muestra lo del bufferedreader.
Agradeceria si alguien supiese que comando he de enviar para dar un admin y pass, y donde puedo ver este comando para distintos protocolos
Un saludo
En línea

lomaximo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Conexion a socket
« Respuesta #5 en: 28 Mayo 2012, 16:17 pm »

nadie sabe como se comunica?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Deteccion perdida de conexion socket en C
Programación C/C++
PeKiN 4 5,913 Último mensaje 14 Junio 2011, 17:56 pm
por PeKiN
Probar conexión Socket?
Programación C/C++
CeroX901 3 6,921 Último mensaje 18 Octubre 2011, 21:46 pm
por CeroX901
[pfsockopen]Implementar conexión anónima de tor en un socket de PHP[Solucionado]
PHP
moikano→@ 1 2,174 Último mensaje 8 Abril 2013, 23:22 pm
por moikano→@
Reanudar conexión socket en Python
Scripting
177600531 5 3,453 Último mensaje 29 Abril 2013, 21:35 pm
por daryo
JavaFX, conexión por socket
Java
Zoik 1 2,213 Último mensaje 25 Junio 2015, 18:54 pm
por Zoik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines