понедельник, 20 октября 2014 г.

Генератор случайных 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

 

Только и еще один маленький нюанс, словарь должен состоять чисто из английских слов, иначе будут проблемы с применением и отображением имени пекарни. 

 

Теперь точно всё, весь синтаксис скрипта лень расписывать, вообще надоело писать. Всё, пока.

Комментариев нет:

Отправить комментарий