Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
19:04:2008, 17:38
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
Здроавствуйте мне необходимо написать прогармму для анализа локального траффика, это сниффер(для получения пакетов) и потом анализ этих пакетов. Я почитал много литературы и узнал что лутчше это делать с помощью библиотеки/драйвера libpcap, а для виндовса winpcap, скачал эту библиотеку/драйвер установил, паралельно нашел как с этой библиотекой работать , начал исать программу и при подключении файла <pcap.h> компилятор выдает ошибку что неможет найти этого файла. Подскажите что я делаю не правильно.
P.S. Использую компилятор BCB 6 |
|
Сообщение
#1
|
|
![]() |
|
|
19:04:2008, 17:55
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
скачайте файл pcap.h и остальные файлы.
и либу wpcap.lib,в каждом проекте используйте ее. Далее все файлы засовывайте в папку с проектом, и подключаете как "pcap.h",кроме этого файла,вам понадобится еще подключать несколько файлов. Так же придется в нескольких файлах подправить c <lalala.h> на "lalala.h" где исправлять,пойметет,компилятор заорет что ниче не нашел. А проще кинуть все заголовочные файлы в папку include вашего компилятора и не парится работать как обычно))) |
|
Сообщение
#2
|
|
|
|
19:04:2008, 18:48
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
Reindeer идея хорошая просто некоторых файлов отдельноя я ненашел в интернете для скачивания, может есть какието другие варианты или хотябы откуда можно их взять и их список?
|
|
Сообщение
#3
|
|
|
|
19:04:2008, 19:07
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
на официальном сайте все есть,но я брал отсюда.
]]>https://projects.honeynet.org/capture-hpc/b...r/wpcap?rev=259]]> там документации,примеры,все заголовочные файлы и две либы,для никсов и винды. Сообщение отредактировал ReindeeR - 19:04:2008, 19:09 |
|
Сообщение
#4
|
|
|
|
24:04:2008, 16:45
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
ReindeeR
Большое спасибо за заголовочные файлы +1 Только возникло два трабла в боланде не захотели подключаться, БСБ 6, а в вижуал студие 9 всё номра заработал )) и теперь непосредственно вопрос по иблиотеке в функции pcap_open_live первый параметр это имя адаптера, насколько я понял, если да то как имя этого адаптера должено выглядить я просто перепробовал все известные имена адаптера моего на все ругается, может можно както имена эти получить функцией? |
|
Сообщение
#5
|
|
|
|
24:04:2008, 18:08
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
я всегда делал так.
пример взят из офф руководства, так как очень удобный,использую его всегда. Если заранее известен номер интерфейса и он не меняется,то можно сразу выбирать,не спрашивая. Ну это уже вам решать)) зы. в коде мог опечаться,так как писал из формы, сами знаете.не очень то удобно |
|
Сообщение
#6
|
|
|
|
24:04:2008, 18:46
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
У меня компилятор фанкции pcap_findalldevs_ex не знает, ему известна только функция pcap_findalldevs
|
|
Сообщение
#7
|
|
|
|
24:04:2008, 21:31
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
remote-ext.h
подключили? |
|
Сообщение
#8
|
|
|
|
28:04:2008, 19:18
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
Забыл ((
после подключения все заработало нормально Вопрос таков это всё у меня получалось в вижуал студие 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) Сообщение отредактировал S-haman - 28:04:2008, 20:46 |
|
Сообщение
#9
|
|
|
|
28:04:2008, 20:33
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
Сразу скажу что ни в Борланде,ни в вижуал студио ни разу не работал.
Для меня самое лучшее решение это Code::Blocks и Dev C++. Монстров аля вижуал студио не люблю. Могу просто посоветовать удалить объявление int8_t в ВинПикаповском файле. зы. Мне в скором времени тоже понадобится писать сниффер, не против,если в аську обращусь? Сообщение отредактировал ReindeeR - 28:04:2008, 20:34 |
|
Сообщение
#10
|
|
|
|
29:04:2008, 08:43
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
ReindeeR да нет не против ))
|
|
Сообщение
#11
|
|
|
|
29:04:2008, 12:35
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
Плюс ков всему эта рад студия 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) тут я уже хз че такое,ни разу не сталкивался. |
|
Сообщение
#12
|
|
|
|
29:04:2008, 16:20
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
ReindeeR там надо было конвертирвоать библиотеку(lb) с помощью программы coff2omf.exe, прогармма находитсья в папке bin,находясь в папке bin открыть консоль и дать следующие 4 команды
после чего получившиеся файлы wpcap.lib и Packet.lib безпроблем подключаются в билдере |
|
Сообщение
#13
|
|
|
|
30:04:2008, 17:41
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
Мне надеюсь это не понадобится
не люблю я ни от борланда,ни от мелкомякгих среды. зы. Сниффер еще не готов? |
|
Сообщение
#14
|
|
|
|
1:05:2008, 12:09
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
проверял программу на другом компютере, ещё не совсем готовую, и возникла ещё одна проблема, но это уже с переносимостью. При запуске прораммы на другом компютере необходимо присутствие 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 |
|
Сообщение
#15
|
|
|
|
1:05:2008, 13:02
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
еще -1 к борланду с моей стороны когда я писал,чтобы перенести требовалось всего лишь поставить бибилиотека/драйвер pcap. Если программа хотя бы стартует,то можно в самом начале проверять необходимые файлы,и если что копировать,перемещать и т.д. Или делать установщик,который копирует необходимые файлы.Заодно можете ради красоты и добавить в пуск,на рабочий стол ярлыки и т.д.))) |
|
Сообщение
#16
|
|
|
|
1:05:2008, 13:43
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
Проблему удалось решить следующим образом
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}", я его увидел в одном сниффере как адаптер, результат тотже Сообщение отредактировал S-haman - 1:05:2008, 17:17 |
|
Сообщение
#17
|
|
|
|
1:05:2008, 23:47
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
Можно попробовать считать название адаптера из реестра и его использовать.
Только у меня вроде не получался такой вариант,не помню почему |
|
Сообщение
#18
|
|
|
|
2:05:2008, 13:42
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
С той проблеимой я разобрлся следующим образом,
раньше для нахождения адаптеров я использовал функцию pcap_findalldevs_ex и соответственно описание адаптера и имя приходилось обрабатывать, но всеравно не работало, после того как я воспользовался функцией pcap_findalldevs всё заработало нормально, даже смог получить маску и ап карты, но они правда както странно выглядят "65536(0x0000FFFF)- это маска, реальная маска на адаптере (255.255.0.0), 2732(0x00000AAC)- ато АП, реальный(172.10.1.14)" эти параметры получаю используя функцию pcap_lookupnet ошибок при этом нету. все эти полученны данные я записываю в коллекцию, для каждого устройства храню его имя, описание, ап и маску ну чтоб в дальнейшем было проще работать, эту коллекцию я заполняют при загрузку форму потом в комбобоксе выбираю адаптер и по нажатию на кнопку в идеале он далжен принимать пакеты. Пробовал получать пакеты с помощью функции pcap_next, но он возвращяет какуюто ерунду наподобие "яяяяяя" и причем возвращает иногда , а иногда ничего вообще невозвращяет хотя по торренту закачка идет в полную, да и по сети. Какой функцией лутчше принимать пакеты? |
|
Сообщение
#19
|
|
|
|
2:05:2008, 15:23
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
pcap_loop()
а потом пакет по косточкам разбирать |
|
Сообщение
#20
|
|
|
|
2:05:2008, 18:46
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
ReindeeR
спасибо за функцию у меня небыло про такую функцию написано )). в этой функции не понятно только одно как сами данные получить, тоесть в третем параметре там где "pcap_handle callback" я вызываю функцию которая имеет три параметра: второй параметр это заголовок я сравнивал полученные данные с wireshark правильно определило но вот другие два параметра возвращяют пустые строки, как с ними работать? второй параметр это структура с ним безпроблем работается а те это просто строки, которые всегда пустые. Подскажите как с ними работать |
|
Сообщение
#21
|
|
|
|
3:05:2008, 01:44
|
|
Новенький Группа: Новенький Сообщений: 39 Регистрация: 3:04:2008 Пользователь №: 16 361 Репутация: 1
|
pcap_loop()
принимает четыре параметра. 1-дескриптор открытой сессии. 2-кол-во пакетов,-1 означает что хавает все до ошибки. 3-функция обработчик пакета. 4-используется для передачи еще каких-нить данных,если ничего не надо,то NULL ну тут впринципе все понятно,самое главное,это функция,которая обрабатывает пакеты. В данном случае функция-обработчик не любая попавшаяся,а заранее определенная. ну это и так все ясно было. Если не забыли,то в pcap_loop() в четвертом параметре можно чето передать. Так вот,первый аргумент у функции-обработчика как раз и принимает то,что было передано в четвертом параметре pcap_loop().Соответственно если передан NULL,то и не придет ничего,ради интереса можете убедиться и послать строку,а в обработчике вывести ее на экран Второй параметр,структура ,на всякий случай,выглядит она так Третий параметр,буфер,в который помещается сам принятый пакет. Вот его как раз и надо мучать.Определяете все структуры заголовков. Если совсем разбирать пакет,то это примерно в таком порядке будет выглядеть: ETHERNET ARP IP TCP/UDP или чего у вас там будет. Ну вот вроде все пока что. зы. ко мне на "Вы" не надо,маленький я еще для этого Надо еще с синтаксисом выражений для фильтра разобраться,все руки не доходят |
|
Сообщение
#22
|
|
|
|
3:05:2008, 14:46
|
|
Новенький Группа: Новенький Сообщений: 51 Регистрация: 26:03:2007 Из: Кривой Рог Пользователь №: 9 890 Репутация: 0
|
ReindeeR пример хороший но одно но, третий параметр в котором хранятся данные он пустой он возвращяет пустую строку. В некоторых программах я увидел следующий пример как они получают данные они обявляют структуру в которой описываютатрибуты пакета потом присваивают переменно полученныее данные конвертированыфе в эту структуру и работают с этой структурой пример
после чего обращяясь к элементам sip работают с элементами пакета, но здесь только заголовочные фрагменты пакета если packet не ковертирвоать в структуру то он равен концу строки тоесть '\0' Как можно просто из этой переменной получить пакет в обычном виде: или подобном
|
|
Сообщение
#23
|
|
|
|
3:05:2008, 16:09
|