Генератор случайных MAC-адресов и имени компьютера в Gentoo Linux при загрузке
Продолжаем рубрику "Крякали софт, мы крякали". Сегодня гвоздем программы будет генератор рандомных имен компьютера и мак-адресов при старте ЖМУ\Пинус.
Вообще, зачем это надо? Ну, все просто. Это нужно, чтобы совесть не грызла, когда придет товарищ майор по вашу душу, и будет изучать ваш ноут или пекарню, на предмет незаконных действий.
Как менять MAC-адреса вообще?
# ifconfig
Тут должно быть нечто вроде:
enp4s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 72:07:df:e6:09:d8 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 182 bytes 13296 (12.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 182 bytes 13296 (12.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a421:8cff:fef9:743c prefixlen 64 scopeid 0x20<link>
ether a6:21:8c:f9:74:3c txqueuelen 1000 (Ethernet)
RX packets 15161 bytes 10297809 (9.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7015 bytes 2171047 (2.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Из выхлопа можно выделить wlp2s0 и enp4s0
enp4s0 -- проводной интерфейс (ранее подобные назывались eth0)
wlp2s0 -- беспроводной интерфей (а эти раньше назывались wlan0)
Если подключен тырнет через провода, то менять надо мак-адрес у enp4s0 и выполняется у нас все это в такой последовательности:
Для начала опускаем интерфейс командой:
# ifconfig enp4s0 down
Теперь можно устанавливать мак-адресс командой:
# ifconfig enp4s0 hw ether 72:07:df:e6:09:d8
Когда новый мак-адрес применился, можно заново поднимать интерфейс:
# ifconfig enp4s0 up
И все, теперь новый у нас новенький мак-адресс! Аж до первой перезагрузки системы. Ну и нахрена нам это надо, если мы хотим постоянно новенькие случайные мак-адреса? И тут нам на помощь придет macchanger! Маленькая, но довольно матерая тулза. Описывать могущество и мощность не будем, и так понятно из названия, что она может менять мак-адресс. Но еще и может задавать и в случайно порядке. Данная тулза доступна в портеже, и ставится в одну команду (В других прыщелинупсах также доступна данная хреновина)
# emerge macchanger
Теперь можно приступить к тест-драйву. Проще говоря, посмотреть куда и как сосать.
Допустим, надо на проводном интерфейсе сгенерировать новый случайный мак-адрес. Почти все по старой схеме:
# ifconfig enp4s0 down
# macchanger -r enp4s0
# enp4s0 up
В целом первая и последняя команды ясны. А вот вторую можно и нужно рассмотреть детальнее.
macchanger -- тулза для смена мака
-r -- опция указывающая задания рандомного мака
enp4s0 -- нужный нам интерфейс
Вроде все хорошо, случайные мак-адреса добываются чуть проще. Но эти команды нужно выполнять вручную. Это ж надо быть каким мудаком, чтобы делать это каждый раз? Короч, можно написать скрипт, и он будет делать все сам. Создаем файл в домашней папке пользователя /home/user/.macchanger.sh :
# touch /home/user/.macchanger.sh
И теперь отредактируем как надо:
# nano /home/user/.macchanger.sh
Вставляем этот текст:
#!/bin/bash
ifconfig enp4s0 down
/usr/bin/macchanger -r enp4s0
ifconfig enp4s0 up
Схороняем закрываем. И теперь надо от рута добавить правушек.
# chmod +x /home/user/.macchanger.sh
Ну и чисто для пробы, от рута запускаем скрипт:
# sh /home/user/.macchanger.sh
В выхлопе должно вывалить, что интерфейс опущен как опущенка, сгенерирован мак-адрес и интерфейс поднят с новым рандомным маком!
Это стало чуть удобнее, но основная цель так и недостигнута. Нам же надо при старте прыщей это все выполнять. Вчера я как раз написал статью, Gentoo Linux + OpenRC + Хочу_запуск_скритпов_при_загрузке . Вот все никак придумать, нахрена это надо. А вот сегодня пригодилось, и можно заюзать знания из этой вот статьи. Но мы поступим чуть проще. Перенесемскрипт из домашней папки в /etc/local.d и немного подправим имя. Все это делает команда mv
# mv /home/user/.macchanger.sh /etc/local.d/macchanger.start
Также добавляем в автозагрузку демон local, и радуемся жизни при старте системы.
# rc-update add local default
дляТ.е. все автоматизировано так, что можно попивая пивко рассекать просторы локальной сети, и совсем не париться. Мак-адреса рандомно генерируются при старте системы, или же при повторном пуске скрипта.Но вот хочется же еще рандомное имя пекарнию. Поэтмоу в скрипт внесем небольшую поправочку добавочку. И для этого открываем его через какой-нибудь ссаный рекдактор типа nano:
# nano /etc/local.d/macchanger.start
И в конец файла вставляем это вот:
FILE=/usr/share/dict/cracklib-small
WORD=$(sort -R $FILE | head -1)
printf “%s\nChanging Hostname…\n”
OLDHOST=$(hostname)
hostname $WORD
if [ $? == 0 ]; then
printf “%sPrevius Hostname: $OLDHOST \n”
printf “%sRandom Hostname: $WORD \n”
else
printf “%sScript encounter an error, sorry…\n”
exit 1
fi
Ну вот и все, а чо еще? Крч скрипт в /etc/local.d/macchanger.start должен выглядеть таким образом:
#!/bin/bash
ifconfig enp4s0 down
/usr/bin/macchanger -r enp4s0
ifconfig enp4s0 up
FILE=/usr/share/dict/cracklib-small
WORD=$(sort -R $FILE | head -1)
printf “%s\nChanging Hostname…\n”
OLDHOST=$(hostname)
hostname $WORD
if [ $? == 0 ]; then
printf “%sPrevius Hostname: $OLDHOST \n”
printf “%sRandom Hostname: $WORD \n”
else
printf “%sScript encounter an error, sorry…\n”
exit 1
fi
И да, надо отметить маленькую особенность скрипта. Если в ситеме нет словарей и папка /usr/share/dict пустая, то скрипт работать не будет. Можно поставить aircrack-ng, и с ним идет небольшой словарик. Вот его и можно заюзать Обычно он называется cracklib-smal и скрипт уже заранее подготовлен для использования данного словаря. Если же в системе есть другой словарь, то его также можно заюзать, сделав изменения в строчке
FILE=/usr/share/dict/other-dictionary
Только и еще один маленький нюанс, словарь должен состоять чисто из английских слов, иначе будут проблемы с применением и отображением имени пекарни.
Теперь точно всё, весь синтаксис скрипта лень расписывать, вообще надоело писать. Всё, пока.
Комментариев нет:
Отправить комментарий