- Хроники. - -

HTTP сниффер на C#

Posted By Ikutsin On 16 ноября 2009 @ 0:52 In .NET C#,Как?,Лаборатория | Comments Disabled

11473920_9748823_5546182_5337002_5306441_27_pics_271 [1]Есть немного погуглить, то становится ясно, что простого пути для создания собственного анализатора HTTP (не путать с TCP, который на уровень ниже того что надо было мне) нет. Простой и понятный код в свободном доступе отсутствует. Я постоянно напарывался на программы, которые мега разработчики хотят толкать за бабло. Ну есть нет бесплатно, то придется реверсить…

Почему TCP снифер не то что снифер для HTTP?

TCP это уровень ниже, чтобы получить полный пакет HTTP, еще предстоит огромное количество работы: определить заголовки, отфильтровать пакеты и выстроить их в цепочку. Это рутинный геморрой, на который бесплатно и сразу согласится разве что школьник.

Реверсим готовое

Так как я уже (к сожалению) не школьник, будем искать готовое. Жадины программисты, часто забывают скрыть код от посторонних глаз, пренебрегая даже банальной обфускацией. Большое вам на этом спасибо. И так, с такими инструментами как Reflector [2] и плагином File Disassembler [3], программа превращается (конечно не превращается, а экспортируется) в код.

Что говорит код программы?

В программе много классов, часть (вместе с зависимости) отбрасываем. Задача просто, выдрать голый функционал, а позднее и переписать, чтобы не было проблем с копирайтингом и нарушением лицензий. Если честно, написано много и по уму. Не удивительно что автор не переходит на GNU.

Есть много функционала с ключевым словом Persistent, а пространство имен — Perst… Вбиваем в поисковик, (да я настолько ленив, что даже код разбираю вместе с гуглом 😉 ) и получаем интересный результат [4]. Это свободная, одно-файловая база данных с индексами и ключами.

Приятно узнавать новое, раньше я считал, что SQLite это единственный свободный выход для хранения массива данных в Windows формах на C#.

Пробиваем дальше… Вбиваем код в поисковик дальше:

public SocketPair(Socket socket, byte[] buffer){this.IPSocket = socket;this.Buffer = buffer;}

Вот это да, ссылка на CodePRoject HSSniffer [5], именно того функционала, который я на мог найти с самого начала. Совпадение? Наверно, в виду того, что программа под реверсингом была опубликована до HSSniffer.

HSSniffer [6]

Еще один факт подтвердился, даже самая хорошая статья не будет давать заходов с поисковиков, если название не совсем соответствует тому, что хотели увидеть посетители.

В качестве заключения

Название первой программы я не расскажу, на это есть причины. Зато, могу рассказать, зачем я все это искал.

Уже давно делал программу YouTube View, может кто-то слышал. Сейчас эта программа уже не поддерживается и валяется на сайте в открытом коде. Так вот, естественно я просмотрел несколько программ, которые делают тоже самое. Прощупал рынок, так сказать и напоролся на одну интересную фишку. Одна из программ показывала значек в трее, для закачки ролика, не зависимо от того, какой браузер использовался. Смею предположить, что это сделано с помощью сканирования пакетов таким-же образом как это делает сниффер. Теперь, в своих программах я (и конечно вы) могу использовать ту-же фишку.


Article printed from Хроники.:

URL to article: /1116-http-sniffer-na-c

URLs in this post:

[1] Image: /wp-content/uploads/2009/11/11473920_9748823_5546182_5337002_5306441_27_pics_271.jpg

[2] Reflector: http://www.red-gate.com/products/reflector/

[3] File Disassembler: http://www.denisbauer.com/NETTools/FileDisassembler.aspx

[4] результат: http://www.mcobject.com/perst

[5] CodePRoject HSSniffer: http://www.codeproject.com/KB/IP/hssniffer.aspx?display=Print

[6] Image: /wp-content/uploads/2009/11/HSSniffer.jpg

Copyright © 2008 Все, что меня окружает. All rights reserved.