Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #70, ОКТЯБРЬ 2004 г.

Подложи свинью в консоль

Докучаев Дмитрий aka Forb

Хакер, номер #070, стр. 070-114-3


Уверен, что у такого работника пропадет желание трудится до конца смены, даже несмотря на то, что на самом деле никакого шатдауна не произойдет.

.vi вызывающий halt

#!/bin/sh

DATE=$(LC_ALL=en date +'%c')

TTY=$(basename `tty`)

echo -e "Broadcast message from $USER (pts/$TTY) ($DATE)\n\nThe system is going down for system halt NOW!"

sleep 500

Чтобы осуществить прикол, нужно знать вывод команды halt. Уверен, ты выучил его наизусть. Осталось лишь вставить в мессагу переменные $USER, $TTY и текущую дату. Последняя выводится на буржуйском языке в формате %c, как это видно из кода. Что касается псевдоустройства, то прежде чем его напечатать, необходимо удалить из переменной каталог /dev/. Эта проблема быстро решается при помощи регвыра утилиты sed, либо при помощи программы basename. В скрипте был использован второй вариант. Можешь нагрузить сценарий перехватом сигнала SIGINT (чтобы реальнее было!) и отключением отображения символов (с помощью команды stty).

Удаляем... и зависаем!

Часто юзер вычищает из своего каталога мусор. Чтобы выпендриться, некоторые личности юзают консольную команду rm, а не удобный интерфейс редактора mc. Над такими коллегами мы и будем прикалываться. Представь, что юзер запустил rm, а бинарник злосчастно завис. Жертва будет искать всевозможные причины – протрояненный /bin/rm, падение сервера или повреждение кабеля. От тебя требуется лишь поддакивать ламеру, мол, у меня такая же проблема, не волнуйся, друг :).

Алгоритм сценария будет следующим: скрипт проанализирует параметры rm и возьмет последний в качестве файла (так оно и бывает чаще всего). Затем будет выведено предупреждение об удалении особо важного документа. Юзер, не раздумывая, попытается нажать «y», но не тут-то было! Консоль намертво подвиснет. Это произойдет из-за того, что в сценарии будет выключено отображение ввода, а также перехвачен сигнал SIGINT.

.rm – удалит файл и подвесит систему

#!/bin/sh

trap "stty echo" EXIT

trap true SIGINT

for file in "$@"

do

last=$file

done

echo -n "rm: remove write-protected regular file \`$file'? "

`stty -echo`

while read $deep

do

false > /dev/null 2> &1

done

Видно, что на всякий случай я перехватил и второй сигнал – сигнал выхода из программы. Когда это произойдет (через kill и т.п.), все символы снова будут отображаться как ни в чем не бывало. До повторного запуска /bin/rm :).

Только для посвященных!

По счастливой случайности ты увидел открытую консоль админа, который владеет рутовым паролем? Очень хорошо! Самое время для приколов над умными людьми. Я уверен, сисадм долго будет искать подставу, а когда найдет, не отойдет от открытой консоли ни на шаг. К тому же, если администратор не запалил тебя у его компа, у тебя будет железное алиби :). Да, собственно, прикол будет безобидным. Всего-то выведем админу сообщение, что он недостоин рутовых привилегий. Поверь, такие мессаги больше всего бесят сисадмов :).

Назад на стр. 070-114-2  Содержание  Вперед на стр. 070-114-4