要手动配置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
?>
答案 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