千家信息网

使用Node.js怎么获取WI-FI密码

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章给大家分享的是有关使用Node.js怎么获取WI-FI密码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。演示效果全局安装wifi-password-cli依赖npm
千家信息网最后更新 2024年11月30日使用Node.js怎么获取WI-FI密码

这篇文章给大家分享的是有关使用Node.js怎么获取WI-FI密码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

演示效果

全局安装wifi-password-cli依赖

npm install wifi-password-cli -g# ornpx wifi-password-cli

使用

$ wifi-password [network-name]$ wifi-password12345678$ wifi-password 办公室wifia1234b2345

觉得Node.js很神奇是么?其实并不是,我们看看它是如何实现的

实现原理

OSX系统

通过下面的命令查询wifi密码

security find-generic-password -D "AirPort network password" -wa "wifi-name"

Linux系统

所有的wi-fi连接信息都在/etc/NetworkManager/system-connections/文件夹中

我们通过下面的命令来查询wifi密码

sudo cat /etc/NetworkManager/system-connections/

Windows系统

通过下面的命令查询wifi密码

netsh wlan show profile name= key=clear

实现源码

它的实现源码也很简单,感兴趣可以学习

https://github.com/kevva/wifi-password

入口文件是index.js,首先通过判断用户的操作系统去选择不同的获取方式

'use strict';const wifiName = require('wifi-name');module.exports = ssid => {        let fn = require('./lib/linux');        if (process.platform === 'darwin') {                fn = require('./lib/osx');        }        if (process.platform === 'win32') {                fn = require('./lib/win');        }        if (ssid) {                return fn(ssid);        }        return wifiName().then(fn);};

Linux

'use strict';const execa = require('execa');module.exports = ssid => {        const cmd = 'sudo';        const args = ['cat', `/etc/NetworkManager/system-connections/${ssid}`];        return execa.stdout(cmd, args).then(stdout => {                let ret;                ret = /^\s*(?:psk|password)=(.+)\s*$/gm.exec(stdout);                ret = ret && ret.length ? ret[1] : null;                if (!ret) {                        throw new Error('Could not get password');                }                return ret;        });};

OSX

'use strict';const execa = require('execa');module.exports = ssid => {        const cmd = 'security';        const args = ['find-generic-password', '-D', 'AirPort network password', '-wa', ssid];        return execa(cmd, args)                .then(res => {                        if (res.stderr) {                                throw new Error(res.stderr);                        }                        if (!res.stdout) {                                throw new Error('Could not get password');                        }                        return res.stdout;                })                .catch(err => {                        if (/The specified item could not be found in the keychain/.test(err.message)) {                                err.message = 'Your network doesn\'t have a password';                        }                        throw err;                });};

Windows

'use strict';const execa = require('execa');module.exports = ssid => {        const cmd = 'netsh';        const args = ['wlan', 'show', 'profile', `name=${ssid}`, 'key=clear'];        return execa.stdout(cmd, args).then(stdout => {                let ret;                ret = /^\s*Key Content\s*: (.+)\s*$/gm.exec(stdout);                ret = ret && ret.length ? ret[1] : null;                if (!ret) {                        throw new Error('Could not get password');                }                return ret;        });};

感谢各位的阅读!关于"使用Node.js怎么获取WI-FI密码"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0