Если ты хочешь стать действительно толковым хакером, ты просто обязан уметь писать сценарии. Нет, не те которые к фильмам, а те которые автоматизируют выполнении некоторых действий. В идеале ты должен научиться писать сценарии используя какой-нибудь язык программирования, например Python или Ruby. Но начинать надо с простого, поэтому сегодня поговорим о сценариях оболочки. Я попытаюсь объяснить тебе базовые основы написания таких сценариев, на конкретном примере. На первый взгляд это может показаться очень сложным, но если понять основную концепцию и разобраться в синтаксисе, то можно создавать вполне толковые вещи.
В принципе, можно делать всё ручками из терминала, но, когда, например, одну и туже задачу тебе надо повторить много раз, гораздо удобней и быстрее набросать сценарий и автоматизировать весь процесс. И вот, как раз в этом нет ничего сложного.
Давай, для примера, создадим сценарий, который будет сканировать нужную нам подсеть в поисках нужного нам открытого порта и выводить результат в отдельный файл.
Писать сценарий можно в любом текстовом редакторе. Это дело вкуса.
Сценарий начинается с ввода символов #! – это шебанг, благодаря ему система понимает, что всё что идет после него это интерпретатор, который мы хотим использовать в нашем сценарии, соответственно теперь надо указать какой мы хотим использовать интерпретатор: /bin/bash – это говорит системе, что мы хотим использовать интерпретатор оболочки BASH
Теперь переходим непосредственно к самому сценарию:
Код:
echo "Enter subnet:"
read subnet
команда echo выводит на экран наше сообщение. В кавычках пишем, то что хотим сказать пользователю, в нашей ситуации мы предлагаем ввести адрес подсети. Используя команду read, мы поместим данные введенные пользователем в переменную subnet. (Переменная – это область памяти в которой мы можем хранить какие-либо данные, названия переменных можно придумывать произвольные)
Код:
echo "Enter port:"
read port
теперь мы предложили пользователю ввести интересующий его номер порта, который мы будем искать в подсети. И, как и в предыдущем случае, поместили введенные данные в переменную read.
теперь нам нужно запустить сканирование подсети, для этого мы будем использовать утилиту nmap:
Код:
nmap -p $port -sT $subnet -oG res
$ – будет использовать значение хранящееся в переменной, после чего указывается имя переменной;
-oG res – создаст файл res и поместит туда результаты;
Однако в такой концепции мы поместим в файл res все результаты полученные утилитой nmap, и, естественно, никого удобства от использования сценариев не ощутим, поэтому следующим шагом можем отфильтровать результаты и вывести только необходимые нам данные:
Код:
cat res |grep open >result
cat result
по сути, если бы мы обращались к человеку, то этими командами мы говорим: ” (cat) открой файл res и (grep) отфильтруй результаты, сохранив строки с результатом open в файл result
Теперь наш скрипт можно сохранить и использовать. Но перед тем как его запускать, давай перейдём в терминале в каталог с нашим файлом, и введем команду ls -l
в результате у нашего файла мы увидим разрешения rw-r – r– т.е. запись и чтение, а вот запуска нет (x – запуск), это легко исправить одной командой:
Разрешение на запуск (х) получено. Теперь можем запустить наш скрипт:
После того как nmap закончит работу, в каталоге с нашим скриптом появиться файл result, с результатами работы:
Для первого знакомства с написанием сценариев, я думаю достаточно. Общий принцип я объяснил, для лучшего понимания попрактикуйся с другими утилитами, придумай какой-нибудь свой сценарий.