Entradas

Clave WPA2 por Defecto de equipos TotalPlay (Huawei HG8245H)

La clave WPA2 por defecto de equipos Huawei HG8245H Instalados por total play esta dada por parte del SSID (Nombre de la red Wireless) y parte de la MAC Address

Donde la MAC es: XX:XX:XX:AB:CD:XX
y el SSID es:

Totalplay-EFGH

La clave para este caso ficticio es: ABCDEFGH

Este un caso especifico al parecer no se cumple para todos los router, estoy checando que el equipo de Websec ya tiene el algoritmo en su pagina de Routerpwn

Saludos.

FIFO en C Primero en Entrar, primero en salir, Cola o Fila

Imagen
No es lo mas eficiente, hay muchas cosas se podrian mejorar, en especifico la forma en la que se organizan  el arreglo de elementos actuales en la Fila,  sin embargo funciono para el proposito.

Yo se que la mayoría de estas estructuras ya están implementadas. Pero no se puede decir que eres programador si no sabes implementarlas por tu cuenta.



Codigo:

/*
 El tipo de dato se puede cambiar dependiendo de la implementacion que se le quiera dar, tambien se tendrian que cambiar los tipos de datos devueltos por las funciones
 En este caso yo queria un arreglo de apuntadores char* por lo cual el contenedor es char**
 */


typedef struct str_queue    {
    char **queue;
    int len;
}Queue;


Queue *create_queue();
void free_queue(Queue *q);
char *de_queue(Queue *q);
void en_queue(Queue *q, char *ptr);


Queue *create_queue()    {
    Queue *r = malloc(sizeof(struct str_queue));
    r->len = 0;
    r->queue = NULL;
    return r;
}

void free_queue(Queue *q)    {
    if(q)    {
        if(q->queue)
           …

C socket siempre me devuelve -1 [Winsock]

El problema de este post es que al momento de programar un miniservidor WEB

Este me marcaba lo siguiente:


Valor -1
socket: No error

El codigo de prueba es:

#include<winsock2.h>
#include<stdio.h>
#include<errno.h>

int main()    {
    int s;
    if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        printf("Valor %i\n",s);
        perror("socket");
        return 1;
    }
}

Se compila de la siguiente manera:

gcc -o test.exe test.c -lws2_32 

Al parecer los pendejos de Micro$oft siempre saliendose de lo estandar para poder utilizar socket, necesitas inicializar el Winsock de la siguiente manera.

#include<winsock2.h>
#include<stdio.h>
#include<errno.h>

WSADATA *wsaData;

int main()    {
    int s,iResult;
    wsaData = calloc(1,sizeof(WSADATA));
    iResult = WSAStartup(MAKEWORD(2,2), wsaData);
    if (iResult != 0) {
        printf("WSAStartup failed: %d\n", iResult);
        return 1;
    }
    if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
    …

¿Queda algo en el Buffer de Entrada stdin?

Imagen
Muy buen dia aun que la pregunta en el titulo de este post parece una pregunta totalmente N00b. No lo es.

El objetivo de post Deja de utilizar fflush
Código fflush(stdin);
Yo no lo utilizo, o por lo menos trato de nunca recomendarlo, solo que ayer se lo recomendé a alguien y no me convence su implementación. 

La verdad es que quiero dar por terminado el tema de la función fflush para el Buffer de entrada.

Todo esto en Lenguaje C 

La idea de este post viene de preguntas hechas en el foro similares a ¿Como filtrar todo tipo de datos de entrada en un programa?

Revisando algunas links en internet me encuentro con:
https://es.stackoverflow.com/questions/82431/saber-si-el-b%C3%BAfer-de-entrada-stdin-est%C3%A1-vac%C3%ADo-en-c-est%C3%A1ndar
http://man7.org/linux/man-pages/man3/fflush.3.html
http://www.cplusplus.com/reference/cstdio/fflush/

Sin embargo en todos ellos hablan de que el comportamiento de fflush para el stdin es Inesperado, por lo cual repetidamente dicen que no se debe de usar.

¿Cual …

full between wire connectors

Imagen

Mini grafo con nodos aleatorios

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

typedef struct str_nodo *Nodo;

typedef struct str_nodo    {
    int valor;
    Nodo *nodos;    //Nodos con los que esta unido el nodo actual
    int n_nodos;
}*Grafo;

Nodo crear_nodo(int valor);
void agregar_nodo(Nodo inicial,Nodo final);    //Esta funcion une ambos nodos

int main()    {
    int i,j;
    Grafo grafo,temp;
    srand(time(NULL));
    grafo  = crear_nodo(rand());
    i = 0;
    while(i < 1000000)    {
        agregar_nodo(grafo,crear_nodo(rand()));
        i++;
    }

    i = 0;
    while(i < 1000)    {
        temp = grafo->nodos[rand() % grafo->n_nodos];
        j = 0;
        while(j < 200)    {
            agregar_nodo(temp,crear_nodo(rand()));
            j++;
        }
        i++;
    }
    getc(stdin);// Solo para que no se cierre el programa pero no me gusta usar getc
    return 0;  
}

Nodo crear_nodo(int valor)    {
    Nodo nodo;
    nodo = calloc(1,sizeof(struct str_nodo));
    nodo->valor = valor;
    nodo-…

Plantilla de para Capturar Datos y Mostrarlos

Usando estructura de datos y memoria dinamica para los datos almacenados.

Descarga plantilla_capturar_mostrar_datos.c

/*
    Twitter: @albertobsd
    email: alberto.bsd@gmail.com   

    Buscame tambien en:
    web:        https://programaciontrabajosescolares.blogspot.com/
    e-mail:     ProgramacionTrabajosEscolares@gmail.com
    facebook:    https://www.facebook.com/ProgramacionTrabajosEscolares
*/

#include<stdio.h>    //Funciones printf, fgets
#include<stdlib.h>    //realloc
#include<string.h>    //strcspn
#include<ctype.h>    //tolower

#define MAX_LEN_ALFANUMERICA_1 100
#define MAX_LEN_ALFANUMERICA_2 50
#define MAX_LEN_ALFANUMERICA_3 20

typedef struct plantilla_struct    {
    char variable_alfanumerica_1[MAX_LEN_ALFANUMERICA_1];
    char variable_alfanumerica_2[MAX_LEN_ALFANUMERICA_2];
    char variable_alfanumerica_3[MAX_LEN_ALFANUMERICA_3];
    int variable_entera_1;
    int variable_entera_2;
    int variable_entera_3;
    float variable_flotante_1;
}TIPO;

int funcion_ingreso_…

¿He liberado todos los apuntadores?

Para aquellos que les guste programar con memoria dinamica en C, frecuentemente se encontraran en ocasiones tener la sensacion de no haber liberado un apuntador, esto puede ser cuando tambien trabajamos con arreglos (longitud variable) de apuntadores.

Para facilitar esta tarea se pueden programa sus propias implementaciones que lleven un conteo de cuantos apuntadores se han creado y de cuantos se han liberado.

Si al final del programa el resultado es 0, entonces pueden estar tranquilos de que todo se libero correctamente.

Esta sencilla implementacion, solo lleva dicho conteo, NO lleva conteo de memoria utilizada y/o control de cuales apuntadores ya fueron liberados, eso ya es harina de otro costal.


Codigo:

#include<stdlib.h>

unsigned int N_ptr = 0;

unsigned int test_result()    {
    return N_ptr;
}

void *test_realloc(void *ptr,size_t size)    {
    void *ptr_new = NULL;
    ptr_new = realloc(ptr,size);
    if(ptr == NULL && ptr_new != NULL){
        N_ptr++;
    }
    return p…

Me hackearon - Investigando un intento de Extorción

Imagen
Recientemente revisando el SPAM encontré un correo interesante.   No me juzguen el SPAM a veces tiene cosas interesantes.

Básicamente el correo indicaba que Yo había sido hackeado, obviamente un intento de estafa, decía tener datos privados de navegación y fotos desde la webcam del sistema, adicionalmente un supuesto virus/troyano/bomba lógica que automáticamente estallaría en 2 dias apartir del momento en el que abri el correo. Indicaba que queria recibir 848 Dolares en Bitcoin y dejaba una dirección.
Código: <Bloqueado por Google>
Lo que me sorprendió al investigar un poco mas es que la cuenta, si a recibido depósitos de Bitcoin en días recientes.

No se como hay gente que si cae en estas estafas

Actualmente la cuenta tiene un total de
Código: 0.36282302 BTC
Pero a recibido mas, ya que a hecho retiros parciales, movimientos totales por:
Código: 1.67353487 BTC
Otra cuenta de Bitcoin usando el mismo esquema, posiblemente la misma persona

Sin movimientos a la fecha

Obviamente yo no he sido…

Efectos retro con Canvas HTML5

Imagen
Personalmente si hago algo me gusta automatizarlo y hacerlo desde 0, actualmente estoy haciendo algunos videos, y para ello planeo utilizar efectos retro. Muchos de los cuales puedo realizar y animar mediante el eso de un Canvas de HTML5.




Elementary - Recopilación Hilarante

Imagen
Elementary es una serie que me engancho desde el primer capitulo.La personalidad de Sherlock interpretada por Jonny Lee Miller le da un toque cómico pero sin perder su seriedad.



Realmente los escritores hacen muy buen trabajo buscando haciéndonos reír, aquí voy a ir dejando una lista de los mejores chistes que he logrado encontrar dentro de la serie.
Existe una cancion que me atrae como detective, es un misterio sobre perros y quien los dejo salir pic.twitter.com/CTnKMfbOor — Alberto (@albertobsd) 6 de noviembre de 2018

Bondia de Cetesdirecto - ¿Como funciona?

Imagen
Realmente me he vuelto fan del instrumento de inversión llamado Bondia, ofrecido como método de liquides de la pagina de Cetesdirecto a sus usuarios.

Bondia antes conocido como nafdia, es un instrumento de Liquides diara de Lunes a viernes, esto es puede ser retirado cualquier dia de entre semana, realizando la orden en linea y se entrega el mismo dia hábil si la instrucción fue girada antes de las 13 hrs.

Bondia un nombre mas amigable que nafdia podría derivarse de la palabra Bonos de un día, esto es cada dia tienen liquidez y cada día generan un interés para el poseedor de estos títulos de inversión.

Actualmente al dia de hoy según esta captura de la pagina principal de Cetesdirecto los títulos general un rendimiento anual del 7.69%