ПРОСТЕЙШИЙ СКАНЕР

изучаем исходник scan.c

Спецвыпуск Xakep, номер #023, стр. 023-052-1

Рваный нерв

Ну что стоит настоящему хакеру быстренько налабать программку простейшего сканера портов? Лень? Ну вот и нам тоже ЛЕНЬ! Поэтому как настоящие разленившиеся раздолбаи мы заходим по адресу: http://cs.baylor.edu/~donahoo/NIUNet/portscan.html и качаем оттуда файл scan.c с готовым сканером. Еще нам понадобиться файл listofports.dat с описанием портов (брать там же).

КАК ЗАПУСТИТЬ ПРОСТЕЙШИЙ СКАНЕР?

Мы откомпилили эту программу под Linux с ядром 2.4Х. Для этого надо набрать:

> gcc –o ./scan ./scan.c

После компиляции получившемуся бинарнику надо выставить атрибуты запускаемого файла:

> chmod +x ./scan

После этого можно запускать сканер, для этого укажи айпишник или доменное имя жертвы:

> ./scan 127.0.0.1

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

> ./Scan www.plohoy_host.ru

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

МАЛЕНЬКИЙ БАГ!

Куда бы мы девались без багов? В коде этой программы был маленький баг: вместо файла listofports.dat программа обращается к файлу listoports.dat. Это легко лечится, если переименовать файл с описанием портов, удалив букву "f". Либо можно изменить код программы, добавив профуканное "f" в имя файла.

КАК РАБОТАЕТ ПРОСТЕЙШИЙ СКАНЕР?

Простейший сканер засасывает в себя айпишник жертвы и поочередно пытается открыть все порты из списка. Список портов находится в файле listofports.dat. Если порт открывается, то сканер выводит описание этого порта, которое тоже берет из списка портов. Порт, который удалось открыть сканер выводит на экран.

Можно задать программе доменное имя в виде www.plohoy_host.ru, тогда программа перед подключением запросит айпишник жертвы у сервера DNS.

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

Указатель указывает на место в дереве, где лежит нужная информация, в этом вся его особенность. То есть нам не приходиться заморачиваться с перебором массивов и переменными, мы просто двигаем указатель по дереву.

ЛИСТИНГ ФАЙЛА SCAN.C с подробными комментариями.

/* Подключаем необходимые библиотеки */

#include <stdio.h>

#include <sys/socket.h>

#include <arpa/inet.h>

#include <errno.h>

#include <unistd.h>

#include <signal.h>

#include <string.h>

#include <netdb.h>

#define MARK '/'

/* Вот так с места в карьер мы начинаем главную функцию программы. Во время запуска программы ты можешь передать цифры целого типа, или строку символьного типа. */

void main(int argc, char *argv[])

{

/* Объявление переменных, используемых в сканировании портов */

int probeport = 0;

struct hostent *host;

Содержание  Вперед на стр. 023-052-2

Выпуски журнала "СПЕЦ Xakep"
Cпец Хакер #01Cпец Хакер #02Cпец Хакер #03Cпец Хакер #04Cпец Хакер #05Cпец Хакер #06Cпец Хакер #07Cпец Хакер #08Cпец Хакер #09Cпец Хакер #10Cпец Хакер #11Cпец Хакер #12Cпец Хакер #13Cпец Хакер #14Cпец Хакер #15Cпец Хакер #16Cпец Хакер #17Cпец Хакер #18Cпец Хакер #19Cпец Хакер #20Cпец Хакер #21Cпец Хакер #22Cпец Хакер #23Cпец Хакер #24Cпец Хакер #25Cпец Хакер #26Cпец Хакер #27Cпец Хакер #28Cпец Хакер #29Cпец Хакер #30Cпец Хакер #31Cпец Хакер #32Cпец Хакер #33Cпец Хакер #34Cпец Хакер #35Cпец Хакер #36Cпец Хакер #37Cпец Хакер #38Cпец Хакер #39Cпец Хакер #40Cпец Хакер #41Cпец Хакер #42Cпец Хакер #43Cпец Хакер #44Cпец Хакер #45Cпец Хакер #46Cпец Хакер #47Cпец Хакер #48Cпец Хакер #49Cпец Хакер #50Cпец Хакер #51Cпец Хакер #52Cпец Хакер #53Cпец Хакер #54Cпец Хакер #55Cпец Хакер #56Cпец Хакер #57Cпец Хакер #58Cпец Хакер #59Cпец Хакер #60Cпец Хакер #61Cпец Хакер #62Cпец Хакер #63Cпец Хакер #64Cпец Хакер #65Cпец Хакер #66Cпец Хакер #67Cпец Хакер #68Cпец Хакер #69Cпец Хакер #70Cпец Хакер #71Cпец Хакер #72Cпец Хакер #73Cпец Хакер #74Cпец Хакер #75