一.前言
楼主遇到一个这样的需求,想知道查询连接WiFi的密码,楼主一开始觉得很简单,直接电脑查看不就好了,但是对方说用户对象多数行政文员,并技术人,所以还是要搞个小工具给他们
二.实现过程
1.基本思路:基于命令netsh wlan去获取对应的WiF名称的的配置文件,然后去解析命令执行结果,获取其中的密码值,Qt方面主要是用QProcess
2.核心代码
// 核心命令
QString cmdStr = QString("netsh wlan show profile name=%1 key=clear").arg("你要查询的WiFi名称");
QProcess p;
p.start(cmdStr);
p.waitForStarted();
p.waitForFinished();
QString resStr = QString::fromLocal8Bit(p.readAllStandardOutput());
qDebug()<<resStr;
if(resStr.contains(QStringLiteral("在计算机上找不到配置文件")))
{
qDebug()<<"查询密码失败,可能是未连接过的WiFi";
}
else
{
QString pas =getPassword(resStr);
qDebug()<<"获得密码:"<<pas;
}
经过楼主的研究,通过以下的整理,能分拆出无线密码
QString WifiInfoWidget::getPassword(QString s)
{
QString resStr = s;
resStr.remove("=");
resStr.remove("-");
QStringList resList = resStr.split("\r\n\r\n");
QString objStr = resList[4];
objStr.remove(" ");
QStringList objInfoList = objStr.split("\r\n");
QString objPassword = "---";
for (int idx = 0; idx < objInfoList.length(); idx++)
{
if (objInfoList[idx].contains(QStringLiteral("关键内容")))
{
QStringList passwordList = objInfoList[idx].split(":");
objPassword = passwordList[1];
break;
}
}
return objPassword;
}
三.其他
1.楼主测试过是确实可行的
2.对于表情字符类的密码,楼主就没测过过,需要自行验证