我想知道,为什么我不能通过这样做来更改我的 mac 地址:
sudo ifconfig wlan0 down
sudo ifconfig wlan0 hw ether 03:a0:04:d3:00:11
错误在于SIOCSIFHWADDR: Cannot assign requested address
我用 Google 搜索过但没有发现任何有价值的东西。
附言和往常一样,我做不到这一点。什么都不起作用。我取了新的 mac 地址,它比我当前的 mac 地址增加了 1(旧的11:11:11:11:11:cf, 新的11:11:11:11:11:d0)
sudo ifconfig wlan0 down
sudo ifconfig wlan0 hw ether 11:11:11:11:11:d0
没有错误,在我这样做之后它甚至自动连接到了 wifi(尽管我没有这样做sudo ifconfig wlan0 up)
。我以为它赢了。然而,当我这样做时
sudo ip addr
我看到了和以前相同的 MAC 地址。什么都没有改变。
答案1
03:a0:04:d3:00:11
不是单播地址,因为第一个八位字节必须是偶数。查看下图以更好地理解它。此图片来自维基百科 - MAC 地址页面
所以改为02:a0:04:d3:00:11
例如
答案2
试试这个 c 实际上会发生什么情况,有一个特定的 mac 地址模式,它是仅注册的一个,所以使用随机 mac 地址你就无法更改该地址。
ifconfig | grep HWaddr
ifconfig eth0 down
ifconfig eth0 hw ether 00:1E:68:35:FF:91
ifconfig eth0 up
ifconfig eth0 hw ether 00:1d:92:43:f1:29
祝你好运
答案3
我假设,由于您尝试更改无线接口的 HWaddr,因此您正在尝试进行一些无线渗透测试并需要欺骗您的 HWaddr。好吧,有几种方法可以做到这一点,但我将向您提供我的方法,因为我没有看到它包含在这里。以下 bash shell 代码是我创建的非常基本的随机 HWaddr 生成器。它并不完美,确实存在一些错误(例如,某些生成的 MAC 不允许进入设备)。
这是 bash 的随机 HWaddr 函数:
#!/bin/bash
RAND_MAC() {
gen() {
NUM="$(tr -dc '0-9a-f' </dev/urandom | head -c 2)"
echo -n "$NUM:"
}
for c in {1..6}; do
if [ "$c" -lt "6" ]; then
gen
else
gen | tr -d ':'
fi
done
}
RAND_MAC
现在我将解释一下这个函数的作用:
RAND_MAC()
将是函数声明。这基本上是让 bash shell 解释器知道“嘿,这里有一个函数。”并让它寻找开括号和闭括号{}
。声明函数后RAND_MAC()
,有一个{
后面跟着嵌套的新函数声明,称为gen()
。嵌套基本上只是意味着函数内部还有一个函数。函数gen()
将随机生成随机 HWaddr 的八位字节。是gen()
一个自包含函数,仅在for
其执行的循环期间激活。当gen()
被调用时,名为的变量NUM
被分配命令输出的值。NUM
被分配的命令是。这将使用数字af /dev/urandom`$(tr -dc '0-9a-f' </dev/urandom | head -c 2)
输出一个 2 个字符的字符串。0-9 and lower case letters
in random order by pulling from
现在,函数gen()
已经基本解释清楚了,主函数的其余部分RAND_MAC()
将控制显示。for
循环将迭代 6 次。第 6 次迭代后,循环for
移动到done
并结束。结果是新生成的 HWaddr,您现在可以将其用于您的wlan0
接口或任何接口名称。我们为此使用 bash 函数的原因是为了防止此脚本的数据处于全局范围内。我们希望将此类脚本保持在本地以消除我不会在这里讨论的错误。将函数保存到文件(例如类似)后/usr/bin/macgen
,授予其执行权限。
user@group:~# chmod +x /usr/bin/macgen
现在,您可以随时从终端命令行使用新的 HWaddr 生成脚本。您可以使用以下命令调用该工具macgen
:
现在来介绍如何使用尚未给出的方法来分配这个新的 HWaddr。
许多人建议使用ifconfig
或 甚至iwconfig
来更改无线接口的 HWaddr。好吧,ifconfig
和 甚至iwconfig
是已弃用的工具,并且几乎已被称为ip
和 的工具所取代iw
。我将在此回答中使用的工具是iw
。以下命令将是您需要遵循的命令,以创建虚拟接口、欺骗其 HWaddr 并避免更改真实物理硬件的 HWaddr。对我来说,这种方法更加合理和安全,因为我们可以简单地将我们的真实物理接口关闭,ifconfig
并使用完全虚拟和虚假的接口来完成我们想要做的所有事情:
首先,我们将生成要使用的新的 HWaddr。
user@group:~# macgen
然后我们将用ifconfig
它把真实的设备关闭。
user@group:~# ifconfig wlan0 down
现在我们可以使用 创建 VNIC iw
。
user@group:~# iw dev wlan0 interface add mon0 type monitor addr (new mac here)
最后,我们打开界面。
user@group:~# ifconfig mon0 up
现在您应该有一个处于监控模式的伪造无线接口以及该接口的伪造 mac 地址。如果您需要将其模式从监控更改为托管,以便您可以使用它连接到接入点,只需执行以下操作:
关闭 VNIC:
user@group:~# ifconfig mon0 down
改变模式:
user@group:~# iwconfig mon0 mode managed
[快速提示] 在更改模式之前,请确保所有其他管理模式接口都已关闭,否则,您将切换错误标志iwconfig
。
恢复接口:
user@group:~# ifconfig mon0 up
使用以下命令检查配置是否正确:
user@group:~# iw dev
输出应类似于此:
phy#0
Interface wlo1
ifindex 3
wdev 0x1
addr 00:11:22:33:44:55
type managed
channel 161 (5805 MHz), width: 40 MHz, center1: 5795 MHz
txpower 50.00 dBm
当您准备摆脱 VNIC 时,只需将其删除:
user@group:~# iw mon0 del
然后恢复你的真实界面:
user@group:~# ifconfig wlan0 up
希望这些信息对您有所帮助。如果您对此有任何疑惑,请随时询问。
答案4
http://www.microhowto.info/howto/change_the_mac_address_of_an_ethernet_interface.html
看看这个
它说第一个数字应该是偶数 它对我有用