Online

  • Punto Visitantes: 180
  • Punto Oculto(s): 0
  • Punto Usuarios: 0

No hay usuarios en linea.

Board Stats

  • stats Total de Usuarios: 22307
  • stats Total de Mensajes: 105593
  • stats Total de Temas: 10012
  • stats Total de Categorías: 15
  • stats Total de Foros: 73
  • stats Máx. usuarios conectados (simultáneamente): 818

Ultimo registro





Autor Tema: PIN WPS conceptos básicos  (Leído 9041 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado maripuri

  • Master
  • Usuario
  • ******
  • Mensajes: 22303
  • Mari
    • WirelessWindows
PIN WPS conceptos básicos
« en: Septiembre 07, 2014, 01:00:51 am »


<a href="http://www.youtube.com/watch?v=WL46YPJbItk" target="_blank">http://www.youtube.com/watch?v=WL46YPJbItk</a>





Abrimos este tema para debatir y tratar de despejar todas las dudas acerca de que es un PIN (WPS) y todo lo referente a el.. a medida que la participación lo requiera veremos entre tod@s de profundizar mas en el tema.

Para comenzar debemos saber que WPS (
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
) no es un mecanismo de seguridad en si, es un estándar creado en 2007 y promovido por la
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
con el objeto de simplificar la configuración y/o conexión a una red segura minimizando la intervención del usuario en entornos domésticos y de pequeñas oficinas (ver vídeo y ref). El
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
(de las siglas en inglés Personal Identification Number) es un número de identificación personal, un tipo de contraseña que en el caso que nos ocupa (WPS) tiene una longitud de 8 caracteres numéricos.

A grandes rasgos el PIN en si consta de dos partes (que a su vez se pueden sub-dividir cada una de ellas en otras cuatro)


PIN WPS:

http://s25.postimg.org/gcwowv3ov/sshot_2014_09_03_18_37_24.jpg
PIN WPS conceptos básicos



La comunicación entre el AP y el cliente se establece de la forma siguiente:

http://s25.postimg.org/9ayrao033/sshot_2014_09_03_18_39_48.jpg
PIN WPS conceptos básicos




Según establece la norma de Wi-Fi Alliance un PIN (WPS) consta de 8 dígitos numéricos de los cuales el último de ellos (checksum) se calcula a partir de una regla establecida, es decir a partir de los 7 primeros dígitos del PIN (lo que conocemos por regla checksum). Ahora bien, en algún determinado AP (pocos) podemos encontrarnos como PIN un nº de 8 dígitos cuya cadena numérica no cumple con la norma o regla checksum.. son pocos casos pero tenemos constancia de ello y es algo que además no debería ser así. En otras palabras, estos AP "se saltan a la torera" la norma establecida por la Wi-Fi Alliance.

Herramientas para Windows como JumpStart for Wireless o TP-Link QSS Utility cumplen con dicha norma y por tanto no admiten como PIN válido una cadena de 8 dígitos numéricos que no cumpla la regla comentadada anteriormente, de ahí que cuando se introduce como PIN una cadena de este tipo cuyo último dígito no se corresponde como checksum de los siete primeros devuelven un mensaje de error o PIN inválido.. 

Para linux hasta hace poco no existiía constancia de herramientas específicas (gestores de conexión) con las que establecer una conexión via WPS por lo que Coeman76 desarrolló hace poco
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
herramienta que incluso contempla que el PIN no cumpla con la regla checksum a la hora de establecer la conexión.

También y para "entendernos" podemos decir que existen dos clases o tipos de PIN WPS a los que denominamos de manera coloquial PIN genérico y PIN NO genérico y así diferenciarlos entre si.

PIN genérico:  Digamos que es aquel que no es exclusivo para un router en concreto, es decir.. podemos constatar que existen PIN que son usados por igual en distintos routers como por ejemplo puede ser el consabido PIN 12345670 el cual está presente en varias marcas y modelos de routers como todos sabemos ya. En otras palabras: puede existir y existen distintos puntos de acceso cuyo PIN por defecto es 12345670 y se puede establecer la conexión en todos ellos usando este PIN (de ahí el nombre de genérico) ya que todos ellos lo utilizan por igual de forma predeterminada (lo cual no deja de ser un gravísimo fallo de seguridad).

PIN NO genérico: Este tipo de PIN en cambio se genera a partir de un algoritmo como los conocidos (u otros desconocidos) para "tal" router en concreto. Por tanto este PIN XXXXXXXX serviría para conectarse a lampiwebAP y solo a el, al menos en un principio.. puesto que las posibilidades que resultan a partir de una cadena de 7 dígitos que cumpla con la regla checksum son limitadas.

Para realizar los cálculos del checksum la fórmula (en realidad dos, una para calcular y otra para validar) es la siguiente:

The formula of calculating checksum:

Código: [Seleccionar]
int ComputeChecksum(unsigned long int PIN)
Código: [Seleccionar]
{
unsigned long int accum = 0;
PIN *= 10;
accum += 3 * ((PIN / 10000000) % 10);
accum += 1 * ((PIN / 1000000) % 10);
accum += 3 * ((PIN / 100000) % 10);
accum += 1 * ((PIN / 10000) % 10);
accum += 3 * ((PIN / 1000) % 10);
accum += 1 * ((PIN / 100) % 10);
accum += 3 * ((PIN / 10) % 10);
int digit = (accum % 10);
return (10 - digit) % 10;
}


The formula of validating the checksum:

Código: [Seleccionar]
bool ValidateChecksum(unsigned long int PIN)
Código: [Seleccionar]
{
unsigned long int accum = 0;
accum += 3 * ((PIN / 10000000) % 10);
accum += 1 * ((PIN / 1000000) % 10);
accum += 3 * ((PIN / 100000) % 10);
accum += 1 * ((PIN / 10000) % 10);
accum += 3 * ((PIN / 1000) % 10);
accum += 1 * ((PIN / 100) % 10);
accum += 3 * ((PIN / 10) % 10);
accum += 1 * ((PIN / 1) % 10);
return (0 == (accum % 10));
}

ref.
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.


Posiblemente estas fórmulas a muchos "les suene a chino" pero pueden ser explicadas o comentadas de una manera senciilla y ya de paso publicar una herramienta (compatible 100% con Wine / linux) que nos simplifica en momento dado la tarea a la hora de realizar las operaciones "a mano".


Calc_Checkusm 'GUI


http://s25.postimg.org/kyo7rgzu7/sshot_2014_09_03_14_49_33.jpg
PIN WPS conceptos básicos



Para realizar los cálculos (que son muy sencillos como veréis) podemos utilizar papel & lapiz o una calculadora siguiendo la siguiente plantilla:

PLANTILLA

3x  =
1x  =
3x  =
1x  =
3x  =
1x  =
3x  =
           +
--------------

resultado: X  (Si resultado es de dos o tres cifras nos quedamos con la cifra de la unidades)

ejemplo: resultado 103 nos quedamos con el 3, resultado 87 con el 7

10 - resultado = checksum (Si resultado es de dos cifras nos quedamos con la cifra de la unidades)

ejemplo: resultado 89 nos quedamos con el 9

PIN = cadena 7 + checksum

Bien, vamos pues a pasar a ejemplos prácticos (sin usar la GUI eh!)

El 1º de ellos será con el PIN 12345670 (donde 0 es el 8º dígito o dígito checksum el cual 'desconocemos' y vamos a tratar de obtener) así que precisaremos de la cadena inicial de 7 dígitos del PIN y ordenaremos estos en la plantilla como se muestra mas adelante y después realizaremos las operaciones hasta obtener el total.

cadena inicial 1234567

PLANTILLA

3x 1 =
1x 2 =
3x 3 =
1x 4 =
3x 5 =
1x 6 =
3x 7 =
           +
--------------
total:

realizamos las operaciones..

3x 1 =  3
1x 2 =  2
3x 3 =  9
1x 4 =  4
3x 5 = 15
1x 6 =  6
3x 7 = 21
           +
--------------
total:   60

Citar
(Si resultado es de dos o tres cifras nos quedamos con las unidades) - ejemplo: resultado 103 nos quedamos con el 3, resultado 87 con el 7

Como el resutado es 60  nos quedamos con el 0

10 - 0 = 10

Citar
(Si resultado es de dos cifras nos quedamos con la cifra de la unidades) - ejemplo: resultado 89 nos quedamos con el 9

Como el resultado es 10 nos quedamos con el 0

0 es el 8º dígito o checksum para la cadena 1234567 por lo tanto el PIN es 12345670

Otro ejemplo "rapiidíllo": PIN 11866428

3x 1 =  3
1x 1 =  1
3x 8 = 24
1x 6 =  6
3x 6 = 18
1x 4 =  4
3x 2 =  6
           +
--------------
          62

10 - 2 = 8

8 es el checksum por tanto PIN 11866428


Como ya habéis realizado las operaciones "a mano" aquí os dejo
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
de Calc_Checkusm 'GUI pero no olvidéis que la herramienta es para simplificar la tarea en un momento dato--  lo importante es apender y tener claro que es el dígito checksum de un PIN WPS y como se obtiene entre otras cosas.

« Última modificación: Junio 24, 2015, 18:06:00 pm por maripuri »
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
 
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
No preguntes sobre temas del foro por privado, participa en el.

Desconectado cadelo

  • Moderador Global
  • Usuario
  • *****
  • Mensajes: 1707
  • Long road out of Eden
Re:PIN WPS conceptos básicos
« Respuesta #1 en: Septiembre 07, 2014, 01:40:46 am »
Muchas gracias.  :)

Muy clara, comprensible, eficaz y amena la exposición sobre lo que es un PIN, y sobre todo, como se calcula para que cumpla la regla checksum, como de costumbre, sobresaliente.

Desconectado Espofet

  • Usuario
  • *
  • Mensajes: 12
Re:PIN WPS conceptos básicos
« Respuesta #2 en: Enero 08, 2016, 00:27:58 am »
Muchas gracias.  :)

Muy clara, comprensible, eficaz y amena la exposición sobre lo que es un PIN, y sobre todo, como se calcula para que cumpla la regla checksum, como de costumbre, sobresaliente.

SI ! grande!

Desconectado juaxix

  • Usuario
  • *
  • Mensajes: 3
Re:PIN WPS conceptos básicos
« Respuesta #3 en: Abril 19, 2016, 20:55:48 pm »
OK, pues así quedaría el programa en c++
Código: [Seleccionar]

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <io.h>
#include <fcntl.h>
#include <iomanip>

int ComputeChecksum(unsigned long int PIN)
{
unsigned long int acum = 0;
PIN *= 10;
acum += 3 * ((PIN / 10000000) % 10);
acum += 1 * ((PIN / 1000000) % 10);
acum += 3 * ((PIN / 100000) % 10);
acum += 1 * ((PIN / 10000) % 10);
acum += 3 * ((PIN / 1000) % 10);
acum += 1 * ((PIN / 100) % 10);
acum += 3 * ((PIN / 10) % 10);
int digit = (acum % 10);
return (10 - digit) % 10;
}

int wmain(int argc, wchar_t* argv[])
{
_setmode(_fileno(stdout), _O_U16TEXT);
int PIN = 0;
std::wcout<<"ComputePIN 2016"<<std::endl;
std::wcout << L"Introduce los 6 últimos caracteres (XX,YY,ZZ)\n de la dirección MAC(HEX)> --:--:--:XX:YY:ZZ\n sin los dos puntos\n: ";
scanf("%x",&PIN);
std::wcout<<"La Dirección MAC Address(HEX) es: ------"<< std::hex<<PIN<<"\n";
std::wcout<<"WPS PIN calculado: "<< std::dec<< PIN%10000000<<ComputeChecksum(PIN%10000000);
getch();
return 0;
}


Por ejemplo, para una MAC que acabe en 76:70:B7, daría WPS PIN calculado: 77621030.
Un duda que tengo, en el caso en que la ESSID sea 70B6 y la BSSID acabe en 7670B7, ¿esto lo hacen por despistar?, en este caso, el algoritmo no funcionaría, no?
« Última modificación: Abril 19, 2016, 21:04:25 pm por juaxix »

Desconectado maripuri

  • Master
  • Usuario
  • ******
  • Mensajes: 22303
  • Mari
    • WirelessWindows
Re:PIN WPS conceptos básicos
« Respuesta #4 en: Abril 19, 2016, 22:04:50 pm »
Cita de: juaxix
OK, pues así quedaría el programa en c++
No se C++ pero el código que muestras es
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
portado a C++

El hilo no va sobre un algoritmo o aplicación en concreto sino sobre los conceptos (básicos) acerca de que es un PIN (WPS).

Cita de: juaxix
Un duda que tengo, en el caso en que la ESSID sea 70B6 y la BSSID acabe en 7670B7, ¿esto lo hacen por despistar?, en este caso, el algoritmo no funcionaría, no?
Nos estamos desviando del tema pero igualmente pareces no conocer como funciona ni ComputePIN de ZhaoChunsheng ni el código que has publicado en C++   ..ignoro si lo has escrito tu pero si te fijas verás que ComputePIN se basa en los tres últimos pares del BSSID por tanto el ESSID en este caso no tiene nada que ver (ojo, el algoritom original ComputePIN de Zhao, en otros si).

saludos.
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
 
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
No preguntes sobre temas del foro por privado, participa en el.

Desconectado juaxix

  • Usuario
  • *
  • Mensajes: 3
Re:PIN WPS conceptos básicos
« Respuesta #5 en: Abril 19, 2016, 22:18:35 pm »
Ok, me pareció buena idea tener el código portado a C++11 para estudiar y practicar sobre él, por aportar algo al hilo.
Lo he escrito basándome en lo que has puesto por aquí y el ejemplo de computepin de c, y sí, entiendo que sólo se usa la BSSID (se lee en hexadecimal los 3 últimos valores de esta), y la duda simplemente es porque muchos fabricantes usan los 2-4 últimos valores del BSSID en su ESSID por defecto, es una pregunta relacionada con la forma en que vienen por defecto las configuraciones asociadas al pin, por lo que está conectado de alguna manera, mi intención no es desviar la atención del hilo ni marcarme un punto por escribir código sino aportar algo ya que el foro me ha ayudado a mí.
gracias.

Desconectado maripuri

  • Master
  • Usuario
  • ******
  • Mensajes: 22303
  • Mari
    • WirelessWindows
Re:PIN WPS conceptos básicos
« Respuesta #6 en: Abril 20, 2016, 19:00:40 pm »

juaxix, me parece perfecto que portes un código a otro lenguaje y lo quieras compartir, pero comprederás que ese no es el tema aquí..  tal vez si en el propio hilo de ComuptePIN ya que es ComuptePIN portado a C++ pero este tema no trata de ComuptePIN ni de un algoritmo concreto con el que deducir un PIN sino de que es y de que se compone un PIN entre otras cosas..

Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
 
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
No preguntes sobre temas del foro por privado, participa en el.

Desconectado gabrielazul07

  • Usuario
  • *
  • Mensajes: 5
Re:PIN WPS conceptos básicos
« Respuesta #7 en: Junio 01, 2016, 18:47:42 pm »
a mi me suena a chino xD teniendo la mac ejemplo 09:97 etc se puede calcular el pin?

Desconectado maripuri

  • Master
  • Usuario
  • ******
  • Mensajes: 22303
  • Mari
    • WirelessWindows
Re:PIN WPS conceptos básicos
« Respuesta #8 en: Junio 01, 2016, 20:52:07 pm »

Si quieres aprender algo tienes un montón de temas en el foro donde leer, este tema trata sobre la "base", sobre que es un PIN..  no es ninguna herramienta hacking, el asunto del tema lo dice bien claro:

Citar
PIN WPS conceptos básicos
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
 
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
No preguntes sobre temas del foro por privado, participa en el.