Интересно, почему я не могу изменить свой mac-адрес, выполнив следующее:
sudo ifconfig wlan0 down
sudo ifconfig wlan0 hw ether 03:a0:04:d3:00:11
Ошибка: SIOCSIFHWADDR: Cannot assign requested address
Я погуглил, но не нашел ничего ценного.
П.С. Как обычно, я не могу этого сделать. Ничего не работает. Я взял новый 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
Не было никакой ошибки, он даже подключился к Wi-Fi автоматически после того, как я сделал это (даже если я не сделал sudo ifconfig wlan0 up)
. Я думал, что выиграл. Однако, когда я сделал
sudo ip addr
Я видел тот же Mac-адрес, что и раньше. Ничего не изменилось.
03:a0:04:d3:00:11
не является одноадресным адресом, поскольку первый октет должен быть четным. Посмотрите на изображение ниже, чтобы понять это лучше. Это изображение из Википедии - страница MAC-адреса
, поэтому вместо этого укажите 02:a0:04:d3:00:11
, например
попробуйте это с тем, что происходит на самом деле, существует определенный шаблон 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
Удачи
Я предполагаю, что, поскольку вы пытаетесь изменить HWaddr вашего беспроводного интерфейса, вы пытаетесь провести некоторое беспроводное тестирование и вам необходимо подделать ваш HWaddr. Ну, есть несколько способов сделать это, но я дам вам мой метод, так как я не видел его здесь. Следующий код оболочки bash - это очень простой случайный генератор HWaddr, который я создал. Он не идеален и имеет некоторые ошибки (например, некоторые сгенерированные MAC не разрешены для устройства).
Вот случайная функция HWaddr для bash:
#!/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 знать: «Эй, здесь есть функция». и для этого искать открытые и закрытые скобки {}
. После объявления функции RAND_MAC()
существует один {
, за которым следует объявление новой вложенной функции, которое называется gen()
. Вложенный в значительной степени просто означает функцию внутри функции. Функция gen()
- это то, что будет случайным образом генерировать октеты случайного HWaddr. gen()
является автономной функцией и активируется только во время цикла for
под которым она выполняется. Когда вызывается gen()
, переменной с именем NUM
присваивается значение вывода команды. Команда, которой назначается NUM
, является $(tr -dc '0-9a-f' </dev/urandom | head -c 2)
. Это выведет 2-символьную строку с использованием чисел 0-9 and lower case letters
a-f in random order by pulling from
/ dev / urandom`.
Итак, теперь, когда функция 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
Измените mode:
user@group:~# iwconfig mon0 mode managed
[Quick note] Перед изменением режима убедитесь, что все остальные интерфейсы управляемого режима отключены, в противном случае вы установите флаг ошибки с помощью 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
Надеюсь, эта информация поможет , Не стесняйтесь спрашивать, если вы не знаете, что-то из этого.
Как вы знаете, только macchanger - это инструмент для изменения mac-адреса в Linux. Для изменения типа интерфейса wlan0 ifconfig wlan0 down macchanger -r wlan0 ifconfig wlan0 up -r для случайного изменения (автоматически) Вы можете получить здесь список подробностей из Здесь
http://www.microhowto.info/howto/change_the_mac_address_of_an_ethernet_interface.html
ПОСМОТРЕТЬ ЭТО
в нем говорится, что первый номер должен быть четным номер у меня сработало