Delphi

Xakep, номер #043, стр. 043-064-1


Простейший сканер ресурсов

Horrific aka Фленов Михаил (smirnandr@mail.ru) www.cydsoft.com/vr-online

В последнее время очень сильно увеличился поток просьб написать сканер расшаренных ресурсов. Я долго сопротивлялся, потому что хотел отложить эту тему на начало осени. Но мой ящик уже не выдержал, и сегодня я напишу маленькую прогу, которую ты сможешь без проблем превратить в сканер ресурсов.

Зачем искать

Что такое расшаренные ресурсы? Это любые ресурсы компа (директории, диски или принтеры), к которым открыт свободный доступ по сети. Если комп подключен к локальной сети, то для обмена файлами чаще всего открывают какой-нибудь диск или папку. Ну а если комп имеет еще и выход в Инет, то к этим ресурсам можно пробраться из любой точки вселенной, если не приняты никакие меры предосторожности.

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

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

Оформим в лучшем виде

На форме нам понадобится только один компонент TEdit (в свойстве name я указал AddressEdit) и один TMemo (здесь в свойстве name оставим значение по умолчанию Memo1). Все это дело нужно должным образом оформить и добавить кнопочку «Просканировать». На рисунке 1 ты можешь увидеть мой вариант формы.

В компоненте AddressEdit мы будем вводить адрес сканируемого компа. Здесь мы будем сканировать только одну жертву. Если ты захочешь, то сможешь потом доработать пример, чтобы он перебирал несколько адресов подряд или из какого-то списка. Но это уже на твое усмотрение, а для примера достаточно и одного. Ну а в компоненте Memo1 мы будем отображать найденные открытые ресурсы.

Шкодим

Теперь нам нужно создать обработчик события OnClick для кнопки и написать в нем содержимое листинга 1. Если тебе листинг понятен, то можешь заканчивать чтение статьи. Ну а если у тебя возникли проблемы, то давай разберем его подробнее.

В самом начале я заполняю структуру NetContainerToOpen, которая объявлена у меня в разделе var как тип NETRESOURCE. У нее нужно заполнить следующие поля:

NetContainerToOpen.dwScope - в этом параметре нужно указать рамки перечисляемых ресурсов. Я указал RESOURCE_GLOBALNET, чтобы поиск происходил в сети.

NetContainerToOpen.dwType - здесь указывается тип перечисляемых ресурсов. Ты можешь указать RESOURCETYPE_DISK для дисков, RESOURCETYPE_PRINT для принтеров и RESOURCETYPE_ANY для всего подряд.

NetContainerToOpen.lpLocalName - этот параметр нужно обнулить.

NetContainerToOpen.lpRemoteName - здесь нужно указать NETBios имя сканируемого компа или IP адрес. Если ты указываешь адрес, то в начале нужно прибавить два слеша \\, что я и делаю.

Содержание  Вперед на стр. 043-064-2