2017-04-21 281 views
0

我試圖創建一個php網頁,讓用戶連接到無線網絡。由於「無線工具」是我使用iwlist顯示用下面的命令可用的WiFi網絡唯一可用的選項:iwlist輸出到列表或變量

iwlist wlan0 scan | egrep 'Cell |Quality|ESSID|Auth|key|IE: IEEE|IE: WPA' 

這給了我下面的輸出:

 Cell 01 - Address: 88:03:55:E8:3A:D0 
       Quality=23/70 Signal level=-87 dBm 
       Encryption key:on 
       ESSID:"VGV7519E83ADB" 
       IE: WPA Version 1 
        Authentication Suites (1) : PSK 
       IE: IEEE 802.11i/WPA2 Version 1 
        Authentication Suites (1) : PSK 
     Cell 02 - Address: 88:03:55:E8:3A:D1 
       Quality=23/70 Signal level=-87 dBm 
       Encryption key:off 
       ESSID:"KPN Fon" 
     Cell 03 - Address: 90:5C:44:C5:B8:9D 
       Quality=59/70 Signal level=-51 dBm 
       Encryption key:on 
       ESSID:"Doggie" 
       IE: WPA Version 1 
        Authentication Suites (1) : PSK 
       IE: IEEE 802.11i/WPA2 Version 1 
        Authentication Suites (1) : PSK 
     Cell 04 - Address: 54:FA:3E:60:F9:B1 
       Quality=22/70 Signal level=-88 dBm 
       Encryption key:on 
       ESSID:"HZN249093067" 
       IE: IEEE 802.11i/WPA2 Version 1 
        Authentication Suites (1) : PSK 
     Cell 05 - Address: DC:71:44:FA:1D:17 
       Quality=27/70 Signal level=-83 dBm 
       Encryption key:on 
       ESSID:"UPC244948707" 
       IE: IEEE 802.11i/WPA2 Version 1 
        Authentication Suites (1) : PSK 
     Cell 06 - Address: 64:D1:A3:31:D1:6C 
       Quality=24/70 Signal level=-86 dBm 
       Encryption key:on 
       ESSID:"Sitecom31D16A" 
       IE: IEEE 802.11i/WPA2 Version 1 
        Authentication Suites (1) : PSK 
     Cell 07 - Address: F8:04:2E:30:84:31 
       Quality=22/70 Signal level=-88 dBm 
       Encryption key:on 
       ESSID:"UPC242176060" 
       IE: IEEE 802.11i/WPA2 Version 1 
        Authentication Suites (1) : PSK 

因爲我想列出使用什麼類型的身份驗證我正在顯示加密,IE:IEEE和IE:WPA列出WEP,WPA1和WPA2 PSK

有沒有辦法將結果保存在像這樣的變量中?

Cell 01 (88:03:55:E8:3A:D0, VGV7519E83ADB, WPA, WPA2 PSK, 23/70, -87) 
Cell 02 (88:03:55:E8:3A:D1, KPN Fon, WEP, , 23/70, -87) 
Cell 03 (90:5C:44:C5:B8:9D, Doggie, WPA, WPA2 PSK, 59/70, -51) 
etc... 

我用AWK(GAWK不可用),但沒有成功嘗試..

iwlist wlan0 scan 

     wlan0  Scan completed : 
     Cell 01 - Address: 88:03:55:E8:3A:D1 
       Channel:1 
       Frequency:2.412 GHz (Channel 1) 
       Quality=29/70 Signal level=-81 dBm 
       Encryption key:off 
       ESSID:"KPN Fon" 
       Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s 
          18 Mb/s; 36 Mb/s; 54 Mb/s 
       Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s 
       Mode:Master 
       Extra:tsf=000009e127b7513e 
       Extra: Last beacon: 6290ms ago 
       IE: Unknown: 00074B504E20466F6E 
       IE: Unknown: 010882848B961224486C 
       IE: Unknown: 030101 
       IE: Unknown: 2A0104 
       IE: Unknown: 32040C183060 
       IE: Unknown: 2D1A6C0017FFFF0000000000000000000000000000000C0000000000 
       IE: Unknown: 3D1601000400000000000000000000000000000000000000 
       IE: Unknown: 3E0100 
       IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00 
       IE: Unknown: 0B0504001C127A 
       IE: Unknown: 7F0101 
       IE: Unknown: DD8F0050F204104A00011010440001021041000100103B0001031047001000000000000000030000880355E83ADB1021000B436F72706F726174696F6E1023000B564756373531394B24000930322E30302E3133361042000A413334343030333035311054000800060050F204000110110014576972656C65737320526F757465722857464129100800020084 
       IE: Unknown: 07064E4C20010D10 
     Cell 02 - Address: 90:5C:44:C5:B8:9D 
       Channel:11 
       Frequency:2.462 GHz (Channel 11) 
       Quality=58/70 Signal level=-52 dBm 
       Encryption key:on 
       ESSID:"Doggie" 
       Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s 
          18 Mb/s; 36 Mb/s; 54 Mb/s 
       Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s 
       Mode:Master 
       Extra:tsf=000001c683317915 
       Extra: Last beacon: 90ms ago 
       IE: Unknown: 00124368696E6565732052657374617572616E74 
       IE: Unknown: 010882848B961224486C 
       IE: Unknown: 03010B 
       IE: Unknown: 2A0104 
       IE: Unknown: 32040C183060 
       IE: Unknown: 0706455520010D14 
       IE: Unknown: 2D1AAC0117FFFF000000000000000000000000000000000000000000 
       IE: Unknown: 3D160B000700000000000000000000000000000000000000 
       IE: WPA Version 1 
        Group Cipher : TKIP 
        Pairwise Ciphers (2) : TKIP CCMP 
        Authentication Suites (1) : PSK 
       IE: IEEE 802.11i/WPA2 Version 1 
        Group Cipher : TKIP 
        Pairwise Ciphers (2) : TKIP CCMP 
        Authentication Suites (1) : PSK 
       IE: Unknown: 7F080100000000000000 
       IE: Unknown: 0B05040031127A 
       IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00 
       IE: Unknown: 7F080100000000000000 
       IE: Unknown: 0706455520010D10 
       IE: Unknown: DDA70050F204104A0001101044000102103B00010310470010E6825C801DD411B2860188B76881A5BF1021001852616C696E6B20546563686E6F6C6F67792C20436F72702E1023001C52616C696E6B20576972656C6573732041636365737320506F696E74102400065254323836301042000831323334353637381054000800060050F20400011011000952616C696E6B415053100800020000103C0001011049000600372A000120 
       IE: Unknown: DD07000C4300000000 
     Cell 03 - Address: 54:FA:3E:60:F9:B1 
       Channel:11 
       Frequency:2.462 GHz (Channel 11) 
       Quality=21/70 Signal level=-89 dBm 
       Encryption key:on 
       ESSID:"HZN249093067" 
       Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s 
          18 Mb/s; 36 Mb/s; 54 Mb/s 
       Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s 
       Mode:Master 
       Extra:tsf=00000144750d9416 
       Extra: Last beacon: 170ms ago 
       IE: Unknown: 000C485A4E323439303933303637 
       IE: Unknown: 010882848B961224486C 
       IE: Unknown: 03010B 
       IE: Unknown: 2A0104 
       IE: Unknown: 32040C183060 
       IE: Unknown: 2D1AEC0103FFFF0000000000000000000000000000000C0000000000 
       IE: Unknown: 3D160B000100000000000000000000000000000000000000 
       IE: IEEE 802.11i/WPA2 Version 1 
        Group Cipher : TKIP 
        Pairwise Ciphers (2) : TKIP CCMP 
        Authentication Suites (1) : PSK 
       IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00 
       IE: Unknown: 0B05000027127A 
       IE: Unknown: 7F0101 
       IE: Unknown: DD07000C4307000000 
       IE: Unknown: 07064E4C20010D10 
       IE: Unknown: DDA70050F204104A0001101044000102103B00010310470010BC329E001DD811B2860154FA3E60F9B71021001A43656C656E6F20436F6D6D756E69636174696F6E2C20496E632E1023001743656C656E6F20576972656C65737320415020322E344710240006434C313830301042000831323334353637381054000800060050F20400011011000C43656C656E6F4150322E3447100800024388103C0001011049000600372A000120 
     Cell 04 - Address: 64:D1:A3:31:D1:6C 
       Channel:8 
       Frequency:2.447 GHz (Channel 8) 
       Quality=28/70 Signal level=-82 dBm 
       Encryption key:on 
       ESSID:"Sitecom31D16A" 
       Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s 
          18 Mb/s; 36 Mb/s; 54 Mb/s 
       Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s 
       Mode:Master 
       Extra:tsf=0000000bc7aa0889 
       Extra: Last beacon: 20750ms ago 
       IE: Unknown: 000D53697465636F6D333144313641 
       IE: Unknown: 010882848B961224486C 
       IE: Unknown: 030108 
       IE: Unknown: 2A0102 
       IE: Unknown: 32040C183060 
       IE: Unknown: 2D1AEE1117FFFF0000010000000000000000000000000C0000000000 
       IE: Unknown: 3D1608050500000000000000000000000000000000000000 
       IE: IEEE 802.11i/WPA2 Version 1 
        Group Cipher : CCMP 
        Pairwise Ciphers (1) : CCMP 
        Authentication Suites (1) : PSK 
       IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00 
       IE: Unknown: 0B0502000C127A 
       IE: Unknown: DD07000C4307000000 
       IE: Unknown: DDDE0050F204104A00011010440001021057000101103B0001031047001027A9A0BC149D4DD5AB6864D1A331D16A1021001153697465636F6D204575726F70652042561023001F53697465636F6D20576972656C657373204769676162697420526F757465721024001F53697465636F6D20576972656C657373204769676162697420526F757465721042000F574C54000800060050F20400011011001F53697465636F6D20576972656C657373204769676162697420526F7574657210080002228C103C0001011049000600372A000120 
     Cell 05 - Address: 88:03:55:E8:3A:D0 
       Channel:1 
       Frequency:2.412 GHz (Channel 1) 
       Quality=30/70 Signal level=-80 dBm 
       Encryption key:on 
       ESSID:"VGV7519E83ADB" 
       Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s 
          18 Mb/s; 36 Mb/s; 54 Mb/s 
       Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s 
       Mode:Master 
       Extra:tsf=000009e127b72128 
       Extra: Last beacon: 1680ms ago 
       IE: Unknown: 000D56475637353139453833414442 
       IE: Unknown: 010882848B961224486C 
       IE: Unknown: 030101 
       IE: Unknown: 2A0104 
       IE: Unknown: 32040C183060 
       IE: Unknown: 2D1A6C0017FFFF0000000000000000000000000000000C0000000000 
       IE: Unknown: 3D1601000400000000000000000000000000000000000000 
       IE: Unknown: 3E0100 
       IE: WPA Version 1 
        Group Cipher : TKIP 
        Pairwise Ciphers (1) : TKIP 
        Authentication Suites (1) : PSK 
       IE: IEEE 802.11i/WPA2 Version 1 
        Group Cipher : TKIP 
        Pairwise Ciphers (1) : CCMP 
        Authentication Suites (1) : PSK 
       IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00 
       IE: Unknown: 0B0504001C127A 
       IE: Unknown: 7F0101 
       IE: Unknown: DD8F0050F204104A00011010440001021041000100103B0001031047001000000000000000030000880355E83ADB1021000B436F72706F726174696F6E1023000B564756373531394B24000930322E30302E3133361042000A413334343030333035311054000800060050F204000110110014576972656C65737320526F757465722857464129100800020084 
       IE: Unknown: 07064E4C20010D10 
+1

當然,但是不會告訴我們在egrep之後的輸出,向我們展示egrep的輸入,因爲如果您使用awk作爲解決方案的其餘部分(您將是),egrep將不是必需的。爲了幫助您設計解析iwslist輸出的最佳工具,我們需要查看iwlist輸出,而不是使用其他工具對其進行後處理後得到的結果。 –

+0

添加iwlist wlan0掃描的完整輸出 – etimm

+0

您到達那裏。現在包含輸入的預期輸出,並且您將擁有一些我們可以開始使用的內容。 –

回答

0

iwlist wlan0 scan轉換爲iw wlan0 scan,它提供了更清潔的輸出。 幾乎得到的結果我的目標,當我從Djey1301偶然發現了一個GitHub的評論:29 sept 2016

iw wlan0 scan | sed -e 's#(on wlan# (on wlan#g' | awk -f scan.awk

scan.awk:

BEGIN { 

    printf("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n","MAC","SSID","freq","signal","sig%","WPA","WPA2","WEP","TKIP","CCMP"); 

} 
$1 == "SSID:" { buf = $2; for (i = 3; i <= NF; ++i) { buf = buf" "$i } ; e["SSID"] = buf ; next } 
NF > 0{ 
if ($1 == "BSS") { 
if($2 ~ /^[a-z0-9:]{17}$/) { 
if(e["MAC"]){ 
printf("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n",e["MAC"],e["SSID"],e["freq"],e["sig"],e["sig%"],e["WPA"],e["WPA2"],e["WEP"],e["TKIP"],e["CCMP"]); 
} 
    e["MAC"] = $2; 
    e["WPA"] = "n"; 
    e["WPA2"] = "n"; 
    e["WEP"] = "n"; 
    e["TKIP"] = "n"; 
    e["CCMP"] = "n"; 
    } 
} 
if ($1 == "SSID:") { 
e["SSID"] = $2; 
} 
if ($1 == "freq:") { 
    e["freq"] = $NF; 
} 
if ($1 == "signal:") { 
    e["sig"] = $2 " " $3; 
    e["sig%"] = (60 - ((-$2) - 40)) * 100/60; 
} 
if ($1 == "WPA:") { 
    e["WPA"] = "y"; 
} 
if ($1 == "RSN:") { 
    e["WPA2"] = "y"; 
} 
if ($1 == "WEP:") { 
    e["WEP"] = "y"; 
} 
if ($4 == "CCMP" || $5 == "CCMP") { 
    e["CCMP"] = "y"; 
} 
if ($4 == "TKIP" || $5 == "TKIP") { 
    e["TKIP"] = "y"; 
} 
} 
END { 
     printf("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n",e["MAC"],e["SSID"],e["freq"],e["sig"],e["sig%"],e["WPA"],e["WPA2"],e["WEP"],e["TKIP"],e["CCMP"]); 
} 

而結果我幾乎高興:

MAC|SSID|freq|signal|sig%|WPA|WPA2|WEP|TKIP|CCMP 
9B:5c:44:c5:b8:92|Chinees|2437|-78.00 dBm|36.6667|y|y|n|y|y 
89:03:55:e8:3a:d2|VGV7519E83ADB|2412|-83.00 dBm|28.3333|y|y|n|y|y 
89:03:55:e8:3a:2b|KPN|2412|-88.00 dBm|20|n|n|n|n|n 
62:d1:a3:31:d1:61|Sitecom31D16A|2452|-89.00 dBm|18.3333|n|y|n|n|y 

更新,幫助從Scheff

+0

awk風格看起來有點奇怪。我訪問了您提供的鏈接。這個awk腳本的原始版本看起來更好,但這實際上是一個品味問題。關於'KPN fon'問題:一個額外的'if'或模式匹配可以幫助解決這個問題。 (對不起,我不知道'iw wlan0 scan'的輸出,因此我不能建議添加實際的代碼行。) – Scheff

+0

iw wlan0掃描的(部分)輸出: 'BSS 89:03:55 :E8:3A:2B(上爲wlan0)' \t'TSF:12441130882601微秒(143D,23時52分10秒)' \t'頻率:2412' \t'信標間隔:100 TUs' \t'能力:ESS ShortSlotTime(0x0401)' \t'信號:-80.00 dBm' \t'最後看出:0毫秒ago' \t'從探測響應幀的信息單元:' \t'SSID:KPN Fon' \t支持率:1.0 * 2.0 * 5.5 * 11.0 * 9.0 18.0 36.0 54。0' \t'DS參數設置:通道1' \t'ERP:Barker_Preamble_Mode' (然後一些) – etimm

+0

你能請編輯樣本輸入到你的答案(因爲缺少行尾可能成爲有助於提高awk掃描規則)。 – Scheff

0

結果根據你的解釋,我在awk開始一個簡單的解析器。其實,我想知道你爲什麼排除gawk。 (您標記linux也。難道你真的有一個Linux發行版ķ& [R AWK代替gawk?)

然而,gawk將提供更多的方便,但它應該是可以不還。因爲我在我的cygwin中實際上只有gawk,所以我只用它-c,這應該將其限制爲「傳統awk」。

不幸的是,我完全不理解你的輸出格式的邏輯,即如何製作這些, WEP,, WPA, WPA2 PSK件。順便說一句。我相信你的第二個樣本列表中的一些設置已經改變。因此,我把這部分留給了其餘的人。遵循這個概念,應該很容易地自行添加缺失的休息。

文件list-wlan.awk

BEGIN { 
    #debug = 1 
    # states 
    cell = "" # current cell 
    addr = "" # current address 
    name = "" # current name 
    qual = "" # current quality 
    slvl = "" # current signal level 
} 

END { 
    # flush last cell 
    flushCell() 
} 

/^[ ]*Cell [0-9]+/ { # start of new cell 
    # flush previous cell 
    flushCell() 
    # skip prefix spaces 
    sub(/[ ]+/, "") # ; print $0 
    # extract cell and address from $0 
    sep = index($0, " - Address: ") 
    cell = substr($0, 1, sep) 
    addr = substr($0, sep + 12) 
    # debug 
    if (debug) print "cell: "cell" addr: "addr 
} 

/^[ ]*Quality=/ { # quality/signal level 
    # skip prefix spaces 
    sub(/[ ]+/, "") # ; print $0 
    # extract quality 
    match($0, /[0-9/]+/) ; qual = substr($0, RSTART, RLENGTH) 
    $0 = substr($0, RSTART + RLENGTH) 
    # extract signal level 
    match($0, /[-0-9]+/) ; slvl = substr($0, RSTART, RLENGTH) 
    # debug 
    if (debug) print "qual: "qual" slvl: "slvl 
} 

/^[ ]*ESSID:/ { # name 
    # skip prefix spaces 
    sub(/[ ]+/, "") # ; print $0 
    # extract name 
    match($0, /"[^"]*"/) ; name = substr($0, RSTART + 1, RLENGTH - 2) 
    # debug 
    if (debug) print "name: '"name"'" 
} 

function flushCell() 
{ 
    if (cell == "") return # nothing to flush 
    printf "%s(%s, %s", cell, addr, name 
    ## @todo missing authentification params... 
    print ", "qual", "slvl")" 
} 

我救了你的第二個樣本輸入到調試和演示文件wlan.txt。我在Windows 10(64位)的bash/Cygwin的做:

$ awk -c -f list-wlan.awk wlan.txt 
Cell 01 (88:03:55:E8:3A:D1, KPN Fon, 29/70, -81) 
Cell 02 (90:5C:44:C5:B8:9D, Doggie, 58/70, -52) 
Cell 03 (54:FA:3E:60:F9:B1, HZN249093067, 21/70, -89) 
Cell 04 (64:D1:A3:31:D1:6C, Sitecom31D16A, 28/70, -82) 
Cell 05 (88:03:55:E8:3A:D0, VGV7519E83ADB, 30/70, -80) 

$ 

注:

iwlist似乎提供引述網絡名稱(對不起,的ESSID)。所以,這讓我懷疑逃跑:是否有逃脫的可能?什麼逃避? (當網絡使用非字母數字字符命名,包括特別是引號時,這樣看起來會很有趣。)必須對此進行排序。結果要麼應用一個複雜的unescaping,要麼所有的東西(包括引號)都被直接使用...... 目前,網絡名稱的引號被簡單地刪除。

+0

不幸的是-c不支持 運行awk -f list-wean.awk plan.txt導致以下錯誤: awk:bad regex'[0-9':Unmatched [or [^ awk version doesn' t甚至支持--version或-W版本 – etimm

+0

正如我在文中寫的,我有'gawk'並使用'-c'來讓它表現得像'awk'。關於第表達式,我不確定。我希望,預期的章程。表達式將被'-c'參數覆蓋... – Scheff

+0

使用谷歌很難找到(non-gnu)awk手冊。我相信我在公司辦公室裏有一本古老的教科書。可能是,我明天可以更新。可能是,你試圖搗鼓該區域。表達自己在此期間。 – Scheff