С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/33: Рейтинг темы: голосов - 33, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 22

http-сниффер

09.11.2011, 22:02. Показов 6140. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Джентельмены!

Подскажите, пожалуйста с чего начать. Любой соурс по теме очень нужен.
В конечном счёте нужно получить программу, которая, сидя на маршрутизаторе, будет подменять передаваемые при http-соединении файлы. Т.е. в iptables настраиваем редирект на нашу прогу (это + ДНС я сделал).
Затем прога выясняет свойства http-пакета (интересен destination- ДНС имя или ip, передаваемые данные, ну и что за пакет, GET/не GET и т.п.). Затем делает новый пакет с подменённым файлом и отправляет дальше.
Вот собственно вопрос по курсивной части, как перехватить, развернуть пакет, завернуть новый, отослать на сервер и т.д..
Огромное спасибо за любой код, приближающий к решению проблемы!


Писал в спешке, переписал более вдумчиво. Спасайте ((
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2011, 22:02
Ответы с готовыми решениями:

Сниффер си/си++/си#
Помогите пожалуйста написать "простенький" сниффер на языке си/си++/си#!

www-http сниффер. Как отследить HTTP запросы?
Посмотрел я вот эту статью: http://www.cyberguru.ru/cpp-sources/network/primer-prostejshego-sniffera-dlya-windows-2000/xp.html ...

HTTP сниффер
Добрый вечер. Хочу в образовательных целях написать блокировщик URL страниц по базе, но не знаю как вычислить на какой ресурс пользователь...

21
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
09.11.2011, 22:27
Вообще не понятно, к чему все это...
Имхо, идеологически правильнее для подобной задачи проксировать веб трафик.
Если твердо решили извращаться с iptables, то смотрите в сторону libipq
0
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 22
09.11.2011, 22:43  [ТС]
Задание в институте такое, увы.

Т.е. мы сможем получить все пакеты. Как из них отобрать по критериям- вот проблема.. Не знаю как подступиться ни к перехвату, ни к разбору.
А сделать надо сокетами.. И под Линь. Убунту 10 в частности.
0
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 22
11.11.2011, 21:06  [ТС]
Неужель никто не знает?
Перехват-то ещё могу состряпать.. и разбор.. А вот подмену.. Поможет кто?
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
12.11.2011, 10:41
Цитата Сообщение от Antisymmetrizer Посмотреть сообщение
Перехват-то ещё могу состряпать.. и разбор.. А вот подмену.. Поможет кто?
А с чем конкретно проблема то?
Если Вы уже осилили "разбор", то вставить что угодно в пакет, не забыв обновить TCP и IP заголовки ну просто детская задача по сравнению с "разобрать".
0
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 22
12.11.2011, 15:45  [ТС]
Нашёл много кода, разбирающего ip, tcp и udp.
Из проблем- разобрать http и сделать подмену файлов. Но первичнее разобрать.. Поможете?
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
12.11.2011, 16:41
Цитата Сообщение от Antisymmetrizer Посмотреть сообщение
Из проблем- разобрать http и сделать подмену файлов. Но первичнее разобрать.. Поможете?
Вряд ли, конкретных вопросов у Вас по прежнему нет, а у меня в голове не укладывается как сниффер может влиять на трафик.

PS: как человек осиливший хотя бы пересборку фрагментированных TCP пакетов может иметь затруднения с разбором строки вида "METHOD :space: URL :space: HTTP/x.y\r\n"|"NAME: :space: VALUE\r\n"???
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
12.11.2011, 21:49
Цитата Сообщение от g_u_e_s_t Посмотреть сообщение
у меня в голове не укладывается как сниффер может влиять на трафик.
я за темой следил, и все надеялся, что он все же умеет
википедия про сниффер говорит то, что я и так знал. но я все же решил заглянуть, вдруг я что-то путаю.
Анализатор трафика, или сниффер (от англ. to sniff — нюхать) — сетевой анализатор трафика, программа или программно-аппаратное устройство, предназначенное для перехвата и последующего анализа, либо только анализа сетевого трафика, предназначенного для других узлов.
Сниффер может анализировать только то, что проходит через его сетевую карту. Внутри одного сегмента сети Ethernet все пакеты рассылаются всем машинам, из-за этого возможно перехватывать чужую информацию. Использование коммутаторов (switch, switch-hub) и их грамотная конфигурация уже является защитой от прослушивания. Между сегментами информация передаётся через коммутаторы. Коммутация пакетов — форма передачи, при которой данные, разбитые на отдельные пакеты, могут пересылаться из исходного пункта в пункт назначения разными маршрутами. Так что если кто-то в другом сегменте посылает внутри его какие-либо пакеты, то в ваш сегмент коммутатор эти данные не отправит.
Antisymmetrizer, тебе нужна прокся. в таком случае ты можешь фильтровать/изменять проходящий через нее траф.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
13.11.2011, 00:04
Да автор как бы изначально постановку задачи определил, а назвать это "сниффер", "веник" или "пряник" - разницы особой нет
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
13.11.2011, 08:09
Цитата Сообщение от Antisymmetrizer
Затем делает новый пакет с подменённым файлом и отправляет дальше.
новый пакет содержит новый путь к файлу, скорее всего
старый пакет остаётся

ищи средство разбора tcp-пакета
ищи средство формирования tcp-пакета
разобрав tcp-пакет, выделяй оттуда путь и формируй новый tcp-пакет
(там ещё какие-то данные, их можно повторить или создать новые)
сначала делай для GET-запроса
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
13.11.2011, 08:47
Цитата Сообщение от Evg Посмотреть сообщение
а назвать это "сниффер", "веник" или "пряник" - разницы особой нет
ага. терминологию придумали задроты.
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
13.11.2011, 11:22
Цитата Сообщение от Evg Посмотреть сообщение
Да автор как бы изначально постановку задачи определил
Ну не знаю, обозвать 1й и последующий пост ТС'а постановкой задачи как-то слишком сильно...

Цитата Сообщение от Evg Посмотреть сообщение
а назвать это "сниффер", "веник" или "пряник" - разницы особой нет
Вы не правы, я вот до сих пор не могу понять, идет речь все-таки о проксировании или о том, что называется fuzzer т.к. не смотря на схожий внешний эффект вещи совершенно разные.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
13.11.2011, 13:04
Цитата Сообщение от g_u_e_s_t Посмотреть сообщение
Вы не правы, я вот до сих пор не могу понять, идет речь все-таки о проксировании или о том, что называется fuzzer т.к. не смотря на схожий внешний эффект вещи совершенно разные.
Ему нужно, чтобы на вход маршрутизатора подавался файл А, а на выходе (только для конкретного dst-адреса) формировался файл A-штрих, но при этом маршрутизатор делал бы вид, что так всё и было. Как оно называется, мне как-то впадлу разбираться
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
13.11.2011, 15:04
Цитата Сообщение от Evg Посмотреть сообщение
Ему нужно, чтобы на вход маршрутизатора подавался файл А, а на выходе (только для конкретного dst-адреса) формировался файл A-штрих, но при этом маршрутизатор делал бы вид, что так всё и было
Не, ну может это и сойдет за Т.З. для чайников/идиотов, но сформулировав так, нормального ответа не будет. А ведь тема, то интересная...
Что бы советовать ТСу что-то вменяемое, требуется нормальная формулировка задачи, например:
1. с помощью iptables завернуть весь трафик идущий с хоста A на хост B:80 в программу (-j QUEUE N)
2. ждать 1й пакет с не нулевым tcp-payload, пропуская остальные без имений.
3. Убедиться, что пакет HTTP
3. А вот тут и начинается самое веселье:
Что будем делать если мы получили фрагмент запроса? (например "GET / H")
Что делать если заголовок HTTP запроса получен, а данные нет?
Что делать с пакетами которые нам не нужны? (переписали данные в HTTP не забыв поправить Content-Length и знаем что данных стало меньше на 100kб)
Таких вопросов с десяток. От ответов на них зависит какую часть TCP стека придется написать ручками (точнее утащить откуда нибудь)
И пока на них нет ответов, это не топик, а детский лепит из серии "ПОМОГИТЕ!!!")
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
14.11.2011, 00:58
Цитата Сообщение от g_u_e_s_t
Что будем делать если мы получили фрагмент запроса? (например "GET / H")
пропускать его дальше без изменений

Цитата Сообщение от g_u_e_s_t
Что делать если заголовок HTTP запроса получен, а данные нет?
пропускать его дальше без изменений

Цитата Сообщение от g_u_e_s_t
Что делать с пакетами которые нам не нужны?
пропускать их дальше без изменений

на первом этапе можно написать прогу, которая работает только с правильными данными

Цитата Сообщение от g_u_e_s_t
Что бы советовать ТСу что-то вменяемое, требуется нормальная формулировка задачи
Цитата Сообщение от Antisymmetrizer
Затем прога выясняет свойства http-пакета (интересен destination- ДНС имя или ip, передаваемые данные, ну и что за пакет, GET/не GET и т.п.). Затем делает новый пакет с подменённым файлом и отправляет дальше.
в пакете не содержится файл, но содержится путь к файлу
нужно подменять путь к файлу
(это самое простое)
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
14.11.2011, 09:34
Цитата Сообщение от accept Посмотреть сообщение
на первом этапе можно написать прогу, которая работает только с правильными данными
Дык все мои вопросы о правильных, но ферментированных данных, ведь не кто и не где обещает, что заголовок любого GET запроса влезет в 1 TCP пакет (например только на тот же URL у nginx лимит 4К, а у апача 8Кб).
Т.е. простейший вариант будет работать, только когда получили полный заголовок (в данных пакета присутствует "\r\n\r\n") и после изменения URL размер пакета вместе с IP и TCP заголовками остался <= MTU.

Цитата Сообщение от accept Посмотреть сообщение
в пакете не содержится файл, но содержится путь к файлу
Это не совсем так, HTTP не запрещает иметь данные (request body) и в GET запросе.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
14.11.2011, 10:16
Цитата Сообщение от g_u_e_s_t
Это не совсем так, HTTP не запрещает иметь данные (request body) и в GET запросе.
все варианты можно не рассматривать
может просто времени не хватить на обработку всех возможных ситуаций
GET - запрос, чтобы что-то получить
POST - запрос, чтобы сначала отправить какие-то данные, а потом что-то получить
ему, похоже, нужно при запросе какого-нибудь файла выдать другой файл

Цитата Сообщение от g_u_e_s_t
что заголовок любого GET запроса влезет в 1 TCP пакет (например только на тот же URL у nginx лимит 4К, а у апача 8Кб).
сначала нужно написать для таких, которые помещаются
(если будет готовая программа, то будет смысл её расширять
если не будет готовой программы, то не будет смысла её писать)
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
14.11.2011, 10:36
Цитата Сообщение от accept Посмотреть сообщение
все варианты можно не рассматривать
может просто времени не хватить на обработку всех возможных ситуаций
Дык может самое время, не загонять себя в такую ситуацию (потребуется реализовать большой кусок TCP стека в своей программе), и пересмотреть подход в сторону проксирования, где прост нет таких проблем?
Цитата Сообщение от accept Посмотреть сообщение
ему, похоже, нужно при запросе какого-нибудь файла выдать другой файл
Ну ТС'e видней (наверное), что же нужно. Опять же, если "другой файл" может быть на другом сервере (кроме замены URL мы переписываем заголовок "Host:"), то все, приплыли...

Цитата Сообщение от accept Посмотреть сообщение
если будет готовая программа, то будет смысл её расширять
Это конечно дело вкуса, но я вот не вижу смысла начинать с тривиального не представляя хотя бы в общих чертах как должен работать финальный код.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
14.11.2011, 11:35
Цитата Сообщение от g_u_e_s_t
Опять же, если "другой файл" может быть на другом сервере (кроме замены URL мы переписываем заголовок "Host:"), то все, приплыли...
программа может его качнуть и передавать обратно, как делала бы это, если бы передавала настоящий файл

Цитата Сообщение от g_u_e_s_t
Это конечно дело вкуса, но я вот не вижу смысла начинать с тривиального не представляя хотя бы в общих чертах как должен работать финальный код.
я против того, чтобы пытаться реализовать сотню функций (возможностей) сразу
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
14.11.2011, 12:10
Цитата Сообщение от accept Посмотреть сообщение
программа может его качнуть и передавать обратно, как делала бы это, если бы передавала настоящий файл
Увы, нет не может.
Прокси - легко, а то, что ТС обозвал сниффером, не может, ведь SYN SYN/ACK к моменту когда мы видим HTTP запрос уже ушли в оригинальном направлении. Т.е. фактически не взяв на себя львиную долю ф-ций TCP стека, задача не решаема.
А поменять URL в пределах оригинального сервера, да, тривиально, думаю со всей мишурой можно уложиться в 500 строк кода...
Цитата Сообщение от accept Посмотреть сообщение
я против того, чтобы пытаться реализовать сотню функций (возможностей) сразу
Я ж говорю - дело вкуса...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2011, 12:10
Помогаю со студенческими работами здесь

Http-сниффер
У меня есть сниффер (за основу я взяла этот: http://habrahabr.ru/post/164901/). Он ловит все пакеты. Как сделать так, чтобы остались только...

Посоветуйте http сниффер
стоял HttpAnalizerV6 отказывается работать, требует лизензию. Перепробывал кучу, нет ничего нормального, посоветуйте что-нибудь.

Как написать собственный HTTP-сниффер
Здравствуйте, как создать программу для получения get запроса с определённого сервера(в моем\данном случае с сервера...

Сниффер - как представить HTTP заголовок в виде структуры?
Нашел в инете прогу для сниффа IP пакетов, немного доработал, смог получать также из IP пакета TCP или UDP заголовки, а из них узнавать...

Простой сервлет HTTP Status 405 - HTTP method GET is not supported by this URL
Здравствуйте,начал изучение сервлетов.Делал все последовательно как в примере http://devcolibri.com/4284,пока еще без создания jsp файла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru