Подмена MAC-адреса

2016-10-06

MAC-адрес вашей сетевой карты, даже беспроводной - это уникальный идентификатор, в котором “зашита” информация о производителе и некоторое другие данные.

Очень часто MAC используется для идентификации компьютера в сети. Например, аэропорт “даёт” попользоваться сетью 1 час, после этого за доступ придётся заплатить.
Сброс MAC-адреса в случайное значение поможет обойти данное ограничение, правда для идентификации компьютера может использоваться не только MAC, но и, например, cookie-файлы.

В Windows можно вписать новое значение MAC-адреса в свойствах сетевой карты, а непосредственное значение выдать вот этот сервис.

В Linux можно воспользоваться вот этим скриптом:

#!/bin/sh

if [ $# -eq 0 ]; then
echo “Usage: $0 <interface>”
echo "Your MAC will be spoofed with random values"
exit 1
fi

ip link set $1 down
macaddr=$(printf ‘%02x’ $((0x$(od /dev/urandom -N1 -t x1 -An | cut -c 2-) & 0xFE | 0x02)); od /dev/urandom -N5 -t x1 -An | sed ‘s/ /:/g’)
ifconfig $1 hw ether $macaddr
ip link set $1 up

Но, иногда бывает так, что сетевая карта настолько сурова, что не дает изменить MAC через ifconfig. “Особенности”, а другими словами баги и недоработки драйверов, пожалуй, главная причина такого поведения.

Так произошло с сетевой карточкой от Realtek. Попытка задать этот самый MAC через ifconfig приводила к ошибке, однако… В настройках драйвера нашлась строчка, которая отвечала за начальную настройку драйвера.

Короче говоря, задача свелась к следующим действиям:

  • Отключить линк
  • Принудительно выгрузить модуль
  • Создать конфигурационный файл с параметрами плюс новым значением MAC
  • Загрузить модуль обратно
  • Включить линк

Итого:

#!/bin/sh

if [ $# -eq 0 ]; then
echo “Usage: $0 <interface>”
echo "Your MAC will be spoofed with random values"
exit 1
fi

ip link set $1 down
macaddr=$(printf ‘%02x’ $((0x$(od /dev/urandom -N1 -t x1 -An | cut -c 2-) & 0xFE | 0x02)); od /dev/urandom -N5 -t x1 -An | sed ‘s/ /:/g’)
rmmod 8192cu
echo "options 8192cu rtw_power_mgnt=0 rtw_enusbss=0 rtw_ips_mode=0 rtw_rx_stbc=0 rtw_initmac="${macaddr}"" >/etc/modprobe.d/8192.conf
modprobe 8192cu
rm /etc/modprobe.d/8192.conf
ip link set $1 up

Вот такая вот музыка.

Кстати, не стоит так развлекаться в сетях вроде московской подземки - каждый раз придется идентифицироваться. Ну и вообще аккуратнее там.


В массы

В трубу