Небольшая, но профессиональная IT компания (start up) из Калифорнии ищет Java программиста на долгосрочный проект с последующем переводом на постоянную работу. Являясь экспертами в области разработки сложного программного обеспечения мы строим надежные, гибкие, ...
Починить http сниффер
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
Имеется HTTP сниффер на C# под .NET4. Вкратце его особенности:
1. В Program.cs встроен код, который проверяет запущен ли сниф от имени администратора, в случае если в винде установлен высокий уровень контроля учетных записей. Если нет, то перед запуском выдается окно с просьбой запустить от админа
2. Привязка к сетевому интерфейсу
///
/// Привязка к сетевому интерфейсу
///
///
public void Bind(out string lastError)
{
lastError = "";
try
{
IPHostEntry HosyEntry = Dns.GetHostEntry((Dns.GetHostName()));
if (HosyEntry.AddressList.Length > 0)
{
foreach (IPAddress ip in HosyEntry.AddressList)
{
string S = ip.ToString();
if (S.ToString().Length
{
Console.WriteLine(S);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
socket.Bind(new IPEndPoint(IPAddress.Parse(S.ToString()), 0));
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
byte[] byInc = new byte[4] { 1, 0, 0, 0 };
byte[] byOut = new byte[4];
buffer = new byte[4096];
socket.IOControl(IOControlCode.ReceiveAll, byInc, byOut);
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, OnReceive, null);
break;
}
}
}
}
catch (Exception exp)
{
lastError = exp.Message;
logger.saveLog("Bind error "+lastError);
}
}
3. Функция перехвата полученного пакета выглядит следующим образом:
private void OnReceive(IAsyncResult ar)
{
try
{
int nReceived = socket.EndReceive(ar);
if (PacketParser.Check(TargetString, buffer, nReceived, out host))
{
//проверяем является ли пакет http и посылается ли он интересующему нас хосту
}
//заново настраиваем отслеживание пакетов
buffer = new byte[4096];
try
{
//logger.saveLog("socket.BeginReceive");
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, OnReceive, null);
}
catch
{
logger.saveLog("Next beginreceive error");
}
}
catch { }
}
4. Функция анализа пакета следующая:
public static bool Check(string Filter, byte[] Buffer, int Length,out string host)
{
host = "";
IPHeader ipHeader = new IPHeader(Buffer, Length);
//Вот здесь на одном из компов с windows7 постоянно вместо TCP получаем UDP
if (ipHeader.ProtocolType == Protocol.TCP)
{
TCPHeader tcpHeader = new TCPHeader(ipHeader.Data, ipHeader.MessageLength);
…….
…….
…...
=================
Тестировался на компьютерах с windows7. В основном работает нормально, но на одном из них проблема в данном участке:
public static bool Check(string Filter, byte[] Buffer, int Length,out string host)
{
host = "";
IPHeader ipHeader = new IPHeader(Buffer, Length);
if (ipHeader.ProtocolType == Protocol.TCP)
{
вот здесь всегда Protocol.UDP вместо Protocol.TCP и соответственно ничего не распознается. То есть когда я в браузере перехожу на какую либо страницу (и в том же фидлере идет перехват), у меня сниффер ловит только Protocol. UDP
Можете ли вы предложить решение проблемы? Исходники предоставлю
Заявки фрилансеров
Похожие заказы
- $2500Прикладное ПО14 заявокЗакрыт11 лет назад
- $50
Нужны онлайн консультации по программе (синхронизация с удаленой БД) C# для человека вообще не владеющего языком С# и средой разработки visual studio, но разбирающимся в Дельфи и PHP. В заявке пишите желаемую цену ...
Прикладное ПО3 заявкиЗакрыт12 лет назад Есть плагин для Firefox для сохранения изображений со страниц - Save Images Необходимо сделать, чтобы он сохранял изображения с определенных страниц. Для этого потребуется использовать Regular Expressions (как применяются regular expressions в ...
Прикладное ПО3 заявкиЗакрыт12 лет назад- $500
требуется написание античита к игре warface! Требуется программист, или группа програмистов, которая сможет написать ПО по конкретному ТЗ, тз вышлю на почту
Прикладное ПО8 заявокЗакрыт12 лет назад Программа для отправки СMС со своих симкаpт через модемы или телефоны. Удобный интерфейс программы, с разбивкой абонентов на группы и многое другое. Подробное ТЗ по запросу. Время исполнения 7 - ...
Прикладное ПО6 заявокЗакрыт11 лет назад- $35
Необходимо по ТЗ разработать десктоп приложение, которое позволит переделывать xls файл (всегда одной структуры) в csv с заменой, удалением не нужной информации. ТЗ приложении. Пожелания: c/c++. Точно не Borland ...
Прикладное ПО1 исполнительЗавершен12 лет назад Программа на компьютер по отправки СМC c телефонов и модемов. Отправка с нескольких модемов. Возможность получения ответов.
Прикладное ПО2 заявкиЗакрыт12 лет назадЕсть устройство на базе STM32L152, к которому подключены несколько внешних модулей по USART и I2C. Требуется разработать прошивку, обеспечивающую взаимодействие с данными устройствами (отправку команд, получение данных/обработку). Ищется разработчик с опытом ...
Прикладное ПО2 заявкиЗакрыт12 лет назадНа сайте необходимо автоматически разместить объявление. Нужен человек который имел с подобными проектами дело. Подробности при переписке.
Прикладное ПО4 заявкиЗакрыт12 лет назадТребуется отобразить иконки в нужных местах (отмечено в приложении) профиля пользователя фейсбука. Данные из базы пользователей сайта. Несколько категорий пользователей, несколько разных иконок. Возможно ли это в принципе? Нужно ли ...
Прикладное ПО1 исполнительЗавершен12 лет назад