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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 139
11  Informática / Hardware / Re: ¿Por qué los enchufes de mi regulador se están derritiendo? en: 17 Febrero 2023, 10:06 am
Hola, bueno, creo que se deben aclarar algunos regionalismos de nuestro idioma...

Esto es lo que conozco como un regulador de PC:


Y los enchufes, son los huequitos donde se conectan las partes, también se les llama "tomacorrientes".

Ya durante algún tiempo, estos enchufes se han ido derritiendo. Me di cuenta porque olía a quemado...

No tengo ni idea de por qué pasa eso. Lo único que puedo añadir es que el regulador tiene la patita a tierra removida:



La patita en cuestión es la inferior.

¿Alguna idea de por qué pasa esto? De los 8 enchufes que tengo ya se han derretido 4. A este paso me voy a quedar sin regulador...



Desarmalo a ver...
12  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: Es mejor hidrogel o vidrio templado como protector de pantalla en el móvil? en: 16 Febrero 2023, 18:34 pm
jejej aunque no descarto el uso de Hidrogel facial, tengo mas arrugas que tu...  :¬¬ >:D

En el movil, va bien, es bien que se regenere en caso de ciertos golpes.
13  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: Es mejor hidrogel o vidrio templado como protector de pantalla en el móvil? en: 15 Febrero 2023, 09:49 am
Me gusta el hidrogel.
14  Programación / Java / Re: [java] Método modificar sobre datos en un fichero en: 13 Febrero 2023, 21:28 pm
Hola, viendo que no consigo respuesta voy a explicarme.
Estoy haciendo el ejercicio "Actividades de aplicación 11.21 del libro Programación de Alfonso Jiménez Marín".
Este ejercicio ya lo tengo resuelto, creo, de otras formas, lo digo porque ahora estoy haciendo otras cosas y no me acuerdo muy bien.
A ver si alguien lo tiene hecho, quizás yo me he complicado y lo estoy haciendo, como forma de estudiar, de otra manera diferente y no es la correcta.
Repito, me falta hacer el método update().
Gracias a todos.
Saludos.






Socio, tu tienes un objeto que ira al fichero, veo que eso no lo estas haciendo ahora mismo

De todas maneras coloca lo que llevas ya, estas escribiendo bien en el fichero?

Tu objeto es Cliente y lo puedes escribir con ObjectOutputStream y su metodo writeObject

- Use la jdk 17 para usar records, mejor, para inmutabilidad, la clase una vez compilada es final( para que no se extienda), sin setters y variables de instancia final.
- Use la dependencia lombok, que me permite muchas cosas, una de ellas es la anotación, @Log4j2 ( usada de pekin hasta la china y mas allá)
- Para updatear con ObjectOutputStream, se necesita leer el fichero completo, procesarlo y escribirlo nuevamente. nada eficiente, por eso rara ves se usa.

Código
  1. import java.io.Serializable;
  2.  
  3. public record Customer(int id, String nombre, String telefono) implements Serializable {}

Código
  1. package foro;
  2.  
  3. import lombok.extern.log4j.Log4j2;
  4.  
  5. import java.io.BufferedInputStream;
  6. import java.io.BufferedOutputStream;
  7. import java.io.IOException;
  8. import java.io.ObjectInputStream;
  9. import java.io.ObjectOutputStream;
  10. import java.io.OutputStream;
  11. import java.nio.file.Files;
  12. import java.nio.file.Path;
  13. import java.nio.file.Paths;
  14. import java.util.Arrays;
  15. import java.util.Comparator;
  16. import java.util.List;
  17. import java.util.concurrent.CopyOnWriteArrayList;
  18.  
  19. /**
  20.  * @autor rub'n
  21.  */
  22. @Log4j2
  23. public class ConObjectIOStream {
  24.  
  25.    private static final String RUTA_FICHERO = "./temporal.tmp";
  26.  
  27.    /**
  28.      * Para leer desde el fichero
  29.      *
  30.      * @return List<Customer>
  31.      */
  32.    private List<Customer> findAll() {
  33.        final List<Customer> listaCustomer = new CopyOnWriteArrayList<>();
  34.        final Path pathInput = Paths.get(RUTA_FICHERO);
  35.        if (pathInput.toFile().exists()) {
  36.            try (final BufferedInputStream bin = new BufferedInputStream(Files.newInputStream(pathInput));
  37.                 final ObjectInputStream ob = new ObjectInputStream(bin)) {
  38.  
  39.                while (Boolean.TRUE) {
  40.                    synchronized (ConObjectIOStream.class) { //en caso de que findAll se invoque desde un Thread()
  41.                        final Object object = ob.readObject();
  42.                        if (object instanceof Customer) {
  43.                            listaCustomer.add((Customer) object);
  44.                        }
  45.                    }
  46.                }
  47.                ob.reset();
  48.            } catch (IOException | ClassNotFoundException e) {
  49.            }
  50.        } else {
  51.            log.error("{} - El fichero no existe", pathInput.toFile());
  52.        }
  53.        //Sorted
  54.        return List.copyOf(listaCustomer)
  55.                .stream()
  56.                .distinct() //No repeat Customers
  57.                .sorted(Comparator.comparing(Customer::id))
  58.                .toList();
  59.    }
  60.  
  61.    /**
  62.      * Para escribir en el fichero
  63.      */
  64.    private void save(final Customer... customer) {
  65.        final Path pathTem = Paths.get(RUTA_FICHERO);
  66.        if (!Files.exists(pathTem)) {
  67.            try {
  68.                Files.createFile(pathTem);
  69.            } catch (IOException e) {
  70.                log.error("Error al crear el fichero {}", e);
  71.            }
  72.        }
  73.        try (final OutputStream out = Files.newOutputStream(pathTem);
  74.             final BufferedOutputStream bos = new BufferedOutputStream(out);
  75.             final ObjectOutputStream ob = new ObjectOutputStream(bos)) {
  76.  
  77.            synchronized (ConObjectIOStream.class) {
  78.                Arrays.stream(customer)
  79.                        .forEach((Customer p) -> writeObject(ob, p));
  80.            }
  81.            ob.reset();
  82.        } catch (IOException e) {
  83.            log.error("Error al escribir en fichero {} ", e);
  84.        }
  85.  
  86.        this.showAll();
  87.    }
  88.  
  89.    private void writeObject(final ObjectOutputStream ob, final Customer customer) {
  90.        try {
  91.            ob.writeObject(customer);
  92.        } catch (IOException e) {
  93.            log.error("Error al escribir objecto {} ", e);
  94.        }
  95.    }
  96.  
  97.    private void updateById(final int id, final Customer newCustomer) {
  98.        this.showAll();
  99.  
  100.        final var isCustomerFound = this.findAll()
  101.                .stream()
  102.                .filter(customer -> customer.id() == id)
  103.                .count();
  104.  
  105.        if (isCustomerFound > 0) {
  106.            final var customerList = this.findAll()
  107.                    .stream()
  108.                    .map(customer -> {
  109.                        if (customer.id() == id) {
  110.                            return newCustomer;
  111.                        }
  112.                        return customer;
  113.                    })
  114.                    .toArray(Customer[]::new);
  115.            log.debug("New Customer {}", newCustomer);
  116.            //Save new Customer items
  117.            this.save(customerList);
  118.        } else {
  119.            log.info("Customer id not found! {}", id);
  120.        }
  121.  
  122.    }
  123.  
  124.    /**
  125.      * Show all Customers
  126.      */
  127.    private void showAll() {
  128.        this.findAll()
  129.                .forEach((Customer customer) -> log.info("Customer {}", customer));
  130.    }
  131.  
  132.    public static void main(String[] args) {
  133.  
  134.        final ConObjectIOStream conObjectIOStream = new ConObjectIOStream();
  135.        final Customer customer1 = new Customer(1, "Ana", "001-135452");
  136.        final Customer customer2 = new Customer(2, "Anita", "002-413315");
  137.        final Customer customer3 = new Customer(3, "Bruce Lee", "003-32453");
  138.        final Customer customer4 = new Customer(4, "Carlitos Way", "004-13151");
  139.        final Customer customer5 = new Customer(5, "Zamuray-X", "005-214343");
  140.        final Customer customer6 = new Customer(6, "Inuyasha", "006-014343");
  141.  
  142.        /**
  143.          * Save
  144.          */
  145.        conObjectIOStream.save(customer1, customer2, customer3, customer4, customer5, customer6);
  146.  
  147.        /**
  148.          * show all
  149.          */
  150. //        conObjectIOStream.showAll();
  151.  
  152.        /**
  153.          * updateById
  154.          */
  155. //        final Customer newCustomer = new Customer(5, "Zamuray-X", "005-12345-678");
  156. //        conObjectIOStream.updateById(5, newCustomer);
  157.  
  158.    }
  159.  
  160. }
  161.  
  162. }

Existen 3 métodos ahí

- save(), para guardar los Objetos de tipo cliente en un fichero llamado temporal.tmp
- findAll(), que lee todos los objetos contenidos en el fichero .tmp
- updateById(), que actualiza un Cliente por medio de su id mira la linea 155, donde se le pasa el Objeto cliente nuevo como parametro y su id, si el id existe se actualiza, sino existe no actualiza nada, además

- Estabas usando la clase Scanner usala y creas el objeto con los datos introducidos por teclado.
15  Programación / Ingeniería Inversa / Re: Como calcular el baud rate de un UART en: 8 Enero 2023, 18:03 pm
Igual por puerto serie caigo en el mismo problema del baud rate xd

Una cosa, desarmaste el router?

Muestra la imagen de los pines TX, RX, y GND  a ver.
16  Programación / Ingeniería Inversa / Re: Como calcular el baud rate de un UART en: 6 Enero 2023, 16:15 pm
Caramba. Eso si esta interesante. Muchas gracias, rub'n.

Aun no me devuelven el router, pero en cuanto lo tenga voy a intentarlo, aunque sinceramente no se como asegurarme de que el hardware va a ser compatible. ¿Tienes idea de como podria?

Buen blog por cierto : D

Shut up and squat xd

ejje ok bien. prueba y cuentas.

Porque en tu caso no lo tienes brikeado, pero al menos es algo. dado que no se si, puedas subir un firmware de Open WRT al repetidor por su interface, sin tanto problema, asi me toco hacerlo via "interface web", no puerto serie.
 
Ya por puerto serie es otra cosa.
17  Programación / Ingeniería Inversa / Re: Como calcular el baud rate de un UART en: 4 Enero 2023, 17:11 pm
rub'n, no habia pensado en flashearlo con otro sistema, es buena idea. Si solo dejaran un puerto SSH abierto me estaria ahorrando todo este problema. Entiendo que puede dejar un hoyo pero nada les cuesta crear una buena contraseña y dejarla en el manual... xd

Voy a esperar que me lo devuelvan, que "Se lo llevaron" un momento, e intentare tu consejo. Mantendre al tanto del proceso el tema.


A ver si encuentro alguna distribucion compatible que deje algun puerto SSH o Telnet.

Gracias por tu ayuda.

Para flashearlo puedes hacerlo via puerto serie, si tienes arduino te serviria.

puedes obtener una idea de aqui, algo que me paso en el 2013 https://rubn0x52.com/2013/05/10/unbrick-tplink-tl-wr104rnd-with-arduino-uno/
18  Programación / Ingeniería Inversa / Re: Como calcular el baud rate de un UART en: 4 Enero 2023, 13:30 pm
Puedes mostrar el pinout de ese router a ver, es el rs232 o puerto serie son varios pines, segun lo que dices los tiene?

El mas cercano buscando rapido es https://openwrt.org/toh/zte/zxhnh108n

Si es posible de flashearlo con openWRT quizas puedas resolver.
19  Programación / Ingeniería Inversa / Re: Como calcular el baud rate de un UART en: 3 Enero 2023, 18:28 pm
Hola,

Contexto de la pregunta:

Tengo un router repetidor. Especificamente el ZTE ZXHN H196Q. Se supone que se necesitan dos de estos para que funcionen como repetidor WiFi. La cuestion es que el tecnico que lo instalo en mi casa no puso ningun otro y lo hizo funcionar. No se como lo hizo pero yo lo desconfigure intentando descubrirlo y ahora tengo que volver a configurarlo. No veo ninguna opcion en la pagina del router que me deje conectarlo a una red WiFi para repetirla. Lo mas parecido que encontre fue una pestaña llamada "Mirror configuration". No se que es pero intente con ello y no funciona.

Me harte. Asi que abri el router y conecte el puerto serial de mi computadora al UART del router, el problema es que ningun baud rate standard parece ser el del router, aunque parece estar en el rango de los 115200 bauds. Se que esto se puede calcular manualmente con un analizador logico, el problema es que no tengo idea de como hacerlo y lo unico que encuentro en Internet son formulas para calcular los bauds.

¿Alguien que me pueda ayudar? Muchas gracias de antemano... esto comienza a desesperarme xd

PD: No encuentro el datasheet del router


Mmmm, una cosa es configurar un repetidor wifi, y otra es entrar a el via puerto serie.

No le veo sentido. para "puerto serie" podrias flashear un router en caso de dejarlo brikeado, y quizas otras cosas que generalmente se hacen via UI( su ui, o web, interface para tu establecer valores y tal)

Creo que no le estas dando buena vista al asunto socio.
20  Foros Generales / Dudas Generales / Re: Este power banck solar tiene carga rápida? en: 11 Diciembre 2022, 15:42 pm
Si tal cual, segun esos cargadores así de panel solar, no funcionan como uno se lo espera.

Al menos que sea una urgencia y tal, que esten en una zona muy muy lejana valdría la pena creo yo.

Ese cargador que incluyo @crazykenny se ve brutal y mas de 5000 personas lo han comprado nada mal...
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 139
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines