|
641
|
Seguridad Informática / Bugs y Exploits / Re: Mejor RAT para Android (pregunta)
|
en: 6 Abril 2019, 21:54 pm
|
Buenas, Te doy la razón en eso, pero como te contaré e estado bastante rato investigando ya que tengo poco, tengo 14 años i ago 3 ESO, entre los estudios, deberes, exámenes,... Tengo poco tiempo por eso recurro a preguntas en este gran foro! Gracias por tu primera respuesta!
claro, yo deje la universidad porque me aburria exageradamente, me inicie en esto por el troyano subSeven imaginate, no sabia ni que era un Ip local  , y ha dia de hoy sigo siendo un gran novato. Aprende a programar, en un buen lenguaje dog. ahi esta la magia de todo esto.
|
|
|
642
|
Programación / Java / Re: Matrices en Java
|
en: 6 Abril 2019, 20:42 pm
|
Hola, estará bien recorrida esta matriz de String? Mi idea es evitar la lectura los espacios que esten en null, soy novata en este mundo del Java public static void mostrarInformación (String[][] p ) { int i, j; for (i = 0; i < p.length; i++) { for (j = 0; j < p[i].length && p[i][j] != null; j++) { System. out. println(p [i ][j ]+"\t"); } if (p[i][0] != null) { } } }
Solo un ajuste para recorrerla, y filtrando los nulls public class MatrisDeStrings { private static final String[][] NOM_APE = {{"Raul", "Salazar", "Maria","Gonzales", "Josefina","Petronila", "Ana",null }}; public MatrisDeStrings() { matris(NOM_APE); } public static void matris (final String[][] matris ) { for(int f=0; f<matris.length; f++) { for(int c=0; c<matris[f].length; c++) { if(Objects.nonNull(matris[f][c])) { System. out. println(matris [f ][c ]); } } } //con programacion funcional .filter(Objects::nonNull) . forEach(System. out::println ); } public static void main (String ... agrs) { new MatrisDeStrings(); } }
el metodo nonNull de la clase java.util.Objects solo compara el objeto distinto de null public static boolean nonNull (Object obj ) { return obj != null; }
|
|
|
644
|
Seguridad Informática / Bugs y Exploits / Re: Mejor RAT para Android (pregunta)
|
en: 5 Abril 2019, 14:41 pm
|
Heyy heyy ya no empiecen con el fastidio vallan a leer e investigar también dejen la flojera  , parecen de kinder  Este tipo de post soooooobran aquí  usen una máquina virtual y autoinfectense con algún RAT en ella, con el servidor configurado de forma básica, aprendan sobre abrir puertos en su routers, DNS dinámicos, diferencias entre direcciones IP locales a públicas, No ejecutes cualquier RAT que bajen por ahí, después no digan que no se les dijo 
|
|
|
646
|
Foros Generales / Dudas Generales / Re: Orientación profesional
|
en: 5 Abril 2019, 01:21 am
|
Buenas tardes, Mi nombre es Oliver y no sé muy bien si este es el lugar correcto para plantear mi duda. Pero no encontré otro más idóneo. Así que pido disculpas de antemano.
El caso es que debido a mi situación laboral se me plantea el reto de tener que adquirir conocimientos técnicos en ciberseguridad. Y estoy un poco perdido sobre cómo conseguirlo.
¿Se podría lograr de forma autodidacta o convendría apuntarme a un ciclo superior relacionado con informática? Mi base de conocimientos es básica, conozco nociones básicas de C y poco más.
Muchas gracias por su tiempo.
Enviado desde mi Redmi Note 5 mediante Tapatalk
Cisco ccna Security 2018 solo que esta en ingles, busca info relacionada. aprende lee, busca, se paciente. clave del exito https://drive.google.com/file/d/1ACId_LB8YqqKbfrpJXTS4Rw_9WGFn_hk/view?usp=sharing
|
|
|
647
|
Programación / Java / Re: Clase Lista
|
en: 5 Abril 2019, 00:50 am
|
private void mostrarMiLista(final LinkedList<Alumno> list) { // si la lista no esta vacia o tambien if(!(list.size() == 0)) aunque el Sonar(Analizador de codigo estatico) se queja if(!list.isEmpty()) { //old way for(int f=0; f<list.size(); f++) { System. out. println(list. get(f ). getNombre()); System. out. println(list. get(f ). getApellido()); System. out. println(list. get(f ). getLegajo()); } //old way 2 for(Alumno tmp : list) { System. out. println(tmp. getNombre()); System. out. println(tmp. getApellido()); System. out. println(tmp. getLegajo()); } //new way with java-8 foreach mucho más eficiente //Que Iterator, una de ellas es menos sobrecarga en la heap list.forEach(e -> { System. out. println(e. getNombre()); System. out. println(e. getApellido()); System. out. println(e. getLegajo()); }); //Con metodo por referencia list. forEach(System. out::println ); // invoca a toString() internamente //con IntStream donde e, el parametro del foreach equivale al index, por eso al hacer get(e) funciona IntStream.range(0,list.size()) .forEach(e -> { System. out. println(list. get(e ). getNombre()); System. out. println(list. get(e ). getApellido()); System. out. println(list. get(e ). getLegajo()); }); } else { System. out. println("Lista Vacia"); } }
Potencial toString() @Override final StringBuilder sb = new StringBuilder("\nAlumno"); sb.append("\nnombre='").append(nombre).append("\n"); sb.append(", apellido='").append(apellido).append("\n"); sb.append(", legajo='").append(legajo).append("\n"); sb.append("]"); return sb.toString(); }
|
|
|
650
|
Programación / Java / Re: Duda sobre combinar métodos de una clase en otra
|
en: 4 Abril 2019, 11:03 am
|
En el constructor de la clase Celular puedes añadir un parámetro tipo Calculadora, o un setter.
Vía herencia también. Cuando llegue a la casa te ayudo más estoy en la caverna del curro. Bien aquí vamos, vamos a usar Herencia con la palabra reservada extends en la clase Celular
Otra vía es por medio de interfaces
Investigar - herencia simple de clases
- Uso de super
- Modificador de acceso protected
[/list] package foro; import java.lang.Math.*; import java.util.logging.Logger; /** * Clase Calculadora */ public class Calculadora { private String sistemaOperativo ; private String versionSistemaOperativo ; public static final Logger LOGGER = Logger.getLogger(ProyectoCelular.class.getSimpleName()); public Calculadora() { super(); } this.marca = marca; this.modelo = modelo; this.sistemaOperativo = sistemaOperativo; this.versionSistemaOperativo = versionSistemaOperativo; } /** * * @param a * @param b * @return La suma entre a y b */ public float sumar(float a, float b) { return a + b; } /** * * @param a * @param b * @return La resta entre a y b */ public float restar(float a, float b) { return a - b; } /** * * @param a * @param b * @return La multiplicación entre a y b */ public double multiplicar(double a, double b) { if (a == 0 || b == 0) { return 0; } else { return a * b; } } /** * * @param a * @param b * @return La división entre a y b */ public double dividir(float a, float b) { return a / b; } /** * * @param n * @return El factorial de un numero */ public int factorial(int n) { if (n < 1) { return 1; } else { return n * factorial(n - 1); } } /** * @return the marca */ return marca; } /** * @param marca the marca to set */ public void setMarca (String marca ) { this.marca = marca; } /** * @return the modelo */ return modelo; } /** * @param modelo the modelo to set */ public void setModelo (String modelo ) { this.modelo = modelo; } /** * @return the sistemaOperativo */ public String getSistemaOperativo () { return sistemaOperativo; } /** * @param sistemaOperativo the sistemaOperativo to set */ public void setSistemaOperativo (String sistemaOperativo ) { this.sistemaOperativo = sistemaOperativo; } /** * @return the versionSistemaOperativo */ public String getVersionSistemaOperativo () { return versionSistemaOperativo; } /** * @param versionSistemaOperativo the versionSistemaOperativo to set */ public void setVersionSistemaOperativo (String versionSistemaOperativo ) { this.versionSistemaOperativo = versionSistemaOperativo; } @Override final StringBuilder sb = new StringBuilder("\nCalculadora"); sb.append("\nmarca='").append(marca).append("\n"); sb.append(", modelo='").append(modelo).append("\n"); sb.append(", sistemaOperativo='").append(sistemaOperativo).append("\n"); sb.append(", versionSistemaOperativo='").append(versionSistemaOperativo).append("\n"); return sb.toString(); } }
Cuando establecemos herencia, de una clase con un constructor definido como el tuyo, debemos invocarlo con super() y si tiene parámetros setearselos en este caso la clase celular tiene 2 atributos propios de ella, el color y precio, entonces, bastaría con dejar los setters/getters de color y precio, ya que los otros se heredan
La visibilidad de los atributos/variables de instancia, siendo protected tendrán visibilidad en el mismo paquete, para verlas desde otro paquete deben ser publicas, pero por convención en java, deberían ser en lo posible declaradas como private, accediendo a ellas via getters
package foro; /** * Clase Celular */ public class Celular extends Calculadora { // extendemos a Calculadora //private String marca; //private String modelo; // estas dos variables no hacen falta, porque se heredan tambien private double precio; /** * Nuevo constructor vacio */ public Celular() { super(); // super invoca al constructor de la clase Calculadora } /** * con este super invocamos al constructor de la clase Calculadora, seteandole los parametros * correspondientes chavalina. */ super(marca,modelo, sistemaOperativo,versionSistemaOperativo); this.color = color; this.precio = precio; } /** * @return the marca */ return marca; } /** * @param marca the marca to set */ public void setMarca (String marca ) { this.marca = marca; } /** * @return the modelo */ return modelo; } /** * @param modelo the modelo to set */ public void setModelo (String modelo ) { this.modelo = modelo; } /** * @return the color */ return color; } /** * @param color the color to set */ public void setColor (String color ) { this.color = color; } /** * @return the precio */ public double getPrecio() { return precio; } /** * @param precio the precio to set */ public void setPrecio(double precio) { this.precio = precio; } @Override final StringBuilder sb = new StringBuilder(); sb.append(super.toString()); sb.append("\ncolor='").append(color).append("\n"); sb.append(", precio=").append(precio); return sb.toString(); } }
package foro; public class ProyectoCelular { public static void main (String[] args ) { // Esto es el main todavia no lo terminé final Celular celular = new Celular(); /** * Configurando por medio de setters NO-THREAD-SAFE */ celular.setColor("Rojo"); celular.setMarca("Samsung"); celular.setModelo("I9300"); celular.setPrecio(200); celular.setSistemaOperativo("Android KitKat"); celular.setVersionSistemaOperativo("4.4.4"); /** * Todos ellos retornan un valor * que puedes mostrar con la consola o logger, logger es lo mas correcto */ celular.factorial(2); celular.dividir(2,3); celular.sumar(2,3); celular.restar(5,1); celular.multiplicar(5,5); Calculadora.LOGGER.info(celular.toString()); } }
Estamos en presencia de un constructor telescópico, muchos parámetros a veces difícil de usar, coste de mantenimiento, legibilidad etc, patrón Builder es la solución.
A simple vista pensarías, bueno me creo otro constructor y le añado parámetros, pero vienes de nuevo y añades otro y así, nunca terminara, o este mismo contructor añadirle mas parámetros.
O la típica vía de usar setters, NO-THREAD-SAFE, es decir no Inmutable(Como String, StringBuffer, la api LocalDate del paquete java.time), si usas ese bean en un Thread podrian pasar cosas raras y difíciles de resolver. tema que, podemos tratar luego.
/** * con este super invocamos al constructor de la clase Calculadora, seteandole los parámetros * correspondientes chavalina. */ super(marca,modelo, sistemaOperativo,versionSistemaOperativo); this.color = color; this.precio = precio; }
Recuerda retomar este hilo y estudiarlo bien , donde tienes otro ejemplo de herencia https://foro.elhacker.net/java/metodo_mostrar_todos_los_atributos_de_un_objeto_por_pantallaresuelto-t494141.0.htmlEn la clase Celular te puse unos bugs que debes de resolver, recuerda que hay métodos en la clase Celular que no te hacen falta, es decir, puedes quitarlos, debido a que los heredas
|
|
|
|
|
|
|