Сьогодні наша розмова піде про такому цікавому моменті як сканування віддалених машин на расшаренные ресурси, або, якщо простіше, на кулі. Останнім часом все більше будинків і районів об’єднуються в локальні мережі, щоб пограти, надрукувати якийсь документ на принтері друга, вийти в інет через один модем, ну і, зрозуміло, щоб змінюватися новими фільмами і свежезакачанным варезом :). Але не все так просто! Для того, щоб скачати «Матрицю-3», твій дружбан повинен відкрити для тебе файл з фільмом, тобто його розшарити. І так з усіма рештою ресурсами. Але твій друг може розшарити не тільки папку з фільмами, але і з необережності або дурості, не знаю, весь диск, може бути, навіть всі диски. І я бачу вже іскорки в твоїх очах! Але ось перше правило: друзів ображати позбавленням інтернету недобре. Тому будемо шукати інших користувачів, які відкрили свої диски.
А робити ми це будемо з допомогою спеціальних програм — сканерів розшарених ресурсів. І як ви знаєте, існують безліч таких сканерів під Windows, таких як xShAReZ, Legion, LANScope… Але сьогодні я представлю вам Pandora. З допомогою це сканера ви зможете навіть не дивитися на монітор, Pandora все зробить за вас. Так-так, в тому числі і скопіює указынные вами в настройках файли. Ви про це мріяли, використовуючи той же xShAReZ? Я і не сумнівався :).
Давайте запустимо з кореневої директорії файл pandora.exe. І відразу перейдемо в графічний інтерфейс програми — натискаємо правою кнопкою на що з’явилася іконці жовтого кольору в системному треї і лівою по пункту меню Launch GUI.
Після цього ви побачите як програма намагається під’єднатися до сервера — поки сервер знаходиться на 127.0.0.1:4003, тобто він запускається локально. Додам, що серверна частина програми (pandora.exe) для зв’язку зі своєю графічною оболонкою використовує порт 4003 (останні цифри після двокрапки в IP-адресі). Сервер pandora.exe як вже говорилося, здійснює всю роботу по скануванню, отримання списку розшарених ресурсів, копіювання файлів, презентація результатів на емаіл обмін інформацією з гуи. Сервер вантажить налаштування файлу msgsrv16.in, а лог роботи зберігає у файлі log.sys. Сервер може знаходитися в двох режимах видимості: у звичайному в такому режимі сервер виводить іконку в трей, показує вікно лода.В прихованому режимі сервер не показує не іконки не вікна, ховає себе зі списку завдань.Режим змінної визначається в конфіг файлі hideme.
Коли програма приконнектится до сервера, вона запросить версію сервера — query, конфігурацію — Configurator, діапазони сканування IP range list, і через певний інтервал часу — refresh time — опрасит кілька разів стан сервера.
Якщо деякі кнопки неактивні, то потрібно отримати сервера інформацію про діапазони IP, натиснувши на Get. Після збереження змін (треба натиснути Set), сервер перезавантажиться. Після цього всі елементи стали активними — можна приступати безпосередньо до сканування діапазонів IP. Процес сканування розбитий на дві стадії. Перша (scan потоки) визначення наявності NetBIOS інтерфейсу на даній адресі. На початку надсилається пінг, потім при вдалому його повернення здійснюється пробний коннект на 139 порт.При вдалому конекте IP додається на перевірку у другу стадію. З допомогою змінних skipping і skipscan можна соотвественно скасувати пінг і коннект, якщо включені обидва прапора те адреса відразу ж потрапляє на перевірку у другу стадію.
Друга стадія полягає в отриманні розшарених ресурсів на даному IP і копіювання файлів.Після успішного отримання списку, кожна файлова секція перевіряється на кожному расшаренном ресурсі.Для кожного з ресурсів пишеться його доступ R / RW і файли, які не вдалося скопіювати.Файли в директорію зазначену в locpath. Для кожного файла перевіряється його наявність у директорії і якщо файл з таким же ім’ям і однаковим розміром і датою створення вже існує, то він не копіюється.Також для кожного з ресурсів проводитися спроба отримання msdos.sys для отримання каталогу windows при невдачі використовується стандартний c:windows.
Щоб запустити сканування за обраним діапазонів IP потрібно натиснути Start, якщо хочете припинити сканування, то сміливо натискайте Stop. За замовчуванням сервер знаходиться в режимі безперервного сканировани з інтервалом — Delavmainscan, тобто за цей час має відбутися хоча б одне вдале сканування. Щоб подивитись результати, перейдіть на вкладку Results. На цій вкладці ви побачите список розшарених ресурсів, котторые можна примонтувати до себе, для кожного з IP і скачані файли. Сервер автоматично стежить за наявністю мережі і при розриві зв’язку припиняє сканування до відновлення зв’язку.
Перейдемо на вкладку конфігурації. Щоб отримати значення поточної конфігурації, натискаємо на Get Cfg, щоб записати — Set cfg. Сервер зберегти зміни у файлі msgsrv16.in і перезавантажиться.
Налаштування конфігурації:
Main config
delaymainscan=value //Час у секундах, що вказують через який час
процес сканування почнеться заново.

delaymail=value //Час у секундах, що вказують через який час
процес відсилання пошти почнеться заново.

hideme=[0/1] //Якщо встановлено в False, то процес не ховається, в треї
показується іконка, виводиться вікно лода.

autorun=[0/1] //Якщо встановлено в True, то проводитися додавання в
автозавантаження.

detailerror=[0/1] //Якщо встановлено в True, то в файл виводиться лода
додаткова інформація про помилки

listen=[0/1] //Якщо встановлено в True, то сервер відкриває порт і чекає конекту
від графічного інтерфейсу.

port=value.Порт, на якому графічний інтерфейс буде чекати конекта.

Налаштування scan потоків.
numparallel=value //Кількість паралельних потоків. Чим більше значення,
тим швидше йде сканування, але більше завантаження процесора і
величина трафіку. Для машин класу Celeron <400 і Dialup <33.6 k
рекомендується не більше 20 потоків.

priority=[0/1/2/3] //Пріоритет потоку idle|lowest|lower|normal відповідно. Впливає на завантаженість процесора. Рекомендовані
значення idle, lowest. В даному випадку процесорний час не буде
відбиратися від інших додатків.

delaycreate=value //Затримка в мс при створення наступного
потоку, введена, щоб зменшити завантаження процесора під час
старту сканування.

delayafterclose=value //Затримка в мс при закриття сокету при
вдалого чи не вдалого конекті на 139 порт. Введена через глючності
винсокета 98 вінд. При швидкому створенні і закриття сокетів
ресурси не віддаляється, що призводить до блокування локальних портів і
неможливість створення нових сполук.

pingtimeout=value //Час в мс протягом якого буде очікуватися пінг
відповідь від сканованого адреси. Після закінчення цього часу адреса
виключається з перевірки на відкритість 139 порту.

delaybeforecheck=value //Затримка в мс перед перевіркою IP.

skipscan=[0/1] //Якщо встановлено в true, то в незалежності від
результату конекту на 139 порт, адреса додається в чергу на
перевірку расшаренности диска С. Часто допомагає при поганому каналі до
машині, так як віндовий функції по-іншому працюють при визначенні
наявності розшарених ресурсів.

skipping=[0/1] //Якщо встановлено в true, то перевірка на пінг бути не буде.

usenetbiosscan=[0/1] //Параметр, що включає експериментальну підтримку
сканування без використання сокетів, виклики через
uchar Netbios(pncb ncb). Целеобразно використовувати з параметром skipscan=1.

delaybeforequery=value //Час в мс показує затримку при наступному запиті на netbios. Працює спільно з usenetbiosscan.

Налаштування share потоків
numparallel=value //Кількість паралельних потоків. Чим більше значення
тим швидше йде сканування, але більше завантаження процесора і
величина трафіку. Для машин класу Celeron <400 і Dialup <33.6 k
рекомендується не більше 10 потоків.

skipenum=[0/1] //Параметр, що показує потрібно отримувати список ресурсів і тільки тоді на кожному з ресурсів перевіряти файли. Інакше вважається, що на кожному IP є расшаренный диск С.

priority=[0/1/2/3] //Пріоритет потоку idle|lowest|lower|normal відповідно. Впливає на завантаженість процесора. Рекомендовані значення idle,lowest. В даному випадку процесорний час не буде відбиратися від інших додатків.

locpath=string //Рядок показує куди будуть копіюватися завантажувані файли.

pwlexten=string //Рядок показує яке розширення буде у
pwl-файлів. Введена для непомітності нових файлів.

iniexten=string //Рядок, що показує яке розширення буде у
system.ini файлу. Введена для непомітності нових файлів.

В принципі два останні рядки вже втратили актуальність у зв’язку з тим, що копіюються не тільки пвл файли, можливо в наступній версії буде аналогічна опція тільки для кожного типу файла окремо.

Налаштування запитуваних файлів.
Відповідно, в Item name задається ім’я секції яке буде писатися в балці при перевірці.Для кожної секції задається шлях — Path — де будуть шукатися файли, і власне маски файлів filename. В дорозі можна використовувати макрос $windir$, який буде автоматично замінятися на шлях до windows на віддаленій машині. Також можна задати мінімальний і максимальний розмір файлу.

Тепер поясню, як «читати» лог:

Лог
[19:32:29] Thc 1 @ 5 Found netbios at 222.22.222.22
//потік scan N1 знайшов інтерфейс NetBIOS на цьому IP і записав його в
5 слот для перевірки.

[19:32:29] Ths 5 $ 5 trying 222.22.222.22 c
//потік share N5 почав обробку 5 слоти, тобто спробу
підключення до даного IP.

[19:34:02] Ths 1 $ 1 enumerating 200.0.0.2
//потік share отримує список розшарених ресурсів.

[19:36:02] Ths 1 $ 1 enumerating done found [2] res 200.0.0.2
//потік Share повідомив, що знайшов 2 розшарені ресурсу.

[19:36:02] Ths 1 $ 1 try share 200.0.0.2 c
//потік share намагається підключитися до зазначеного ресурсу.

[19:36:02] Ths 1 % Start coping data RW access 200.0.0.2 c
//потік share N1 повідомив, що він успішно підключив ресурс і почав
копіювання файлів. RW-доступ на читання і запис, R тільки на читання.

[19:36:02] Ths 1 % Checking item [pwl]
//йде перевірка файлової секції з ім’ям pwl

[19:51:05] Ths 2 % Find file KostichL.PWL
//потік share N2 повідомив, що знайшов цей файл для даної секції.

[19:51:15] Ths 2 % Copyed c: empKostichL^^260200124945.pw c 222.22.222.22
//потік share N2 повідомив, що успішно скопіював файл.

[19:53:02] Ths 1 % Skip file (allready exists) 1~~~.pwl
//потік share N1 повідомив, що файл вже скопійований.

[19:54:36] Ths 3 $ No sharedata
//потік share N3 повідомив, що у нього закінчилися IP для перевірки.

[19:56:04] Thc 4 @ Data ended
//потік scan N4 повідомив, що у нього закінчилися IP для перевірки.

Ось вам і що, де, коли. Удачі!

Адаптовано: Nik Heizer.