Category Archives: Uncategorized

QuickStart для Wireshark

Written by elwood

wireshark-logo

Меня всегда пугал этот инструмент. Пугал тем, что я НИЧЕГО не понимал в том, что он выводит. Я не понимал, как настраивать фильтры, не понимал, что вообще происходит и как это использовать. Мешал высокий порог вхождения. Когда-то такими же сложными для меня были Eclipse, IntelliJ IDEA, mercurial, maven ну и так далее. И чтобы преодолеть этот порог, обычно нужен хороший QuickStart – пятиминутный гайд, как включиться в работу. Без него всё идёт туго и невесело. Вот такой гайд я и хочу предложить.

Итак, задача наша такая – посмотреть TCP-пакеты, идущие “на” или “с” заданного IP-адреса.

1. Включаем wireshark, выбираем сетевой интерфейс, который будем мониторить. Можно выбрать несколько интерфейсов. Выбираем тот, который используется для нашего сетевого взаимодействия. То есть например у вас программа обращается к серверу, который расположен в интернете, и несколько интерфейсов: один Ethernet, подключенный к интернету, другой – Wi-Fi для взаимодействия в рамках вашей локальной сети. Нас в этой ситуации будет интересовать Ethernet-адаптер. Его и выбираем. Нажимаем Start.

2. Пошли пакетики, их очень много, и нам нужно задать правила для фильтрации. Так как нас интересует TCP протокол, то мы можем использовать например следующее правило:

tcp && (tcp.srcport == 80 || tcp.dstport == 80)

Первое условие отфильтровывает tcp-пакеты, второе – применяет дополнительные правила для порта.

Если нужно наложить условие на IP адреса, то это можно сделать так: ip.src_host == 87.31.220.35

3. Всё работает ! Достраивать правила для фильтрации несложно, поскольку есть автодополнение.

4. Если вы хотите перехватывать loopback-траффик (который идет через localhost), то тут, к сожалению, есть проблема. Дело в том, что этот траффик не доходит до сетевых адаптеров, и WireShark не в состоянии его перехватить. http://stackoverflow.com/questions/5847168/wireshark-localhost-traffic-capture Вот тут есть 2 решения этой проблемы: в первом случае предлагается установить Microsoft Loopback Adapter и натравить на него WireShark, во втором случае предлагается пошаманить с маршрутизацией. Судя по отзывам, оба способа работают, так что всё ок 🙂

Эмуляция плохого канала связи

Written by elwood

За отладкой программы, которая постоянно посылает и принимает сообщения по GPRS с сервера, почувствовал необходимость в имитации плохого соединения, погуглил инструменты и нашел следующее:

1. SoftPerfect Connection Emulator – платная (100 баксов за standard edition), встала на мою Win7 x64 без проблем, позволяет выбрать сетевой интерфейс и задать ему скорость и различные побочные эффекты (% потерь пакетов, дубликаты пакетов, reordering). К сожалению, в триальной версии можно юзать сессии не более 30 секунд, потом сетевой интерфейс начинает работать как обычно и надо заново включать эмуляцию. 30 секунд – это слишком мало, поэтому стал искать дальше.

2. Wipfw – портированный с FreeBSD стандартный инструмент, позволяет делать почти все что и SoftPerfect, но, к сожалению, работает пока только на Windows XP или Windows Server 2003. Ну, мне большего и не надо, взял соседнюю свободную тачку, поставил туда wipfw и запустил серверное приложение. Все сработало наура, сначала подключился в обычном режиме, начал передавать данные и на второй машине включил 100% потери пакетов. Некоторые сообщения успели “отправиться” перед тем, как приложение поняло, что соединение не функционирует. И следующие сообщения уже были сохранены в локальном хранилище для отправки, когда соединение восстановится. Естественно, первые сообщения, “отправленные” на сервер – потерялись.

Минигайд по wipfw. Программа ставится как служба (service) сетевого интерфейса (ее видно, если зайти в свойства соединения), и висит постоянно.
А для манипуляции правилами нужно запускать ipfw.exe.

Вот так можно посмотреть список всех правил: ipfw.exe show
А так удалить все правила (программа спросит подтверждения): ipfw.exe flush
Полный запрет на прием IP-пакетов с хоста 172.28.1.4: ipfw.exe add deny ip from 172.28.1.4 to any
Потеря 30% пакетов: ipfw.exe add prob 0.3 deny ip from 172.28.1.4 to any