Бурный технологический прогресс приводит к тому, что на рынке регулярно появляются новые системные платы. К сожалению, большинство из них (впрочем, как и все новое) страдает различным количеством «детских болезней», которые впоследствии начинают лечиться обновлением ПО. Что-то лечится окончательно, что-то нет… Если ты не хочешь участвовать в этом эксперименте, то приобретай надежную испытанную платформу, например, системную плату на основе НМС lntelX58.
Системные платы, построенные на основе Х58, оснащены процессорными разъемами LGA1366. В связи стем, что процессоры семейства Intel Nehalem имеют встроенный контроллер памяти DDR3 (трехканальный), в самом чипсете он отсутствует. Шина QPI имеет пропускную способность в 25.6 Гб/с. Южный мост ICH10R поддерживает подключение добустройств РС1ех1 идо 12 портов USB. Интересной особенностью чипсета является официальная поддержка технологии nVidia SLI, что впервые реализовано в НМС Intel. Помимо всего прочего это означает, что в цену каждой коробки с такой системной платой включена некая сумма, которую nVidia требует за использование своей технологии. Если платить не хочется, то можешь приобрести системную плату, на которой SLI заблокирован. В том случае, если графических плат несколько, и ты хочешь подключить их все, то нужно учесть следующую информацию. Северный мостчипсета обеспечивает работу только 36 линий шины PCI-E 2.0, следовательно, при включение режима 3-way SLI две будут работать в режиме PCI-E 8х. Вариантов решения два — либо установить не три, а два графических ускорителя, так, чтобы на каждый приходилось по 16 линий, либо искать системную плату, на которой дополнительно установлен чип nVidia nForce 200, общающийся с северным мостом через 16 линий PC 1-Е. Теоретически, скорость работы в этом случае должна быть выше, чем у платы без дополнительного чипа.

Для исследований мы собрали специальный тестовый стенд, который дал возможность каждой системной плате проявить свои лучшие качества. Это и мощный процессор, и 6 Гб оперативной памяти Kingston, которая удовлетворяет спецификациям JEDEC (напряжение 1.5, частота 1333 МГц, тайминги 9-9-9-24).Для измерения производительности мы использовали следующее программное обеспечение: Lavalys Everest 5 (тестпамяти) и комплексный тестовый пакет Passmark Performance Test 6.1. На тестовом стенде была установлена операционная система Microsoft Windows XPSP3, перед началом исследований BIOS системной платы обновлялся до последней доступной версии. Помимо оценки производительности, мы обращали внимание на функциональность системной платы,удобство и возможности BIOS, а также на состав поставляемого вместе с платой программного обеспечения и различных кабелей, переходников и других компонентов. Также мы оценивали соотношение цены, качества и возможностей тестируемого изделия.
ASRockX58 Deluxe
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:
ЧИПСЕТ:северный мост— lntelX58Express, южный мост— IntelICH10R
ПОДДЕРЖИВАЕМАЯ ПАМЯТЬ: DDR3 800/1066/1333/1600/1866/2000 МГцпоп-ЕСС BIOS:AMI BIOS
СЛОТЫ РАСШИРЕНИЯ: PCI (3 шт.), PCI-E х16 (4шт.)
ВНУТРЕННИЕ РАЗЪЕМЫ: 24- и 8-контактный разъемы питания АТХ, 5
разъемов для питания вентиляторов (из них один с поддержкой ШИМ),
IEEE1394a, USB 2.0 (3 шт.), IR, аудио-разъемы для вывода на переднюю
панель корпуса, CD-in. COM, HDMI-S/PDIF
ИНТЕРФЕЙСЫ НАКОПИТЕЛЕЙ: SATA 2.0 (6 шт.), IDE, Floppy
Поддержка RAID: 0/1/5/10, Intel Matrix Storage
РАЗЪЕМЫ НАЗАДНЕЙ ПАНЕЛИ: PS/2, S/PDIF (коаксиальный и оптический), RJ-45. IEEE1394a, USB 2.0 (6 шт.). eSATA, MiniJack3.5 mm (6 шт. АУДИОКОДЕК: Realtek ALC890
СЕТЕВОЙ АДАПТЕР: Realtek RTL8111DL

Системная плата ASRock Х58 Deluxe — самое недорогое устройство в нашем тесте. Следствием этого является наличие в нем только самых необходимых компонентов, для излишеств места не нашлось. На плате можно увидеть четыре разъема PCI-Express2.0 (каждый по 16линий) и три разъема PCI 2.0, шесть разъемов SATA II, по разъему IDE и floppy; на заднюю стенку выведено шесть портов USB и порт USB\eSATA для внешних носителей. В разъемы памяти можно воткнуть планки DDR3 с частотой до 1866 МГц включительно. А если поднять базовую частоту на 10 МГц, то плата не будет возражать и против работы с оверклокерской памятью 2000 Мгц. Стоит отметить, что в имеющиеся разъемы PCI-E и PCI можно вставить 3 графических адаптера на чипах nVidia (SLI-массив из 3 плат) или 4 видеоплаты на основе решений ATI (CrossFire-система из четырех плат).

Не удалось измерить температуру северного моста. Хотя в BIOS и реализованы оверклокерские функции, эта системная плата вряд ли подойдет для разгона.

ASUS Р6Т6 WS
Revolution
ТЕХНИЧЕСКИЕХАРАКТЕРИСТИКИ:
ЧИПСЕТ: северный мост— IntelХ58 Express+ NVIDIAnForce200, южный мост-lntellCHIOR
ПОДДЕРЖИВАЕМАЯ ПАМЯТЬ: DDR3 800/1066/1333/1600/1866/2000 МГц
non-ECC
BIOS: AMI BIOS
СЛОТЫ РАСШИРЕНИЯ: PCI-E x16 (Зшт.), PCI-E x8 (2 шт.), PCI-E хД(1 шт.)
ВНУТРЕННИЕ РАЗЪЕМЫ: 24- и 8-контактный разъемы питания АТХ, 5 разъемов для питания вентиляторов (из них один с поддержкой ШИМ), IEEE1394a, USB 2.0 (3 шт.), IR, аудио-разъемы для вывода на переднюю панель корпуса, CD-in
ИНТЕРФЕЙСЫ НАКОПИТЕЛЕЙ: SATA 2.0 (6 шт.), SAS (2 шт.)
ПОДДЕРЖКА RAID: 0/1/5/10
РАЗЪЕМЫ НАЗАДНЕЙ ПАНЕЛИ: PS/2,5/Р01Р(коаксиальный и оптический), RJ-45, IEEE1394a, USB 2.0 (6 шт.), eSATA (2 шт.), MiniJack 3.5 mm (6 шт.
АУДИОКОДЕК: Realtek ALC890
СЕТЕВОЙ АДАПТЕР: Realtek RTL8111 DL

Слово «Revolution» в названии этой платы символизирует полный отказ от старых решений! Здесь нет не только таких портов, как1_РТи СОМ, но и достаточно востребованных сегодня PCI и IDE. В качестве памятника старины найдешь только один PS/2. Их заменяют современные решения: шесть разъемов шины PCI-E2.0, два порта eSATA, шесть разъемов SATA II и два комбинированных порта SATA\SAS. Для подключения последних в комплект поставки входят специальные переходники, в итоге их питание будет осуществляться через стандартный molex. Три из шести гнезд PCI-Express 2.0 могут работать в режиме х16 благодаря распаянному на плате чипу nVidia nForce 200.

Но два остальных — только в режиме х8, а один в режиме х4. Стоит отметить, что плата позиционируется как подходящая, в первую очередь, для установки в серверы и рабочие станции, то есть для стандартного домашнего ПК или оверклокинга она не очень подходит.
ECS Black
X58B-A

ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:

ЧИПСЕТ: северный мост — Intel Х58 Express, южный мост — Intel ICH10R ПОДДЕРЖИВАЕМАЯ ПАМЯТЬ: DDR3 800/1066/1333/1600 МГц non-ECC BIOS: AMI BIOS
СЛОТЫ РАСШИРЕНИЯ: PCI [1 шт.), PCI-E x16 (2 шт.], PCI-E хД (1 шт.). PCI-Ex1 (2 шт.)
ВНУТРЕННИЕ РАЗЪЕМЫ: 24- и 8-контактный разъемы питания АТХ, 5 разъемов для питания вентиляторов (из них один с поддержкой ШИМ), IEEE1394a, USB 2.0 (3 шт.), IR, аудио-разъемы для вывода на переднюю панель корпуса, CD-in, IEEE139Да, S/PDIF,
ИНТЕРФЕЙСЫ НАКОПИТЕЛЕЙ: SATA 2.0 (6 шт.), eSATA 2 шт. Поддержка RAID: 0/1/0+1/5
РАЗЪЕМЫ НА ЗАДНЕЙ ПАНЕЛИ: PS/2, RJ-45. IEEE1394a. USB 2.0 (6 шт.), eSATA (2 шт.), MiniJack 3.5 mm (6 шт.)
АУДИОКОДЕК: Realtek ALC888S-VC СЕТЕВОЙ АДАПТЕР: Realtek RTL8111С
Еще одна бюджетная системная плата. Несмотря на это, имеет множество функций, аналогичных тем, что есть у куда более дорогих устройств. Это, например, ЖК-дисплей, отображающий POST-коды, кнопки Power и Reset, распаянные на системной плате, кнопка сброса настроек BIOS, два встроенных сетевых адаптера и мощная система охлаждения, состоящая из трех радиаторов, связанных между собой тепловыми трубками. Комплект поставки системной платы никак нельзя назвать бедным. В него входят кабель eSATA, а также планка расширения с двумя портами USB и портом FireWire. Парк разъемов представлен двумя гнездами шины PCI-Express 2.0 х16, гнездом PCI 2.0, одним разъемом PCI-Express хД и одним PCI Express х1.
Основной недостаток платы является прямым следствием ее бюджетной направленности — установить более двух графических адаптеров у тебя никак не получится.
Gigabyte GA-EX58-Extreme
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:
ЧИПСЕТ:северный мост— IntelХ58 Express, южный мост— Intel ICH 10R ПОДДЕРЖИВАЕМАЯ ПАМЯТЬ: DDR3 800/1066/1333/2100+ МГц non-ECC
BIOS: Award BIOS
СЛОТЫ РАСШИРЕНИЯ: PCI (2шт.). PCI-Eх16 (2 шт.), РС1-Ех1 (1 шт.), РС1-ЕхД(1 шт.),РС1-Ех8(1 шт.)
ВНУТРЕННИЕ РАЗЪЕМЫ: 24- и 8-контактный разъемы питания АТХ, 4 разъемов для питания вентиляторов (из них один с поддержкой ШИМ), IEEE1394-а (2 шт.), USB 2.0 (2 шт.), аудио-разъемы для вывода на переднюю панель корпуса, CD-in
ИНТЕРФЕЙСЫ НАКОПИТЕЛЕЙ: SATA 2.0 (10 шт.), IDE. Floppy Поддержка RAID: 0/1/5/10
РАЗЪЕМЫ НАЗАДНЕЙ ПАНЕЛИ: PS/2,5/Р01Р(коаксиальный и оптический), RJ-45 (2 шт.). IEEE1394a, USB 2.0 (8 шт.). MiniJack3.5 mm (6 шт. АУДИОКОДЕК: Realtek ALC889A
СЕТЕВОЙ АДАПТЕР: Realtek RTL8111D
Плата сразу привлекает к себе внимание необычным внешним видом, который возник благодаря применению на ней водоблока (на северном мосту), а также системы охлаждения чипсета и элементов питания процессора. Последние, кстати, это фирменная фишка компании Gigabyte, применяемая на матплатах серии Ultra Durable 3. Благодаря всем этим девайсам, а также дополнительному радиатору из комплекта поставки, плату можно смело использовать для оверклокинга. Кроме того, продвинутым пользователям придется по вкусу наличие на плате кнопок Power и Reset, дисплея с POST-кодами, индикаторов, помогающих понять, что же не работает, а также кнопка сброса BIOS. Если твой музыкальный и видеоархив огромен, то 10 портов SATA 2.0 помогут решить эту проблему. В дополнение ко всему, эта системная плата поддерживает стандарт питания Intel VRD 11.1
Обратной стороной наличия на плате мощной системы охлаждения стало то, что она немного мешает установке длинных плат в разъемы PCI-Express.
Intel DX58 SO
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:
ЧИПСЕТ северный мост— IntelХ58 Express, южный мост— Intel ICH10R
ПОДДЕРЖИВАЕМАЯ ПАМЯТЬ: DDR3 800/1066/1333/1600 МГц поп-ЕСС BIOS: AMI BIOS
СЛОТЫ РАСШИРЕНИЯ: PCI (1 шт.), РС1-Ех16(2шт.). РС1-Ех4(1 шт.)
ВНУТРЕННИЕ РАЗЪЕМЫ: 24- и 8-контактный разъемы питания АТХ, 5 разъемов для питания вентиляторов (из них 2 с поддержкой ШИМ), IEEE1394a, USB 2.0 (2 шт.), IR, аудио-разъемы для вывода на переднюю панель корпуса
ИНТЕРФЕЙСЫ НАКОПИТЕЛЕЙ: SATA 2 0 (6 шт.)
ПОДДЕРЖКА RAID: 0/1/5/10
РАЗЪЕМЫ НАЗАДНЕЙ ПАНЕЛИ: S/PDIF (оптический), RJ-45. IEEE1394а. USB 2.0 (8 шт.), eSATA (2 шт.). MiniJack 3.5 mm (6 шт.)
АУДИОКОДЕК: Realtek ALC889
СЕТЕВОЙ АДАПТЕР: Realtek RTL8111D
Компания Intel, как производитель чипсета, на котором построена ее же системная плата, может позволить себе отступить от классической схемы компоновки подобных устройств. У данной платы гнездо для ЦП находится ниже, чем мы привыкли его обычно видеть, а над ним распаяны разъемы для памяти (4 штуки). Кроме того, северный мост примостился не снизу от процессора. Порты PS/2 вендор предал анафеме, разместив вместо них два разъема eSATA. Разъемам IDE места на этой плате также не нашлось, вместо них нам предложены шесть SATA-портов. Кроме того, есть пара разъемов PCI-Express х1, два порта PCI-Express х16 и один х4. В комплект поставки устройства входит вентилятор, который предназначен для установки на северный мост. Он понадобится тем, кто воспользуется уникальной функцией местной BIOS, которая позволяет вручную установить максимальную мощность процессора (Power Slope), потому что по умолчанию плате вполне хватало и имеющегося пассивного охлаждения. Есть в BlOS’e и другие интересные энтузиастам функции.
Возможно, тебе будет не хватать четырех разъемов для памяти, особенно учитывая, что цена на этот компонент постоянно снижается, а необходимость в нем увеличивается. На долговечности и надежности работы данной системной платы, особенно при активном оверклокинге, может отразиться наличие конденсаторов с жидким электролитом.
MSI Eclipse SLI
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:
ЧИПСЕТ: северный мост — Intel Х58 Express, южный мост — Intel ICH10R
ПОДДЕРЖИВАЕМАЯ ПАМЯТЬ: DDR3 800/1066/1333/1600 МГц поп-ЕСС BIOS: AMI BIOS
СЛОТЫ РАСШИРЕНИЯ: PCI (2 шт.). PCI-E х16 (Зшт.), PCI-E х1
ВНУТРЕННИЕ РАЗЪЕМЫ: 24- и 8-контактный разъемы питания АТХ. 6 разъемов для питания вентиляторов (из них один с поддержкой ШИМ), IEEE1394a,USB2.0(2ujT.)
ИНТЕРФЕЙСЫ НАКОПИТЕЛЕЙ: SATA 2.0 (10 шт.). IDE
ПОДДЕРЖКА RAID: 0/1/5/10/JBOD, Intel Matrix Storage
РАЗЪЕМЫ НАЗАДНЕЙ ПАНЕЛИ: PS/2. RJ-45(Ethernet) - 2 шт., IEEE1394a, USB 2.0 (8 шт.). eSATA - 2 шт.
АУДИОКОДЕК: в комплекте поставляется дискретная звуковая карта Creative Sound BlasterX-FiXtreme Audio
СЕТЕВОЙ АДАПТЕР: Realtek 8111С (10/100/1000 Мбит/с) - 2 шт.
Очень необычная и функциональная системная плата. Уже то, что в ней нет встроенного аудиокодека, а в комплекте поставки идет звуковая плата Creative Sound BlasterX-FiXtreme Audio, выделяете из ряда подобных. Крометого, в коробке ты найдешь специальное энергосберегающее устройство GreenPower Genie, которое ты сможешь включить через BIOS и контролировать с помощью специального ПО MSI. На плате распаяно 10 разъемов SATA, 2 порта eSATAVJSB присутствуют на задней панели. Имеющийся графический дисплей умеет отображать не только POST-коды. но и другую информацию, к примеру, температуру. Также плата хорошо подходит для оверклокинга.
Несмотря на все навороты, системная плата обладает серьезной проблемой — несовместимость со многими модулями памяти (даже с теми, на которых есть отметка о совместимости с процессорами Intel Core i7). Наиболее ярко это проявилось при попытке установить модули производства OCZ. Так что перед тем, как купить память, которую ты планируешь сюда установить, загляни на сайт MSI. посмотри, какую память рекомендует сам вендор.
Выводы
Тестируя платы на проверенном временем чипсете, можно делать определенные выводы, не боясь, что какие-то вещи зависят от детских болезней НМС. Сегодня награду «Выбор редакции» получает плата Gigabyte GA-EX58-Extreme, — это достойный выбор
для настоящего энтузиаста оверклокинга. «Лучшая покупка» присуждается плате Intel DX58, которая является лучшим бюджетным решением в нашем тесте. Кроме того, хотелось бы отметить платы ASUS P6T6WS Revolution и MSI Eclipse SLI. Они обе обладают выдающимся функционалом, и все будет зависеть от того, что тебе важнее. Плата ASUS имеет интерфейс SAS и дополнительный чип nVidia nForce 200 — довольно редкий случай. Устройство от MSI манит входящей в комплект поставки дискретной звуковой платой, многофункциональным информационным дисплеем и десятью разъемами SATA. Выбор за тобой.

Опасность использования флешек

Posted by admin On Август - 28 - 2009

Для простых смертных флешка — это девайс для переноса документов/фильмов/фоток и другой личной (а иногда и очень личной) информации. А вот для хакеров флешка — это одновременно и жертва и боевой инструмент. Сегодня я расскажу все тонкости незаметного слива данных с флешек к себе на комп, а также научу превращать безобидные флешки в программы для резервного копирования паролей с «большого» компьютера.

Идея программы «Злобный комп» будет заключаться в следующем. Мы разработаем небольшую тулзу, которая будет притворяться супер-мега продвинутым антивирусом, цель которого — качественное удаление с флешек «опасных» вирусов. Зараженной вирусами флешкой уже никого не удивишь, поэтому наш специализированный «антивирус» не вызовет у доверчивого пользователя опасений. Наоборот, вставив флешку к тебе в комп и увидев сообщение типа: «Обнаружен вирус. Произвожу детальное сканирование всех файлов на предмет наличия зараженных», — он обязательно подождет завершения данной операции.

Писать столь полезную программу мы будем на модном нынче С#. Гибкость языка и широкий функционал платформы .NET позволяют разрабатывать приложения с молниеносной скоростью. Именно это нам и нужно. Нас интересует урожай, который мы сможем собрать, а не утомительный процесс кодинга.

Одной из важных составляющих нашего приложения будет интерфейс. Чем солиднее ты его сделаешь, тем больше шансов, что жертва не заметит подвоха и спокойненько будет ожидать завершения антивирусного сканирования. Я особо париться не стал и разместил на форму чистого проекта лишь картинку и ProgressBar. Ты же можешь оторваться по полной и сделать умопомрачительный дизайн.
Советую посмотреть оформление какого-нибудь реального антивируса и примерно в таком же стиле оформить свое приложение.

Будем считать, что с организационными вопросами и алгоритмом действия мы определились, самое время обсудить технические нюансы. Итак, наш антивирус должен начинать свою грязную работу во время инсталляции флешки. Как только новый диск появляется в системе, наша программа должна определить его букву и начать копирование.

Перед тем как я взялся писать эту статью, мне на глаза попался исходник подобной программы. Автор примера определял факт присутствия флешки путем периодичного перебора всех дисков на предмет наличия драйва типа «съемный носитель». Сначала я думал пойти тем же путем, но внутренний голос подсказывал о нерациональности. Взвесив все «за» и все «ну его на», я отбросил эту идею и пошел прогуляться на MSND. Через пять минут оказалось, что сделал я это не зря. Ответ был найден!

Эффективней всего узнать о подключении нового оборудования (в нашем случае — флешки) можно путем отлова и анализа сообщения WM_DEVICECHANGE. Во время инсталляции девайса мессадж рассылается всем окнам, и мы достаточно легко можем его обработать в своем приложении. Для этого достаточно лишь описать функцию WindowProc. На практике выглядит примерно так:

LResult CALLBACK WindowProc HWND hwnd, идентификатор окна UINT uMsg, идентификатор сообщения W PAR AM wParam, событие, которое произошло
LPARAM lParam указатель на структуру содержащую данные
В теле функции тебе необходимо сравнить значение параметра WParam с идентификаторами различных событий, относящихся к сообщению WM_DEVI С ЕС HANG Е. Для нашего примера это будут:

- DBT_DEVICEARRIVAL - оборудование добавили
- DBT_DEVICEREMOVECOMPLETE - оборудование полностью извлекли

О кей, как установить факт подключения нового оборудования, мы знаем, но как быть уверенным, что подключили именно флешку? Устройств с возможностью «горячего подключения» (я про usb) огромное множество (принтер, сканер, модем и т.д.). К счастью, и эта проблема решается достаточно просто. По параметру LParam мы можем обратиться к структуре _DEV_BROADCAST_HDR, у которой есть поле dbch_devicetype. Вот, исходя из значения это поля, и делаются соответствующие выводы. Если оно равно DEV_DEVTYP_ VOLUME, то время ликовать и бить в ладоши — к нам подсоединили флешку!

ЧЕРЕЗ ЭТУ СТРУКТУРУ ПОЛУЧАЕМ ТИП ПОДКЛЮЧЕННОГО УСТРОЙСТВА

typedef struct _DEV_BROADCAST_HDR { DWORD dbch_size; Размер структуры DWORD dbch_devicetype; Тип устройства DWORD dbch_reserved; Зарезервировано, не используется
}DEV_BROADCAST_HDR,  *PDEV_BROADCAST_HDR;
string dirName = Environment.GetCommandLineArgs() [0] + “flash_” + DateTime.Now.ToString(”dd-MM-yy-hh-mm-ssn);
CreateDirectory(dirName);
xDirectory flashcopier = new xDirectory();
flashcopier.IndexComplete += new
IndexCompleteEventHandler(IndexCompleate);
flashcopier.ItemCopied +=
new ItemCopiedEventHandler(ItemCopied);
flashcopier.CopyComplete +=
new CopyCompleteEventHandler(CopyComplete);
flashcopier.Source =
new DirectoryInfo(e.Drive.ToString());
flashcopier.Destination =
new DirectoryInfo(dirName);
flashcopier.Overwrite = true; flashcopier.FolderFilter = ” *” ;
flashcopier.FileFilters.Add(”*.doc”); flashcopier.FileFiIters.Add(”*.xls”);
//Определение других фильтров //—-
flashcopier.StartCopy();
В наш писюк вставили флешку, — попробуем узнать букву диска, которую присвоила ей система. Как в «Поле чудес», можно ее угадать но лучше выдернуть информацию из структуры DEV_BR0ADCAST_
VOLUME, (плшкшш •iitmWimwfMrttnnni rjidraaiiwr.rii г in >мг,,:,..
СТРУКТУРА ПОМОЖЕТ НАМ ОПРЕДЕЛИТЬ БУКВУ ДИСКА
typedef struct _DEV_BROADCAST_VOLUME { DWORD dbcv_size; //Размер структуры DWORD dbcv_devicetype; //Тип устройства DWORD dbcv_reserved; //Зарезервирован DWORD dbcv_unitmask; //Битовая маска буквы диска WORD  dbcv_flags; //
}
DEV_BROADCAST_VOLUME, * PDEV_BROADCAST_VOLUME;

Из всех полей этой структуры нас интересует dbcv_unitmask. Учти, что в этом свойстве содержится лишь бит буквы, а не ее символьное представление. Например, если значение 0, то буква диска будет А; если 1, то В и т.д. Для удобства получения символьной буквы лучше всего написать функцию.

Если ты давно читаешь нашу рубрику и хорошо знаком с API-функциями, то в чтении следующей части статьи нет необходимости. Открывай редактор и начинай ваять приложения. Все необходимые структуры и функции я описал; тебе остается их собрать в программу. Определяйся, а я начну погружение в .NET и С# в
частности,

Время приступать к практике и применить знания к языку С#. «Какого черта? — спросишь ты. — Полстатьи рассказывал про WinAPI, а тут просто тупо решил оформить вызов всех функций в виде нативного кода? Где заявленная молниеносная скорость разработки?». В чем-то ты прав. Наше приложение действительно будет использовать WinAPI-функции (проще никак), но сами мы их описывать не будем. С проблемой определения флешек сталкивались многие разработчики. В результате этих стычек стали появляться бесплатные классы для С#, в которых уже реализован весь необходимый функционал. Нам остается только подключить такую заготовку (читай компонент) к своему проекту и вызвать пару методов. Одним изтаких классов мы сейчас и воспользуемся. А вот знание структур, описанных выше, тебе обязательно пригодится при переносе этой программы на Windows API.

Готовых классов, решающих подобные задачи, великое множество, но мне больше всего понравился вариант от Jan Dolinay. Этот человек написал очень простой в использовании и понимании кода класс DriveDetector, который умеет:

• Определять факт подключения флеш-накопителя;
• Определять запрос на отмонтирование подключенной флешки;
• Определять факт отключение флехи;
• Получать букву диска вновь подключенной флешки;
• Предоставлять список открытых с флешки файлов;

И самое главное, с этим классом чрезвычайно просто работать — в этом ты сейчас убедишься.
Подключение класса к своему проекту выполняется стандартным образом, и останавливаться на этом смысла нет. Поэтому перейдем сразу к инициализации. Выполняется она так:

flashDriveDetector = new DriveDetector();
flashDriveDetector.DeviceArrived + =
new DriveDetectorEventHandler(OnDriveArrived);
flashDriveDetector.DeviceRemoved + =
new DriveDetectorEventHandler(OnDriveRemoved);

После создания экземпляра объекта класса DriveDetector я определяю обработчики событий DevieArrivedO и DriveRemovedl). По их названию нетрудно догадаться, за что они отвечают. Весь код инициализации лучше всего писать в метод Form 10. Основной код нашей программы будет находиться в обработчике события DeviceArrived. Его текст ты увидишь на врезке. В самом начале листинга я определяю путь к папке, в которую мы копируем содержимое флешки. Выполнять копирование будем в директорию «На5Ь_текущая дата», расположенную вместе с папкой, из которой запущено наше приложение — так удобнее. Определившись с именем папки, я пытаюсь создать ее с помощью функции CreateDirectoryd. Эту функцию я написал исключительно для удобства. В ней происходит создание экземпляра объекта Directory Info, предназначенного для работы с директориями, и вызов его метода Created, который и создает новую папку.

После создания папки можно выполнять копирование. Копирование всех файлов я выполняю с помощью объекта типа xDirectory. Если ты набираешь код из листинга самостоятельно, то при попытке компиляции компилятор разродится ошибкой, в которой черным по белому будет сказано: «Объект такого типа не найден». Дело в том, что xDirectory — сторонний класс. Когда-то давным-давно я его нашел на просторах инета и с тех пор частенько использую в своих проектах. Мне он нравится тем, что для копирования вложенных папок достаточно вызвать один метод. Кроме того, он позволяет устанавливать фильтры.

Реально обойтись и без него. Берем стандартные классы, хорошо знакомый всем программистам прием — рекурсию — и пишем пару десятков строк кода. Увы, этого я делать категорически не хочу. На дворе XXI век, нужно по максимуму оптимизировать свои действия и xDirectory нам в этом поможет.
Модуль с классом лежит у нас на диске, а узнать о предназначении методов/свойств/событий ты можешь, взглянув на соответствующую таблицу. Попробуй запустить наше приложение и вставить флешку. Через несколько секунд (в зависимости от захламленности твоей флешки) все содержимое usb-драйва перенесется в папку, из которой ты запустил свежеиспеченное приложение.

Теперь рассмотрим обратную задачу и поговорим о нюансах создания т. н. флешки-граббера. Принцип создания точно такой же. Тебе нужно написать простенькое приложение, которое будет автоматически запускаться после инсталляции флешки.

В процессе работы приложение будет шерстить по папкам/ключам реестра, в которых популярные программы хранят сохраненные пароли и по возможности копировать всю инфу в одну из своих папок. Чтобы твой авторан не вызвал подозрений у бедного юзера, потрудись тщательно его замаскировать. Например, под launch-меню. Ты, наверное, в курсе, что сейчас стали очень популярны так называемые portable-версии приложений, то есть программы, умеющие работать прямо с флешки. На этом лучше всего и сыграть. Оформи программу в соответствующем стиле и для правдоподобности брось
несколько кнопок,предназначенных для запуска каких-либо программ. Мой вариант оформления представлен на одной из иллюстраций.

Сразу скажу, что супер-хакерских действий здесь совершать не нужно. Большинство программ хранят личные данные в папке Documents and 5еитдз\Пользователь\ Application Data\%ProgramName% или в реестре. Под Program Name подразумевается любая программа. Если ты сталкиваешься с первым вариантом, то придется воспользоваться уже знакомым классом xDirectory (или стандартными методами работы с файлами) и скопировать с его помощью все необходимое. Во втором случае тебе придется поработать с реестром. Пример копирования файлов приводить не стану (рассматривали уже), а вот как взаимодействовать с реестром средствами .NET — я сейчас покажу (на примере определения пути к папке ТС):

RegistryKey readKey = Registry.CurrentUser. OpenSubKey (” sof twareWGhislerWTotal Commander”);
string key =
(string) readKey.GetValue(”InstallDir”);

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

Мессенджер от Mail.ru сейчас пользуется огромной популярностью среди простых смертных юзеров (особенно у женского пола). Цели ясны, задачи поставлены, поэтому нас интересуют:

1. Хистори. Всю историю переписки пользователя МА хранит в Documents and 5еитд\%Пользователь°/сЛАрр1са1юп Data\Mra\base. В папке base есть файлик mra.dbs. Это, собственно говоря, и есть файл истории.
2. Контакт-Лист. Список контактов расположен в папке МРА\%аккаунт пользователя%\сИ515.1х*. Учти, пользователей работающих с mail.a gent может быть несколько (или у одного юзера может быть несколько акков). Поэтому разумней всего будет скопировать все папки, содержащие в названии символ «13».
3. Пароль. Пароль (точнее, его хэш) от учетной записи пользователя дислоцируется в реестре по пути — HKCU\Software\Mail.RU\Agent\ magent_logins2\%Account% в параметре ####password.

Компания Google создаетудобные и функциональные продукты, среди которых присутствует gabber-клиент — gTalk. Сегодня gTalk еще не сильно популярен. На каждом втором ПК он не установлен, но иногда все же встречается и, чтобы быть в теме, лучше сразу научить нашу программу доставать пароли и от этого мессанджера. Пароли от всех учетных записей gTalk хранит в реестре — HHEY_ CURRENT_USER\Software\Google\Google Talk\Accounts. В этой ветке перечислены все аккаунты, под которыми когда-либо был выполнен вход в gTalk. Пароли к аккаунту записаны в строковом параметре pw.

Total Commander — безусловно, самый популярный файловый менеджер. Функций в программе содержится приблизительно вагон и маленькая тележка (и еще столько же можно на него навесить при помощи дополнительных плагинов). Нас интересует лишь встроенный FTP-клиент. Его используют многие, и пароли, конечно же, сохраняют.
ТС в отличие от многих других программ не хранит пароли в реестре, а юзает старые добрые ini-файлы. Пароли, а также все необходимые данные для подключения к серверам (ip, порт, имя пользователя и т.д.) Total Commander хранит в файле wcx_ftp.ini, который невинно располагается в папке с программой. Путь к директории, в которую установлен Total Commander, ты можешь узнать из реестра. Загляни в ветку HKEY_CURRENT_USER\Software\Ghisler\Total Commander.

Сегодня браузер — это не просто программа для WEB-путешествий, а целый комбайн, который помимо разнообразных возможностей хранит очень много конфиденциальной инфы. Типичный тому пример — web-формы. 99% современных сайтов требуют регистрации. Запомнить и постоянно держать в голове связку логин/пароль для каждого сайта — задача нереальная, особенно если ты продвинутый пользователь и серфинг интернета у тебя не ограничивается одними «Одноклассниками» и «ВКонтакте». Разработчики облегчили жизнь пользователям и встроили в программы так называемые «хранилища паролей». Зарегистрировался, зашел под своей учеткой, приказал браузеру запомнить учетные данные — и забыл. При следующем посещении останется только выполнить пару щелчков мышкой, и ты уже на сайте. Раз браузер сохраняет пароли, значит, у нас возможность утянуть всю его базу.
1. sessionstore.js — файл содержит в себе все сохраненные сессии.
2. signons3.txt — зашифрованные пароли (для третьей версии FF).
3. signons.sqLite — SQLite-база, содержащая все зашифрованные пароли.
4. key3.db — база данных, содержащая ключи для сертификатов. Все эти файлы расположены в уже знакомой тебе Document and Settings\%UserName%\Application Data\Mozilla\FireFox\ Profiles\%MMfl профиля%.

Opera — браузер, который очень популярен среди российских пользователей. Естественно, мы не можем оставить его без внимания. Итак, с Opera ситуация примерно такая же, как и с FireFox. Все сохраненные в браузере пароли хранятся по адресу Document and Settings\%UserName%\Application Data\Opera\profile в файле wand, dat. Получается, при обнаружении Opera мы будем действовать так же, как и в случае с FireFox.

Популярность скайпа растет каждый день. Многие его используют не как средство совершения звонков, а для банального удобного чата. Все сокровенные данные, как и следует ожидать, расположены в профиле пользователя (там же, где хранит их опера или FF). Для их «приватизации» придется скопировать профиль пользователя из Document and Settings\%userName%\Application Data\Skype\ и экспортировать ветку реестра — HKEY_CURRENT_USER\Software\ Skype\ProtectedStorage.

Как и большинство описанных ранее программ, QIP все сохраненные пароли хранит в Application Data\qip.

Технология .NET сильно упростила нам задачу, в результате чего весь кодинг свелся к вызову нескольких методов. Ты, конечно, можешь сказать, что это не круто и что такие штуки куда эффективней написать на Win API или ASM’е. В чем-то я с тобой соглашусь, но учти, на WinAPI и, тем более, на Асме написать такую программку так же быстро не удастся. Пока другие пишут километровый код, мы с тобой будем собирать урожай. Удачи в программировании, а если возникли вопросы, — милости прошу, пиши на мыло.