Сниффер
запускаем сниффер, потом запускаем какую-нибудь прогу, кот. работает через интернет, поработаем в ней немножко, что-нить поотсылаем-примем. Отключаем прогу и сниффер. Смотрим лог сниффера, а там! Там почему-то видны только те пакеты, кот. приходили на мой компьютер, а те, которые я отсылал в сеть, сниффер почему-то не отлавливал. Интернет идет через модем (когда нэт был через локалку, всё было отлично, были видны и исходящие, и отправленные пакеты).
Вопрос: каким образом мне получить IP-пакеты, которые отправляются с моего компьютера в интернет?
А то был такой вирус.
Извини, я не знаю. Хочу спросить что такое сниффер?
А то был такой вирус.
Снифер - программа, отлавливающая чужой трафик.
Проблема такова:
запускаем сниффер, потом запускаем какую-нибудь прогу, кот. работает через интернет, поработаем в ней немножко, что-нить поотсылаем-примем. Отключаем прогу и сниффер. Смотрим лог сниффера, а там! Там почему-то видны только те пакеты, кот. приходили на мой компьютер, а те, которые я отсылал в сеть, сниффер почему-то не отлавливал. Интернет идет через модем (когда нэт был через локалку, всё было отлично, были видны и исходящие, и отправленные пакеты).
Вопрос: каким образом мне получить IP-пакеты, которые отправляются с моего компьютера в интернет?
телепаты уволились, поэтому придется тебе сказать какой именно у тебя сниффер.
телепаты уволились, поэтому придется тебе сказать какой именно у тебя сниффер.
Что тут телепатировать?
Сниффер, ловит IP пакеты, разбирает их заголовки - это ж ясное дело, и пишет содержимое пакета (то бишь, данные) в лог-файл. А от того, что я скажу, что этот сниффер записывает в лог-файл только те пакеты, кот. идут через 21 порт, что изменится?? От протокола (FTP, POP3 или еще что-то основанное на TCP) и порта здесь ничего не зависит, они ж все выше IP.
Вопрос какой был, почему пакеты, отсылаемые моим компьютером в интернет не отлавливаются сниффером, а те, которые приходят ко мне - отлавливаются.
Что тут телепатировать?
Сниффер, ловит IP пакеты, разбирает их заголовки - это ж ясное дело, и пишет содержимое пакета (то бишь, данные) в лог-файл. А от того, что я скажу, что этот сниффер записывает в лог-файл только те пакеты, кот. идут через 21 порт, что изменится?? От протокола (FTP, POP3 или еще что-то основанное на TCP) и порта здесь ничего не зависит, они ж все выше IP.
Вопрос какой был, почему пакеты, отсылаемые моим компьютером в интернет не отлавливаются сниффером, а те, которые приходят ко мне - отлавливаются.
Послушай тебе вроде ясно задали вопрос как называется твой сниффер? Или он был сделан лично тобой?
Ну а стал бы я задавать вопрос на этом форуме, если б не сам написал сниффер на Visual C++.
Ну тогда а че ты у нас спрашиваеш,как заметил squirl мы не телепаты чтобы предугадать каким образом ты реализовал алгоритм перехвата пакетов. Покажи хотя бы код чтоли.
static char buffer[MAX_PACKET_SIZE];
int main()
{
WSADATA wsadata;
SOCKET s;
char name[128];
HOSTENT* hostent;
sockaddr_in addr;
unsigned long flag = 1;
int code, iplen, tcplen, datalen;
IPHeader* ip;
TCPHeader* tcp;
ofstream logf;
logf.open("log.txt");
WSAStartup(MAKEWORD(2, 0), &wsadata);
s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
gethostname(name, sizeof(name));
hostent = gethostbyname(name);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = ((struct in_addr *)hostent->h_addr_list[0])->s_addr;
bind(s, (sockaddr *)&addr, sizeof(addr));
ioctlsocket(s, SIO_RCVALL, &flag);
while (1) {
code = recv(s, buffer, sizeof(buffer), 0);
if (code == SOCKET_ERROR) break;
if (code > 0) {
ip = (IPHeader *)buffer;
iplen = 4 * (ip->verlen & 0x0f);
tcp = (TCPHeader * &buffer[iplen];
tcplen = (4 * tcp->hdrle);
logf << "\n\nData\n";
logf.write(&buffer[iplen+tcplen], code-iplen-tcplen);
logf.flush();
}
}
logf.close();
closesocket(s);
WSACleanup();
return 0;
}
Вот, если например, запустить асю, то в лог файле остаются почему-то только те пакеты, кот. ася принимала, а те, которые уходили с моими сообщениями в лог не попадали, т.е. сниффер их не ловил. Может какие опции еще дополнительные надо поставить у сокета?
далее. разочарую - это у тебя не сниффер. уж извини. RAW_SOCKET - не есть сниффер. я не знаю, что он у тебя извлекает, но это 100% не то что должен извлекать реальный сниффер.
RAW_SOCKET позволяет получить доступ к ICMP и IGMP траффику. а вот необработанные TCP/UDP/IP заголовки туда не попадают.
n
”Bу¦ђ`Pд Y# +OK Hello there.
Data:
n
”B¦ђrPд <k +OK Password required.
Data:
n
”B¦ђ~Pд ф +OK logged in.
Data:
n
”B-¦ђ„Pд ВС +OK 2 13480510
Data:
n
”B=¦ђЉPд Ќх +OK POP3 clients that break here, they violate STD53.
Как видим прога общается с POP3 сервером, причем в логе только ответы сервера, а запросы The Bat! в лог не попали.
Или вы хотите сказать, что работа с почтой осуществляется по ICMP протоколу??? В таком случае ни черта не знаете (или я настолько уверен в своей неправоте?). POP3 базируется на TCP. И после этого вы мне говорите, что он не ловит TCP пакеты (правильнее будет сказать - сегменты).
На счет INADDR_ANY - сокет биндится с ошибкой.
Как видим прога общается с POP3 сервером, причем в логе только ответы сервера, а запросы The Bat! в лог не попали.
На счет INADDR_ANY - сокет биндится с ошибкой.
извините, был неправ. информация слегка устарела :)
а что за ошибка?
ошибка точнее, не при бинде, а при установлении режима SIO_RCVALL для сокета. Ошибка номер 10022 "Неверный аргумент". Из справки: INADDDR_ANY не катит, т.к. сокет при установлении SIO_RCVALL должен быть привязан к текущему интерфейсу, т.е. адресу локального компьютера.
а если попробовать привязывать после установки модемного соединения? явно к двум интерфейсам?