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 - coke951

#1
Que tal comunidad, he creado un pequeño proyecto utilizando JavaFX y Websockets, anteriormente Gus Garsaky había subido un grandioso aporte similar, lamentablemente ya no esta online :( .
Si bien no estoy a su altura, hice algo muy parecido, pero en ves de utilizar HTML5 y JS como cliente, creé mi propia consola con JavaFX.
Desde ya aviso que mi gusto para el diseño es bastante malo :D

Acá están algunas imágenes del cliente:



Comandos del cliente:
Código: php
IMPORTANTE: Solo es posible ingresar un comando a la vez y estos van seguidos de una diagonal. Ej: \conn Jorge
[Comando] - [Descripción]
/conn <nombre usuario> ó /connect <nombre usuario> - Sirve para conectarse al websocket. Es necesario especificar el nombre de usuario.
/online - Ver todos los usuarios conectados en el chat.
/dis ó /disconnect - Sirve para desconectarse del websocket.
/clear - Limpia la terminal.
/pm <nombre usuario> - Envia un mensaje privado a un usuario en especifico.
/help - Ver lista de todos los comandos.
/exit - Salir del programa.


Acá esta el código
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Lean un poco el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta de github, ahí cuento algunas consideraciones que deben de tener para arrancar el proyecto.

Denme sus opiniones, mejoras, consejos, etc...
Saludos!

#2
Que tal comunidad, me gustaría saber cuales son las herramientas que ustedes usan para el reconocimiento de sitios web, encontrar subdominios, paginas php, asp, etc para posteriormente intentar realizar SQLi, etc, etc...

La única herramienta que he utilizado hasta ahora es ZAP de OWASP, tiene una herramienta de spider para buscar las paginas y scan que realiza un escaneo de vulnerabilidades, es bastante interesante y me gustaría saber si existen herramientas alternativas que sean mejores o cuales son las que ustedes utilizan?

Saludos.
#3
Que tal, actualmente estoy aprendiendo un poco sobre la arquitectura rest api, lo hago en java con Jax-rs y mi pregunta es, como puedo mantener seguro el acceso a este servicio?

Se que esto se puede hacer utilizando métodos que autentican a usuarios, pero esto supondría que los usuarios tendrían que registrarse de alguna forma para que el rest api se entere a quien dejar entrar y a quien no, realmente el api que hago viene siendo "publico" el único requisito para tener acceso al recurso es que lo hagas desde mi aplicación de escritorio o desde mi aplicación mobile, etc. ¿como puedo validar que el origen de la petición sea desde mi app de forma segura?

No tengo mucha experiencia utilizando esta tecnologia, si ustedes tienen este conocimiento, les agradecería mucho una breve explicación y algún recurso que me apoye con mi duda.

Gracias por leerme y saludos.
#4
Primero que nada, saludos y espero que estén muy bien  :)

Me gustaría saber su opinión respecto a esta aplicación, que igual y podría ser la primera aplicación que hago que (pienso yo) podría resultar algo útil.
Consiste en un gestor de contraseñas para archivos comprimidos (zip y rar), se que existen ya una gran cantidad de aplicaciones parecidas a estas, pero esta aplicación, seria un tanto mas "completa".

Esta idea comenzó cuando estaba realizando respaldos de mi equipo para posteriormente formatearlo, y el problema surgió cuando me comencé a topar con archivos zip y rar con contraseña, tenían nombres raro y había algunos de mas de 1 gb, quizás un tesoro contendrían pensé. Y este problema al menos me pasaba a mi cada ves que iba a formatear un equipo, y es tonto por que dicha contraseña de esos archivos es la misma contraseña que te proporcionan las personas que suben dicho archivo a internet, solo intentando hacer mi vida mas difícil.

Entonces, por que no mejor crear un gestor contraseñas?

Además de darte la posibilidad de guardar las rutas de los archivos comprimidos y su respectiva contraseña (las cuales obviamente tu iras agregando al programa), también tendrá un buscador de archivos comprimidos y otros tipos de archivo utilizando distintos "filtros".

Como por ejemplo... Bonita aplicación, búscame todos los archivos de x extensión, en tal ruta, de tamaño inferior a x GB y superior a b GB y tenga una fecha de creación en el rango de x a b

(El buscador ya lo tengo casi terminado  :D )


Aparte de eso y quizás la función mas importante seria poder compartir la contraseña.. Para esto debo de aclarar, los archivos comprimidos que tu introduzcas al gestor de contraseñas, de preferencia que NO sean archivos de tu propiedad cuyo contenido sea personal. Lo mas común seria solo agregar los archivos rar o zip que comúnmente descargas de internet que tiene contraseña.

De que forma se compartiría la contraseña?
Tengo pensado montar en un hosting con una base de datos y compartir las contraseñas de tus archivos (solo los que tu hayas decidido compartir) insertándolo en una base de datos, tanto la contraseña del archivo comprimido como el hash de dicho archivo, de esta forma, si otra persona se encuentra ese mismo archivo y desea averiguar cual es la contraseña y tu registraste en tu gestor de contraseñas dicho archivo, solo es cuestión que la otra persona haga click en un botón, el programa hace una petición al servidor y si hace match, tu le "habrás salvado la vida" a la otra persona. (Tiene la misma ideología que virustotal )

Ahora, esto no acaba aquí... Es común que algunas paginas de descargas compartan la contraseña con la que cifran los archivos comprimidos, por ejemplo, intercambiosvirtuales utiliza la misma contraseña para todos sus archivos y no ha de ser la única pagina, o esto también pasa con los uploaders, hay personas que suben una gran cantidad de archivos con la misma contraseña, entonces tengo pensado dar la opción de realizar fuerza bruta al archivo comprimido con las contraseñas de los archivos que mas se repiten en la base de datos y ya si no se encuentra la contraseña, pues hazte bolita y llora.

El programa sera capaz de exportar la lista del gestor de contraseñas para posteriormente importarla de nuevo al programa e inclusive lanzar un reporte en pdf con x información de los archivos (aunque no veo muy viable esta función).

Últimamente he estado pensando en una función para realizar "escaneo automatizados" de x cantidad de archivos utilizando virustotal o alguna pagina similar para ver si los archivos contienen malware, pero aun no es seguro esta función.

Y pues bueno, creo que les he contado mi idea principal del programa, por favor, necesito opiniones de lo bueno o lo malo de mi idea o si definitivamente lo que estoy haciendo no seria nada útil para mejor cambiar de proyecto.

Saludos y muchas gracias por leerme.
#5
Que tal foro, actualmente estoy haciendo una aplicación gestor de contraseñas en la que muestre todos los archivos rar con password y bueno, aun no logro encontrar la forma para lograr esto, si bien en java existe una libreria en java puro para manejar archivos rar "No tienes permitido ver los links. Registrarse o Entrar a mi cuenta" tengo entendido que esté no soporta archivos rar con password.

Encontré una librería de python el cual puede hacer eso: "No tienes permitido ver los links. Registrarse o Entrar a mi cuenta"
Con archivos winrar normales va de lujo, pero con RAR5 no funciona...

No quiero descomprimir el archivo, solo quiero verificar si tiene password y en caso de que lo tenga, verificar que el password el cual lo tengo almacenado en un archivo sirve para poder tener acceso.

Creo que también se puede utilizar el mismo programa winrar utilizandolo desde terminal para que el usuario ni se de cuenta de lo que esta pasando, pero no encontré los comandos necesarios para esto.

¿Alguna idea de como llevar a cabo esto?

Saludos y de antemano, gracias!
#6
Estaba haciendo un programa de chat y estaba pensando, existira alguna forma de crear un chat multicliente sin necesidad de utilizar hilos?
#7
Que tal, estaba mirando este tutorial: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Pero al ejecutar MITMf me sale un error:


Lo he dejado así un rato, y me he dado cuenta de que cada cierto tiempo se pierde la conexión tanto de la victima como el del atacante al modem, lo primero que pensé fue que el modem de alguna forma esta protegiendo la red al detectar que intenta hacerse spoofing o no se sinceramente...

Espero que me puedan ayudar... Saludos!
#8
Que tal, he estado aprendiendo un poco lo fundamental en POO con python y me he quedado un poco patidifuso con las variables estáticas y con la clase principal, espero que alguien se tome la molestia de ayudar a este pobre novato.

Bueno, mi primer lenguaje fue Java, lo tengo aprendido pues, algo bien, asi que intentare primero explicar lo que quiero hacer en python, pero con java o algo asi, para que me entiendan mejor.

En python he visto que llaman variables estáticas de clase (o una cosa asi) a las variables que yo conozco como variables de clase o bueno, mas específicamente a como yo las conozco se le llaman variables de instancia, y si quiero que la variable sea estática (que en todos los objetos instanciados sea la misma variable), seria algo así por ejemplo:

Código: java

class Hola{
static String hola;
}


pero veo que en Python seria algo asi

Código: python

class Hola():
hola = None


pero al instanciar 2 objetos, si a uno le modifico el valor de hola, en el otro objeto instanciado me sigue mostrando None, entonces ¿realmente es una variable estatica? o lo llaman asi pero no por que haga lo mismo que hace en java?



otra pregunta, al parecer se utiliza self como lo que seria en Java como this... y cuando creamos un método en la lista de parametros hay que incluir self si utilizaremos alguna variable de instancia a la cual hacer referencia o siempre hay que utilizar self?

y por ultimo... ¿que rayos pasa con el método main? Cual seria la instuccion que hay que darle a python lo equivalente que es en Java public static void main(String[]args)?

Espero que me puedan ayudar... Gracias de antemano.
Saludos y feliz año nuevo!
#9
Que tal, estoy desarrollando una aplicacion web y utilizo una base de datos, para no poner la información para acceder a la base de datos de forma hardcode hice un archivo .properties.
El proyecto lo estoy haciendo en netbeans con glassfish y no encuentro la forma de acceder a ese archivo.

El principal problema es que aun no se en que lugar poner ese archivo .properties sin que los clientes puedan llegar a tener acceso a el y otro problema es como acceder a el desde mi clase Java.

Intento utilizar el patrón de diseño MVC y DAO.
Esta login.jsp al introducir los datos los manda a LoginServlet (verifica los datos) y de ahí llama a UsuarioDAO e intenta abrir la conexión a la base de datos utilizando otra clase llamada No tienes permitido ver los links. Registrarse o Entrar a mi cuenta es un Java Class  (aquí es de donde intento cargar el archivo .properties).
Pero como dije, aun no se donde guardar en el proyecto ese archivo .properties y como puedo acceder al path.

Espero que me puedan ayudar, de antemano gracias.
#10
Java / Juego del Gato para aprendices.
Septiembre 08, 2015, 02:59:24 PM
Para los que están aprendiendo a programar, quizás les resulte útil este pequeño programa que hice en java solo por hacer.

Realmente lo hice bastante fácil, no me metí en detalle y quizás utilice métodos bastante tontos, igual soy nuevo programando.

Solo es el juego del Gato, tiene 2 opciones, jugar contra la computadora o jugar con otra persona. Al jugar con la computadora solo introduce una posición aleatoria. Espero que les sea de utilidad.

git: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Imagenes:



Codigo:
Código: java
import java.util.Scanner;

class Gato{
public static void main(String []args){
JuegoGame game = new JuegoGame();
Scanner entrada = new Scanner(System.in);
int coordenada[] = new int[2];
boolean alternar = true;
boolean salir = false;
boolean ia = false;
boolean coorVer = false;

System.out.println("Bienvenido al juego del gato.\nEste juego fue creado por BlaN");
do{
System.out.print("\n\nPuedes jugar contra otra persona o contra la computadora.\nContra quien quieres jugar?\n(1 = contra otra persona | 2 = contra la computadora): ");
if(entrada.nextInt() == 2){
ia = true;
}

System.out.println("\nA JUGAR!");

System.out.println("\nPrimero jugara el jugador X\n");

do{
System.out.println("\n"+game.mostrarTablero()+"\n");
do{
coorVer = false;
if(alternar){
System.out.print("[*] Jugador X, Escoge fila: ");
coordenada[0] = entrada.nextInt();
System.out.print("[*] Jugador X, Escoge columna: ");
coordenada[1] = entrada.nextInt();
}else if(!ia && !alternar){
System.out.print("[*] Jugador O, Escoge fila: ");
coordenada[0] = entrada.nextInt();
System.out.print("[*] Jugador O, Escoge columna: ");
coordenada[1] = entrada.nextInt();
}else{
coordenada = game.jugarIA();
System.out.println("La computadora escogio:\nFila: "+coordenada[0]+"\nColumna: "+coordenada[1]);
}
if(coordenada[0] < 1 || coordenada[0] > 3 || coordenada[1] < 1 || coordenada[1] > 3){
coorVer = true;
System.out.println("\nSolo puedes introducir numeros del 1 al 3\n");
}else if(!coorVer){
if(game.comprobarLugarLimpio(coordenada)){
System.out.println("\nEse lugar se encuentra ocupado ya.\n");
coorVer = true;
}
}
}while(coorVer);
game.setCoordenada(coordenada, alternar);
if(game.comprobarWin(alternar) || game.comprobarEmpate()){
System.out.println("\n"+game.mostrarTablero());
if(game.comprobarEmpate()){
System.out.println("\n[->*] NO HAY GANADOR [*<-]");
}else if(alternar){
System.out.println("\n[->*] EL GANADOR ES EL JUGADOR X [*<-]");
}else if(!alternar){
System.out.println("\n[->*] EL GANADOR ES EL JUGADOR O [*<-]");
}

System.out.println("\nVolver al menu?");
entrada.nextLine();
if(entrada.nextLine().equalsIgnoreCase("si")){
game = null;
game = new JuegoGame();
alternar = true;
salir = false;
break;
}else{
salir = true;
break;
}
}else{
if(alternar)
alternar = false;
else
alternar = true;
}

}while(true);
}while(!salir);

}
}


Código: java
class JuegoGame{

char [][]gato;

public JuegoGame(){
gato = new char[3][3];
//fila 1
gato[0][0] = ' '; gato[0][1] = ' '; gato[0][2] = ' ';
//fila 2
gato[1][0] = ' '; gato[1][1] = ' '; gato[1][2] = ' ';
//fila 3
gato[2][0] = ' '; gato[2][1] = ' '; gato[2][2] = ' ';
}

public String mostrarTablero(){
String tab = "";

for(int x = 0 ; x < gato.length ; x++){
tab += "\t";
for(int i = 0 ; i < gato.length ; i++){
tab += String.valueOf(gato[x][i]);
if( i < gato.length -1){
tab += " | ";
}
}
if(x < gato.length -1){
tab +="\n\t---------\n";
}
}
return tab;
}

public boolean comprobarLugarLimpio(int[] cor){
if(gato[cor[0]-1][cor[1]-1] == 'X' || gato[cor[0]-1][cor[1]-1] == 'O'){
return true;
}else{
return false;
}
}

public void setCoordenada(int [] cor, boolean alternar){
int x = cor[0],y = cor[1];
if(alternar){
gato[x-1][y-1] = 'X';
}else{
gato[x-1][y-1] = 'O';
}
}

public int[] jugarIA(){
int cor[] = new int[2];
do{
cor[1] = (int)((Math.random()*3)+1);
cor[0] = (int)((Math.random()*3)+1);
}while(comprobarLugarLimpio(cor));
return cor;
}

public boolean comprobarEmpate(){
boolean comp = false;
int cont = 0;

for(int x = 0 ; x < gato.length ; x++){
for(int y = 0; y < gato.length ; y++){
if(gato[x][y] == 'X' || gato[x][y] == 'O'){
cont++;
}
}
}

if(cont < 9){
comp = false;
}else{
comp = true;
}
return comp;
}

public boolean comprobarWin(boolean alternar){
boolean win[] = new boolean[3];
win[0] = false;
win[1]=false;
win[2]= false;
boolean ganador = false;
boolean salir = false;
int ganadas = 0;
int contador = 0;
int x = 0;
int y = 0;
do{
if(alternar){
if('X' == gato[x][y]){
win[ganadas] = true;
ganadas++;
if(win[0] && win[1] && win[2]){
ganador = true;
}
}
}else{
if('O' == gato[x][y]){
win[ganadas] = true;
ganadas++;
if(win[0] && win[1] && win[2]){
ganador = true;
}
}
}
contador++;
if(contador <= 9){
y++;
}else if(contador > 9 && contador < 18){
x++;
}

else if(contador > 18 && contador < 21){
y++;
x++;
}else if(contador >= 21){
if(contador == 22){
x--;
y++;
}else if(contador == 23){
x--;
y++;
}
}
if(contador == 0){
win[0] = false;
win[1]=false;
win[2]= false;
ganadas = 0;
}
if(contador == 3){
win[0] = false;
win[1] = false;
win[2] = false;
ganadas = 0;
x++;
y=0;
}else if(contador == 6){
win[0] = false;
win[1] = false;
win[2] = false;
ganadas = 0;
x++;
y=0;
}else if(contador == 9){
win[0] = false;
win[1] = false;
win[2] = false;
ganadas = 0;
x=0;
y=0;
}else if(contador == 12){
win[0] = false;
win[1] = false;
win[2] = false;
ganadas = 0;
x = 0;
y++;
}else if(contador == 15){
win[0] = false;
win[1] = false;
win[2] = false;
ganadas = 0;
x = 0;
y++;
}
if(contador == 18){
win[0] = false;
win[1] = false;
win[2] = false;
ganadas = 0;
x=0;
y=0;
}else if(contador == 21){
win[0] = false;
win[1] = false;
win[2] = false;
ganadas = 0;
x=2;
y=0;
}
else if(contador ==24){
salir = true;
}
}while(!salir);

return ganador;
}
}



Cualquier duda, consejo o comentario constructivo es bienvenido.

Saludos
#11
Que tal de nuevo, creo que ya empiezo a ser frecuente por aqui... haha.
Bueno, en mi loca mente se me ocurrió hacer algo así:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Tengo un punto de venta y estoy agregando una forma para agregar un producto de forma rapida utilizando una ventana pequeña, el problema es que al momento de que no llene algún campo correctamente no tengo espacio para avisarle cual es la razón por la cual no se puede agregar el producto al sistema, obviamente podía hacer mas grande la ventana para ponerle un mensajito con eso o crear un dialogo, pero eso seria demasiado facil, asi que intente hacer algo asi como lo de arriba, y casi... CASI lo logro...

He mirado por Internet pero no encontré un tutorial que me ayudara, bueno, mi ingles es bastante malo y no terminaba por entender del todo, así que intentare explicar un poco lo que hice.
Aviso desde ya, soy demasiado malo programando, así que si lo ven y les quiere dar un tic en el ojo, porfavor, háganse volita y rueden.
Todo lo he hecho con fxml.

Es en mi clase principal en donde creo tanto la ventana de dialogo para crear un producto rapido como el stackpane que utilice para "obscurecer" el dialogo y aparecer la notificacion enfrente
clase principal: PuntoVentaApp
Código: java
	
//Crear ventana de dialogo para crear un producto rapido
public void crearProductoDialogo(){
try{
FXMLLoader loader = new FXMLLoader();
loader.setLocation(PuntoVentaApp.class.getResource("vista/CrearProducto.fxml"));
anchPane = (AnchorPane) loader.load();

Stage dialogStage = new Stage();
dialogStage.setTitle("Crear producto rapido");
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.initOwner(getEscenaPrincipal());

Scene scene = new Scene(anchPane);
dialogStage.setScene(scene);
dialogStage.setResizable(true);

CrearProductoControlador controlador = loader.getController();
controlador.setDialogStage(dialogStage);
controlador.setPuntoVenta(this);
dialogStage.showAndWait();
}catch(Exception e){
e.printStackTrace();
}
}

public AnchorPane getAnchorPane(){
return anchPane;
}
        //Crear la ventana de la notificacion
public StackPane alertaError(String error){
alertaFondo = null;
try{
FXMLLoader loader = new FXMLLoader();
loader.setLocation(PuntoVentaApp.class.getResource("vista/AlertaFondo.fxml"));
alertaFondo = (StackPane) loader.load();

AlertaFondoControlador controlador = loader.getController();
controlador.setPane(alertaFondo);
controlador.setPuntoVenta(this);
controlador.setError(error);
}catch(Exception e){
e.printStackTrace();
}

return alertaFondo;
}

public StackPane getAlertaError(){
return alertaFondo;
}


Algo así es la ventana del dialogo:


Utilice un stackpane en la alerta luego utilice un gridpane 1x1 para colocar el rectangulo blanco, dentro de ese gridpane coloque otro gridpane de 1x2, en el espacio de arriba coloque el label el cual mostrara el error y en el espacio de abajo coloque el boton para cerrar la notificacion o dialogo o no se como llamarle, ambos componentes (label, button) los centre, el label lo puse con valignment bottom y al button top, para que quedaran juntos.

Algo asi en el scene builder:




Ahora, cuando ocurre un problema y quiero que aparezca esa notificacion, lo llamo de esta forma:
clase: CrearProductoControlador
Código: java

                if(!error.equals("")){
puntoVenta.alertaError(error); //Le mando un string con la descripcion del error
puntoVenta.getAnchorPane().getChildren().add(puntoVenta.getAlertaError()); //agrego a la escena el stackpane de la notificacion(?)
}


Entonces si vamos a la parte del controlador de la notificacion, es algo asi:
clase: AlertaFondoControlador
Código: java


public class AlertaFondoControlador {
private StackPane pane;
private PuntoVentaApp puntoVenta;

@FXML
private Button btnCerrar;
@FXML
private Label lblError;
@FXML
private Rectangle rectangulo;

@FXML
private void initialize(){

}

@FXML
private void cerrar(){
puntoVenta.getAnchorPane().getChildren().remove(pane);
}

public void setError(String error){
lblError.setText(error);
//A veces la longitud de los mensajes pueden variar, en teoria esto me ayuda a que el rectangulo cambie su forma segun lo vaya necesitando ->
rectangulo.widthProperty().bind(Bindings.add(lblError.widthProperty(), btnCerrar.widthProperty()));
rectangulo.heightProperty().bind(Bindings.add(lblError.heightProperty(), btnCerrar.heightProperty()));
}

public void setPane(StackPane alertaFondo){
this.pane = alertaFondo;
}

public void setPuntoVenta(PuntoVentaApp puntoVenta){
this.puntoVenta = puntoVenta;
}
}


Y bueno, ya que explique un poco lo que hice, este es mi problema:


Todo funciona CASI bien, hace el pane trasparente bien, pone el mensaje del error bien, el problema esta en el rectángulo que se pone donde el quiere.

AHORA, algo misterioso que aun no comprendo, note que cuando hacia clic en OK para cerrar la notificación el rectangulo se centraba de forma correcta y luego claro se cerraba, entonces fui probando y cuando hacia clic en OK pero no dejaba de presionar el boton, el rectángulo se centraba de forma correcta, movía el mouse fuera del OK como si me hubiera arrepentido de presionar el boton, entonces todo esta bien, no se muy bien por que esto ocurre. en el peor de los casos es por que estoy utilizando windows 10.



Entonces, ¿como puedo solucionar el problema del cuadro magico?
Espero que me puedan ayudar, y lo siento si no me di a entender, por favor si ocurre esto, avísenme.

Gracias de antemano. Saludos!
#12
Que tal!, estoy aprendiendo un poco sobre los Listener, mi objetivo es que cuando una celda es modificada entonces llame un método.
La celda representa la cantidad, por lo tanto si la celda de la cantidad de un producto es modificada quiero que vuelva a hacer los cálculos para saber cuanto sera el total, pero no logro hacer eso automáticamente, he tenido que utilizar un botón para que cada vez que haya una modificación en la cantidad de productos el usuario tenga que presionar el botón y calcular el total y de esta forma es un poco mas tediosa, me gustaría hacerlo automáticamente, si hay una modificación en la celda entonces vuelva a hacer los cálculos.

Según yo, esto se puede llevar a cabo utilizando un listener, soy nuevo en JavaFx, y me resulta un poco complicado, he mirado por Internet pero no logre encontrar lo que yo quería hacer.
Espero que me puedan ayudar.

Gracias de antemano.
Saludos!
#13
Que tal, tengo un pequeño problema, no se si realmente estoy aplicando bien JAXB, lo que me gustaria hacer es guardar un objeto de tipo Producto, el cual tiene nombre, codigo, precio, cantidad etc... lo que hago es guardar todos los productos es un List, y despues intentar utilizar JAXB para guardar dicha lista de productos para cuando vuelva a iniciar el programa, cargarlos.

Esta es mi clase ProductoListWraper el cual se encarga de juntar los productos en una lista

Código: java

import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "productos")
public class ProductoListWrapper {

private List<Producto> productos;

@XmlElement(name = "producto")
public List<Producto> obtenerProductos(){
return productos;
}

public void setProductos(List<Producto> productos){
this.productos = productos;
}
}



Después tengo los métodos los cuales se encargan de guardar dicha lista en un xml:

Código: java

public void guardarInformacionProductosDesdeArchivo(File file){
try{
JAXBContext context = JAXBContext.newInstance(ProductoListWrapper.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);


ProductoListWrapper wrapper = new ProductoListWrapper();
wrapper.setProductos(productoInfo);


m.marshal(wrapper, file);


setURLPuntoVentaApp(file);
}catch(Exception e){
Dialogs.create()
.title("Error")
.masthead("No pudo ser posible guardar la infomracion en el archivo: "+file.getPath())
.showException(e);
}
}


Este método recibe un objeto de tipo File como atributo, y es que tengo otro método "setURLPuntoVentaApp" el cual sirve para guardar en un registro la ruta del archivo para que cuando vuelva a abrir el programa, cargue este xml automáticamente y "m.marshal(wrapper, file);" que me gustaría explicarlo, pero no tengo ni puta idea  :-X

El error surge cuando intento guardar el .xml

Este es el error que me sale:
Código: php

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
La anotación JAXB está colocada en un método que no es una propiedad de JAXB
this problem is related to the following location:
at @javax.xml.bind.annotation.XmlElement(name=producto, namespace=##default, type=class javax.xml.bind.annotation.XmlElement$DEFAULT, defaultValue=, required=false, nillable=false)
at puntoVenta.modelo.ProductoListWrapper

at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:445)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:277)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:124)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1123)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:147)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:462)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
at puntoVenta.PuntoVentaApp.guardarInformacionProductosDesdeArchivo(PuntoVentaApp.java:144)
at puntoVenta.vista.LayoutRaizControlador.handleGuardarEn(LayoutRaizControlador.java:69)
at puntoVenta.vista.LayoutRaizControlador.handleGuardar(LayoutRaizControlador.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1767)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1653)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405)
at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$341(ContextMenuContent.java:1358)
at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$$Lambda$343/1199140532.handle(Unknown Source)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3758)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3486)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2495)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:350)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$350(GlassViewEventHandler.java:385)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$327/1712109139.get(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:404)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:384)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:927)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101)
at com.sun.glass.ui.win.WinApplication$$Lambda$36/2117255219.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)


Tiene que ver algo sobre la anotación, pero estoy viendo en internet un ejemplo, y no logro detectar el problema..

Espero que me puedan ayudar, si necesitan que suba otro código para solucionar este problema, me avisan.

Gracias de antemano, Saludos!
#14
Que tal, soy nuevo utilizando Kali Linux y por ahi me he enterado de la herramienta MITMF para sniffear y para poder que funcione correctamente ("segun alguien de youtube") he de tener actualizado kali linux asi que me aventure en busca de como actualizar kali linux.

Los repositorios que utilizo son sacados de: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y son estos:
deb No tienes permitido ver los links. Registrarse o Entrar a mi cuenta kali/updates main contrib non-free
deb No tienes permitido ver los links. Registrarse o Entrar a mi cuenta kali-bleeding-edge main
deb No tienes permitido ver los links. Registrarse o Entrar a mi cuenta /kali main contrib non-free
deb No tienes permitido ver los links. Registrarse o Entrar a mi cuenta /wheezy main contrib non-free
deb No tienes permitido ver los links. Registrarse o Entrar a mi cuenta kali-dev main contrib non-free
deb No tienes permitido ver los links. Registrarse o Entrar a mi cuenta kali-dev main/debian-installer
deb-src No tienes permitido ver los links. Registrarse o Entrar a mi cuenta kali-dev main contrib non-free
deb No tienes permitido ver los links. Registrarse o Entrar a mi cuenta kali main contrib non-free
deb No tienes permitido ver los links. Registrarse o Entrar a mi cuenta kali main/debian-installer
deb-src No tienes permitido ver los links. Registrarse o Entrar a mi cuenta kali main contrib non-free
deb-src No tienes permitido ver los links. Registrarse o Entrar a mi cuenta kali/updates main contrib non-free

En teoría es siguiendo estos comandos

Código: php
apt-get update
apt-get upgrade
apt-get upgrade-dist


y después de 3 horas logra actualizarse por completo, reinicio kali (el cual lo tengo virtualizado con vmware) y cuando inicia, no me deja abrir la terminar y solo ejecuta aplicaciones con gui, por ejemplo, trato de ejecutar metasploit framework no lo abre, pero si ejecuto armitage si que lo abre. Es muy extraño, me voy a aplicaciones y trato de ejecutar la terminal root pero nada, ya he instalado y actualizado el sistema operativo dos veces pero sigo con este mismo problema.

No se cual es el problema realmente, si necesitan que suba un vídeo probando el sistema operativo lo subire, lo que sea por hacer esto funcionar.
Es chistoso por que la carrera en la que estudio es seguridad informática y Kali debería de ser mi mejor amigo... Ni siquiera lo puedo actualizar correctamente...

Espero que me puedan ayudar.
Gracias de antemano, Saludos!