суббота, 27 декабря 2008 г.

My Firefox Extensions

Как почитатель комфортного минимализма (только что придумал термин :) ) люблю использовать возможности расширения предоставляемые программами, при этом совершенно не приемлю всякие там супермегапаки, содержащие в себе много ненужного.

Гораздо интереснее настроить такие вещи как браузер или, к примеру, миранда самому.
Вот Firefox. Сразу после инсталяции добавляю в него набор extensions делающие его, с моей точки зрения, чрезвычайно приятным:

FlashGot - позволяет скачивать файлы, фильмы, галереи.
Download Master - удобней чем FlashGot для скачивания файлов, но намного лучше выключить родную безобразную интеграция от Download Master и использовать связку FlashGot->Download Master
NoScript - позволяет блокировать скрипты на веб ресурсах. Чрезвычайно полезно с точки зрения секьюрности, не так ли ?
Extended Statusbar - показывает всякую полезненькую информацию вроде скорости загрузки страницы, загруженное количество и т.п..
Tab Kit - табы в фаервоксе становятся ещё приятнее: разноцветненькие, в несколько рядов, можно закрывать все табы и справа и слева.
Adblock Plus - скажем нет рекламе.
HttpFox - недавно открыл для себя. Порой интересно глянуть что там у нас бегает по хттп.

Похоже это все установленные у меня расширение для лиса, если понравится ещё что то - непременно занесу в список )

четверг, 18 декабря 2008 г.

Инжект loopback пакетов в WFP

Тут возникла задача генерировать входящие TCP пакеты. Для этого имеет смысл использовать FwpsInjectTransportReceiveAsync0, при этом NET_BUFFER должен указывать на IP заголовок.

И вот я все бился в тщетных попытках так же заинжектить и loopback пакеты.
Но делается несколько иначе, а именно с использованием FwpsInjectNetworkSendAsync0 (ключевое слово send :) )

понедельник, 1 декабря 2008 г.

Установка TDI устройств-фильтров вне DriverEntry

Как известно, самый удобный сценарий для установки TDI фильтра это загрузка драйвера в группе "TDI" и навешивание устройства при загрузке.
В этом случае наш фильтр будет на месте до создания каких либо соединений с протоколом.

Но что если мы хотим загрузиться раньше tcpip, и, при этом, не пропустить момент создания соединений с протоколом?

Тут нам поможет TdiRegisterPnPHandlers. Причем стоит использовать не BindingHandler callback ( ибо когда он вызывается с параметром TDI_PNP_OP_PROVIDERREADY, коварный system уже успевает создать соединение), а ClientPnPAddNetAddress.
Скажем, для tcpip можно смело навешивать фильтр на устройства при добавлении первого IP адреса.