2010-09-13 9 views
2

Je dois écrire un outil pour extraire le type de chiffrement d'un scan iwlist. Je n'arrive juste pas à trouver s'il y a ou non une sortie standard. Googling il semble que les gens affichent des formats légèrement différents, mais je ne peux pas dire si ils copient/collent mal ou quoi. Plus précisément, dans Encryption key: On, est On/Off frist lettre toujours en majuscule? Que diriez-vous de IE: IEEE 802.11i/WPA2 Version 1? Le cryptage est-il toujours précédé de IEEE 802.11i/?Format de sortie de numérisation iwlist

J'espère que c'est OK à demander ici.

Répondre

1

Vous pouvez être mieux d'analyser le contenu de /proc/net/wireless, en fonction de ce dont vous avez besoin. This vous aidera à démarrer. Les champs sont tous les mêmes, mais les valeurs peuvent différer d'un pilote à l'autre et d'un périphérique à l'autre. Donc non, vous ne pouvez probablement pas compter sur l'orthographe pour être cohérent, et la capitalisation encore moins.

1

Comme /proc/net/wireless est juste d'afficher des informations sur la connexion WLAN en cours, j'ai adapté un script pour contenir des informations de cryptage nécessaires pour, par exemple. nourrir wpa_supplicant:

#!/bin/bash 
while read line; do 

    ## Reset variables on new network 
    [[ "$line" =~ Cell || "$line" == "" ]] && { 

     # If no WPA encryption info was found though "Encryption" was "On", then we have WEP 
     [[ "$encryption" == "" && "$enc" =~ On ]] && encryption = "WEP" 

     # If we already found one network then echo its information 
     [[ "$network" != "" ]] && echo "$network [$encryption]" 
     network="" 
     encryption="" 
    } 

    ## Test line content and parse as required 
    [[ "$line" =~ Address ]] && mac=${line##*ss: } 
    [[ "$line" =~ \(Channel ]] && { chn=${line##*nel }; chn=${chn:0:$((${#chn}-1))}; } 
    [[ "$line" =~ Frequen ]] && { frq=${line##*ncy:}; frq=${frq%% *}; } 
    [[ "$line" =~ Quality ]] && { 
     qual=${line##*ity=} 
     qual=${qual%% *} 
     lvl=${line##*evel=} 
     lvl=${lvl%% *} 
    } 

    ## Encryption is "On" if WEP or WPA, otherwise it's "Open" 
    [[ "$line" =~ Encrypt ]] && enc=${line##*key:} 
    [[ "$enc" =~ Off ]] && { 
     [[ "$encryption" != "" ]] && encryption="${encryption}," 
     encryption="${encryption}Open" 
    } 

    ## The ESSID is the last line of the basic channel data, so build information string now 
    [[ "$line" =~ ESSID ]] && { 
     essid=${line##*ID:} 
     network="$mac $essid $frq $chn $qual $lvl $enc" # output after ESSID 
    } 

    ## WPA encryption information 
    [[ "$line" =~ WPA ]] && wpa=${line##*WPA} && { 
     [[ "$encryption" != "" ]] && encryption="${encryption}|" 
     encryption="${encryption}WPA$wpa" 
    } 
    [[ "$line" =~ "Group Cipher" ]] && encryption="$encryption,${line##*: }" 
    [[ "$line" =~ "Pairwise Cipher" ]] && encryption="$encryption,${line##*: }" 
    [[ "$line" =~ "Authentication Suites" ]] && encryption="$encryption,${line##*: }" 

done < <(iwlist wlan0 scan 2>/dev/null) 

La sortie de scripts (exemple):

34:81:C7:EB:24:89 "cyberdyne" 2.462 11 67/70 -43 on [WPA2 Version 1,CCMP,CCMP,PSK] 
36:81:C7:EB:24:89 "cyberguest" 2.462 11 65/70 -45 on [WPA2 Version 1,TKIP,CCMP,PSK|WPA Version 1,TKIP,TKIP,PSK] 

S'il existe des mécanismes de cryptage multiples disponibles pour le SSID puis ils sont séparés par "|".