Crack-wifi.com FORUM

LE FORUM DU SITE

Wifi, Backtrack, crack WEP et WPA...

Vous n'êtes pas identifié(e).  

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

#1 30-01-2013 17:42:59

antares145
Membre d'honneur
Inscription : 29-09-2009
Messages : 5 199
Site Web

Clés WPA et Complexité

Ce sujet est un fork du topic Retravailler des clés Livebox, pour plus de clarté. Je recopie ici les passages importants.

antares145 a écrit :

Second point que je voulais partager avec vous : la complexité de Kolmogorov. En gros c'est un "score" qu'obtient une chaîne de caractère en fonction de sa complexité (les répétitions, typiquement). Par exemple, la chaîne AAAAAB peut être décrite comme 5 A puis 1 B => complexité faible. En pratique, c'est utilisé pour la compression : plus une chaîne a une complexité faible, mieux elle se compresse.
Voilà une implémentation pratique (et naïve) :

#!/usr/bin/env python2
# -*- coding:utf-8 -*-
# Ref. http://lorenzoriano.wordpress.com/2010/07/09/quantifying-the-wow-effect-of-a-robot-part-i/

from zlib import compress
from numpy import binary_repr
from sys import argv

PRINT_ENTROPY=1
def kolmogorov(s):
	l = float(len(s))
	compr = compress(s)
	c = float(len(compr))
	return c/l
	# en gros on compare la longueur de la chaîne à celle de la chaîne compressée
	# plus la compression est bonne, plus la complexité est faible

def main(*string):
	for key in string:
#		entropy=kolmogorov(binary_repr(int(key,16)))	# représentation binaire
		entropy=kolmogorov(key)		# représentation hexadécimale directe
		if PRINT_ENTROPY:
			print(entropy)
                # filtrer les clés dont l'entropie est dans un certain intervalle
		elif entropy > 0.39 and entropy < 0.47:
			print(key)

main(*argv[1:])

Pour tester, on copie ce code dans un fichier qu'on appelle "kolmogorov.py", on le rend exécutable (chmod +x kolmogorov.py) puis on "pipe" du texte à travers :

echo AAAAAAAAAAAAAAAAAAAAAAAAAA | xargs ./kolmogorov.py
# Le "xargs" est nécessaire pour que ça fonctionne aussi avec un fichier de clés : 
cat liste_clés.txt | xargs ./kolmogorov.py

Vous noterez qu'il y a deux lignes de calcul d'entropie (dont une est commentée). C'est une question de convention : ou bien on analyse la complexité de la séquence hexadécimale (la clé), ou bien on analyse sa représentation binaire (1/0). Pourquoi j'ai choisi cette convention plutôt que l'autre ? Parce que le résultat est intéressant...
Grâce aux données de Koala, je dispose d'une liste de 22 clés Inventel et 64 clés Sagem. Et quand je calcule leurs complexités (en version hexa), je trouve les résultats suivants :

54/64 clés Sagem (84%) ont une complexité de 1.30769230769
21/22 clés Inventel (95%) ont une complexité de 1.30769230769

Étrange non ? smile Quand on fait le même test avec l'autre convention (représentation binaire), les résultats sont moins flagrants (15% au mieux de valeurs similaires), ça a l'air plus distribué.
Cette valeur de 1.30769230769 semble être une espèce de maximum, je n'ai pas réussi à générer de chaîne avec une complexité plus élevée. Mais au moins, ça nous donne un intervalle dans lequel doit se trouver la complexité de nos clés, ce qui permet de garder ou rejeter un candidat (parce qu'il a trop de répétitions par exemple) wink

Après, on peut s'amuser à générer un gros paquet de clés (via Crunch ou un LiveboxGenerator) et les faire passer par ce "filtre" pour sortir un dico qui tient la route, mais j'ai peur que l'implémentation en python soit trop lente pour ça. Enfin, qui sait, si on se répartit le boulot...

Mikaye a écrit :

Voila quelques indices de Kolmogorov :
Clés réelles :

A7CE123FE66C42F294269766C7-1.23076923077
17721DE3A3914271F963F69342-1.30769230769
5CCE17A2474236E5A929A41E9A-1.30769230769
433AA3DAD65932C635212E49F9-1.30769230769
639A7751F97C15CAD5CA3D64F2-1.23076923077
31D672F9C5F747AC3A1FEA1ECC-1.30769230769
6E22A71129612C41AA114C6C3D-1.30769230769

Clés aléatoires (sans 0, 8, B mais ca change rien) :

DD2599F1E66433CAF23EEE6FF6-1.30769230769
266394C3E3D4E1F31C1F39D597-1.23076923077
76E37179221132AD5D6D135CF4-1.30769230769
7251AE969E44F56373DFE252AE-1.30769230769

On constate donc qu'il y a deux cas (même dans les clés réelles) : 1.30769230769 et 1.23076923077

vances1 a écrit :

Parfait, il faudrait avoir le stock complet de Koala afin de récupérer toutes les complexités possible.

J'imagine que si on à pas plus de 4-5 complexités différente, le dico vas perdre un maximum de poids smile

Moin d'un giga ? ^^

EDIT

Il faudrait pouvoir rentrer n'importe qu'elle type de clé au livedico, pour qu'il s'occupe tout seul des complexités.
Par fichier .txt ou copier collé serais un must.

Mikaye a écrit :

Certe ca réduirait les possibilités mais il en reste un bon paquet je pense ! Ce filtre peut surtout servir dans le cas d'une génération incrémentielle. Dans le cas d'une génération aléatoire, ca réduit rien du tout car la complexité est la même que ca soit une vrai clé ou de l'aléatoire (voir mon post précédent)

Hors Ligne

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

#2 30-01-2013 17:48:24

antares145
Membre d'honneur
Inscription : 29-09-2009
Messages : 5 199
Site Web

Re : Clés WPA et Complexité

Voilà les stats complètes pour les clés dont je dispose :

[[email protected] ~]$ cat sagem.txt | xargs ./kolmogorov.py | sort | uniq -c
      1 1.19230769231
     10 1.23076923077
     54 1.30769230769
[[email protected] ~]$ cat inventel.txt | xargs ./kolmogorov.py | sort | uniq -c
     21 1.30769230769
      1 1.32

La deuxième colonne est la complexité, la première est le nombre de clés correspondantes. C'est assez réduit en fait ^^
On voit donc qu'on retombe souvent sur les mêmes valeurs, ce qui est peut-être "normal" sur le plan théorique, je n'ai pas assez approfondi le concept pour le dire... En tout cas, on sait que la complexité des clés réelles est comprise entre 1.19 et 1.32 (ça permet déjà de filtrer pas mal), avec certaines valeurs particulières. L'utilisation de l'autre convention (représentation binaire) donne des résultats plus distribués, et donc peut-être des bornes min/max plus fiables.

Pour ce qui est de ma liste de clés, j'ai peur qu'il y en ait certaines qui ne soient pas publiables publiquement. Donc je préfère ne pas la donner sans l'accord de Koala hmm

De mon côté, j'ai creusé un peu la génération aléatoire avec l'implémentation en C du Livebox Generator de Spzdb1, un peu modifiée à ma sauce. Voilà le code :

/*
* Liveboxgenerator is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* Liveboxgenerator is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Foobar. If not, see http://www.gnu.org/licenses/.
* 
* Autheur: Spzdb1
* Modifié par : Antares145
*/
 
#include <stdio.h>
#include <stdlib.h>
// Suivant qu'on veut utiliser time() ou /dev/urandom comme graine aléatoire, on (dé)commente la ligne suivante
//#define URANDOM
 
void help(char name[]) {
	printf("Usage:%s <nombre de clefs a générer> <fichier>\n\n", name);
	printf("Exemple: Génération de 10 millions de clefs aléatoire dans le fichier liveboxwpa\n");
	printf("%s 10000000 liveboxwpa\n", name);
}
 
 
int main(int argc, char * argv[])
{
	#ifdef URANDOM	
		FILE *urandom;
		unsigned int seed;
		urandom = fopen ("/dev/urandom", "r");
		fread (&seed, sizeof (seed), 1, urandom);
		srand (seed); /* seed the pseudo-random number generator */
	#else
		#include <time.h>
		srand(time(NULL));
	#endif
		
	long nb;
	int size = 13; //Moitié-Longueur des clef, adaptable
	int i, z; //pour deux boucles lors de la génération des clefs
	int octet = 0;
	
	FILE *PF1;
	
	//Test des arguments, 2 obligatoires
	if(argc != 3) {
		help(argv[0]);
		return 1;
	}
	
	//Conversion en long et verificaton 
	nb = atol(argv[1]);
	if(nb == 0) {
		printf("Merci d'entrer un nombre valide!\n");
		help(argv[0]);
		return 1;
	}
	
	//Creation du fichier... ou non
	PF1 = fopen(argv[2], "w");
	if (PF1 == NULL) {
		printf("Impossible de créer le fichier %s\n", argv[2]);
		return 1;
	}
	
	//printf("Génération de %d clef WPA pour Livebox\n", nb);
	
	/*
	Génération des clefs WPA, les boucles partent de 1 pour simplifier 
	et on affiche le compteur tous les 100.000 clefs crées
	On pourait optimiser les I/O ici: mettre 10000 clefs dans un buffer et l'écrire dans le fichier dès qu'il est plein
	*/
	
	for(z = 1; z <= nb; z++) {
		for (i = 1; i <= size; i++) {
			octet = rand() % 256;
			fprintf(PF1,"%02X", octet); //Affichage en hexadecimal
		}
		//if(z % 100000 == 0) {
		//	printf("%d clef générées\n", z);
		//}
		fprintf(PF1,"\n");
	}
	
	fclose(PF1);
	
	return 0;
}

(on le compile simplement avec "gcc -o liveboxGenerator generator.c")
Et voilà les stats :

liveboxGenerator 10000 /dev/stdout | xargs ./kolmogorov.py | sort | uniq -c
      1 1.11538461538
      4 1.15384615385
     31 1.19230769231
    493 1.23076923077
     38 1.26923076923
   9433 1.30769230769

Ca ne filtre vraiment pas grand chose, en jetant les clés dont la complexité est inférieure à 1.19 on n'élimine que 0.05% du set. Le filtrage n'a d'intérêt que dans le cas d'une génération intégrale, mais là ça va prendre des plombes !
Notez que j'ai testé les 2 façons de générer de l'aléatoire (avec time() ou /dev/urandom comme seed), ça ne change pas grand chose...

Si on veut utiliser la génération incrémentielle, il nous faut une implémentation plus rapide du filtrage. J'avais déjà soulevé le problème ici --> Appel à compétences : codage en C (ou C++ ou Python), mais sans trop de résultats. La convention de calcul est différente, mais ça reste une convention (un critère de comparaison) et elle est peut-être plus facile à implémenter en C. Reste à vérifier si les résultats sont aussi "intéressants" qu'avec le code en Python wink

Dernière modification par antares145 (30-01-2013 17:54:57)

Hors Ligne

#3 30-01-2013 18:04:46

Mikaye
Membre Indéboulonnable
Inscription : 05-08-2011
Messages : 129
Site Web

Re : Clés WPA et Complexité

Si tu veux une autre implémentation de Kolgomorov en C++, je te propose de regarder la branche Kolgo de livedico (notamment src/rules/kolgomorov.cpp).
Pour l'installer :

svn co http://livedico.googlecode.com/svn/branches/livedico-kolgo/ livedico-kolgo
./configure
make
sudo make install

Utilisation de livedico en mode générateur+filtre kolgo (1000 clés) :

livedico -n 1000 -r11 1 -o dico

En mode filtre uniquement :

mongenerateur|livedico -n 1000 -r11 1 -o dico

LiveDico - Générateur de clés WPA Livebox

Hors Ligne

#4 31-01-2013 20:25:07

vances1
Membre Indispensable
Inscription : 20-03-2011
Messages : 530
Site Web

Re : Clés WPA et Complexité

antares145 a écrit :

Ca ne filtre vraiment pas grand chose, en jetant les clés dont la complexité est inférieure à 1.19 on n'élimine que 0.05% du set

Les 0,05 exclut le sont d’après "le bornier min max" ou d’après une seule complexité ?

antares145 a écrit :

On voit donc qu'on retombe souvent sur les mêmes valeurs, ce qui est peut-être "normal" sur le plan théorique

Il y à quand même peux de chance de retomber sur un groupe correspondant à 11 chiffres derrière la virgule, cela voudrais dire que notre ami Kolgomorov à mal fait sont job smile ou qu'il faudra l'adapter/optimiser.


Que représente le 16 de cette ligne:

entropy=kolmogorov(binary_repr(int(key,16)))    # représentation binaire

16 bits ? est-ce suffisant ?

"The largest number in 16-bit binary is 65535 and is represented by 11111111-11111111"

Dernière modification par vances1 (31-01-2013 23:08:49)


Gagner de l'argent en Bourse https://www.youtube.com/watch?v=mq96BGWfE4U
Travailler à domicile Sondage rémunéré http://www.avis-sondages.fr/
Méthode et solution pour gagner de l'argent sur internet http://www.methodeargent.net/

Hors Ligne

#5 01-02-2013 09:02:16

koala
Membre d'honneur
Lieu : In the sky
Inscription : 03-09-2010
Messages : 2 316

Re : Clés WPA et Complexité

Hihi ça bouge par ici smile

Qui veut que je lui envoi le fichier contenant toute les clès confondu, sagem, inventel etc?

Hors Ligne

#6 01-02-2013 10:49:30

Mikaye
Membre Indéboulonnable
Inscription : 05-08-2011
Messages : 129
Site Web

Re : Clés WPA et Complexité

Moi je le veux !! smile


LiveDico - Générateur de clés WPA Livebox

Hors Ligne

#7 01-02-2013 12:45:36

youcef
Banni(e)
Inscription : 01-01-2013
Messages : 27

Re : Clés WPA et Complexité

moi moi moi smile

Hors Ligne

#8 01-02-2013 13:29:08

koala
Membre d'honneur
Lieu : In the sky
Inscription : 03-09-2010
Messages : 2 316

Re : Clés WPA et Complexité

Coucou,

Voila c'est fait, les membres participant activement au projet ont reçus l'intégrale des clés, vances1 peux tu me donner ton mail pour que je te l'envoi aussi? smile

Antares, je me souviens plus si je te l'ai envoyer aussi depuis le temps mais n'hésite pas si tu le veux wink

Hors Ligne

#9 01-02-2013 19:42:09

antares145
Membre d'honneur
Inscription : 29-09-2009
Messages : 5 199
Site Web

Re : Clés WPA et Complexité

vances1 a écrit :

Les 0,05 exclut le sont d’après "le bornier min max" ou d’après une seule complexité ?

Juste en "bornier min", inférieur à 0,19, comme indiqué

vances1 a écrit :

Il y à quand même peux de chance de retomber sur un groupe correspondant à 11 chiffres derrière la virgule, cela voudrais dire que notre ami Kolgomorov à mal fait sont job smile ou qu'il faudra l'adapter/optimiser.

Quand je génère 10.000 clés aléatoire, je tombe dans 94,33% des cas sur le même chiffre à 11 décimales près smile
Et je pense que Kolmogorov a très bien fait son boulot, et que c'est moi qui l'applique comme un âne sans comprendre (et sans vraiment savoir si c'est applicable). Comme je le disais, les résultats avec la seconde convention (représentation binaire) sont dans doute plus "statistiquement représentatifs". Voilà comment ça se répartit dans ce cas :

binary_kolmogorov.png

EDIT : je pense que le "trou" dans le graphique Inventel est dû au faible nombre de clés dont je dispose, c'est plus propre avec les Sagem
Si on veut établir des bornes, ça m'a l'air plus fiable ([0.35,0.47] pour Sagem, [0.38,0.46] pour Inventel). Mais si on veut juste faire un filtre rapide et "raisonnable", on peut se fier à l'étrange valeur 1.30769230769 (même si on risque de ne pas éliminer assez de clés avec ça)

vances1 a écrit :

Que représente le 16 de cette ligne ?

Simplement que la conversion en int() doit se faire à partir d'un chiffre en base 16 (hexadécimal), ça n'a rien à voir avec le stockage. C'est juste parce que la fonction binary_repr() prend un entier "normal" en argument, donc il faut passer par une première conversion avant :

int("2A",16) = 42
binary_repr("2A",16)) = '101010'

@koala : tu m'avais envoyé tout ce que tu avais fin novembre 2011, t'en as sûrement des nouvelles depuis donc je veux bien que tu m'envoies la liste complète, merci smile

Dernière modification par antares145 (01-02-2013 19:46:32)

Hors Ligne

#10 01-02-2013 20:19:10

Mikaye
Membre Indéboulonnable
Inscription : 05-08-2011
Messages : 129
Site Web

Re : Clés WPA et Complexité

Si vous voulez, j'ai repris les données de koala sur un tableur sur Google drive... Comme ca on peut tous avoir les données à jour et les partager en direct...

J'en donne l'accès si vous m'envoyez l'adresse d'un compte Google par mail...
(Pour ceux qui sont autorisés, je rappelle l'adresse : https://docs.google.com/spreadsheet/ccc … sp=sharing)


LiveDico - Générateur de clés WPA Livebox

Hors Ligne

#11 01-02-2013 23:41:28

koala
Membre d'honneur
Lieu : In the sky
Inscription : 03-09-2010
Messages : 2 316

Re : Clés WPA et Complexité

@Antares

Je vais regarder mais je crois pas que j'en ai reçu depuis hmm je t'envoi quand meme le fichier de travail entier que j'ai garder dans un coin au chaud, c'est un peu brouillon mais tu pourra voir si il y a de nouvelle clés comme ça wink

Dernière modification par koala (01-02-2013 23:42:01)

Hors Ligne

#12 01-06-2013 22:40:17

sukawa2007
Membre
Inscription : 01-06-2013
Messages : 21

Re : Clés WPA et Complexité

Salut a tous, voila un petit moment que je suis votre travaille, d'abord sur le GigaPassword Gen V1 puis le V2 compatible a partir de BT4, ensuite sur votre travaille sur l'analyse des clé WPA et les différents rapport  avec l'essid, les SN etc...  pour enfin atterrir ici... smile
Je suis asse impressionné je dois dire. surtout que beaucoup d'entre vous sont sur le projets depuis 4 ans ou presque.
J'ai moi même accès a de nombreuses box (livebox, neuf,... ) si vous avez besoin il n'y a qu'a demander smile  Je me ferais un plaisir d'apporter ma petite et modeste pierre a ce monument smile

Hors Ligne

#13 02-06-2013 09:10:32

koala
Membre d'honneur
Lieu : In the sky
Inscription : 03-09-2010
Messages : 2 316

Re : Clés WPA et Complexité

Salut sukawa2007,

Merci pour ta contribution smile pour les clés libre a toi de les mettre ici ou par message privé car évidement on en a besoin cool

Hors Ligne

#14 02-06-2013 11:28:38

sukawa2007
Membre
Inscription : 01-06-2013
Messages : 21

Re : Clés WPA et Complexité

oki, je dispose de plusieur version de box y compris les dernieres livebox comme les premières. je vous enverrais donc toutes les infos en ma possesion en espérant que sa fasse avancer le schmilblike smile
Ah oui, je suis sous la derniere version de BT... Kali. l'un d'entre vous a t'il tester les scripts sous cette version car j'ai pu constater qu'il y avait quelque difference entre BT5 et celle ci
.

Hors Ligne

#15 02-06-2013 17:29:55

sukawa2007
Membre
Inscription : 01-06-2013
Messages : 21

Re : Clés WPA et Complexité

Inventel    DV4410-WA    Livebox-D908    sn: 001850101975EAA    mac: 00:1D:68:48:D9:08    DBC1B08E339597D343FD193F34    bulk: DSLVBRR5CDPE1
____________
Inventel    DV4210-WA    LIVEBOX-67D0    sn: 2036902D82986BB    mac: 00:16:AE:91:67:D0    11C8AD793287BCE2CD01099450    bulk: DSLVBAR5LF2E1
____________
SAGEM                        LIVEBOX-e242    sn: LK08130DP152878    mac: 00:1E:74:15:E2:42    765DA6971CA322ECD44C65FA9F   
____________
SAGEM    LIVEBOX PRO v3    LIVEBOX -A9DC   sn: LK12332DP360031        mac: 2C:E4:12:CA:A9:DC    212DE2C7AD793F9134E11E67F1

voila , Chose promise... smile j'en posterais d'autres dés que possible wink

Hors Ligne

#16 26-07-2013 02:50:51

ABArt
N00b
Inscription : 26-07-2013
Messages : 1

Re : Clés WPA et Complexité

Bonjour à tous je n'ai pas de code de Livebox à vous donner mais une petite contribution.
Je pensais qu'il étais possible de peut être trouver quelque chose avec cette histoire de complexité.
Je me suis dit que peut être que les fonctions de hashage classique (md5, sha et cie) laissaient une sorte de signature dans la complexité.
Ca semble être le cas.
J'ai réalisé un programme assez simple sur python pour générer des md5 de chaines aléatoires, calculer sa complexité puis les classers par nombres d'apparitions.
Après 10000 générations, le résultat est sans appel :

Counter({1.25: 8974, 1.1875: 665, 1.21875: 285, 1.15625: 71, 1.125: 5})

Alors j'ai réalisé le test avec uniquement les 26 derniers caractères et TADAM :

Counter({1.3076923076923077: 9463, 1.2307692307692308: 450, 1.2692307692307692: 43, 1.1923076923076923: 41, 1.1538461538461537: 2, 1.1153846153846154: 1})

ça ne vous rappel rien ? :-D

En décalant je retrouve des résultats sensiblement similaires. (C'est à dire en prenant que les 26 premiers à la place des 26 derniers).

Donc ensuite, je réalise les mêmes calculs avec du sha224 et je trouve des résultats complètement différents :

Counter({1.0: 4405, 1.02: 3974, 1.04: 917, 0.98: 643, 1.06: 43, 0.96: 17, 0.94: 1})

Donc ça pourrais être du md5 ... à confirmer

EDIT : je viens de refaire des test avec la taille de la chaîne mise en md5 qui change et aucune influence sur le résultat.

Voici les proportions trouvées pour 1 000 000 md5 calculés:
1.3076923076923077 : 94.3586%
1.2307692307692308 : 04.7773%
1.2692307692307692 : 00.4526%
1.1923076923076923 : 00.3822%
1.1538461538461537 : 00.0275%
...

Dernière modification par ABArt (29-07-2013 01:12:39)

Hors Ligne

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

Sujets similaires

Discussion Réponses Vues Dernier message
Épinglée :
136 63701 16-07-2016 16:09:51 par kcdtv
7 1449 27-02-2015 16:43:52 par petros
6 1223 20-08-2014 21:51:21 par M1ck3y
3 1007 13-08-2014 15:57:54 par kcdtv
16 8619 15-06-2014 07:34:48 par kcdtv

Pied de page des forums


Le coin des bonnes affaires, achats informatiques:


|   Alfa 1000 mW AWUS036H   |    Linksys WRT54GL   |    Misco, informatique   |   
 |    Ebay   |    PC portables   |    PC Gamers & Tuning   |    Cles USB   |   
|   Disques durs externes 2 To   |   
|   Wifi-highpower.com   |   


Server Stats - [ Generated in 0.032 seconds ]   Forum Stat - [ Most users ever online on the forum was : 150 on 20-09-2009 17:06:59 ]