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

问题描述 投票:3回答:1

我正在尝试制作一个单行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的新手。

bash macos terminal openssl mac-address
1个回答
5
投票

这段代码中有很多问题。我认为你缺少的主要是你需要$( )来捕获一个命令的输出,这样你就可以将它用作另一个命令的参数(你通常需要双引号,以避免意外的解析怪异)。你写它的方式,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地址空间被划分为全局与本地管理,以及uncast与多播(请参阅Wikipedia)。使用多播地址可能会造成麻烦,因此强制第二个数字为偶数确实更好。这有点棘手,所以我要解决如何做的问题......

© www.soinside.com 2019 - 2024. All rights reserved.