gpt4 book ai didi

bash - 如何将 ifconfig 与 openssl 结合使用以更改 MAC 地址

转载 作者:行者123 更新时间:2023-11-29 09:22:31 25 4
gpt4 key购买 nike

我正在尝试制作一个单行 MAC 地址欺骗程序。但是,我无法将 ifconfig 与 OpenSSL 结合使用。

我的方法是使用 OpenSSL 将 MAC 地址更改为随机生成的 MAC 地址。但是,将更改 MAC 地址的代码与随机 MAC 地址创建者相结合似乎不起作用。

openssl rand -hex6 | sed 's/\(..\)/\1:/g;s?.$//

此代码创建一个随机 MAC 地址

sudo ifconfig en0 ether xyz

此代码将 MAC 地址设置为 xyz

合并这两行并没有按预期更改 MAC 地址。

sudo ifconfig en0 ether openssl rand -hex6 | sed 's/\(..\)/\1:/g;s?.$//

此代码返回“无效参数”

我希望这是一个格式问题,但我无法在线找到正确的格式指南,而且我是 bash 的新手。

最佳答案

这段代码中有很多问题。我认为你缺少的主要是你需要 $( )捕获一个命令的输出,以便您可以将其用作另一个命令的参数(并且您通常需要在其周围加上双引号,以避免意外的解析怪异)。你写的方式,openssl rand -hex6不被视为命令,就像 sudo ifconfig 的三个参数一样(它是 sudo ifconfig 的输出,通过管道传输到 sed )。

-hex 6 中还需要一个空格, 和 sed 的结尾命令使用不一致的定界符并且缺少右引号。此外,而不是在第一个 sed 中使用捕获组命令,你可以只使用 &获取整个匹配的字符串(即 s/../&:/g )。

这是更正后的版本:

sudo ifconfig en0 ether "$(openssl rand -hex 6 | sed 's/../&:/g;s/:$//')"

编辑:正如@Cyrus 在评论中指出的那样,MAC 地址空间分为全局管理与本地管理,以及单播与多播(参见 Wikipedia )。使用多播地址可能会引起麻烦,因此最好强制第二个数字为偶数。这有点棘手,所以我要回避如何去做的问题......

关于bash - 如何将 ifconfig 与 openssl 结合使用以更改 MAC 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55555925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com