通过 XML 文件和 netsh wlan(或 Python)更改 wifi 配置文件的密码
Change a wifi profile's password through XML file and netsh wlan (or Python)
我试试win.10下netsh wlan的乐趣。所以基本上:
- 我有一个名为 virgin.xml 的 XML 文件,您可以猜猜它是“处女”。文件:
<?xml version='1.0' encoding='utf-8'?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"
xmlns:ns1="http://www.microsoft.com/networking/WLAN/profile/v3">
<name>HERE THE NAME IS EMPTY, THIS IS WHY THE FILE IS CALLED "VIRGIN"</name>
<SSIDConfig>
<SSID>
<name>ALSO HERE</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>auto</connectionMode>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>false</protected>
<keyMaterial>THE PASSWORD IS ALSO EMPTY</keyMaterial>
</sharedKey>
</security>
</MSM>
<ns1:MacRandomization>
<ns1:enableRandomization>false</ns1:enableRandomization>
</ns1:MacRandomization>
</WLANProfile>
然后使用脚本修改文件以输入我的 wifi 名称(此处为 antigon)和密码。所以现在我的“virgin.xml”不再是处女了,它是一个经典的 wifi 配置文件XML,里面有一个名字和一个密码。
我 netsh wlan add profile filename = "C:\virgin.xml"
从 XML 文件中添加配置文件
我添加了一个配置文件,但是如果我添加了 netsh wlan show profiles
,则没有“原始”配置文件。我推断它创建了一个配置文件,其中包含 XML 文件中指示的 wifi 名称,antigon。已经有一个叫做 antigon 的,基本的,因为它是我的 wifi,所以我已经连接上了,当我查看配置文件时,仍然只有一个 antigon。结论是因为我没有收到错误消息:它使用 XML 文件中给出的 those 修改了已经存在的 antigon 配置文件的信息,其中包括密码 (也许是这个有一点我错了)
我根据网站上给出的语法 netsh wlan connect
:netsh wlan connect ssid = YOURSSID name = PROFILENAME
连接到提供名称和配置文件的 wifi 网络(以便它获取密码).所以对我来说:netsh wlan connect ssid = antigon name = antigon
“连接请求成功”,连接我
我把XML文件里的密码改成一个假的,然后重复步骤2到4,“连接请求成功”,还是连接上了! (这就是为什么我说这可能是我在第 3 步错误的地方:也许它没有更改密码,所以仍然连接是很合乎逻辑的?)
有谁知道错误在哪里?这很烦人,我手头有所有的元素来做我想做的事,但我无法正确地适应它们!我想做的是,当我在 XML 文件和 运行 netsh wlan export 然后 netsh wlan connect 中输入正确的密码时,它会连接我,如果我输入错误则不起作用密码。
*我还可以做什么:我从 python 脚本调用批处理文件,这是我的主脚本。因此,如果您有使用 Python 连接到 wifi 的解决方案,例如,我知道有像 os 这样的库允许使用 cmd 命令,我接受它们!
答案如下:如何使用 Python 连接到无线网络并提供密码?
我们要做的是使用我们的 Python 脚本调用批处理 (.bat) 文件,这相当于 cmd 命令的文本文件。我使用的是 Python (3.8) 和 windows 10.
的最新版本
如果您从未连接到该 WIFI(忽略其他):
netsh wlan export profile name = A_WIFI_YOU_ALREADY_CONNECTED_INTO
所以你可以获得一个XML文件。然后打开,每次出现"name"修改为你要连接的wifi名称替换值:
<?xml version='1.0' encoding='utf-8'?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1" xmlns:ns1="http://www.microsoft.com/networking/WLAN/profile/v3">
<name>HERE THE NAME</name>
<SSIDConfig>
<SSID>
<name>HERE THE NAME</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>auto</connectionMode>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>false</protected>
<keyMaterial>HERE IS YOUR PASSWORD, DON'T CHANGE IT, WE WILL DO IT LATER</keyMaterial>
</sharedKey>
</security>
</MSM>
<ns1:MacRandomization>
<ns1:enableRandomization>false</ns1:enableRandomization>
</ns1:MacRandomization>
</WLANProfile>
然后:
netsh wlan add profile filename = PATH_TO_THE_XML
好的,现在你已经有了你的个人资料,让我们看看下一步是什么(如果你已经连接到 wifi 一次,请从这里开始):
netsh wlan set profileparameter name=YOUR_WIFI keyMaterial = YOUR_KEY
netsh wlan connect name=YOUR_PROFILE_NAME(usually same as wifi name) ssid=YOUR_WIFI
第一行将更改密码,第二行将连接您。
注意:即使密码错误,它也会说你已连接,但不会连接你。所以不要读取输出来检查您是否已连接...
最后一步:如何在 python 脚本中使用它? 2个选项:
- 使用OS库调用cmd命令:
import os
os.popen('your command here')
(别忘了先用pip安装os)
- 使用批处理文件:
创建一个新的 txt 文件,将所有命令逐行写入其中,并将其命名为 "connect.bat"。然后创建一个python脚本:
import subprocess
def connect():
subprocess.call([r"path where the batch file is stored\name of the batch file.bat if it is in the same directory (don't need to specify the path)"])
我试试win.10下netsh wlan的乐趣。所以基本上:
- 我有一个名为 virgin.xml 的 XML 文件,您可以猜猜它是“处女”。文件:
<?xml version='1.0' encoding='utf-8'?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"
xmlns:ns1="http://www.microsoft.com/networking/WLAN/profile/v3">
<name>HERE THE NAME IS EMPTY, THIS IS WHY THE FILE IS CALLED "VIRGIN"</name>
<SSIDConfig>
<SSID>
<name>ALSO HERE</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>auto</connectionMode>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>false</protected>
<keyMaterial>THE PASSWORD IS ALSO EMPTY</keyMaterial>
</sharedKey>
</security>
</MSM>
<ns1:MacRandomization>
<ns1:enableRandomization>false</ns1:enableRandomization>
</ns1:MacRandomization>
</WLANProfile>
然后使用脚本修改文件以输入我的 wifi 名称(此处为 antigon)和密码。所以现在我的“virgin.xml”不再是处女了,它是一个经典的 wifi 配置文件XML,里面有一个名字和一个密码。
我
netsh wlan add profile filename = "C:\virgin.xml"
从 XML 文件中添加配置文件我添加了一个配置文件,但是如果我添加了
netsh wlan show profiles
,则没有“原始”配置文件。我推断它创建了一个配置文件,其中包含 XML 文件中指示的 wifi 名称,antigon。已经有一个叫做 antigon 的,基本的,因为它是我的 wifi,所以我已经连接上了,当我查看配置文件时,仍然只有一个 antigon。结论是因为我没有收到错误消息:它使用 XML 文件中给出的 those 修改了已经存在的 antigon 配置文件的信息,其中包括密码 (也许是这个有一点我错了)我根据网站上给出的语法
netsh wlan connect
:netsh wlan connect ssid = YOURSSID name = PROFILENAME
连接到提供名称和配置文件的 wifi 网络(以便它获取密码).所以对我来说:netsh wlan connect ssid = antigon name = antigon
“连接请求成功”,连接我
我把XML文件里的密码改成一个假的,然后重复步骤2到4,“连接请求成功”,还是连接上了! (这就是为什么我说这可能是我在第 3 步错误的地方:也许它没有更改密码,所以仍然连接是很合乎逻辑的?)
有谁知道错误在哪里?这很烦人,我手头有所有的元素来做我想做的事,但我无法正确地适应它们!我想做的是,当我在 XML 文件和 运行 netsh wlan export 然后 netsh wlan connect 中输入正确的密码时,它会连接我,如果我输入错误则不起作用密码。
*我还可以做什么:我从 python 脚本调用批处理文件,这是我的主脚本。因此,如果您有使用 Python 连接到 wifi 的解决方案,例如,我知道有像 os 这样的库允许使用 cmd 命令,我接受它们!
答案如下:如何使用 Python 连接到无线网络并提供密码?
我们要做的是使用我们的 Python 脚本调用批处理 (.bat) 文件,这相当于 cmd 命令的文本文件。我使用的是 Python (3.8) 和 windows 10.
的最新版本如果您从未连接到该 WIFI(忽略其他):
netsh wlan export profile name = A_WIFI_YOU_ALREADY_CONNECTED_INTO
所以你可以获得一个XML文件。然后打开,每次出现"name"修改为你要连接的wifi名称替换值:
<?xml version='1.0' encoding='utf-8'?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1" xmlns:ns1="http://www.microsoft.com/networking/WLAN/profile/v3">
<name>HERE THE NAME</name>
<SSIDConfig>
<SSID>
<name>HERE THE NAME</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>auto</connectionMode>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>false</protected>
<keyMaterial>HERE IS YOUR PASSWORD, DON'T CHANGE IT, WE WILL DO IT LATER</keyMaterial>
</sharedKey>
</security>
</MSM>
<ns1:MacRandomization>
<ns1:enableRandomization>false</ns1:enableRandomization>
</ns1:MacRandomization>
</WLANProfile>
然后:
netsh wlan add profile filename = PATH_TO_THE_XML
好的,现在你已经有了你的个人资料,让我们看看下一步是什么(如果你已经连接到 wifi 一次,请从这里开始):
netsh wlan set profileparameter name=YOUR_WIFI keyMaterial = YOUR_KEY
netsh wlan connect name=YOUR_PROFILE_NAME(usually same as wifi name) ssid=YOUR_WIFI
第一行将更改密码,第二行将连接您。
注意:即使密码错误,它也会说你已连接,但不会连接你。所以不要读取输出来检查您是否已连接...
最后一步:如何在 python 脚本中使用它? 2个选项:
- 使用OS库调用cmd命令:
import os
os.popen('your command here')
(别忘了先用pip安装os)
- 使用批处理文件:
创建一个新的 txt 文件,将所有命令逐行写入其中,并将其命名为 "connect.bat"。然后创建一个python脚本:
import subprocess
def connect():
subprocess.call([r"path where the batch file is stored\name of the batch file.bat if it is in the same directory (don't need to specify the path)"])