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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Temas
Páginas: [1] 2
1  Programación / Java / No se ha encontrado o cargado la clase principal en: 28 Diciembre 2019, 23:30 pm
Buenas, tengo un problema bastante extraño, os pongo en situación:

Tengo un programilla bastante sencillo empaquetado en un package "holaMundo" y el mainClass se llama "HolaMundo", por lo tanto el qualifiedName sería "holaMundo.HolaMundo", además, lo he empaquetado en un fichero Jar con un Manifiest bastante simple:

Código:
Manifest-version: 1.0
Main-Class: holaMundo.HolaMundo


Y luego, para lanzar el Jar tengo un .bat para hacerlo todo más sencillo:

Código:
@Echo off

java -jar HolaMundo.jar

El caso, es que esto a mi me funciona perfecto, pero en el ordenador de un colega, se descarga un .zip con todo esto, ejecuta el .bat donde lanza el Jar y le aparece el Error
"No se ha encontrado o cargado la clase principal holaMundo.HolaMundo"

Y no lo entiendo, yo tengo exactamente el mismo Jar que él, todo lo tengo igual, de hecho me he descargado el zip que le he pasado, lo descomprimo, ejecuto el bat y me funciona, todo lo tenemos exactamente igual, incluso tenemos la misma versión de Java.

¿Alguna idea?

Gracias.
2  Programación / Java / Experimento de "truco" simple para Counter-strike en Java en: 1 Diciembre 2019, 22:04 pm
Buenas, estoy escribiendo un "truco" para CSGO muy simple en Java, es para fines educativos exclusivamente, por cacharrear, no tengo intención de utilizarlo para ganar.

Básicamente lo que quiero es que cuando el enemigo se ponga en la mira (que siempre está justo en el centro de la pantalla) se produzca un disparo, para ello necesito que el programa haga una "captura" de una pequeña región en el centro de la pantalla y lo compare con otras capturas que hace constantemente para ver si se ha producido o no un cambio.

Además, utilizo una biblioteca externa para lanzar el evento (arrancar el bot para que se ponga a comparar), la comparación la hago pixel a pixel con una función que encontré en internet.

El problema es que creo que no se está centrando correctamente, ya que no me detecta el cambio en el centro de la pantalla pero si en otras areas.

Les dejo el código:

Código
  1.  
  2. import java.awt.AWTException;
  3. import java.awt.Dimension;
  4. import java.awt.Rectangle;
  5. import java.awt.Robot;
  6. import java.awt.Toolkit;
  7. import java.awt.image.BufferedImage;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10.  
  11. import org.jnativehook.GlobalScreen;
  12. import org.jnativehook.NativeHookException;
  13. import org.jnativehook.keyboard.NativeKeyEvent;
  14. import org.jnativehook.keyboard.NativeKeyListener;
  15.  
  16. public class AutoBot  implements NativeKeyListener {
  17.  
  18. public static void main(String[] args) {
  19.  
  20.  
  21. // Get the logger for "org.jnativehook" and set the level to off.
  22. Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
  23. logger.setLevel(Level.OFF);
  24.  
  25. try {
  26. GlobalScreen.registerNativeHook();
  27. } catch (NativeHookException ex) {
  28. System.err.println("Error Nativehook");
  29. System.err.println(ex.getMessage());
  30.  
  31. System.exit(1);
  32. }
  33.  
  34.  
  35.  
  36. GlobalScreen.addNativeKeyListener(new AutoBot());
  37. System.out.println("Usa / para lanzar autobot");
  38.  
  39. }
  40.  
  41. public static boolean bufferedImagesEqual(BufferedImage img1, BufferedImage img2) {
  42.  
  43. int margen=0;
  44.  
  45.    if (img1.getWidth() == img2.getWidth() && img1.getHeight() == img2.getHeight()) {
  46.        for (int x = 0; x < img1.getWidth(); x++) {
  47.            for (int y = 0; y < img1.getHeight(); y++) {
  48.                if (img1.getRGB(x, y) != img2.getRGB(x, y))
  49.                    return false;
  50.            }
  51.        }
  52.    } else {
  53.        return false;
  54.    }
  55.    return true;
  56. }
  57.  
  58. public static void autoBot() throws AWTException {
  59.  
  60. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  61. Robot robot = new Robot();
  62.  
  63. double altura = screenSize.getHeight()/2;
  64. double ancho = screenSize.getWidth()/2;
  65.  
  66. Rectangle area = new Rectangle();
  67. area.setBounds((int)altura-20, (int)ancho-20, 20, 20);
  68. BufferedImage bufferedImage = robot.createScreenCapture(area);
  69. boolean noDisparar= false;
  70.  
  71. while(!noDisparar) {
  72.  
  73. Rectangle area2 = new Rectangle();
  74. area2.setBounds((int)altura-20, (int)ancho-20, 20, 20);
  75. BufferedImage bufferedImage2 = robot.createScreenCapture(area2);
  76.  
  77. if(!bufferedImagesEqual(bufferedImage, bufferedImage2)) {
  78. // robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
  79. // robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
  80. System.out.println("ha cambiado");
  81. noDisparar = true;
  82. }
  83. }
  84. }
  85.  
  86. @Override
  87. public void nativeKeyPressed(NativeKeyEvent e) {
  88.  
  89. }
  90.  
  91.  
  92. @Override
  93. public void nativeKeyReleased(NativeKeyEvent e) {
  94.  
  95. String tecla = NativeKeyEvent.getKeyText(e.getKeyCode());
  96.  
  97. if (tecla.equals("Barra")) {
  98. System.out.println("dale");
  99. try {
  100. autoBot();
  101. } catch (AWTException e1) {
  102. // TODO Auto-generated catch block
  103. e1.printStackTrace();
  104. }
  105. }
  106. }
  107.  
  108. @Override
  109. public void nativeKeyTyped(NativeKeyEvent e) {
  110.  
  111. }
  112. }
  113.  

Gracias, un saludo.
3  Seguridad Informática / Seguridad / ¿Puede mi ISP conocer mis busquedas en google usando HTTPS? en: 1 Agosto 2019, 17:00 pm
Buenas, he escuchado en muchos sitios que los ISPs pueden conocer los datos de navegación de los usuarios (búsquedas en google) pero de ser así, ¿Cómo pueden hacerlo si va sobre https?

Gracias.
4  Programación / Java / Objeto se sobrescribe en otro. en: 23 Febrero 2019, 12:55 pm
Buenas, llevo unos días intentando un pequeño proyecto en Java para prácticar y tener más soltura, es básicamente un juego desde la linea de comandos, las clases son las siguientes:

*) Ataque: Aquí sólo se definen las propiedades de distintos ataques.

*) Pokemon: Cada uno va a tener cuatro ataques, por lo que cada objeto pokemon debe tener un Array de ataques (con limite 4)

*) Ficheros: Las propiedades de cada pokemon y sus ataques correspondientes se guardan en un fichero de texto plano con la sintaxis "clave=valor" por lo que uso esta clase para parsear el fichero, es un método estático, una vez parseadas las propiedades creo los cuatro ataques, "relleno" el array de ataques, creo un pokemon y devuelve el objeto pokemon en cuestión.

*) Principal: El main del juego, desde aquí se llama al método estático de la clase Ficheros devolviendo un objeto pokemon.

El problema que tengo es el siguiente: En el main del juego debo de crear dos objetos pokemon llamando al método estático de la clase Ficheros, pero cuando lo hago, el array "ataques[4]" del primer pokemon es sobrescrito por el del segundo pokemon, depurando he podido observar que en el método estático de la clase ficheros los objetos se generan correctamente, en cambio cuando recupero el objeto en el main del juego es cuando se sobrescribe dicho array.

Lo extraño además, es que si hago esto en el main:

Código:
System.out.println(pokemon1.getAtaques()[1].getNombre());
System.out.println(pokemon2.getAtaques()[1].getNombre());

Funciona correctamente, pero si lo guardo en un objeto "Pokemon" y luego imprimo sus ataques, se sobrescribe, llevo dias con esto y me estoy quebrando la cabeza sin poder sacarlo.

El código está en este repo de github: https://github.com/sonozaki/pokejava

Gracias.
5  Programación / Programación C/C++ / [Aportación] Poketty, batallas pokemon en tu terminal. en: 6 Septiembre 2015, 13:45 pm
Hola a tod@s, hoy en vez de preguntaros una duda, voy a hacer una aportación, hace tiempo me ayudasteis a resolver unas cuantas dudas sobre un juego que estaba haciendo, bueno pues ya voy por la versión 1.2, se trata de un simulador de batallas pokemon, pero en vez de ser en modo gráfico, es en modo terminal, por ende, en modo texto (no esperéis una experiencia tipo pokemon por que no tiene nada que ver).



Poketty usa archivos .pkm (extensión que me he inventado) para crear pokemons que se cargarán en el juego al arrancar, en esos archivos se configura los ataques, la fuerza de los mismos, las veces que los puedes usar, número de pociones, nombre del pokemon etc... los .pkm son simples ficheros de configuración, por lo que crear .pkm es muy muy sencillo, la estructura es:

Código:
#nombre del pokemon
nombre=
#vida del pokemon
pv=
#ataques del pokemon
ataque1=
ataque2=
ataque3=
ataque4=
#puntos de daño mínimo del pokemon, es decir, la fuerza mínima de los ataques, corresponden con los ataques anteriores en orden
pd1_min=
pd2_min=
pd3_min=
pd4_min=
#puntos de daño máximo del pokemon, es decir, la fuerza máxima de los ataques, corresponden con los ataques anteriores en orden
pd1_max=
pd2_max=
pd3_max=
pd4_max=
#puntos de poder del pokemon, es decir, las veces que puedes usar un ataque en la partida, corresponden
#a los ataques anteriores y a los pd anteriores
pp1=
pp2=
pp3=
pp4=
#numero de pociones que tiene el pokemon
pociones=

Se rellenan esos valores, se guarda en un .pkm en el mismo directorio que el ejecutable y se tipea el nombre del .pkm cuando se te pida, evidentemente, son necesarios dos para cada batalla.

A partir de la 1.1 tiene modo contra CPU, al principio era solo contra otro amigo, por turnos.

En la 1.2 se añades puntos de daño mínimos para cada ataque, antiguamente era siempre 0, por lo que cada ataque no tenía un mínimo de daño más que 0.

En vez de escribir el código aquí en geshi, pongo el enlace para descargar el .tar ya que el código es demasiado extenso para leerlo via web:

http://hispagnu.no-ip.org/poketty/descargas.html

Para compilarlo simplemente hacer un:

Código:
gcc poketty.c -o poketty

PD: Solo lo he probado en linux, en otras plataformas no se si funcionaría, pero no creo que adaptarlo sea muy dificil, el caso es que como es en modo consola, le veo más sentido para linux que están más acostumbrados.

Decidme si os gusta y si os parece ya un proyecto relativamente importante en C.
6  Programación / Programación C/C++ / ¿ Tan dificil es hacer un generador de diccionario ? en: 5 Septiembre 2015, 14:33 pm
Hola a tod@s, esta mañana he intentado crear en C un generador de diccionario, en plan que tu le dices de 5 caracteres y en teoría debería de ir desde "aaaaa" hasta "zzzzz" pero me ha sido un infierno, he probado de todo, he concatenado 3 fors que fueran desplazando la posicion he hecho de todo y no lo he conseguido, no quiero que me deis el código para ver como se hace (no me gusta que me den el trabajo hecho, y tampoco estaría bien pediros eso), solo quiero saber si realmente, es tan dificil o si realmente soy malo programando por que es que me ha frustado muchísimo.

Hice algo así en batch cuando tenía 15 años pero eran un montón de for anidados y digamos que el método no era muy "elegante" pero funcionar funcionaba, el caso es que ahora que "en teoría" se C me habría gustado conseguirlo, pero es que me he tirado horas delante del PC y solo he conseguido pillarme un cabreo.
7  Programación / Programación C/C++ / Sobre mis conocimientos de C en: 3 Septiembre 2015, 12:29 pm
Hola a tod@s, como ya sabreis algunos, mi meta es saber varios lenguajes de programación, empecé con C, primero por que mucha gente dice que es la base y por que en general el lenguaje me gusta, es quisquilloso pero a la vez sencillo en cuanto a estructura.

El caso es que ya tengo algunos conocimientos interesantes en C, se lo básico sobre sockets, se también lo básico sobre hilos, crear arrays/matrices dinámicas con malloc, leer datos de un archivo con fgets, leer datos de teclado tanto con scanf como con fgets, la función rand(), memset(), malloc(), sizeof() los bucles que realmente son los mismos en todos los lenguajes, while, for, switch....manejar punteros, casting, estructuras, uniones, enumeraciones etc...

¿ Creeis que ya estoy más o menos preparado para el siguiente lenguaje ? es decir, que si ya podría decir que sé lo más importante de C para manejarme, ya se que esto se consigue sobre todo con la práctica, por lo que he creado también un pequeño proyecto que simula batallas pokemon en terminal, ya voy por la versión 1.1 y el programa, aunque es sencillo, es bastante grande, además uso una librería que hice para leer archivos de configuración.

Saludos.

PD: Esta pregunta va dirigida especialmente a ivancea96 ya que el ha respondido todas mis preguntas y ha podido ver mi avance.
8  Programación / Programación C/C++ / Pequeña duda sobre GCC en: 2 Septiembre 2015, 17:07 pm
Hola a tod@s, resulta que algunas veces, para que al compilar se reconozcan ciertas librerías necesito hacer un -l(libreria) si no no me la reconoce, por ejemplo, al compilar algo que usa math.h sería:

gcc pruebas.c -o pruebas -lmath

O si uso threads:

gcc pruebas.c -o pruebas -lpthread

¿ Por que tengo que linkearla si ya la defino con include ?.

Saludos.
9  Programación / Programación C/C++ / ¿ Me pueden explicar este código ? (Sockets) en: 2 Septiembre 2015, 12:11 pm
Hola a tod@s, ahora me ha dado por intentar aprender sockets en C, y en si mismo no es muy complicado pero hay unas cuantas lineas que me dan hasta miedo jeje, pongo el código que estoy leyendo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <strings.h>
  5. #include <unistd.h>
  6. #include <pthread.h>
  7. #include <sys/socket.h>
  8. #include <netinet/in.h>
  9. #include <arpa/inet.h>
  10.  
  11. #define PORT 1024
  12. #define BACKLOG 2
  13.  
  14. void* do_some_thing(void*);
  15.  
  16. int main()
  17. {
  18.   int fd;
  19.   struct sockaddr_in server;
  20.  
  21.   pthread_t thread1;
  22.  
  23.   /* Limpiamos la pantalla */
  24.   system("clear");
  25.  
  26.   /* Creamos el socket */
  27.   if ((fd=socket(AF_INET, SOCK_STREAM, 0)) == -1)
  28.   {
  29.      printf("\t*error en la creacion del socket\n");
  30.      return -1;
  31.   }
  32.   server.sin_family = AF_INET;
  33.   server.sin_port = htons(PORT);
  34.   server.sin_addr.s_addr = INADDR_ANY;
  35.   bzero(&(server.sin_zero), 8);
  36.  
  37.   if(bind(fd, (struct sockaddr*) &server, sizeof(struct sockaddr)) == -1)
  38.   {
  39.      printf("\t*error en el BIND\n");
  40.           return -1;
  41.   }
  42.   /* Ponemos el socket a la escucha */
  43.   if(listen(fd, BACKLOG) == -1)
  44.   {
  45.      printf("\t*error en el LISTEN\n");
  46.           return -1;
  47.   }
  48.   if(pthread_create( &thread1, NULL, do_some_thing, &fd) != 0)
  49.   {
  50.      printf("\t*error en pthread_create\n");
  51.      return -1;
  52.   }
  53.   if(pthread_join( thread1, NULL) != 0)
  54.   {
  55.      printf("\t*error en pthread_join\n");
  56.      return -1;
  57.   }
  58.   printf("***SERVER DONE***\n");
  59.   return 0;
  60. }
  61.  
  62. void* do_some_thing(void* fd)
  63. {
  64.   int fd2;
  65.   struct sockaddr_in client;
  66.   socklen_t sin_size;
  67.   char Buffer[100];
  68.  
  69.   sin_size = sizeof(struct sockaddr_in);
  70.  
  71.   fd2 = accept(*((int*)fd), (struct sockaddr*)&client, &sin_size);
  72.   printf("***SERVER START***\n");
  73.   while (sin_size != 0)
  74.   {
  75.      sin_size= recv(fd2, Buffer, 100,0);
  76.      if (sin_size > 0)
  77.      {
  78.         Buffer[sin_size-1]='\0';
  79.         printf("Cadena Recibida: %s\n", Buffer);
  80.  
  81.         if(!strcmp(Buffer, "salir")) sin_size= 0;
  82.      }
  83.   }
  84.   if(close(fd2) != 0)
  85.   {
  86.      printf("\t*error en close thread\n");
  87.      return (void*)-1;
  88.   }
  89.   fd2 = 0;
  90.   printf("GOOD BYE\n");
  91.   return NULL;
  92. }

Con lo que no me aclaro es con las lineas 37 y 71, se perfectamente lo que hacen esas funciones, con lo que me hago un lio es con tanto puntero usándose al mismo tiempo, que ya no se ni cual es el "resultado" de tanto * y & y tanto paréntesis, si alguien me lo explicara detalladamente se lo agradecería un montón.

Y ya de paso, ¿ Hay alguna manera más sencilla de usar sockets en C? (para linux).

Gracias.
10  Programación / Programación C/C++ / [Debate] C/C++ vs Python en: 29 Agosto 2015, 16:54 pm
Hola a tod@s, me gustaría hacer un debate sobre que opinan de Python y si os gusta menos o más que C/C++.

Yo por algún motivo le he tomado "mania" a Python, tiene una sintaxys muy simple y es muy rápido, pero por algún motivo no me termino de "aclarar" con él, en cambio C que en teoría es más dificil me resulta bastante más sencillo.

¿ Que opinan ustedes ?.

Saludos.
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines