![](../004.gif)
Высший пилотаж - пишем клавиатурный shiffer
Спецвыпуск Хакер, номер #004, стр. 004-074-1
CJ Pusher (lapkarelief@mail.ru)
Зачем мне сниффер?
У тебя есть старший брат? У моего друга есть. Зато комп у них с братом - один на двоих. Когда мой друг был еще маленьким, он очень хотел полазать в Инете по account'у братца, когда тот уходил в институт. А вот логина с пассвордом так узнать и не мог. Так и остался малыш в детстве без халявной порнухи. С тех пор он сильно изменился - стал угрюмым, нелюдимым, часто плакал. А брат его сейчас работает программистом и до сих пор лазает в сетке. И тут случайно нашел наш герой в директории брата очень интересный софт - прогу, которая ведет log всех нажатых на клаве кнопок. Он решил запустить ее перед тем, как брат полез в Инет. Когда братец пошел спать, мой друг посмотрел этот log и нашел нужные логин и пароль. Затем он сам полез в сеть и в первую очередь стал искать, куда заходил его брат. После недолгого нажимания клавиш, записанных в log'е, он забрался на сайт садо-педофилов-извращенцев с цветными иллюстрациями и анимацией. Парень пришел в ужас - он никогда не ожидал от родного брата таких наклонностей... А неделю назад брата посадили за тройное изнасилование в извращенной форме. Вот так.
Чтобы таких случаев больше не повторялось, советую внимательно относиться к своим родственникам, работающим за твоим компом. Не стоит ли тебе обзавестись клавиатурным шпионом, который бы беспристрастно записывал бы все действия юзера на винт? Сейчас у тебя есть возможность самому написать такую прогу. Если у тебя уже стоит Visual C++, то можно начинать прямо сейчас, если нет, то пришло самое время его поставить.
Часть первая, или что мы хотим от нашей проги?
Очень полезно знать, что будет делать программка, перед тем как начать ее кодить. Неплохо бы представить ее интерфейс, окошки, возможности, поведение. При запуске наше творение будет выдавать окно с тремя кнопками: "Начать работу", "Выход", "Выбор Log файла". Там будет поле с именем отчетного файла и системное меню в левом верхнем углу с пунктом About, где будет висеть твое имя. Нравится? Если нажать кнопку начала работы, то окно свернется, клавиатурные сообщения будут перехватываться, и в tray (рядом с часами) появится иконка, щелкнув которую, можно опять вызвать главное окно, а дальше либо прекратить работу, либо, сменив log-файл, возобновить весь процесс. Чего не сможет наша прога? Во-первых, она не записывает нажатия клавиш в ДОС окне (зато прекрасно работает в full screen, что подтвердил тест на NFS 3). Во-вторых, кофе она тоже варить не умеет - придется самому. И бутылки открывать - самому.
Часть вторая, или с чего начать?
Как написать на С++ нашего шпиона? Здесь придется не только рассчитывать на wizard - немало придется написать ручками. Поэтому прога будет состоять из двух частей: DLL и EXE. В DLL будет содержаться код ядра, перехватывающий клаву. Этот кусок приложения - самый нетривиальный и, к сожалению, останется практически без объяснения. Его придется целиком переписать без визардов или взять готовый на сайте Х. EXE'шник будет управлять запуском слежения, и в нем будет весь интерфейс. Большую часть кода сгенерит App Wizard Visual C++, и немного кода надо будет дописать. Сделать это помогут дальнейшие объяснения и картинки. Сначала мы напишем интерфейс, а затем DLL.