Есть вопрос?
Зайди на форум

Поиск:

Denix: русификация Ubuntu и кодеки :: RSS:: Скачать книги Колисниченко в PDF

Англо-русский словарь компьютерных терминов (Д. Колисниченко)

A  B  C  D  E  F  G  H  I  K  L  M  N  O  P  Q  R  S  T  V  W  X  Y  Z 

укрпочта отслеживание посылок перевод денег график отключения света в Кировограде график отключения счета в Киеве график отключения света в Одессе (zip)

Книга Д. Колисниченко Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.

23.3. Совершенствование сниффера

Как уже было отмечено, функция NdisProtReceive не всегда получает полный пакет (параметр pLookaheadBuffer), а только его часть. В нашем простейшем случае - это не проблема. Доступен заголовок пакета, а это для нас - главное. Но если вы пишите настоящий сниффер, то для вас главное не заголовок, а тело пакета - именно анализируя тело пакета, вы можете получить пароли и другую важную для вас информацию.

Нам нужно убедиться, что получили весь пакет. Для этого нам понадобятся два буфера и вызов функции NdisTransportData. Объявим буферы как глобальные переменные:

NDIS_HANDLE PacketPool;      // пул пакета

NDIS_HANDLE BufferPool;      // пул буфера

Также нам нужно модифицировать функцию NdisOpenAdapterComplete. После вызова

NdisRequest(&nStat, AdapterHandle, &NDISRequest);

нужно добавить следующие вызовы, инициализирующие переменные PacketPool и BufferPool:

NdisAllocatePacketPool(&nStat, &PacketPool, TRANSMIT_PACKETS,

                        sizeof(PACKET_RESERVED));

NdisAllocateBufferPool(&nStat, &BufferPool, TRANSMIT_PACKETS);

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

Также мы будем использовать структуру NDIS_PACKET. Один из ее членов зарезервирован для хранения заголовка пакетов, а другой содержит указатель на цепочку буферов, в которых хранится содержимое. Мы выделим память для одного большого буфера, способного вместить все буферы. После этого мы с помощью NdisTransferData запишем содержимое всего пакета в этот буфер.

Если вызов  NdisTransferData завершился сразу, то мы должны самостоятельно вызвать функцию NdisTransferDataComplete. Если же вызов NdisTransferData завершился со статусом задержки, то NDIS самостоятельно вызовет NdisTransferDataComplete как только передача данных будет завершена.

Сейчас мы перепишем функцию NdisReceive. Ее проще переписать заново, чем объяснять что и после какой строчки нужно добавить.

NDIS_STATUS NdisReceive(

    IN NDIS_HANDLE ProtocolBindingContext,     // наша структура

    IN NDIS_HANDLE MacReceiveContext,

    IN PVOID       pHeaderBuffer,              // заголовок Ethernet-пакета

    IN UINT        HeaderBufferSize,

    IN PVOID       pLookaheadBuffer,           // указатель на весь пакет

    IN UINT        LookaheadBufferSize,

    IN UINT        PacketSize

    )

{

  NDIS_STATUS s;                   // статус NDIS

  UINT FrameType = 0;              // тип кадра

  PNDIS_PACKET Packet;             // пакет

  PNDIS_BUFFER Buffer;             // буфер

  NDIS_HANDLE BufPool;             // пул буфера

  ULONG BufLength;                 // длина буфера

  UINT BytesTransfered;            // байтов передано

  ULONG TransferSize = 0;          // размер передаваемых данных

  PVOID temp;                      // временная переменная

  UINT Size = 1514 - ETHERNET_HEADER_LENGTH;

  UINT EHL = ETHERNET_HEADER_LENGTH;     // длина Ethernet-заголовка

  TransferSize = PacketSize;

 

  if ( (EHL < HeaderBufferSize) || (TransferSize > Size) )

  {

    return NDIS_STATUS_NOT_ACCEPTED;

  }

  memcpy(&FrameType, (((char *)HeaderBuffer) + 12), 2);

  char _s[255];

  _sprintf(_s, 252, "RECEIVE FRAME: type %u, size = %u bytes",

            FrameType, PacketSize);

  DbgPrint(_s);

  // игнорируем все, кроме IP (тип = 0x0008)

  if (FrameType !=0x0008)

  {

      DbgPrint("FrameType <> 0x0008");

      return NDIS_STATUS_NOT_ACCEPTED;

  }

  temp = ExAllocatePool(NonPagedPool, Size);

  if (temp)

  {

   RtlZeroMemory(temp, Size);

   NdisAllocatePacket(&s, &Packet, PacketPool);

   if (s = NDIS_STATUS_SUCCESS)

   {

     // сохраняем Ethernet-заголовок

     RESERVED(Packet)->pHeaderBufferP = ExAllocatePool(NonPagedPool, EHL);

     if (RESERVED(Packet)->pHeaderBufferP)

     {

       RtlZeroMemory(RESERVED(Packet)->pHeaderBufferP, EHL);

       memcpy(RESERVED(Packet)->pHeaderBufferP, (char *)pHeaderBuffer, EHL);

       RESERVED(Packet)->pHeaderBufferLen = EHL;

       NdisAllocateBuffer(&s, &Buffer, BufferPool, temp, Size);

       if (s == NDIS_STATUS_SUCCESS)

       {

        RESERVED(Packet)->pBuffer = temp;

        // присоединяем наш буфер к пакету

        NdisChainBufferAtFront(Packet, Buffer);

     

       // вызов NdisTransferData:

        NdisTransferData(&(my_struct.Status), AdapterHandle,

           MacReceiveContext, 0, TransferSize, Packet, &BytesTransfered);

       if (my_struct.Status != NDIS_STATUS_PENDING)

       {

          // задержки нет, нам нужно вызвать NdisTransferDataComplete

          // самостоятельно

          NdisTransferDataComplete(&my_struct, Packet, my_struct.Status,

            BytesTransfered);

       }

       return NDIS_STATUS_SUCCESS;

    }

     ExFreePool(RESERVED(Packet)->pHeaderBufferP);

  }

  else

  {

    DbgPrint("ERROR: pHeaderBufferP allocation failed");

  }

  ExFreePool(temp);

}

 return NDIS_STATUS_SUCCESS;

}

Теперь нам нужно переделать функцию NdisTransferDataComplete:

VOID NdisTransferDataComplete (

      IN NDIS_HANDLE ProtocolBindingContext,

      IN PNDIS_PACKET Packet,

IN NDIS_STATUS Status,

IN UINT BytesTransfered)           // сколько байтов передано

{

 

PNDIS_BUFFER NdisBuff;

PVOID Buffer;

ULONG BuffLen;

PVOID HeaderBufferP;

ULONG HeaderBufferLen;

// заносим в Buffer TCP/IP-пакет, а HeaderBufferP - Ethernet-заголовок

Buffer = RESERVED(Packet)->pBuffer;

BuffLen = BytesTransfered;

HeaderBufferP = RESERVED(Packet)->pHeaderBufferP;

HeaderBufferLen = RESERVED(Packet)->pHeaderBufferLen;

if (Buffer && HeaderBufferP)

{

 ULONG Pos = 0;

 char *Ptr = NULL;

 Ptr = ExAllocatePool(NonPagedPool, (HeaderBufferLen + BuffLen));

 if (Ptr)

 {

  memcpy(Ptr, HeaderBufferP, HeaderBufferLen);

  memcpy(Ptr + HeaderBufferLen, Buffer, BufferLen);

  // у нас есть целый пакет, теперь мы его можем проанализировать

  // для этого передаем функции ParsePacket:

  ParsePacket(Ptr, (HeaderBufferLen + BuffLen);

  ExFreePool(Ptr);

}

ExFreePool(Buffer);

ExFreePool(HeaderBufferP);

}

NdisUnchainBufferAtFront(Packet, &NdisBuff);

if (&NdisBuff) NdisFreeBuffer(NdisBuff);

NdisReinitializePAcket(Packet);

NdisFreePacket(Packet);

return;

}

Напишем функцию ParsePacket. Ее задача - анализ переданного пакета. Данные (содержимое) пакета передается в первом параметре, а второй параметр - это длина. Моя функция просто выведет длину, ваша задача - вывод содержимого. Это не сложно, не так ли?

void ParsePacket(const char* Data, int length)

{

char _s[255];

_snprintf(-s, 253, "ParsePacket: length = %d", length);

DbgPrint(_s);

}

На главную

Мне нравится!

Сегодня: 16/01

Именинники:  Андрюха aka host

Последние посты форума

Интересная картинка

Samsung Galaxy J2 Prime (SM-G532F)

дааа

Обучение PHP-программированию

Новый дизайн сайта

Возвращение на динамическую страницу сайта

С Новым Годом!

Бесплатный хостинг, SSL сертификат, не ограниченно

капец погода в ноябре у нас

Посоветуйте хостинг

флэшмобы

вот люди где живут... экстрим

авто-дилеры

Программы для Linux

книга Командная строка Linux и автоматизация рутинных задач

Совет:

Книги Д. Колисниченко:

Linux

Программирование для Android 5. СамоучительПрограммирование для Android 5. Самоучитель
Рассмотрены все основные аспекты создания приложений для платформы Android 5 (API 21): установка необходимого программного обеспечения (JDK, Eclipse и Android SDK), использование эмулятора Android, создание интерфейса пользователя и т.д.                                                                

Linux. От новичка к профессионалу, 5-е изд.Linux. От новичка к профессионалу, 5-е изд.
Даны ответы на все вопросы, возникающие при работе с Linux: от установки и настройки этой ОС до настройки сервера на базе Linux. Материал книги максимально охватывает все сферы применения Linux                                                                                                            

Linux. Полное руководство, изд 1-2Linux. Полное руководство, изд 1-2
Все, что вы хотели знать о Linux: установка, настройка и программирование. Книга представляет собой великолепное руководство по Linux, позволяющее получить наиболее полное представление об этой ОС.                                                                                                        

PHP

HTML 5 & CSS 3 - практическо програмиране за начинаещиHTML 5 & CSS 3 - практическо програмиране за начинаещи
Тази книга ще ви научи как да прилагате на практика HTML 5 и CSS 3 и да се възползвате от богатите възможности, предлагани в новите уеб стандарти. Изданието е предназначено за всеки, който е решил да се възползва от съвременните технологии за уеб диз                                                   

Современный сайт на РНР и JavaScript (+CD)Современный сайт на РНР и JavaScript (+CD)
Эта книга о PHP и не только. С помощью PHP вы легко создадите сайт любого масштаба — от небольшой личной странички до сайта уровня предприятия со сложной панелью управления.                                                                                                                                

PHP 5 в теории и на практикеPHP 5 в теории и на практике
Это продолжение Самоучителя PHP5 с новыми приемами программирования на PHP. Отличный выбор для начинающего PHP-программиста. Книга устарела и не поддерживается.                                                                                                                                            

Интернет/CMS

Блоги: создание, раскрутка, заработокБлоги: создание, раскрутка, заработок
Эта книга — практическое руководство по созданию и продвижению блога, его раскрутке и популяризации, а также превращению в инструмент, приносящий реальные доходы.                                                                                                                                           

Движок для вашего сайта. CMS Joomla!, Slaed, PHP-NukeДвижок для вашего сайта. CMS Joomla!, Slaed, PHP-Nuke
Книга ориентирована как на обычных пользователей Интернета, которым нужно в кратчайшие сроки создать свой сайт, так и на разработчиков, которые заинтересованы в построении собственной системы управления сайтом.                                                                                           

Поисковые системы и продвижение сайтов в ИнтернетеПоисковые системы и продвижение сайтов в Интернете
В книге подробно описаны алгоритмы работы и методы использования наиболее популярных сегодня поисковых машин Интернета — Google, Yandex и Rambler.                                                                                                                                                           

Компьютер/Windows

Самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютереСамоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере
Книга подойдет начинающим пользователям, поможет устранить простые неисправности (проблемы), возникающие при работе с ПК. Рассматривается переустановка Windows                                                                                                                                              

Секреты реестра Windows XP/VistaСекреты реестра Windows XP/Vista
Описано устройство реестра операционных систем Windows XP/Vista. Реестр этих двух версий Windows похож, но не одинаков, поэтому в книге особо выделены функции, доступные только в XP и доступные только в Vista.                                                                                            

Компьютер На Флешке. Работающие Windows, Linux, офис и 150 самых полезных программКомпьютер На Флешке. Работающие Windows, Linux, офис и 150 самых полезных программ
В этой книге вы найдете уникальную полезную информацию о том, как установить на флешку Windows XP и Windows Vista...                                                                                                                                                                                         

Сети

Беспроводная сеть дома и в офисеБеспроводная сеть дома и в офисе
Книга поможет начинающему администратору домашней или офисной сети в кратчайшие сроки развернуть, настроить или модернизировать беспроводную сеть. Отличный выбор для построения сети SOHO                                                                                                                   

Самоучитель системного администратора. 4-е изд.Самоучитель системного администратора. 4-е изд.
Изложены основные задачи системного администрирования, описаны базовые протоколы, даны рекомендации по выбору оборудования и проведению ежедневных рутинных операций. Подробно раскрыты технологии, используемые при построении информационных систем, опи                                                   

Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.
Книга о настройке сети в Windows (98,NT,XP) и Linux. Является превосходным практическим руководством по созданию и обслуживанию компьютерных сетей.                                                                                                                                                          

Безопасность

Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.
-                                                                                                                                                                                                                                                                                                            

Анонимность и безопасность в Интернете. От Анонимность и безопасность в Интернете. От "чайника" к пользователю
Простым и понятным языком рассказано, как скрыть свое местонахождение и IP-адрес, используя анонимные сети Tor и I2P, посетить заблокированные администратором сайты, защитить личную переписку от посторонних глаз                                                                                          

Автомобили

Что делать, чтобы не надули в автосервисе. Советы и рекомендацииЧто делать, чтобы не надули в автосервисе. Советы и рекомендации
Вы недавно приобрели автомобиль или уже имеете водительский стаж, но при этом особо не вникаете в устройство автомобиля?                                                                                                                                                                                     

Перед покупкой авто. Все, что необходимо знать покупателюПеред покупкой авто. Все, что необходимо знать покупателю
Книга отвечает на все вопросы, которые нужно прояснить для себя перед...                                                                                                                                                                                                                                     

Новичок за рулем 2. Выбор автомобиля, дальняя поездка...Новичок за рулем 2. Выбор автомобиля, дальняя поездка...
Книга вторая. Желательно прочтение первой книги. Рекомендуется всем начинающим (и не только) водителям/ . Текст этой книги бесплатно доступен в моем блоге http://dkws.net                                                                                                                                   

Переводные книги

Переводные книгиПереводные книги
Данные книги были переведены мною на русский язык (с английского и чешского). Надеюсь качество перевода вам понравится!                                                                                                                                                                                      

Android

Безопасный Android: защищаем свои деньги и данные от кражиБезопасный Android: защищаем свои деньги и данные от кражи
Рассмотрены различные способы обеспечения безопасности Android-устройств: шифрование персональной информации, хранящейся на устройстве, шифрование передаваемых данных, VPN-соединения, анонимизация трафика                                                                                             

Планшет и смартфон на базе Android для ваших родителей, 2-е изд.Планшет и смартфон на базе Android для ваших родителей, 2-е изд.
Книга знакомит читателя с мобильными устройствами на базе Android. Она написана простым и понятным языком для людей среднего и старшего возраста                                                                                                                                                             

Планшет и смартфон на базе Android для ваших родителейПланшет и смартфон на базе Android для ваших родителей
Книга рассчитана на людей среднего и старшего возраста. Она поможет освоить современный «карманный компьютер» на базе Android, в котором все новое и "не так, как в Windows". Доступным языком описывается, как включить и выключить смартфон и т.д.                                                         

Статьи

Rambler's Top100