Venta de Libros

La necesidad de espacio me ha forzado a vender varias cosas, entre ellas muchos libros, dejo la lista de todos los libros que he puesto a la venta, la mécanica es sencilla:
– No los vendo individualmente, los vendo todos juntos o por lotes (ya los he separado)
– La venta es para residentes en Lima, porque envíarlos a provincias o el extranjero va a ser complicado por el peso.
– No separo ni guardo, al primero que me pagué se los entrego, me pueden pagar vía Yape, Paypal o a mi cuenta bancaria
– Me pueden contactar por DM a mi cuenta de twitter @Slayer_X

Aquí la lista completa de los libros en venta

Noticias de Ninguna ParteWilliam Morris
Crónica de San GabrielJulio Ramón Ribeyro
Memorias de AdrianoMarguerite Yourcenar
DianéticaRonnald Hubbard
HotelArthur Hailey
Bunker13Aniruddha Bahal
Las Horas DistantesKate Morton
La Cuarta DimensiónBob Frissel
El Habla CultaMartha Hildebrandt
1000 Palabras y Frases PeruanasMartha Hildebrandt
Historia CeroWilliam Gibson
Grupo 1

Opiniones de un PayasoHeinrich Boll
El Secreto del FuegoFarah Karimi
Las Dudas de SalaiMonaldi & Sorti
Gato RojoPeter Spiegelman
Luz de AgostoWilliam Faulkner
Corazón de UlisesJavier Reverte
El Nombre de la RosaUmberto Eco
CementoFedor Gladkov
En el País de la Nube BlancaSarah Lark
El Siglo de las LucesAlejo Carpentier
Grupo 2

El Viejo y el MarErnest Hemingway
El Código Da VinciDan Brown
La Casa de los EspiritusIsabel Allende
Crimen y CastigoFedor Dostoeivski
FiccionesJorge Luis Borges
Abaddon el ExterminadorErnesto Sábato
Ël Cazaba HalconesJavier Arevalo
Guerra Mundial ZMax Brooks
No se lo digas a NadieJaime Bayly
Don CamiloGiovanni Guareschi
Grupo3

La Décima RevelaciónJames Redfield
La Novena RevelaciónJames Redfield
El Espejismo de DiosRichard Dawkins
CaínJosé Saramago
Dando la NotaJose Luis Campuzzano
Nosotras que nos queremos tantoMarcela Serrano
La ColmenaCamilo José Cela
Historia de dos CiudadesCharles Dickens
Ensayos Frankenstein
The Gospel of the FSMBobby Henderson
Grupo 4

Primero voy a escuchar ofertas por todo el lote, si nadie me ofrece algo razonable le pondré precios por grupos.

Agradecería mucho si pudieran difundir este post para que llegue a más gente.

Posible cambio de idioma

Tengo un nivel de inglés que se puede considerar decente, puedo sostener conversaciones sin mayores problemas, puedo leer libros en inglés, sin embargo me falta mejorar mi escritura, cuando uno habla muchas veces puede decir o pronunciar de forma incorrecta sin embargo la otra persona puede entendernos, es como cuando un extranjero nos dice “dame una poquita de agua”, no es correcto, pero le entendemos. La escritura es mucho más meticulosa y es por ello que es muy importante escribir correctamente.

Asi que estoy pensando en cambiar el idioma del blog y empezar a escribir todo en inglés, es un cambio un poco radical pero creo que será un buen ejercicio.

Stay tunned 🙂

Solucionar error en Docker para Centos8: client version 1.40 is too new

Llevo usando Centos 8 hace varios meses para hacer laboratorios y pruebas, estaba armando un Dockerfile y cuando quise probarlo encontré este mensaje de error:

Docker: “Error response from daemon: client version 1.40 is too new. Maximum supported API version is 1.39”

Lo curioso era que si podía levantar contenedores, el problema radica cuando invocas cualquier comando que quiera comunicarse con el daemon de docker, me puse a investigar y encontré el problema:
This is known issue with docker client 19.03.09. It happens if the daemon version supports only max api-version 1.39. Client is not downgrading the API version to match the server supported version automatically. It should be fixed in 19.03.10.
https://github.com/docker/cli/issues/2533

Tal y como refieren en el issue hay un problema conocido y se puede solucionar de 2 maneras, la forma rápida es exportar una variable de entorno especificando la version de API que quieres usar

export DOCKER_API_VERSION=1.39

Pero yo prefiero la solución permanente que es hacer el upgrade y asi no tengo que lanzar esa variable de entorno cada vez que quiera usar el daemon o meter una línea más en mi .bashrc

En centos uso el repo oficial de docker, pero al querer hacer el update encontré este error

[root@behemoth ~]# yum update
Last metadata expiration check: 0:00:07 ago on Sat 11 Jul 2020 12:35:05 PM -05.
Error:
 Problem: package docker-ce-3:19.03.12-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best update candidate for package docker-ce-3:18.09.1-3.el7.x86_64
  - package containerd.io-1.2.10-3.2.el7.x86_64 is filtered out by modular filtering

Tenía que hacer upgrade al paquete containerd pero la versión que necesito no esta disponible a traves del repo, asi que busqué y encontré el rpm que necesitaba, para instalarlo ejecutan

yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Y luego de eso ya podrán hacer el upgrade de la versión de Docker sin problemas

# yum update
Last metadata expiration check: 0:02:13 ago on Sat 11 Jul 2020 12:35:05 PM -05.
Dependencies resolved.
=============================================================================
 Package          Arch      Version                Repository           Size
=============================================================================
Upgrading:
 docker-ce        x86_64    3:19.03.12-3.el7       docker-ce-stable     24 M
 docker-ce-cli    x86_64    1:19.03.12-3.el7       docker-ce-stable     38 M

Transaction Summary
=============================================================================
Upgrade  2 Packages

Total download size: 62 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): docker-ce-19.03.12-3.el7.x86_64.rpm   1.3 MB/s |  24 MB     00:17
(2/2): docker-ce-cli-19.03.12-3.el7.x86_64.r 1.7 MB/s |  38 MB     00:21

Espero les resulte útil

100 días de cuarentena en el Perú

Hoy 23 de Junio del 2020 se cumplen 100 días de la cuarentena impuesta por el gobierno peruano. Quiero recordar este momento para la posteridad porque estamos viviendo algo impensado, un evento para el que no estabamos preparados.

Desde finales del 2019 sabíamos que había un nuevo virus bastante peligroso llamado COVID19 y que era sumamente contagioso, pero hasta febrero nadie pensó que sería la primera vez en la historia que tendríamos una pandemia de escala totalmente global. El Perú no estuvo preparado, sin embargo, el presidente Vizcarra sorprendió tomando medidas que fueron consideradas muy duras, lo criticaron duramente diciendo que exageraban. El tiempo le dió la razón, se actuó con celeridad, se ganó tiempo pero este fué terriblemente administrado, la ineficiencia y corrupción generalizada del país han hecho que hoy vivamos una situación terrible.

Nunca podré criticar a la gente que vive del día a día, gente que ha tenido que aguantar 100 días y que hoy no tiene que comer, se ven forzados a salir a vender lo que sea para no morir de hambre. Pero hay mucha gente irresponsable, que no tiene esas necesidades y sin embargo sale a hacer su vida como si nada hubiera pasado, se reunen a beber alcohol, visitan prostíbulos clandestinos, salen a comprar en grupo, andan sin mascarilla.

Tengo que mencionar en un párrafo aparte a toda esa gente miserable que se ha aprovechado de la coyuntura para especular con los precios y aprovecharse de la necesidad de la gente. Desde luego que hay mucha gente solidaria, pero es penoso y desalentador ver tanta gente que se aprovecha de la desgracia ajena.

Otra cosa que quiero recordar para el futuro son los conspiranoicos que creen que las antenas 5G propagan el COVID19 y que serán usadas para controlarnos a través de los chips que nos van a implantar con las vacunas, si, por muy loco que suene hay gente que realmente cree esas tonterías.

Por mi parte he optado por mantener una cuarentena estricta, no salgo de mi casa a menos que sea absolutamente indispensable, tengo una pequeña red de comerciantes conocidos que me proveen de víveres y todo lo necesario para subsistir. Ocupo mi tiempo estudiando, he empezado a estudiar Data Science y me tiene entusiasmado. A pesar de las dificultades porque en estos momentos no tengo un trabajo estable me siento afortunado porque no me falta comida y tengo un techo seguro, lo mejor de todo es contar con mi esposa, sin ella esta situación hubiera sido insostenible para mí. La amo demasiado y junto con ella aprovechamos nuestro tiempo libre haciendo maratones de nuestras series favoritas.

Todos estamos esperanzandos en una vacuna, pero seguramente tardará por lo menos un año en aparecer, mientras tanto tenemos que seguir luchando contra la pandemia y asumiendo nuestra responsabilidad. Toca cuidarse y sobrevivir.

Pyenv para tener distintas versiones de Python

Python Cuando programas en Python es común que hagas uso de muchas librerías y en algún momento necesites una versión muy específica de Python para tu desarrollo. Muchos de estos problemas se pueden solucionar con Docker, sin embargo, no siempre podemos encontrar exactamente lo que buscamos o resulta complicado construirlo si no tenemos una buena base sobre lo que es contenedores.

En algunas distribuciones de Linux es común que tengas instaladas 2 versiones de Python, una de la rama 2.x que por cierto ya va quedando obsoleta y otra versión de la rama 3.x, para descubrir que versión de Python tenemos ejecutamos:

python --version

o

python3 --version

En mi caso estoy corriendo Centos8 y tengo la versión 3.6.8

Pyenv es un programa que nos permite poder instalar distintas versiones de Python y decidir qué versión específica queremos usar en cualquier momento, asi que el primer paso es instalar pyenv, el proceso es bastante sencillo:

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

Con eso se instalará pyenv en tu home directory, ahora tendrás que añadir unas líneas a tu archivo .bashrc que sirven para aumentar una ruta a tu path y activar pyenv cada vez que inicies una nueva sesión.

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

Con estos pasos tendremos pyenv funcionando, puedes verificar la versión instalada ejecutando

pyenv version

Para ver todas las versiones de Python y programas accesorios (anaconda, stackless, miniconda, etc etc) que puedes instalar ejecutas

pyenv install --list | more

Para nuestro ejemplo vamos a instalar una versióm de Python2 y una de Python3, antes de empezar con la instalación hay un paso muy importante que es asegurarse de que tu distribución tiene instalado todo lo necesario para compilar desde fuentes, hablamos de tener gcc, make, etc etc.

Si usas Ubuntu, Debian o derivados ejecuta:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

Si usas RedHat/Centos/Fedora o derivados ejecuta:

sudo yum groupinstall "Development Tools"
sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite \
sqlite-devel openssl-devel xz xz-devel libffi-devel

Con esto debería ser suficiente para instalar cualquier versión de python, empezaremos con la versión 2.7.9

pyenv install 2.7.9

Una vez que se descargue el código fuente de nuestra versión se compilará en nuestra PC, esto puede tardar un poco dependiendo de la potencia que tengas. Cuando termine puedes verificar que se instalo con el comando

pyenv versions

Eso te mostrará todas las versiones de python instaladas, otra forma de verificar es observando el contenido de nuestro directorio versions en nuestro home directory

ls  ~/.pyenv/versions/

Eso significa que para desinstalar alguna versión bastaría con remover el directorio que le corresponde con un rm, pero prefiero usar pyenv para ese propósito

pyenv uninstall 2.7.9

Ahora voy a instalar la última versión de Python disponible, al momento de escribir este post era la versión 3.8.3

pyenv install 3.8.3

Si todo sale bien debes tener como mínimo 2 versiones de Python, en mi caso

$ pyenv versions
* system
2.7.9
3.8.3

El asterisco señala la versión activa de python, en mi caso es la 3.6.8 que viene por defecto en el sistema, para cambiar la versión activa sólo debes ejecutar:

$pyenv global 3.8.3
system
2.7.9
* 3.8.3

Si quieres probar el shell interactivo de alguna versión de python que tengas instalada debes ejecutar:

pyenv shell 2.7.9

Virtual Enviroments
Una vez resuelto el tema de manejar las distintas versiones de Python ahora viene otra parte importante que es manejar los virtual enviroments, hay varias formas de hacerlas, yo recomiendo instalar un plugin de pyenv que sirve especificamente para este propósito: pyenv-virtualenv

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

De forma opcional pero recomendada, ejecutamos el siguiente comando que lo que hace es agregar una línea a tu archivo .bash_profile que hará que tengas el plugin disponible en todo momento.

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

Para crear un entorno virtual que se llame “proyecto1” con la versión 3.8.3 de python ejecutamos

pyenv virtualenv 3.8.3 proyecto1

Si no especificas la versión de Python se creará el entorno con la versión por defecto

pyenv virtualenv proyecto2

Para ver la lista de entornos virtuales ejecutas:

pyenv virtualenvs

Para activar un entorno virtual

pyenv activate proyecto1

Para desactivar un entorno virtual

pyenv deactivate

Para borrar un entorno virtual

pyenv virtualenv-delete proyecto2

¿Bastante fácil verdad?

He cubierto sólo lo básico para empezar, puedes hacer muchas cosas más, espero que te haya sido de utilidad! Happy hacking 🙂

Hacking Games: como iniciarte en el mundo del hacking y la ciberseguridad de forma divertida

Hacker logo El mundo del hacking y la ciberseguridad siempre me ha parecido fascinante, parte de mi trabajo como Sysadmin ha sido proteger a mis servidores de los innumerables ataques que se reciben todos los días. Sin embargo, mucha gente tiene una idea bastante errada de lo que es ser un hacker, siempre se asocia la palabra hacker con algo negativo por culpa de la prensa. En la escena hacker siempre rechazan esto y prefieren usar términos como cracker o blackhat para referirse a aquellas personas que utilizan sus habilidades informáticas para obtener algun beneficio (usualmente económico) o fastidiar a otros.

Si te interesa el mundo de la ciberseguridad hoy tienes innumerables herramientas para empezar, ser hacker no se reduce a bajarse Kali Linux o Parrot y usar Metasploit, hay mucho más allá, si quieres aprender de hacking en serio lo ideal es que construyas tus propias herramientas o que entiendas bien que hace cada herramienta que vas a usar.

Una buena forma de iniciarse es aprender y dominar lo mejor que puedas un sistema operativo, yo te recomiendo Linux pero honestamente puede ser cualquiera. En este post lo que haré es recomendarte algunos sitios que te ayudaran a probar tus habilidades yendo desde lo más simple hasta lo más sofisticado. Lo mejor de todo es que todo es absolutamente legal, no te meterás en problemas.

Los hacking games son como su nombre indica juegos que retaran tus conocimientos, el objetivo de todos estos juegos es conseguir acceso a otras computadoras aprovechandose de algun fallo o vulnerabilidad, una vez dentro existen muchas posibilidades, normalmente el objetivo es encontrar una clave escondida dentro de un archivo que solo podrás leer si consigues acceso como root/admin y esa clave te permitirá avanzar hacia el siguiente nivel.

Lo genial es que podrás probar todo esto escenarios bastante realistas en ambientes controlados, no vas a malograr nada y no tendras al FBI pateando la puerta de tu casa para arrestarte 😉

Vamos con la lista:

  • Over the Wire – Wargames: Esta es mi recomendación para los novatos, es una colección de juegos que van desde lo realmente sencillo hasta lo más complicado, de hecho el primero juego que recomiendo es Bandit porque es realmente muy fácil y entretenido, los primeros niveles del juego básicamente sirve para repasar el uso de comandos básicos de un sistema Linux, si no puedes con estos comandos entonces aún no estas preparado para el hacking, pero no te desanimes, cada nivel te dice que comandos puedes utilizar para resolver el problema e incluso te recomienda material de lectura para que aprendas como solucionar el reto.

    La mecánica de Bandit es muy simple, te conectarás por ssh a un servidor con el usuario bandit0 para el nivel0, cuando estes dentro tienes que descubrir un password que servirá para el siguiente nivel, eso quiere decir que cuando descubras el password lo usarás para volver a conectarte pero esta vez con el usuario bandit1, en ese nuevo ambiente habrá otro password que servirá para conectarte con el usuario bandit2 y asi sucesivamente. Es realmente divertido y los primeros niveles son realmente sencillos.

    Cuando superes Bandit podrás continuar con el resto de Wargames, hay un orden sugerido que representa el grado de dificultad, vas a pasar un buen rato terminando estos juegos pero aprenderás o reforzarás tus conocimientos de una forma divertida.

  • Try2Hack: Este es uno de los hacking gaming mas antiguos que conozco y que permanece en actividad, los primeros niveles son fáciles y basta con revisar el código fuente para ir descubriendo como solucionarlos, pero a medida que avanzas las cosas se van poniendo difíciles. Para avanzar tienes que descubrir los passwords y los URLs del siguiente nivel.

  • Hack This Site: Al igual que sus predecesores este sitio también tienen retos que van desde los muy sencillos hasta los más complicados, para poder acceder a los retos tienes que registrarte. La mécanica es muy parecida a Try2Hack pero una vez que superas los retos iniciales tienes la posibilidad de acceder a retos mas desafientes y especializados, asi por ejemplo hay retos específicos para apps, otras para programación, otros de sólo Javascript. Está muy bueno y tiene una comunidad bastante activa que puede ayudarte si te quedas atorado en algún reto.

  • Vulnhub: Aquí las cosas se van poniendo mas serias, VulnHub ofrece máquinas virtuales (virtual machines o VMs) que tienen vulnerabilidades y que tú debes descubrir por tu cuenta. Para poder empezar tienes que usar un software de virtualización como Virtualbox o VMware player que son gratis y que te permitirán instalar estas VMs y practicar en un ambiente controlado y que se asemeja totalmente al mundo real.

    Una vez que tengas tu software de virtualización puedes descargar las imágenes de las VMs y empezar a practicar, este es uno de los sitios recomendados por la gente que se dedica a la seguridad en serio, yo he tenido oportunidad de probar un par de VMs de las consideradas sencillas y realmente no lo fueron para mi.

  • Hack the Box : Este es el sitio que descubrí hace poco y donde recién hace muy poquito me animé a crearme un usuario, a pesar de ser totalmente nuevo y haber probado sólo un par de desafios tengo que decir que es mi sitio favorito para poner en práctica técnicas de pentesting. Hack The Box es un portal que te permite conectar a través de una conexión VPN a una red donde encontrarás otras computadoras que debes atacar, cuando logres el acceso tendrás que escalar privilegios y cuando seas root/admin encontrarás un flag que es una cadena de texto que sirve para demostrar que logrates el objetivo, este cadena la registras en tu perfil y vas sumando puntos.

    Eso quiere decir que hay una competencia y se asemeja muchísimo a cualquier videojuego, la competencia es durísima y cada cierto tiempo se ponen a disposición nuevas máquinas para ser vulneradas, puedes formar equipos y obtener más puntos por ser los primeros en encontrar el flag de cada máquina nueva. A medida que pasa el tiempo las máquinas antiguas quedan archivadas y ya no son accesibles a menos que pagues por un acceso VIP que te da como beneficio el acceso a todas las máquinas entre otras cosas.

    En las próximas semanas voy a dedicar unas cuantas horas a resolver como ingresar a algunas máquinas disponibles de forma gratuita y quizás me anime a comentar mis experiencias 😉

Hay muchos lugares más donde se puede practicar, pero algunos son de pago o simplemente no los conozco, espero les sea de utilidad y me comenten si conocen sitios similares que puedan recomendar. Happy Hacking 🙂

tput para mejorar tus scripts en bash

bash
Cuando escribes scripts en bash acostumbras a hacerlo todo simple, sin embargo hay ocasiones en las cuales quieres tener un mayor control de la salida del programa. Una de las herramientas que sirve para este propósito es tput que viene por defecto instalado con ncurses, en muchas distribuciones ncurses viene instalado por defecto, asi que no debería ser problema.

La idea de usar tput es poder controlar de una forma sencilla distintos aspectos de tu terminal y hacer algunas cosas divertidas como dar formato y poner texto en negritas o de colores por citar un ejemplo, a continuación daré una lista de usos para tput que para mí resultaron especialmente útiles.

Limpiar pantalla
# tput clear
ejemplo:

echo "Este mensaje no lo veras"; tput clear; echo "Este mensaje si lo veras"

Para saber el número total de líneas que tiene tu consola actual
# tput lines

Para sabe el número total de columnas
# tput cols

Mover el cursor a una posición específica
# tput cup 15 20

Para poner un mensaje en negrita
# tput bold
ejemplo:

tput bold; echo "mensaje en negrita"

Para saber cuántos colores soporta tu consola usamos
# tput colors

Usar colores para el texto y el fondo, este me gusta bastante porque te evita tener que usar secuencias de escape ANSI.
Para poner texto de color rojo usamos
# tput setaf 1

Para poner background de color verde usamos
# tput setab 2

Les dejo 2 scripts para que vean la lista de colores básicos 🙂

for i in `seq 1 7`; do tput setaf $i; echo "Este es el color $i"; done
for i in `seq 1 7`; do tput setab $i; echo "Este es el color $i"; done

Si quieres usar más colores entonces vas a tener que especificarlo ejecutando

export TERM=xterm-256color ; reset

Si vuelves a ejecutar tput verás que ahora ya tienes soporte para 256 colores
# tput colors

Hint: cambia el script que puse arriba y en vez de 7 ponle 255 para que tengas toda la lista de colores

Si quieren ocultar el cursor pueden ejecutar
# tput civis

Para volver el cursor a su estado normal
# tput cnorm

AHora veremos unas funciones de formato, si por algún motivo quieren quitar el formato
# tput sgr0

Un reseteo general de toda la consola se hace con reset
# tput reset

Para subrayar texto
# tput smul

Para quitar subrayado
# tput rmul
ejemplo

tput smul; echo "texto subrayado"; tput rmul

Para hacer que el texto tintilee (blink)
# tput blink
ejemplo

tput blink; echo "blink blink blink"

No se olviden de # tput sgr0 para quitar el blink

Finalmente les dejo el enlace con algunos scripts de ejemplo hechos en bash

https://github.com/cvillegas/bash

Espero que les sea de utilidad 🙂