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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 287
91  Seguridad Informática / Hacking / Re: Ataque a servidores en: 22 Noviembre 2021, 22:51 pm
Hay alguno mas sin mencionar, como por ejemplo un ataque físico accediendo al  servidor y conectarle un pendrive, atacar el router directamente, algún proxy, etc
92  Foros Generales / Dudas Generales / Re: Programa para trabajo de la universidad, urgenteee!!! en: 22 Noviembre 2021, 22:21 pm
PROBLEMA1:

No has creado los clientes. Te recomiendo utilizar estructuras para tener los datos organizados y crear clientes de forma sencilla.

Código
  1. struct Cliente {
  2.  std::string nombre = "";
  3.  std::string telefono = "";
  4.  unsigned int totalGastado = 0;
  5. };

Una vez tienes la structura, puedes crear clientes de forma sencilla.
Código
  1. int main() {
  2.  Cliente cliente1; // ejemplo de como crear un cliente
  3. }

Ahora te faltaría rellenar los datos. Puedes hacerlo directamente en main usando el operador .
Código
  1. int main() {
  2.  Cliente cliente1; // ejemplo de como crear un cliente
  3.  cliente1.nombre = "Manolo";
  4.  cliente1.telefono = "555-555-555";
  5. }

Si lo hicieses así y por ejemplo tuvieses 20 clientes y dentro de cada uno 50 propiedades tendrías en el main 1000 lineas de código asignando propiedades, por eso aunque no sea este el caso, es buena práctica crear una funcion a la que le pases los datos y se los asigne a los clientes.

Código
  1. void crearCliente (Cliente * clienteActual, string nombre, string telefono, int gastado ) {
  2.  clienteActual->nombre = nombre;
  3.  clienteActual->telefono = telefono;
  4.  clienteActual->totalGastado = gastado;
  5. }
  6.  
  7. int main() {
  8.  Cliente cliente1;
  9.  crearCliente(&cliente1, "Manolo", "555-555-555", 0);
  10.  
  11.  cout << "Hola " << cliente1.nombre;
  12.  return 0;
  13. }

Ahora que tienes un ejemplo de como acceder dentro de una función a las propiedades de la estructura (cliente->propiedad) y un ejemplo de como acceder desde el main (cliente.propiedad) haz lo que te pide el ejercicio.

Tienes que pasar el cliente por parámetro a las funciones, imprimir su nombre, preguntarle cuanto quiere gasta y añadírselo a la propiedad totalGastado del cliente.

También te pide en el apartado d, que una función acepte un array de clientes. Puedes crear un array de structuras sin problemas:
Código
  1. int main() {
  2.  Cliente clientes[5];
  3.  // aquí el equivalente al antiguo cliente1 sería clientes[0], cliente2 sería clientes[1], etc.
  4.  crearCliente(&clientes[0], "Manolo", "555-555-555", 0);
  5.  
  6.  cout << "Hola " << clientes[0].nombre;
  7.  
  8.  return 0;
  9. }

Es sencillo, trata de familiarizarte con los ejemplos que te puse y rescribe el programa siguiendo lo aquí expuesto y lo que te piden EXACTAMENTE los apartados.



PROBLEMA2

Aquí te explican que es un primo circular:
https://pt.m.wikipedia.org/wiki/Primo_circular

Yo lo implementaría casteando de int a string y una vez tengo un string hago shift del primer caracter y hago push de ese caracter al final y lo casteo a int para poder comprobar si es primo. Repites este proceso una vez por cada dígito que tenga (los sacas con .length() o .size() sobre el tamaño del string)

Si te pongo código, ya te lo doy echo, no te puedo ayudar mas sin darte la solución.

Consejo: Haz una función que retorne false si en algún momento compruebas que no es primo circular. Si acabas el bucle sin haber retornado false, significa que el primo circular asique retornas true al final de la función.
93  Foros Generales / Foro Libre / Re: Camino más de 10 kilómetros al día mientras trabajo en el ordenador: este es el equipo que uso y el beneficio que me en: 22 Noviembre 2021, 02:28 am
Tuve la misma idea, aunque en casa. Si tuviera el dinero y el espacio ya la hubiera realizado. Pero dudo que uno pueda concentrarse bien con eso.
Mas bien al contrario:

www.quo.es/salud/a48449/por-que-caminar-nos-ayuda-a-pensar/amp/
94  Seguridad Informática / Seguridad / Re: Me presento y duda clave Facebook en: 20 Noviembre 2021, 22:30 pm
Gracias por la contestación. La verdad que le he recuperado el acceso a Facebook pero todavía no se acuerda de su contraseña jajajaja. Por fin puede jugar al Junes Journey o algo así  ;D ;D.. podemos hacer un Man in te middel o algo así? La pobre se acuerda de sus tres últimas contraseñas pero de la última nada de nada. Algun consejo?
La sessión ya está abierta. No se envía la contraseña, se envia la sessión.
95  Seguridad Informática / Seguridad / Re: Puede un hacker rastrear un instagram? en: 20 Noviembre 2021, 18:15 pm
Resulta que hicieron unas publicaciones en una cuenta de instagram, y según le van a decir a alguien que localice esa cuenta. Se puede saber dónde está la persona o quién la hizo o algo así? Que es lo que se podría obtener? O no se puede?
Poder se puede. Mas probable es dar con alguien que te estafe y te diga que puede que con alguien que lo averigue de verdad.
96  Sistemas Operativos / GNU/Linux / Re: ¿Que distribucion de Linux usas y por que? en: 17 Noviembre 2021, 19:45 pm
Yo uso: Android + Termux, xubuntu/kubuntu, arch linux, debian, alpine linux.

Android + Termux porque es la forma mas simple, barata y cómoda de poder correr una distribución de Linux. Suelo instalar otras distribuciones encima (las otras que menciono las tengo instaldas en termux con proot-distro)


Xubuntu o Kubuntu:
Para equipos caseros elijo dependiendo de las prestaciones del equipo. Para altas prestaciones donde me sobra potencia, me decanto por Kubuntu porque me parece que tiene la interfaz mas estética.

Para equipos de prestaciones bajas/medias uso Xubuntu porque XFCE es muy rápido, poco uso de memoria, estéticamente es simple y minimalista y en general le encuentro muy pocos defectos.

Para servidores puedo usar ubuntu server sin interfaz o con xfce opcional (arrancando la interfaz de forma manual con comando)


Arch Linux suele ser mi opción para hacking. Tiene muchísimos paquetes, siempre actualizados y es muy configurable. Por ejemplo suelo no instalarle interfaz y añadirle los paquetes de blackarch (entre otros).


Debian lo uso con xfce para equipos de muy muy bajas prestaciones. Es algo mas eficiente que Xubuntu.


Alpine lo suelo utilizar para ser virtualizado. Es muy muy pequeño, muy buen gestor de paquetes con soporte para muchas arquitecturas... Muy bueno por si quieres probar algo concreto en una distro limpia y cómoda.


97  Foros Generales / Foro Libre / Re: El peligroso ataque de Putin amenaza el futuro de la humanidad en: 17 Noviembre 2021, 04:05 am
Citar
No contento con poner a Europa al borde del colapso energético
Empieza bien...
https://www.reuters.com/business/energy/russian-gas-flows-germany-rise-despite-belarus-threat-2021-11-15/

No sabía yo que Russia era el promotor globalista del ecologismo por el cual cerramos fábricas y minas de carbón en España.


Citar
y amenazar la ISS con su desastrosa agencia espacial
Tripulación de la ISS, por nacionalidad.
Nacionalidad   Tripulación
Estados Unidos   54
Rusia                   39
Japón                   6
Alemania           3
...


Citar
Rusia acaba de lanzar un misil que nos pone a todos en jaque
Cómo tengo cobertura para escribir este mensaje desde mi bunker?

Citar
arriesgando innecesariamente la vida de astronautas y amenazando toda la infraestructura de la humanidad en órbita
Vaya misil nuclear con IA debío de haber lanzado para poner a todos los cacharros en riesgo...

A Russian Soyuz rocket launched a new robotic cargo ship to the International Space Station late Wednesday (Oct. 27) to deliver tons of fresh supplies for astronauts in orbit. The Soyuz 2.1a rocket launched the Progress 79 spacecraft from the Baikonur Cosmodrome in Kazakhstan 8 p.m. EDT, Wednesday, Oct 28, 2021

Son terrorificos estos rusos y sus planes maléficos.


Citar
Y los americanos han anunciado que habrá consecuencias.
Van a prohibirse venderles cosas a los rusos? XD

Citar
Rusia disparó ayer un misil contra uno de sus propios satélites en una demostración de su capacidad ofensiva en el espacio. La prueba de esta arma antisatélite generó una nube de desechos que puso a la estación espacial en estado de emergencia, obligando a los astronautas a refugiarse en las naves que harían de botes salvavidas en el caso de colisión.
Peligro tremendo. En la ISS también hay rusos. Es el segundo país que mas tripulantes la han ocupado. Cuando el test lo hizo India hace un par de años, no pasó nada, ni con todos los que ha echo Estados Unidos.

Citar
Lo que es peor: esta nube de desechos metálicos que ahora vuela a velocidad hipersónica en órbita baja supondrá un peligro para futuras misiones y podría originar una reacción en cadena que destruiría otros satélites. Un juego de carambolas espaciales que podría tener el efecto colateral de derribar parte de la infraestructura espacial, eventualmente provocando un gran apagón de comunicaciones y servicios fundamentales para el funcionamiento de la sociedad moderna.
Y el lapo que acabo de echar en la calle, puede hacer que una colilla se quede pegada, un perro la huela, el dueño tropiece con el perro y se caiga en la carretera, un coche lo atropelle, el seguro no se haga cargo porque el gps tapaba el parabrisas, la empresa de los gps quiebre y los satelites vagen sin control por el espacio poniendo en riesgo los artículos apocalípticos de un subnormal.

Paso de comentar el resto porque ya me he quedado a gusto.

98  Seguridad Informática / Hacking / Re: ¿Cómo hackear algo que sea legal hackear? en: 16 Noviembre 2021, 23:48 pm
Quisiera aprender un poco sobre hackear, con una práctica. ¿Hay algo que sea legal hackear? En caso de que sí ¿qué pasos debo seguir para hackearlo?

Gracias.
Si hay muchas cosas que puede hackear de forma legal.

Puedes empezar por instalar aplicaciones vulnerables. Bájate el web security dojo de maven y lo instalas en virtualbox. Ahí tienes la documentación, herramientas y aplicaciones vulnerables para aprender.

Otra opción es leer sobre vulnerabilidades, construir tu mismo las apñicaciones vulnerables, hackearlas, arreglarlas, leer otras... Es lo que mas conocimkentos te va a dar. Tienes libros en el foro de dudas generales en los que se explican muchos tipos de vulnerabilidades, herramientas y demás recursos.

Finalmente cuando ya sabes exactamente lo que estás haciendo, la implicación de usar ciertas herramientas para el sitio o lo que puede provocar correr pocs en ciertos servicios y como debes abordarlo, puedes hackear sitios reales que tengan un programa de bug bounty como los que hay en la página de hackerone u otros que tiene su propio programa como facebook, google y demás.
99  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: Android: hay algún registro o historial de las apps instaladas y desinstaladas? en: 16 Noviembre 2021, 14:00 pm
Por diseño del sistema no. Piensa que algunos dispositivos no tienen ni los servicios de Google.

Es mejor que busques concretamente información a cerca de tu modelo/marca.

Muchos dispositivos tienen la opción de loggear prácticamente todo ad hoc desde el engineer mode. El tema es que en un minuto igual generas 15 megas de logs entre el arranque de kernel, giroscopio, sensor de luminosidad, capturas de tráfico de red, etc. Es insostenible que se guarden logs continuos de todo. Otra cosa distinta es lo que se guarde en la nube en tu cuenta de google.

En europa por ley están obligados a darte toda la información personal que tienen de ti si la solicitas. Esto incluye las apps instaladas (si tienes google play services/cuenta de google en el dispositivo).

Si solo quieres ver las que tienes ahora mismo, puedes usar la app "Apk Export". En la propia playstore tienes un registro de todas las apps que instalaste desde esta cuenta a lo largo del tiempo ordenadas de mas reciente a mas antiguas.
100  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. });
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 287
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines