powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SMB2 detection
19 сообщений из 19, страница 1 из 1
SMB2 detection
    #39961446
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свалилась второстепенная, но срочная проблемка: определить протокол (SMB/CIFS или SMB2), по которому данная сессия общается с сервером. Исходные данные - имя файла или каталога на сетевом диске (обычно, не UNC), необходимо узнать, через какой протокол работают файловые операции. ОС клиента может быть от NT4 до Win10, ОС сервера может быть любой (DOS Lanmanager, конечно, маловероятен, но я бы не исключал) от NT4 до Win10 и всяких Samba.

Т.к. API для решения этой задачи присутствует только в Win10, приходится придумывать извращения, пока придумалось следующее:
0. Имя сервера получается из имени файла через ExpandUNCFileName
1. На клиенте можно определить, что он может работать по SMB2 по наличию запущенного драйвера mrxsmb20.sys и версии ОС
2. Для определения, что сервер поддерживает SMB2 нужно послать ему "SMB Negotiate protocol request" с выставленной поддержкой SMB2 на клиенте и посмотреть ответ.

Если клиент и сервер поддерживают SMB2, делаю вывод, что работа идет через SMB2

В связи со всем этим вопросы:
Знает ли кто иной способ решения данной задачи?
Нет ли у кого готовых модулей для формирования и парсинга SMB пакетов?
Посылка "SMB Negotiate protocol request", получение ответа и закрытие сокета не приведут к утечкам на сервере?
...
Рейтинг: 0 / 0
SMB2 detection
    #39961471
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изначальная проблема: если клиент и сервер обмениваются через SMB2, функции FileLock/Unlock начинают "косячить" - рушаться индексы в файловой БД...
...
Рейтинг: 0 / 0
SMB2 detection
    #39961472
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типичное решение: выкидываем файловую СУБД, заменяем на слиент-сервер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SMB2 detection
    #39961479
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Увы, простого решения нет - скорее проще всех перевести на NT4, которая будет работать в VirtualBox.

Как Вы предсталяете себе перевод из файловой БД на SQL (скорее всего) кода, которому 30 лет? Это большая система, что там и как работает, толком никто уже не помнит (не знает).

С производительностью все хорошо, появилась проблема с SMB2 - что проще решить: всю систему переделать на SQL (или что?) или настоять на SMB1? (Про WannaCry и пр. в курсе)
...
Рейтинг: 0 / 0
SMB2 detection
    #39961480
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064Как Вы предсталяете себе перевод из файловой БД на SQL (скорее всего) кода, которому 30 лет?

Да в общем-то тривиально: раз коду 30 лет, значит используется BDE. Достаточно поменять
настройки используемого алиаса с Paradox/dbase на ODBC к какому-нибудь MySQL/MyISAM.
Работать станет медленнее, но зато надёжно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SMB2 detection
    #39961481
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Система не на Delphi - просто DBConnection не заменить.
...
Рейтинг: 0 / 0
SMB2 detection
    #39961482
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Да в общем-то тривиально: раз коду 30 лет, значит используется BDE.


Не верно - анекдот про "раз круглое - значит оранжевое" напомнило.
...
Рейтинг: 0 / 0
SMB2 detection
    #39961492
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x1ca4064

Система не на Delphi - просто DBConnection не заменить.

А почему вы тогда задаёте вопрос в разделе по Дельфи? Тут светлее?
...
Рейтинг: 0 / 0
SMB2 detection
    #39961493
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если всё так плохо, может попробовать на какой-нибудь NFS всё перевести?
...
Рейтинг: 0 / 0
SMB2 detection
    #39961494
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener,

Конкретизирую вопрос:
Нет ли у кого готовых модулей для формирования и парсинга SMB пакетов (да, Delphi - неужели никто не работал с SMB)?
...
Рейтинг: 0 / 0
SMB2 detection
    #39961496
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener

А почему вы тогда задаёте вопрос в разделе по Дельфи? Тут светлее?


Да :)
...
Рейтинг: 0 / 0
SMB2 detection
    #39961498
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Как Вы себе это представляете? NFS, вроде, не поддерживает блокировки кусков файла.
Перевозить можно все-что-угодно куда-угодно, но задача сформулированна: определить по какому протоколу идет общение клиента и сервера.
...
Рейтинг: 0 / 0
SMB2 detection
    #39961622
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SMB2 detection
    #39961645
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064скорее проще всех перевести на NT4, которая будет работать в VirtualBox.

Или на Линукс с Самбой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SMB2 detection
    #39963687
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФФФсе просто:
1. Отправляем пакет на 445 порт сервера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
0000|00 00 00 9B FF 53 4D 42 72 00 00 00 00 18 43 C0 |    >ÿSMBr     CÀ
0010|00 00 00 00 00 00 00 00 00 00 00 00 FF FF 9C 13 |             ÿÿ_ 
0020|00 00 00 00 00 78 00 02 50 43 20 4E 45 54 57 4F |      x  PC NETWO
0030|52 4B 20 50 52 4F 47 52 41 4D 20 31 2E 30 00 02 | RK PROGRAM 1.0  
0040|4C 41 4E 4D 41 4E 31 2E 30 00 02 57 69 6E 64 6F | LANMAN1.0  Windo
0050|77 73 20 66 6F 72 20 57 6F 72 6B 67 72 6F 75 70 | ws for Workgroup
0060|73 20 33 2E 31 61 00 02 4C 4D 31 2E 32 58 30 30 | s 3.1a  LM1.2X00
0070|32 00 02 4C 41 4E 4D 41 4E 32 2E 31 00 02 4E 54 | 2  LANMAN2.1  NT
0080|20 4C 4D 20 30 2E 31 32 00 02 53 4D 42 20 32 2E |  LM 0.12  SMB 2.
0090|30 30 32 00 02 53 4D 42 20 32 2E 3F 3F 3F 00    | 002  SMB 2.???  
где первые 4 байта - длина всего остального (в "сетевом" формате - начинается старшим байтом, заканчивается младшим - всегда путаю BigEndian vs. LittleEndian). В этом пакете указана поддержка клиентом Smb2.
2. Принимаем длину ответа (4 байта в извращенном "сетевом" формате, поэтому для получения длины необходимо преобразовать через ntohl).
3. Читаем эту длину байт.
4. Если начинается со строки #$FE'SMB' - работает по SMB2, если #$FF'SMB' - SMB1
...
Рейтинг: 0 / 0
SMB2 detection
    #39963697
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну да, я тоже путаю :)
...
Рейтинг: 0 / 0
SMB2 detection
    #39963701
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
А, ну да, я тоже путаю :)

У Intel по младшему адресу младший байт
...
Рейтинг: 0 / 0
SMB2 detection
    #39963709
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
А, ну да, я тоже путаю :)


В древние времена прочел историю, как будущих мореплавателей учили, на каком борту судна какого цвета фонарь, запомнить не могли. Умудренный опытом и утомленный "тупизной" учеников, старый морской волк сказал:
- Тупицы. Расскажу вам как меня учили: есть слово "*****" - это означает Правый - Зеленый

Я после этой байки сам помню. Может кто сказать подобное мнемоническое правило для Big- и Little-Endian?
...
Рейтинг: 0 / 0
SMB2 detection
    #39963826
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064
Я после этой байки сам помню. Может кто сказать подобное мнемоническое правило для Big- и Little-Endian?
У большого всё правильно (как пишется, так и хранится), а мелкий всё перепутал (наоборот).
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SMB2 detection
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]