一个乐于分享的博客
关注互联网折腾服务器分享码农的日常

小米换华为-读写wifiConfig.db同步WIFI列表

小米换华为-读写wifiConfig.db同步WIFI列表

本篇文章源自一次换机经历,岩兔站手机从小米换成了华为。

安卓换机最方便的就是通过Google同步。系统设置,应用列表,联系人通话记录这些都能无缝衔接。但是国行华为系统不支持Google服务,所以原生的换机方法就没法用了。

这时候想起了“xx换机助手”,市面上同类很多,因为新手机是华为,所以选择了华为官方的“手机克隆”工具。此类换机工具可以同步联系人,通话记录,短信,图片,应用等绝大多数东西,但是不同品牌手机的系统设置却无法同步。

系统设置中最重要的就是wifi密码,一个人的活动不止两点一线,所以手机用的久了,里边存了大量的wifi。比如自己家,亲戚朋友家,女友家,隔壁少妇家,住过的各种小旅馆等等。岩兔站可不想因为一次换手机而再次输入一遍所有wifi密码。

于是岩兔站想到了一个办法,通过手机自带的备份还原进行wifi密码同步

小米手机备份

进入:设置~更多设置~备份和重置~本地备份~新建备份

备份中勾选系统设置~WLAN设置,然后开始备份。

小米换华为-读写wifiConfig.db同步WIFI列表

备份完成之后到路径为SD卡根目录/MIUI/backup/AllBackup,找到其中的Wi-Fi设置(com.android.settings).bak拷到电脑上备用

小米换华为-读写wifiConfig.db同步WIFI列表

华为手机备份

进入:设置~备份和恢复~外部存储或华为手机助手(选一个你方便拷出到电脑的方式)~新建备份~勾选“WLAN及密码”

小米换华为-读写wifiConfig.db同步WIFI列表

确定后即可生成wlan备份,再到备份文件夹找到wifiConfig.db拷到电脑备用

注意:备份时一定要取消加密选项,否则备份包无法打开和编辑。

Wifi整合

具体思路是将,小米wifi列表整合入wifiConfig.db,再由华为手机进行还原。

小米备份文件

小米备份文件Wi-Fi设置(com.android.settings).bak其实是文本文件,用记事本打开,格式如下:

network={
//SSID和加密方式
ConfigKey="NETGEAR"-WPA_PSK
//SSID
SSID="NETGEAR"
//wifi密码
PreSharedKey="yantuz.cn"
WEPTxKeyIndex=0
//是否隐藏wifi
HiddenSSID=true
AllowedKeyMgmt=02
AllowedProtocols=0b
AllowedAuthAlgos=01
AllowedGroupCiphers=0f
AllowedPairwiseCiphers=06
}

需要的内容包括SSID、加密方式、密码、是否隐藏wifi这4项。

华为备份文件

华为备份文件wifiConfig.db是SQLite3格式的数据库,需要用SQLite客户端如NaviCatAdminer打开,岩兔站用的是NaviCat,简单方便,打开后内容如图:

小米换华为-读写wifiConfig.db同步WIFI列表

重点内容与小米的备份文件一致。

合并备份

合并小米备份包至华为备份包wifiConfig.db,既然华为备份包为数据库,岩兔站就把小米的备份文件转换格式为标准的SQL语句。

这个功能岩兔站用C#写了个方法实现,各位大佬可以用自己喜欢的方法进行内容提取和转换,代码如下:

public ActionResult readline()
{
    var file = @"D:\Wi-Fi设置(com.android.settings).bak";
    var lines = System.IO.File.ReadAllLines(file, Encoding.UTF8);

    var text = "";

    var psk = "NULL";
    var ssid = "";
    var key_mgmt = "";
    var hiddenSSID = "";

    foreach (var l in lines)
    {
        if (l.StartsWith("ConfigKey"))
            key_mgmt = l.Split('-').Last().Split('"').Last();

        if (l.StartsWith("SSID"))
            ssid = l.Split('=').Last();

        if (l.StartsWith("HiddenSSID"))
            hiddenSSID = l.Split('=').Last();

        if (l.StartsWith("PreSharedKey"))
            psk = $"'{l.Split('=').Last()}'";

        if (l.StartsWith("network"))
        {
            text += $"INSERT INTO wifiConfig (psk,ssid,key_mgmt,hiddenSSID) VALUES ({psk},'{ssid}','{key_mgmt}','{hiddenSSID}');
";
                    
            psk = "NULL";
            ssid = "";
            key_mgmt = "";
            hiddenSSID = "";
        }
    }

    return Content(text);

}

输出结果为:

INSERT INTO wifiConfig (psk,ssid,key_mgmt,hiddenSSID) VALUES ('"yantuz.cn"','"NETGEAR"','WPA_PSK','false');
INSERT INTO wifiConfig (psk,ssid,key_mgmt,hiddenSSID) VALUES ('"yantuz.cn"','"NETGEAR-5G"','WPA_PSK','false');
……

复制全部SQL语句,在NaviCat中执行插入语句。

将修改过的wifiConfig.db放回华为备份包目录。

华为手机中执行恢复操作。

小米换华为-读写wifiConfig.db同步WIFI列表

查看wifi列表,100多条wifi信息已经成功转移!


国行手机没有内置Google服务给换机造成了很大的困难,国产手机厂商的换机软件虽然强大,但对系统底层的系统设置,wifi列表等无能为力,只有同品牌之间才能互相备份,一旦换了品牌就没法操作了。

岩兔站这次手工恢复wifi列表,虽然比较繁琐,但按照这个思路,理论上适用所有不同品牌国产手机的wifi列表同步操作。

转载务必注明出处:岩兔站 » 小米换华为-读写wifiConfig.db同步WIFI列表
赞 (0) or 打赏

讨论区 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址