В CommView for WiFi реализован простой и понятный интерфейс доступа
к TCP/IP. Он позволяет вашему приложению в режиме реального времени
обрабатывать пакеты, принятые с помощью CommView. Начиная с версии
5.0 есть возможность передавать пакеты аналогично тому, как это
делает Packet Generator (генератор пакетов).
Принцип работы
Вам следует запустить CommView, задав ему в командной строке
специальный ключ MIRROR, указывающий программе на какой IP-адрес и
в какой TCP-порт дублировать захватываемые пакеты.
Примеры:
CV.EXE mirror:127.0.0.1:5555 // дублирует пакеты на loopback,
в TCP-порт 5555
CV.EXE mirror:192.169.0.2:10200 // дублирует пакеты на
192.169.0.2, в TCP-порт 10200
Когда CommView запущен с этим ключом, он пытается установить
TCP-соединение с указанным IP-адресом по указанному номеру порта.
Это означает, что ваше приложение уже должно быть запущено и должно
быть готовым к приему по указанному порту. Если CommView не может
установить соединение, он будет делать повторные попытки каждые 15
секунд. То же самое будет происходить при разрыве соединения:
каждые 15 секунд CommView будет пытаться восстановить его. Если
соединение успешно установлено, CommView будет передавать
захватываемые пакеты по мере их прихода, в режиме реального
времени.
Формат данных
Данные передаются в формате NCFX. Описание формата смотрите в
последней главе данного раздела.
Передача пакетов
Ваше приложение может не только принимать пакеты, но и посылать их,
аналогично генератору пакетов. Данные могут быть переданы в
CommView for WiFi с помощью все того же TCP-соединения, через
которое происходит прием. Формат данных прост: нужно указать длину
пакета (двухбайтовое беззнаковое целое число со стандартным
порядком следования байтов начиная с младшего, т.е.
little-endian),
затем индекс скорости передачи данных (двухбайтовое беззнаковое
целое число со стандартным порядком следования байтов начиная с
младшего, т.е. little-endian),
затем сам пакет. Длина пакета не включает те четыре байта, которые
ставятся перед содержимым пакета. Индекс скорости передачи данных
отсчитывается с нуля; он должен содержать индекс скорости (т.е.
рейта), показанный в
Генераторе
пакетов.
Обратите внимание на следующий пример:
Строка, которая должна быть отослана, в шестнадцатеричном формате
(hex): D4
00
00
00
80 1F 02 66 C2 8E. Длина строки составляет 10 байтов.
Используемая скорость: 5,5 Мbps Это третий пункт выпадающего списка
"скорость передачи 802.11" в окне
Генератора
пакетов.
Итоговое значение в буфере, которое должно быть отослано:
0A
00
02
00
D4
00
00
00
80 1F 02 66 C2 8E.
Если адаптер не открыт или не поддерживает генерацию пакетов, пакет
будет сброшен без уведомления.
Примеры проектов
Ниже приведены два простых примера программ, ожидающих входящих
соединений, выделяющих пакеты из потока и отображающих "сырые"
данные.
·http://www.tamos.com/products/commwifi/samp_mirr_c7.zip.
Проект в Visual Studio с исходным текстом на C++.
·http://www.tamos.com/products/commwifi/samp_mirr_d7.zip.
Проект на Delphi с исходником на Pascal. Для компиляции проекта вам
понадобятся ICS-компоненты от Francois Piette, которые доступны
на
http://www.overbyte.be/
Пропускная способность (Bandwidth)
При пересылке данных на удаленный компьютер, убедитесь, что линия
связи между ними имеет достаточную пропускную способность, чтобы
передать все перехваченные данные. Если CommView собирает данные с
интенсивностью 500 кб/сек, а линия связи способна передавать только
50кб/сек, неизбежно возникнут "заторы", приводящие к разным
неприятностям (например, в зависимости от версии Windows, winsock
может прекратить передавать данные вообще). Если вам требуется
более гибкое решение, использующее буферизацию и дистанционное
управление – попробуйте воспользоваться
CommView Remote Agent.
|