Instalar metasploit en Ubuntu facilmente

Primero que nada se debe instalar postgresql de la siguiente manera

sudo apt-get install -y postgresql

Adicionalmente instalamos otras herramientas que será utiles

sudo apt install -y curl nmap sqlmap nikto

En la siguiente linea descargaremos metasploit, daremos permisos de ejecución y se procederá a realizar la instalación.

NOTA: no instalar con sudo o root,

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall

Hasta este punto tendremos metasploit

Para terminar ejecutamos msfconsole para ejecutar la configuración de la conexión de la base de datos e iniciar metasploit.

 

Tadan !!

Done.

Anuncios

Instalar Ubuntu Mate 17.10 en Mac Book Pro (late 2011)

Aburrido de usar macOS High Sierra decidí migrar a Ubuntu 17.10, a continuación comparto los pasos.

Descargar el iso de ubuntu mate desde la siguiente liga. Yo recomiento descargar la version 17.10 ya que tiene mejor soporte para el trackpad de la mac book pro.

Screenshot at 2017-12-09 13-26-05

Una vez descargado el iso, es necesario convertir el archivo iso a formato UDRW con de la siguiente manera

hdutil -format UDRW -o ubuntu-mate.img ubuntu-mate.iso

Captura de pantalla 2017-12-08 a la(s) 21.51.28-1

Lo siguiente es conectar el USB e identificarlo.

diskutils list

Captura de pantalla 2017-12-08 a la(s) 21.53.19

En este caso el usb esta mapeado en /dev/dsik2 y el siguiente paso es desmontar el usb

diskutil unmountDisk /dev/disk2 

Captura de pantalla 2017-12-08 a la(s) 21.54.03

El siguiente paso es “copiar” la imagen generada anteriormente en la memoria USB.

sudo dd if=ubuntu-mate-17.10-desktop-amd64.img.dmg of=/dev/disk2 bs=1m 

Captura de pantalla 2017-12-08 a la(s) 21.55.00

Ahora es necesario apargar la mac book pro, conectar el USB, encender el la mac y pulsar el boton “ALT” y debe apacer la siguiente pantalla.

sdr

En la siguiente pantalla (sorry por la foto borrosa) se mostrará el grub, seleccionar la opción “graphical install”

dav

Lo siguiente cargará el splash screen de Mate y lo siguiente es instalar ubuntu normalmente.

IMG_20171208_222822.jpg

Ya instalado el sistema operativo Mate lucirá así 😀

Selection_001

El ultimo tip es modificar el comportamiento de la tecla “cmd” para que tenga el mismo comportamiento que la tecla control. Acceder a Control Center -> Keyboard Preferecnes -> Keyboard Layouts Options -> Alt/Win key Behaviour, seleccionar Ctrl is mapped to Win Keys (and de usual Ctrl Keys).

Screenshot at 2017-12-09 13-18-20

Como comentaba anteriormente, esta version de Mate tiene mejor soporte para el trackpad de Mac Book Pro  y hasta cierto punto la bateria dura un poco más que con High Sierra.

Listo, ahora a disfrutar :D.

 

 

 

 

Raspberry Pi + NodeJS + Sheetsu + Google Spreadsheet = Measure Internet Speed & Log

Hola a todos,

Hoy les compartiré mi ultima ñoñada, la cual consiste en utilizar mi Raspberry Pi junto con NodeJS para realizar un speedTest, medir el ancho de banda de Bajada y Subida, conocer la IP Púlica que me asigna mi ISP y al final guardarlo en un SpreadSheet de Google.

Trataré de que no sea un post largo.

Está demás que mencione que debemos tener andando el Raspberry Pi con acceso a Internet, es necesario tener instaldo NodeJS y su gestor de paquete npm. Con npm instalar los paquetes “resquest” y “speetest-net”

Se debe crear un SpreadSheet, ya que este funcionara como nuestra “tabla” donde guardaremos la información. Debe tener las siguientes columnas.

node_spreadsheet

Acceder al servicio https://sheetsu.com con tu cuenta de google y crear un api con el SpreadSheet que acabamos de crear. Solo tenemos que copiar la URL del SpreadSheet y pegarlo en Sheetsu para crear un API REST y poder enviar datos desde NodeJS.

node_sheetsu

Al final nos mostrará la URL del API que se genero y si accedemos a la URL desde el navegador haciendo un GET, traeremos todos los registros en formato JSON (en mi caso que ya tengo registros)

node_sheetsu2

node_sheetsu3

En la documentación de Sheetsu pueden consultar toda la magia que se puede hacer.

El código de NodeJS es el siguiente:

node_app

Aquí les comparto el raw:

https://raw.githubusercontent.com/rafavg77/Scripts/master/linux/network/publicip_bandwidth/app.js

La funcionalidad es realmente sencilla, ya que utilizamos la librería “speedtest-net” para realizar un speedtest como si entráramos a la pagina de http://www.speedtest.net/ pero con la ventaja que nos devuelve los resultados en un JSON. En caso de regresar información realiza una petición POST hacia nuestro API REST en Sheetsu pasando los resultados del Speedtest y  ¡Vualá!.

Como pilón se hace un gráfica.

node_chart

Espero les pueda servir, Saludos.

 

 

Playing with Yowsup-cli 2.0 – Receive messages and do stuff

Hello geek people that  read these post, I bring a super post compared to Pandora’s box, well the truth that comparison with the Pandora’s box is just to give drama. But this post veeeeery be useful.

First of all, Yowsup is a Python library that allows developing applications to use the services and benefits of WhatsApp. If clone the github repo Repo Yowsup and install all its dependencies you can use a customer WhatsApp for Cli pretty good in his shows include the option of sending messages, Echo messages and other things.

Had already previously worked with Yowsup , but stop using it because of the change of architecture Whatsapp thank God included End to End encryption. A few days ago I have the task of performing a system for notifications and then WhatsApp uses worldwide, at least here in Mexico all cellular companies offer it free or by buying credit per month, so I felt good choice Whatsapp used as a means to send alerts and use Yowsup. You can also do with Pushbullet , but that’s another story and another post in the future.

Well, get to work, first of all we have to clone the repo Yowsup

git clone https://github.com/tgalal/yowsup.git

We supply a few depencias and packages necessary to correctly start Yowsup.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dateutil
sudo apt-get install python-setuptools
sudo apt-get install python-dev
sudo apt-get install libevent-dev
sudo apt-get install ncurses-dev

We must have a cell phone number available to register it in WhatsApp, and remember that we can not use WhatsApp on different devices -.- ‘.

Inside the directory where we have downloaded Yowsup we must run the following command to install yowsup.

sudo python setup.py install

With this we will have yowsup-cli as one command more linux, located in /usr/local/bin/yowsup-cli. Proceed to register our number on Whatsapp.

yowsup-cli registration –requestcode sms –phone 521xxxxxxxxxx –cc 52 –mcc 334 –mnc 030
yowsup-cli registration –register xxx-xxx –phone 521xxxxxxxxxx –cc 52

With this we will have Whatsapp for our mobile number password. We can save our data configuration in a file like the following example and name it as we want.

#############

cc=52
phone=521
password=

#######

And we can try sending a message to a number of Whatsapp with the following command

yowsup-cli demos –config yowsup/whatsapp_config.txt –send 5219999999999 “Your Butt”

Until this part all well, we can make a maaaaaany of things like notificaiones, alerts etc, buuuuutt putting hand python really will have a range of possibilities 😀

Whatsapp client to receive and execute Linux commands

If we are curious can see that Yowsup comes with several demos and one very important is the EchoClient, which when we run it, we can send a message to Whatsapp to the number that we are using with Yowsup. We will create a new folder inside the folder demos and call readclient.

folder

Well the code that we will make our client will be used in the demo EchoClient but we will modify it a little.

ReadClient-Yowsup

The code is as follows:


import os
from yowsup.layers.interface import YowInterfaceLayer, ProtocolEntityCallback

class ReadEchoLayer(YowInterfaceLayer):

@ProtocolEntityCallback(“message”)
def onMessage(self, messageProtocolEntity):

if messageProtocolEntity.getType() == ‘text’:
self.onTextMessage(messageProtocolEntity)
elif messageProtocolEntity.getType() == ‘media’:
self.onMediaMessage(messageProtocolEntity)

self.toLower(messageProtocolEntity.ack())
self.toLower(messageProtocolEntity.ack(True))

@ProtocolEntityCallback(“receipt”)
def onReceipt(self, entity):
self.toLower(entity.ack())

def onTextMessage(self,messageProtocolEntity):
# just print info
print(“Llego el mensaje %s” % (messageProtocolEntity.getBody()))
os.system(“notify-send ‘Mensaje de Whatsapp’ ‘{mensje}'”.format(mensje=messageProtocolEntity.getBody()))
os.system(“espeak -ves ‘%s'” % (messageProtocolEntity.getBody()))

def onMediaMessage(self, messageProtocolEntity):
# just print info
if messageProtocolEntity.getMediaType() == “image”:
print(“Echoing image %s to %s” % (messageProtocolEntity.url, messageProtocolEntity.getFrom(False)))

elif messageProtocolEntity.getMediaType() == “location”:
print(“Echoing location (%s, %s) to %s” % (messageProtocolEntity.getLatitude(), messageProtocolEntity.getLongitude(), messageProtocolEntity.getFrom(False)))

elif messageProtocolEntity.getMediaType() == “vcard”:
print(“Echoing vcard (%s, %s) to %s” % (messageProtocolEntity.getName(), messageProtocolEntity.getCardData(), messageProtocolEntity.getFrom(False)))

As shown in the code do an import os to run linux commands from python:D. In the original example of EchoClient contains the line

self.toLower(messageProtocolEntity.forward(messageProtocolEntity.getFrom()))

For purposes of our client we will erase that line, since this is the order forwardar to the message he received the customer.

Modify the onTextMessage function and it will be in the following way

onTestMessage

Where the first line prints the screen a message rimmed the contents of the message that came, in the second line, run the function os.system () and we have to pass the linux command to execute, in this case notify-send to launch a notification on your desktop.

TestMensaje

The third line also runs the function os.system () which for a command as a parameter so the console talk, a type loquendo, but we passed the content that I get Whatsapp message so that the system reads it, a Jarvis type;).

It’s alive alive !!!!!

Vídeo demo.

Well, this can be many things, a brilliant implementation would be tcp over Whatsapp to have a proxy anywhere :D. I hope you make it useful :D.

 

Jugando con Yowsup-cli 2.0 – Recibir mensajes y hacer cosas

Hola raza ñoña que lee estos post, hoy traigo un super post comparado con la caja de pandora, bueno la verdad que la comparación con la caja de pandora solo es para darle dramatismo. Pero este post será de muuucha utilidad.

Primero que nada, Yowsup es una librería en Python que permite desarrollar aplicaciones para usar los servicios y bondades de Whatsapp. Si clonan el repo de github Repo de Yowsup e instalan todas sus dependencias podrá utilizar un cliente de Whatsapp para Cli bastante bueno, entre sus demostraciones incluyen la opción de envio de mensajes, Echo de mensajes y otras cosas.

Anteriormente ya había trabajado con Yowsup, pero deje de usarlo debido al cambio de arquitectura de Whatsapp que gracias a Dios incluyeron cifrado End to End. Desde unos días atras tengo la encomienda de realizar un sistema para notificaciones y pues Whatsapp lo usa todo el mundo, al menos aquí en México todas las compañías de celular lo ofrecen gratuito o por una recarga de saldo al mes, así que me pareció buena opción usar Whatsapp como medio para enviar alertas y usar Yowsup. Que también se puede hacer con Pushbullet, pero eso es harina de otro costal y otro post en el futuro.

Bueno, manos a la obra, primero que nada tenemos que clonar el repo de Yowsup

git clone https://github.com/tgalal/yowsup.git

Debemos suplir unas cuantas depencias y paquetes necesarios para echar a andar correctamente Yowsup.

 

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dateutil
sudo apt-get install python-setuptools
sudo apt-get install python-dev
sudo apt-get install libevent-dev
sudo apt-get install ncurses-dev

Debemos tener un número de celular disponible para darlo de alta en Whatsapp, ya que recordemos que no podemos usar Whatsapp en dispositivos diferentes -.-‘.

Dentro del directorio donde tenemos descargado Yowsup debemos correr el siguiente comando para instalar yowsup.

sudo python setup.py install

Con esto tendremos yowsup-cli como un comando más el linux, ubicado en /usr/local/bin/yowsup-cli. Procedemos a registrar nuestro número en Whatsapp.

yowsup-cli registration –requestcode sms –phone 521xxxxxxxxxx –cc 52 –mcc 334 –mnc 030
yowsup-cli registration –register xxx-xxx –phone 521xxxxxxxxxx –cc 52

Con esto tendremos la contraseña de Whatsapp para nuestro número de celular.

Podemos guardar nuestros datos de configutación en un archivo como el siguiente ejemplo y nombrarlo como querramos.

#############

cc=52
phone=521
password=

#######

Y podemos probar enviando un mensaje a un número de Whatsapp con el siguiente comando

yowsup-cli demos –config yowsup/whatsapp_config.txt –send 5219999999999 “Tu Cola”

Y a nuestro contacto debe llegarle el mensaje  que mandamos :D.

Hasta esta parte todo bien, podemos hacer un choooooooorro de cosas como notificaiones, alertas etc, peeeeero metiendole mano python realmente se habré un abanico de posibilidades 😀

Cliente de Whatsapp para recibir mensajes y ejecutar comandos de Linux

Si somos curiosos podemos ver que Yowsup viene con varas demos y uno muy importante es el EchoClient, el cual cuando lo ejecutamos, podemos enviar un mensaje a de Whatsapp hacia el número que estamos usando con Yowsup. Pues crearemos una nueva carpeta dentro de la carpeta demos y se llamara readclient.

folder

Bueno el código con el que haremos nuestro cliente será el que se usa en el demo EchoClient pero lo modificaremos un poco, quedando así

ReadClient-Yowsup

El código es el siguiente:


import os
from yowsup.layers.interface import YowInterfaceLayer, ProtocolEntityCallback

class ReadEchoLayer(YowInterfaceLayer):

@ProtocolEntityCallback(“message”)
def onMessage(self, messageProtocolEntity):

if messageProtocolEntity.getType() == ‘text’:
self.onTextMessage(messageProtocolEntity)
elif messageProtocolEntity.getType() == ‘media’:
self.onMediaMessage(messageProtocolEntity)

self.toLower(messageProtocolEntity.ack())
self.toLower(messageProtocolEntity.ack(True))

@ProtocolEntityCallback(“receipt”)
def onReceipt(self, entity):
self.toLower(entity.ack())

def onTextMessage(self,messageProtocolEntity):
# just print info
print(“Llego el mensaje %s” % (messageProtocolEntity.getBody()))
os.system(“notify-send ‘Mensaje de Whatsapp’ ‘{mensje}'”.format(mensje=messageProtocolEntity.getBody()))
os.system(“espeak -ves ‘%s'” % (messageProtocolEntity.getBody()))

def onMediaMessage(self, messageProtocolEntity):
# just print info
if messageProtocolEntity.getMediaType() == “image”:
print(“Echoing image %s to %s” % (messageProtocolEntity.url, messageProtocolEntity.getFrom(False)))

elif messageProtocolEntity.getMediaType() == “location”:
print(“Echoing location (%s, %s) to %s” % (messageProtocolEntity.getLatitude(), messageProtocolEntity.getLongitude(), messageProtocolEntity.getFrom(False)))

elif messageProtocolEntity.getMediaType() == “vcard”:
print(“Echoing vcard (%s, %s) to %s” % (messageProtocolEntity.getName(), messageProtocolEntity.getCardData(), messageProtocolEntity.getFrom(False)))

Como se muestra en el código hacemos un import os para poder ejecutar los comandos de linux desde python :D. En el ejemplo original de EchoClient contiene la linea

self.toLower(messageProtocolEntity.forward(messageProtocolEntity.getFrom()))

Para efectos de nuestro cliente borraremos esa linea, ya que esta es la que se encargar de forwardar el mensaje que recibio el cliente.

Modificaremos la función onTextMessage y quedará de la siguiente manera

onTestMessage

Donde la Primera línea imprime el pantall un mensaje mostando el contenido del mensaje que llegó, en la segunda línea ejecutamos la funcion os.system() y le pasamos el comando de linux a ejecutar, en este caso notify-send para lanzar una notificación en el escritorio.

TestMensaje

La tercera línea tambien ejecuta la función os.system() el cual para como parametro un comando para que la consla hable, un tipo loquendo, pero le pasamos el contenido que llego de el mensaje Whatsapp para que el sistema lo lea, un tipo Jarvis ;).

Está vivo, vivooooo !!!

Vídeo demo.

Bueno, con esto se puede realizar unnnnnn chorro de cosas, una implementación genial sería tcp over Whatsapp para tener un proxy en todos lados :D, pero bueno eso es más elavodaro. Espero que les sea util :D.

 

Get every day in a month dynamically MySQL – Stored Procedure

I share one MySQL Stored Procedure for every day of a month from a date.

At the moment I dont have a wordpress plugin for compatir code and is displayed in a nice way: D, so I share a picture of the Stored Procedure and below the Stored Procedure code itself.

dias_del_mes_dinamico

The logic is simple procedure, the stored parameter expects a start date month entry ‘2000-02-01’ format. Considering the input parameter must know what is the last day of that month, for which we use the function LAST_DAY('2000-02-01') returns us to ‘2000-02-28’. Knowing what the initial day and the final day we can go all dates that month and store in a temporär table, why a temporary table? Because YOLO: D.

Stored code here: D


#-----------------------------INICIO-------------------------------------------------
CREATE DEFINER=`root`@`localhost` PROCEDURE `dias_mes_dinamico`(IN `dia_entrada` DATE)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
/*
Author: Rafael Vázquez
Date: 2015-08-01
Description: Procedure to get every day of the month
*/

#Declaration of variables
DECLARE var_inicio, var_final INT DEFAULT 0;
DECLARE fecha_Inicial,fecha_Final, fecha_incremento DATE;

#AVariable initializations
SET fecha_Inicial = dia_entrada;
SET fecha_Final= LAST_DAY(fecha_Inicial);
SET var_inicio = EXTRACT(DAY FROM fecha_Inicial);
SET var_final = EXTRACT(DAY FROM fecha_Final);
SET fecha_incremento = fecha_Inicial;

#Create a temporaty table to store every day of a month
CREATE TEMPORARY TABLE examen.tmp_dias_mes(
id INT,
dia_mes DATE
);

#Get every day of the month
WHILE var_inicio <= var_final DO
INSERT INTO examen.tmp_dias_mes (id,dia_mes) values(var_inicio, fecha_incremento);
SET fecha_incremento = DATE_ADD(fecha_incremento, INTERVAL 1 DAY);
SET var_inicio = var_inicio + 1;
END WHILE;

#Show the temporary table
SELECT * FROM examen.tmp_dias_mes;

#Drop the temporary table
DROP TABLE examen.tmp_dias_mes;
END
#—————————–FIN————————————————-

Well, you can still optimize this process, and we could validate that a date is valid and not to exploit the world when we pass February 30th: D and catch any exception.

I hope you find it useful. Regards.

P.D. Linux Rules!

Obtener los días de un mes dinámicamente en MySQL – Stored Procedure

Comparto un Stored Procedure en MySQL para obtener todos los días de un mes a partir de una fecha.

Por el momento no tengo algún plugin para wordpress para compatir código y que se muestre de una manera bonita :D, así que les comparto una imagen del Stored Procedure y más abajo el código del Stored Procedure en sí.

dias_del_mes_dinamico

La lógica del procedure es sencilla, el stored espera recibir un parametro fecha de inicio del mes como entrada con formato ‘2000-02-01’. Tomando en cuenta el parametro de entrada debemos saber cual es el ultimo día de ese mes, para lo cual utilizamos la función LAST_DAY('2000-02-01') que nos retorna ‘2000-02-28’. Sabiendo cual es el día Inicial y el día Final podemos recorrer todas las fechas ese mes y guardarlas en una tabla temporar, ¿Por qué una tabla temporal? pues por que YOLO :D.

Aquí el código del Stored 😀


#-----------------------------INICIO-------------------------------------------------
CREATE DEFINER=`root`@`localhost` PROCEDURE `dias_mes_dinamico`(IN `dia_entrada` DATE)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
/*
Author: Rafael Vázquez
Date: 2015-08-01
Description: Procedure to get every day of the month
*/

#Declaration of variables
DECLARE var_inicio, var_final INT DEFAULT 0;
DECLARE fecha_Inicial,fecha_Final, fecha_incremento DATE;

#AVariable initializations
SET fecha_Inicial = dia_entrada;
SET fecha_Final= LAST_DAY(fecha_Inicial);
SET var_inicio = EXTRACT(DAY FROM fecha_Inicial);
SET var_final = EXTRACT(DAY FROM fecha_Final);
SET fecha_incremento = fecha_Inicial;

#Create a temporaty table to store every day of a month
CREATE TEMPORARY TABLE examen.tmp_dias_mes(
id INT,
dia_mes DATE
);

#Get every day of the month
WHILE var_inicio <= var_final DO
INSERT INTO examen.tmp_dias_mes (id,dia_mes) values(var_inicio, fecha_incremento);
SET fecha_incremento = DATE_ADD(fecha_incremento, INTERVAL 1 DAY);
SET var_inicio = var_inicio + 1;
END WHILE;

#Show the temporary table
SELECT * FROM examen.tmp_dias_mes;

#Drop the temporary table
DROP TABLE examen.tmp_dias_mes;
END
#—————————–FIN————————————————-

Bueno, pues todavía se puede optimizar más este Procedimiento, ya que podriamos validar que sea una fecha valida y que no explote el mundo cuando le pasemos un 30 de Febrero 😀 y cachar cualquier excepción.

Espero que sea de utilidad. Saludos.

P.D. Linux Rules!