如何在16.04中每次启动时随机更改MAC

在以前的Ubuntus中,使用macchanger很容易实现,但它似乎不适用于16.04。 只要重新建立与Internet的连接,MAC似乎就会重置为默认值。 是的,现在它可以在网络管理器GIU中完成,但这消除了脚本执行它的自动化,并且还删除了macchanger的随机MAC生成工具。

我看到其他问题指出解决方案是使用GUI手动更改它,但我没有看到任何可以从命令行随机执行它,就像启动脚本所需。

怎么做

没有任何第三方应用程序,我们可以简单地使用NetworkManager的cli工具nmcli来更改终端,脚本等中的MAC地址。

 nmcli connection modify enp3s0 802-3-ethernet.cloned-mac-address 02:7d:xx:xx:... 
  • 使用所需的连接名称更改enp3s0,例如:Home,Office Wi-Fi等。

如果您尝试克隆Wi-Fi连接,请使用802-11-wireless.cloned-mac-address而不是802-3-ethernet.cloned-mac-address

此外,我们需要一种生成随机MAC的方法,这是一个创建完全随机MAC地址的简单解决方案( 基本源 ):

 echo $RANDOM | md5sum | sed\ 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/' 

最终解决方案

最后在你的脚本中使用这样的东西:

 mac=$(echo $RANDOM | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/') nmcli connection modify enp3s0 802-3-ethernet.cloned-mac-address $mac 

可能还需要重新加载连接:

 nmcli connection down enp3s0 nmcli connection up enp3s0 

你可以将它放在.profile或任何你想要的地方。


使用有效的OUI创建随机mac

如果您不想要完全随机的mac地址,请从GNU MAC Changer GitHub存储库下载。

然后使用此行生成mac地址:

 shuf -n1 OUI.list | cut -f1-3 -d' ' | tr ' ' ':' | xargs -I company echo\ company:`echo $RANDOM|md5sum|sed 's/^\(..\)\(..\)\(..\).*$/\1:\2:\3/'` 
  • shuf -n1 OUI.list :从该文件中选择一个随机行。
  • cut -f1-3 -d' '削减了三个必要的字段
  • tr ' ' ':'将其转换为我们想要的forms
  • xargs ...创建另外三个随机部分并连接结果。