Как запрограммировать pcap с помощью Objective-C и получить значения HTTP-запроса и ответа в текстовом формате

Я работаю с pcap в приложении OS X, чтобы понять анализ пакетов. Я работаю с приложением https://github.com/jpiccari/MacAlyzer, но получаю только необработанные data, но я хочу разделить каждый запрос домена на отдельный и понятный способ чтения значения запроса и ответа. Пожалуйста, подскажите, как разработать приложение с помощью pcap.

Я пробовал некоторый код, но они переводят данные в шестнадцатеричный формат. Как преобразовать эти данные в осмысленные объекты запросов и ответов, как показывают Чарльз и Фиддлер?


person Retro    schedule 03.08.2013    source источник
comment
Какое отношение этот вопрос имеет к карману?   -  person ipmcc    schedule 03.08.2013
comment
Извините, я должен был использовать более четкие теги, такие как анализаторы пакетов с захватом пакетов, ошибочно тег с карманом   -  person Retro    schedule 03.08.2013
comment
Что/кто такие Чарльз и Скрипач?   -  person RyPeck    schedule 03.08.2013
comment
Charles и Fiddler — это веб-прокси-приложения.   -  person ipmcc    schedule 04.08.2013
comment
они используются приложением для отладки http-запроса и ответа   -  person Retro    schedule 04.08.2013


Ответы (2)


MacAlyzer не был разработан для ваших нужд. Я знаю, потому что я автор. Как уже говорилось, Charles и Fiddler являются веб-прокси и работают совершенно по-разному (и служат разным целям).

Немного углубившись в ваш вопрос, связь между клиентом и сервером происходит по IP-адресу, а не между доменами. Информация о домене не содержится в пакетах ни на уровне IP, ни на уровне TCP. Вместо этого компьютеры запрашивают информацию о поиске между доменом и IP, которая затем сохраняется, и связь осуществляется с использованием IP-адресов клиента и сервера.

MacAlyzer и действительно libpcap не имеют сложного анализа пакетов (как, скажем, Wireshark) и не могут отображать информацию о пакетах так подробно, как другие программы. До того, как я потерял интерес к проекту, я планировал библиотеку, которая позволяла бы гораздо более полно анализировать и разбирать пакеты, но свободного времени стало очень мало.

Что касается добавления информации о домене в MacAlyzer, я объясню на высоком уровне, поскольку кажется, что вы знаете, что делаете. Чтобы включить информацию о домене вместо IP-адреса в столбцах «Источник» и «Назначение», вы можете отредактировать функцию ip_host_string() в ip.m. Эта функция управляет тем, как отображаются адреса клиента и сервера. Изменение его для поиска имя хоста из IP-адреса и возврат результирующей строки приведет к отображению доменов вместо IP-адресов.

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

person Joshua Piccari    schedule 13.08.2013
comment
Большое спасибо за написание этого ответа! Я должен спросить вас, можете ли вы предложить мне более лучший способ разработки приложения, такой как Charlse, я имею в виду, должен ли я использовать libpcap или есть ли какая-нибудь лучшая губа для обработки такого рода связи .... - person Retro; 13.08.2013
comment
libpcap, скорее всего, не тот инструмент, который нужно использовать, если вы хотите разработать что-то вроде Charles. Вам нужно будет написать HTTP-прокси и проверять запросы перед отправкой их на сервер. Это можно легко сделать в расширениях Chrome или Firefox, поскольку для перехвата этой информации доступны API. Если вам нужно написать отдельное приложение, я укажу вам на этот вопрос - person Joshua Piccari; 27.09.2013

Вот пища для размышлений:

http://www.binarytides.com/packet-sniffer-code-c-linux/

В любом случае вам нужно будет использовать C. Поэтому проверьте коды включений, например:

http://www.eg.bucknell.edu/~cs363/2014-spring/code/tcp.h

Вот документация "pcap":

http://www-01.ibm.com/support/knowledgecenter/#!/ssw_aix_71/com.ibm.aix.basetrf1/pcap_close.htm

person Darius Miliauskas    schedule 29.04.2015