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)


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 280
31  Programación / Desarrollo Web / Re: Ayuda con javascript en: 16 Noviembre 2021, 05:19 am
No es buena idea añadir listeners cuando se cumpla una condición. En código donde en distintos momentos se cumpla una u otra, si no eliminas el listemer anterior y simplemente añades uno nuevo, se te van a acumular el listener antiguo y el nuevo.

Una de las principales diferncias entre nav.addEventListener("click" callback), y nav.onclick, es que uno añade eventos y el otro settea un evento. Es decir, de la segunda forma se eliminan todos los eventos que exisitían antes. Dependiendo del código puedes optar por el onclick o en su defecto por removeEventListener (por ejemplo cuando tienes 3 eventos, y solo quieres eliminar uno y no todos)

Tu condición está mal, dices:
Si (nav) {
  Haz
} en caso contrario (nav.propiedad.otra propiedad) {

}

Si no existe toggle, te vas a tu else if, en el cual intentas acceder a una propiedad de toggle que 100% no existe. Aún por encima accedes a las propiedades sin saber si exite toggle sin usar el interrogante.
Cuando no está claro si un elemento es inexistente, tira error al acceder a sus propiedades. En todo caso seria else if(nav?.propiedad?.otraPropiedad)

También es posible que quieras capurar el click en toda la página, ya que lo que pretendes es hacer desaparecer el nav cuando se haga click fuera del nav. Para ello tienes que añadir el listener a window.

Otro problema que veo es con los hijos de nav. Si tienes hijos en el nav que están por encima del nav, al hacerle click al hijo, no te salta el evento del nav (porque le haces click al hijo y no al nav directamente. Tienes que propagar el evento de hijo a padre. Es una opción de addEventListener. Si miras en la documentación de MDN de addEventListener, te explican en detalle como hacerlo y como funciona.

Te dejo un ejemplo de como lo haría yo. Adáptalo para tu uso, que entiendo que quieres añadirlo a clases por si tienes varios navs y demás. O corrige los errores que te comenté.

Código
  1. const html = document.querySelector("html");
  2. const body = document.querySelector("body");
  3. const nav = document.createElement("nav");
  4. const otroNav = document.createElement("nav");
  5. const enlace = document.createElement("a");
  6. const otroEnlace = document.createElement("a");
  7.  
  8. html.style.backgroundColor = "gray";
  9.  
  10. enlace.innerText = "Mi enlace (hijo de nav)";
  11. enlace.style.display = "block";
  12. enlace.style.border = "3px solid black";
  13. enlace.style.width = "40%";
  14. enlace.style.height = "3em";
  15.  
  16. otroEnlace.innerText = "Mi otro enlace (también hijo del nav que quiero trackear)";
  17. otroEnlace.style.border = "3px solid black";
  18. otroEnlace.style.position = "fixed";
  19. otroEnlace.style.bottom = "80px";
  20. otroEnlace.style.left = "6px";
  21. otroEnlace.style.fontSize = "1.3em";
  22.  
  23. nav.style.height = "200px";
  24. nav.style.width = "90%";
  25. nav.style.backgroundColor = "red";
  26. nav.innerText = "Esto es un ejemplo";
  27. nav.id = "navQueQuieroTrackear";
  28.  
  29. otroNav.style.height = "200px";
  30. otroNav.style.width = "90%";
  31. otroNav.style.backgroundColor = "orange";
  32. otroNav.innerText = "Otro nav";
  33.  
  34. body.style.width = "100%";
  35. body.style.height = "900px";
  36. body.backgroundColor = "green";
  37.  
  38. nav.appendChild(enlace);
  39. nav.appendChild(otroEnlace);
  40. body.appendChild(nav);
  41. body.appendChild(otroNav);                                                              
  42.  
  43. window.addEventListener("click", evt => {
  44.  const tagName = evt.target.outerHTML.substr(1, 15).split(" ")[0]; // obtener etiqueta clickada.
  45.  alert("Clickeaste el elemento " + tagName);
  46.  
  47.  const nav = document.querySelector("#navQueQuieroTrackear");
  48.  const id = evt.target.id; // obten id del elemento clickado
  49.  if (id === nav.id) { // se clickeo el nav que busco
  50.    alert("Nav clickeado"); // xD
  51.    nav.style.opacity = "1"; // 0 es invisible, 1 es visible.
  52.  } else {
  53.    // comprueba si el elemento clickado es hijo del nav
  54.    let isChildOfNav = false; // auxiliar
  55.    const navChilds = document.querySelectorAll("#navQueQuieroTrackear > *"); // selecciona todos los hijos del nav
  56.    evt.target.currentLoopedElementTemporalId = true; // propiedad que uso de auxiliar para detectar si alguno de los hijos la tiene (A.K.A, es el mismo elemento)
  57.    for (let i in navChilds) { // recorre los hijos
  58.      if (navChilds[i]?.currentLoopedElementTemporalId) { // comprueba si el hijo actual tiene la propiedad
  59.        // el elemento iterado es el mismo que el clickeado (es decir, el elemento clickeado es hijo del nav
  60.        isChildOfNav = true;
  61.        evt.target.currentLoopedElementTemporalId = null; // elimina la propiedad auxiliar
  62.        break; // ya sabemos que es hijo, deja de iterar
  63.      }
  64.    }
  65.  
  66.    if (isChildOfNav) { // si se clickeo un hijo de nav
  67.      alert("Es un hijo de nav");
  68.      nav.style.opacity = "1";
  69.    } else { // si no es hijo de nav
  70.      alert("No es hijo de nav");
  71.      nav.style.opacity = "0.2"; // haz el nav casi invisible
  72.    }
  73.  }
  74.  
  75.  
  76. });
32  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: Descargar de Play Store directamente la apk en: 12 Noviembre 2021, 21:49 pm
Utiliza esta web: https://apps.evozi.com/apk-downloader/

Google Play no te deja descargar si no tienes bastante espacio.

Te recomiendo que compres otro dispositivo con memoria suficiente. Yo tengo varios, suelo usar el Huawei P40 que tiene 64 gigas de memoria interna y aún así con Termux ya lo tengo lleno xD
33  Foros Generales / Dudas Generales / Re: ¿Hay netcat para IOS? (Solucionado) en: 12 Noviembre 2021, 16:50 pm
Lo solia hacer con mi Android (Que no estaba rooteado). Claro, no podias hacer listen, pero eso no es lo que quiero, sino conectarme nada mas

En Android se puede hacer listen sin root.
34  Programación / Desarrollo Web / Re: Tutorial básico de Quickjs en: 12 Noviembre 2021, 15:50 pm
Pedir un solo CARÁCTER ALFANUMERICO (a-z, 1..9, ¿+¿/ etc) mediante una función. por favor

Código
  1. import * as std from "std"; // importa libreria std para manejo de archivos en quickjs
  2.  
  3. const pedirUnSoloCaracter = texto => { // funcion para pedir un caracter
  4.  console.log(texto); // texto a mostrar al usuario solicitando el caracter
  5.  const fd = std.open("/dev/stdout", "r") // abre el archivo de salida estandar en modo lectura
  6.  const linea = fd.getline(); // lee toda la linea
  7.  fd.close(); // cierra el archivo
  8.  
  9.  if (linea.length > 1) { // La linea contiene mas de un caracter
  10.    throw new Error("Mas de un caracter");
  11.  } else if (! /[a-zA-Z0-9]/.test(linea) ) { // alfanumerico
  12.    if (linea === "ñ" || linea === "ç") { // maneja caracteres extra que no contempla la expresión regular a-zA-Z
  13.      return linea;
  14.    }
  15.    // else implicito { // si no es alfanumerico o alguno de los caracteres manejados, tira el error
  16.    throw new Error("El caracter no es una letra o un numero");
  17.  } else {
  18.    // retorna el caracter
  19.    return linea;
  20.  }
  21. }
  22.  
  23.  
  24. /* Instrucciones del programa */
  25.  
  26. try { // meneja las excepciones
  27.  const caracter = pedirUnSoloCaracter("Introduce un caracter"); // pide un caracter
  28.  console.log("El caracter introducido es " + caracter); // muestra el caracter si no hubo errores
  29. } catch (err) { // captura posibles errores
  30.  console.log(err); // muestra el error.
  31. }
35  Sistemas Operativos / Windows / Re: Quiero bootear mi ordenador acer aspire 5733Z del año 2011 con dos sistemas diferentes? es posible? en: 4 Noviembre 2021, 07:46 am
Entiendo, pero mi equipo ya lo sé seguro no soporta virtualizacion/emulación lo podré hacer igualmente? Pásame un video mejor por favor!

Gracias!
Si no pruebas, no lo sabes.
36  Foros Generales / Foro Libre / Re: Pido disculpas y agradecer seguir formar parte de esta gran comunidad! en: 4 Noviembre 2021, 07:12 am
A mi me resulta imposible ver un monitor si estoy ebrio. Entre la visión borrosa, la nula capacidad de concentración y los tambaleos... Que alguien haga un tutorial.  :P
37  Sistemas Operativos / Windows / Re: Quiero bootear mi ordenador acer aspire 5733Z del año 2011 con dos sistemas diferentes? es posible? en: 4 Noviembre 2021, 02:24 am
Hola, win_7.

Si quieres hacer lo que creo que quieres hacer en ese ordenador, te recomiendo que dejes de lado esa idea, ya que no es lo suficientemente potente para ejecutar Windows 7/10/11 y un segundo S.O. Windows mediante una maquina virtual,. No obstante, y si consigues hacerlo con este método, muy probablemente ira tan lento que a duras penas podrás hacer cualquier cosa.

Muchas gracias por vuestra atencion, y, bueno, saludos.
Se refiere a dual boot, no a correr 2 sistemas simultaneamente. Es decir, instalar windows y linux en el disco duro para poder elegir cual de ellos utilizar.

Buenas, decidme como lo puedo hacer y si los requisitos de mi ordenador lo permite¿?
Como ya te han explicado, descargas rufus, seleccionar tu sistema operativo y te crea un pendrive autoarrancable. (Al hacer esto todo lo que tengas en el pendrive se borrara automáticamente).

Una vez tienes listo el pendrive, apagas el PC y nada mas encenderlo le das rápido a la tecla F12 sin parar hasta que te sale un menú. Este menú sirve para arrancar el ordenador desde el pendrive.

Una vez arrancado desde el pendrive, tendrás la opción de instalar el sistema tras configurarlo. En el propio instalador te sale la opción de instalar junto a windows. Asegúrate de que es esta opción la que marcas y no otra (así no perderás tu windows).

Los pasos son bien simples, no hagas 200 preguntas antes de intentarlo xD.

No deberías tener ningún problema si lees todo lo que te va poniendo, aun así por simple precaución, sube tus archivos personales mas importantes en un zip con contraseña a algún sitio como mega, telegram, github... Y también crea un punto de restauración en windows por si algún problema, poder restaurarlo.
38  Seguridad Informática / Análisis y Diseño de Malware / Re: Cómo puedo evitar la detección por los AV? en: 1 Noviembre 2021, 17:01 pm
Muchas gracias por el trabajo Aincrad, hiré poniendo en práctica tus recomendaciones.

Dices que cambie todo el código de la función que corre el PE en memoria, que busque otra forma distinta (te he entendido bien?)

39  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: Esta disponible Android 7 Nougat o incluso Android 10 (como mucho) en un Huawei ascend G510? en: 1 Noviembre 2021, 12:04 pm
Sería para instalar la distribución de Ubuntu Termox en el móvil que solo está para versiones Android 7 posterior



Se puede?
Te recomendé que usaras Termux si tenías un Smartphone con Android 7.0 porque es mas sencillo que instalar Linux en el PC. Si no lo tienes, es mas difícil cambiar la versión de Android que descargarte virtualbox e instalar ubuntu en él.

Aquí dejo link para caminantes que explica el proceso de actualizar el Android con una versión mas reciente.
https://www.reliancedigital.in/solutionbox/how-to-run-a-new-android-os-on-your-dated-android-smartphone/
40  Seguridad Informática / Análisis y Diseño de Malware / Cómo puedo evitar la detección por los AV? en: 1 Noviembre 2021, 04:41 am
Hice un crypter cli (comando) en C# al que le pasas la ruta de un exe como argumento y te genera un código (listo para compilar) que descifra y ejecuta el exe en memoria para evitar detecciones estáticas.

Por lo que parece este comportamiendo es detectado como malicioso.

https://www.virustotal.com/gui/file/25e60c67ac1c177cfa60eb9637ffb4b27dfbf247a5ce00b66c27eb3c3a7882a5/detection

Lo que subí a virustotal, es un hola_mundo.exe pasado por el crypter, es decir el nuevo exe generado a partir del hola_mundo.exe que se encarga de descifrar su binario y correrlo en memoria.

Conoceis alguna forma simple de evitar estas detecciones?

Aquí el código (del hola_mundo.exe compilado) generado antes de compilarlo. Este es el que subí a virustotal una vez compilado:
https://gist.github.com/StringManolo/6a3f7205e8cc7f075fcfb177bc9728f3

Adjunto también el .exe compilado:
https://github.com/StringManolo/share/raw/master/hello_world.exe
md5sum 058e321a21469b6fd3983f143b8af787
sha256sum 25e60c67ac1c177cfa60eb9637ffb4b27dfbf247a5ce00b66c27eb3c3a7882a5
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 280
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines