Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SMB2 detection / 19 сообщений из 19, страница 1 из 1
24.05.2020, 22:46
    #39961446
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SMB2 detection
Свалилась второстепенная, но срочная проблемка: определить протокол (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
25.05.2020, 00:11
    #39961471
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SMB2 detection
Изначальная проблема: если клиент и сервер обмениваются через SMB2, функции FileLock/Unlock начинают "косячить" - рушаться индексы в файловой БД...
...
Рейтинг: 0 / 0
25.05.2020, 00:17
    #39961472
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SMB2 detection
Типичное решение: выкидываем файловую СУБД, заменяем на слиент-сервер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.05.2020, 01:04
    #39961479
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SMB2 detection
Dimitry Sibiryakov,

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

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

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

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

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

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


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

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

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

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

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


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

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

Или на Линукс с Самбой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.05.2020, 22:37
    #39963687
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SMB2 detection
ФФФсе просто:
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
28.05.2020, 22:47
    #39963697
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SMB2 detection
А, ну да, я тоже путаю :)
...
Рейтинг: 0 / 0
28.05.2020, 22:51
    #39963701
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SMB2 detection
alekcvp
А, ну да, я тоже путаю :)

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


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

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


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