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

PHP - WiFi Network Id and passphrase to hexadecimal key

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

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

<?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

之后做了这个

如果有人对此仍然感兴趣:我通过阅读 wpa_passphrase and comparing the result to the Wireshark PSK tool.

的来源,使用简单的 PHP 解决了这个问题
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