Анализатор трафика

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем S-haman, 19 апр 2008.

  1. S-haman

    S-haman Гость

    Здроавствуйте мне необходимо написать прогармму для анализа локального траффика, это сниффер(для получения пакетов) и потом анализ этих пакетов. Я почитал много литературы и узнал что лутчше это делать с помощью библиотеки/драйвера libpcap, а для виндовса winpcap, скачал эту библиотеку/драйвер установил, паралельно нашел как с этой библиотекой работать , начал исать программу и при подключении файла <pcap.h> компилятор выдает ошибку что неможет найти этого файла. Подскажите что я делаю не правильно.

    P.S. Использую компилятор BCB 6
     
  2. ReindeeR

    ReindeeR Гость

    скачайте файл pcap.h и остальные файлы.
    и либу wpcap.lib,в каждом проекте используйте ее.
    Далее все файлы засовывайте в папку с проектом,
    и подключаете как "pcap.h",кроме этого файла,вам понадобится еще подключать
    несколько файлов.
    Так же придется в нескольких файлах подправить c <lalala.h> на "lalala.h"
    где исправлять,пойметет,компилятор заорет что ниче не нашел.

    А проще кинуть все заголовочные файлы в папку include вашего компилятора
    и не парится работать как обычно)))
     
  3. S-haman

    S-haman Гость

    Reindeer идея хорошая просто некоторых файлов отдельноя я ненашел в интернете для скачивания, может есть какието другие варианты или хотябы откуда можно их взять и их список?
     
  4. ReindeeR

    ReindeeR Гость

  5. S-haman

    S-haman Гость

    ReindeeR
    Большое спасибо за заголовочные файлы +1
    Только возникло два трабла в боланде не захотели подключаться, БСБ 6, а в вижуал студие 9 всё номра заработал ))
    и теперь непосредственно вопрос по иблиотеке в функции pcap_open_live первый параметр это имя адаптера, насколько я понял, если да то как имя этого адаптера должено выглядить я просто перепробовал все известные имена адаптера моего на все ругается, может можно както имена эти получить функцией?
     
  6. ReindeeR

    ReindeeR Гость

    я всегда делал так.
    Код (Text):
    pcap_if_t *alldevs,*d;
    char errbuf[PCAP_ERRBUF_SIZE];
    int inum;
    pcap_findalldevs_ex(PCAP_SRC_IF_STRING,NULL,&alldevs,errbuf); //находим все устройства.

    for(d=alldevs;d;d=d->next)                   // выводим информацию на экран
    {
    printf("%d. %s",++i,d->name);
    if(d->description)
    printf(" (%s)\n",d->description);
    else
    printf(" (Описание отсутствует.)\n");
    }

    printf("Введите номер интерфейса:");   //вводим номер устройства.

    cin >> inum;

    for(d=alldevs,i=0;i<inum-1;d=d->next,i++); // прыжок к выбранному устройству.

    printf("%s\n",d->name);  //в d->name имя устройства,которое можете использовать в дальнейшем
    пример взят из офф руководства,
    так как очень удобный,использую его всегда.

    Если заранее известен номер интерфейса и он не меняется,то можно сразу выбирать,не спрашивая.
    Ну это уже вам решать))

    зы.
    в коде мог опечаться,так как писал из формы,
    сами знаете.не очень то удобно
     
  7. S-haman

    S-haman Гость

    У меня компилятор фанкции pcap_findalldevs_ex не знает, ему известна только функция pcap_findalldevs
     
  8. ReindeeR

    ReindeeR Гость

    remote-ext.h
    подключили?
     
  9. S-haman

    S-haman Гость

    Забыл ((
    после подключения все заработало нормально
    Вопрос таков это всё у меня получалось в вижуал студие 2005
    пробовал на Рад студие(борландовской) там ругается на 2 файла "bittypes.h" и "stdint.h". первый файл это из тех которые я качал второй это стандартный борландовский.
    bittypes.h пишет что "typedef signed char int8_t;" уже обявлен в файле stdint.h и там он действительно есть, подскажите как быть. В вижуал студии таких проблем нету. Я просто почему к борландовским продуктам там есть несколько компонентов которые потом понадобятся.
    Плюс ков всему эта рад студия 2007 при попытке подключить файл wpcap.lib выдает ошибку
    [ILINK32 Error] Error: 'C:\PROGRAM FILES\CODEGEAR\RAD STUDIO\5.0\LIB\SNIF\WPCAP.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
     
  10. ReindeeR

    ReindeeR Гость

    Сразу скажу что ни в Борланде,ни в вижуал студио ни разу не работал.
    Для меня самое лучшее решение это Code::Blocks и Dev C++.
    Монстров аля вижуал студио не люблю.
    Могу просто посоветовать удалить объявление int8_t в ВинПикаповском файле.

    зы.
    Мне в скором времени тоже понадобится писать сниффер,
    не против,если в аську обращусь?
     
  11. S-haman

    S-haman Гость

    ReindeeR да нет не против ))
     
  12. ReindeeR

    ReindeeR Гость

    тут я уже хз че такое,ни разу не сталкивался.
     
  13. S-haman

    S-haman Гость

    ReindeeR там надо было конвертирвоать библиотеку(lb) с помощью программы coff2omf.exe, прогармма находитсья в папке bin,находясь в папке bin открыть консоль и дать следующие 4 команды
    Код (Text):
    coff2omf wpcap.lib wpcap.~lib
    copy wpcap.~lib wpcap.lib // эта команда копирует данные из wpcap.~lib в wpcap.lib можно в прнципе и без неё просто переименовать файл
    coff2omf Packet.lib Packet.~lib
    copy Packet.~lib Packet.lib // эта команда копирует данные из Packet.~lib в Packet.lib можно в прнципе и без неё просто переименовать файл
    после чего получившиеся файлы wpcap.lib и Packet.lib безпроблем подключаются в билдере
     
  14. ReindeeR

    ReindeeR Гость

    Мне надеюсь это не понадобится :)
    не люблю я ни от борланда,ни от мелкомякгих среды.

    зы.
    Сниффер еще не готов? :)
     
  15. S-haman

    S-haman Гость

    проверял программу на другом компютере, ещё не совсем готовую, и возникла ещё одна проблема, но это уже с переносимостью. При запуске прораммы на другом компютере необходимо присутствие 4 файлов: Borlndmm.dll, cc3280mt.dll, vcl100.bpl и rtl100.bpl все они должны находитсья по пути c:\\windows\sysstem32, также имееться ещё и по второй копии этих файлов вторые копии находятся по C:\Documents and Settings\All Users\Application Data\{2EB4C530-C94F-4893-ABDC-C1E05A89956E}\vclwin32runtimes\C8691228\9FAAECB7\*.bpl и C:\Program Files\CodeGear\RAD Studio\5.0\bin\**.dll можно их както подключить чтобы они находились непосредственно возле исполняемого файла?
    Я пробовал через Project->"Add to Project" таким образом всеравно требует их наличие в систем32
     
  16. ReindeeR

    ReindeeR Гость

    :)
    еще -1 к борланду с моей стороны :)
    когда я писал,чтобы перенести требовалось всего лишь поставить бибилиотека/драйвер pcap.
    Если программа хотя бы стартует,то можно в самом начале проверять необходимые файлы,и если что
    копировать,перемещать и т.д.
    Или делать установщик,который копирует необходимые файлы.Заодно можете
    ради красоты и добавить в пуск,на рабочий стол ярлыки и т.д.)))
     
  17. S-haman

    S-haman Гость

    Проблему удалось решить следующим образом
    1. Зайти в Project/Options
    2. На вкладке Compiler выбирать Release
    3. На вкладке Packages убирать флажок "Build with runtime packages"
    4. На вкладке Linker убирать Use Dynamic RTL
    5. Добавить к проекту все необходимые бпл и длл
    6. Скомпилирывать.
    После этого проэкт, не готовый правда, заработал на другом компе где необходимые файлы находятся рядом с экзефайлом, но после этих действий размер экзе файла вырос из 33 кб до 574 кб.

    З.Ы. в прогармме на данный момент есть открытие адаптера, подключение фильтра, получение адресса IP,маски, но я заметил что программа не может октрыть ниодин адаптер, я на это обратил внимание когда мне программа стала выдавать Ап и маску равными 0. при открытии адаптера функцией pcap_open_live возникает следующяя ошибка: "Error opening adapter: Системе не удается найти указанное устройство. (20)", в качестве адаптера я передаю полностью полученое имя адаптера вида: "rpcap://\Device\NPF_{77F08C02-9410-471C-86A4-E6133522D16C}", пробовал также такой вариант: "\Device\NPF_{211439FA-7598-44EC-A677-27F448F7DB19}", я его увидел в одном сниффере как адаптер, результат тотже
     
  18. ReindeeR

    ReindeeR Гость

    Можно попробовать считать название адаптера из реестра и его использовать.
    Только у меня вроде не получался такой вариант,не помню почему :unsure:
     
  19. S-haman

    S-haman Гость

    С той проблеимой я разобрлся следующим образом,
    раньше для нахождения адаптеров я использовал функцию pcap_findalldevs_ex и соответственно описание адаптера и имя приходилось обрабатывать, но всеравно не работало, после того как я воспользовался функцией pcap_findalldevs всё заработало нормально, даже смог получить маску и ап карты, но они правда както странно выглядят "65536(0x0000FFFF)- это маска, реальная маска на адаптере (255.255.0.0), 2732(0x00000AAC)- ато АП, реальный(172.10.1.14)" эти параметры получаю используя функцию pcap_lookupnet ошибок при этом нету.
    все эти полученны данные я записываю в коллекцию, для каждого устройства храню его имя, описание, ап и маску ну чтоб в дальнейшем было проще работать, эту коллекцию я заполняют при загрузку форму потом в комбобоксе выбираю адаптер и по нажатию на кнопку в идеале он далжен принимать пакеты. Пробовал получать пакеты с помощью функции pcap_next, но он возвращяет какуюто ерунду наподобие "яяяяяя" и причем возвращает иногда , а иногда ничего вообще невозвращяет хотя по торренту закачка идет в полную, да и по сети. Какой функцией лутчше принимать пакеты?
     
  20. ReindeeR

    ReindeeR Гость

    pcap_loop()
    а потом пакет по косточкам разбирать :unsure:
     
Загрузка...

Поделиться этой страницей