PHP - WiFi网络ID和密码到十六进制密钥

时间:2015-05-25 09:31:50

标签: php wifi

要手动配置WiFi网络,我需要十六进制密钥 在Ubuntu中,我可以用这个命令获得它:

wpa_passphrase network passphrase

结果是:

network={
    ssid="network"
    #psk="passphrase"
    psk=72feda58f99812cd6a4a075047270e361e3ae18f8cb191eb8d55ac07f928a466
}

然后..如何通过 PHP 获取psk?

编辑:我这样做:

<?php
$fp = fopen("data.txt", "w+");
    if(!$fp) die ("Errore nell'apertura del file");

exec("wpa_passphrase network passphrase",$output);

$conf = "";
for($i=0;$i<5;$i++)
    $conf .= $output[$i]."";
fwrite($fp,$conf);
fclose($fp);

exec("sudo cp data.txt /etc/wpa_supplicant.conf"); //this doesn't work!

echo "ok<br>".$conf
?>

2 个答案:

答案 0 :(得分:0)

我已经解决了,这是代码:

<?php

$fp = fopen("data.txt", "w+");
if(!$fp) die ("Errore nell'apertura del file");

exec("wpa_passphrase network passphrase",$output);

$conf = "";
for($i=0;$i<5;$i++)
$conf .= $output[$i]."\n";
fwrite($fp,$conf);
fclose($fp);

exec("sudo cp data.txt /etc/wpa_supplicant.conf");

echo "1";

?>

但是,要执行sudo命令,我必须将“www-data”用户添加到sudoers文件中。我是在this reply

之后做到的

答案 1 :(得分:0)

如果仍然有人对此感兴趣:我使用纯PHP通过读取wpa_passphrase的源并将结果与​​Wireshark PSK tool进行比较来解决此问题。

function wpa_passphrase($ssid, $passphrase) {
    $bin = hash_pbkdf2('sha1', $passphrase, $ssid, 4096, 32, true);
    return bin2hex($bin);
}

$psk = wpa_passphrase('network', 'passphrase');

需要PHP> = 5.5