46 / 88 / 11
Регистрация: 24.04.2019
Сообщений: 496
1

Сервер SMB не отвечает

23.11.2024, 23:59. Показов 2626. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь согласовать протокол с SMB сервером. Данные отправляются, но ответ не приходит. Через 20 секунд разрывает соединение. Файрвол отключать пробовал. Может кто-то сталкивался с таким?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
int main()
{
    
    WSADATA WSAData;
    SOCKET server;
    SOCKADDR_IN addr;
    char buffer[2048];
 
    WSAStartup(MAKEWORD(2, 0), &WSAData);
    if((server = socket(AF_INET, SOCK_STREAM, 0))==INVALID_SOCKET)
    {
        std::cout << "Socket creation failed with error: " << WSAGetLastError() << std::endl;
        return -1;
    }
 
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    addr.sin_family = AF_INET;
    addr.sin_port = htons(445);
    if(connect(server, (SOCKADDR*)&addr, sizeof(addr))==SOCKET_ERROR)
    {
        std::cout << "Server connection failed with error: " << WSAGetLastError() << std::endl;
        return -1; 
    }
 
    unsigned char packet_data[106];
 
    memset(packet_data, 0, 106);
 
    unsigned char *pBuf = packet_data;
    unsigned short *pShort = 0;
    unsigned long *pLong = 0;
    long long *pLlong = 0;
 
    pBuf += 1;
    short res = htons(102);
    pShort = (unsigned short*)pBuf;
    *pShort = (short)res;
    pBuf += 3;
 
    pLong = (unsigned long*)pBuf;
    *pLong = (unsigned long)0x424d53fe;  //protocolId
    pBuf += 4;
    pShort = (unsigned short*)pBuf;
    *pShort = (unsigned short)64;       //size
    pBuf += 10;
    pShort = (unsigned short*)pBuf;
    *pShort = (unsigned short)2;        //creditRequest
    pBuf += 10;
    pLlong = (long long*)pBuf;
    *pLlong = (long long) 0;            //messageId
    pBuf += 40;
 
    pShort = (unsigned short*)pBuf;
    *pShort = (unsigned short)36;       //size
    pBuf += 2;
    pShort = (unsigned short*)pBuf;
    *pShort = (unsigned short)1;        //dialectCount
    pBuf += 2;
    pShort = (unsigned short*)pBuf;
    *pShort = (unsigned short)1;        //securityMode
    pBuf += 4;
    pLong = (unsigned long*)pBuf;
    *pLong = (unsigned long)0;          //capabilities
    pBuf += 4;
    unsigned char guid [16] {0xf6, 0xc0, 0xf6, 0xc5, 0x43, 0x0D, 0xc8, 0x90, 0x4f, 0x60, 0xab, 0xe8, 0x22, 0x34, 0x52, 0x00};
    //memcpy(pBuf, guid, 16);           //guid
    pBuf += 24;
    pShort = (unsigned short*)pBuf;
    *pShort = (unsigned short)0X0202;    //dialect    
 
    if(send(server, (const char*)packet_data, 106, 0)==SOCKET_ERROR)
    {
        std::cout << "Send failed with error: " << WSAGetLastError() << std::endl;
        return -1;
    }
 
    if(recv(server, buffer, sizeof(buffer), 0)==SOCKET_ERROR)
    {
        std::cout << "Recv failed with error: " << WSAGetLastError() << std::endl;
        return - 1;
    }
 
    //SMB2NegotiateResponsePacket *pPacket = (SMB2NegotiateResponsePacket *)&buffer;
    //std::cout << "Dialect : " << pPacket->mesResp.dialectRevision;
        
    WSACleanup();
}
0
23.11.2024, 23:59
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.11.2024, 23:59
Ответы с готовыми решениями:

Smb сервер, а точнее только авторизация
Нужно написать сервер, проводящий авторизацию. Тоесть доступ и работа с файлами не нужна. Конкретно c++ не обязателен, но так удобнее всего.

Сервер не отвечает на запрос
Здравствуйте, столкнулся со следующей проблемой. Пытаюсь сформировать запрос подобный браузерному и отправить его на сервер. Если верить...

Прокси сервер не отвечает
Всем привет! никак не могу разобраться, почему моя программа не хочет работать... вот исходный код программы: ...

2
46 / 88 / 11
Регистрация: 24.04.2019
Сообщений: 496
24.11.2024, 12:23  [ТС] 2
Разобрался.

If Connection.NegotiateDialect is 0x0202, 0x0210, 0x0300, 0x0302, or 0x0311, the server MUST disconnect the connection, as specified in section 3.3.7.1, and not reply.
Я обожаю Microsoft...
0
46 / 88 / 11
Регистрация: 24.04.2019
Сообщений: 496
13.12.2024, 17:47  [ТС] 3
Цитата Сообщение от Дмитрий_1982 Посмотреть сообщение
Разобрался
А, нет. Это я не правильно читаю документацию. Если диалект уже задан, то сервер отвечать не должен. Так что вопрос остается открытым.
0
13.12.2024, 17:47
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2024, 17:47
Помогаю со студенческими работами здесь

[Qt5]QxtWeb, сервер из примера не отвечает
Доброе время суток. Возникла необходимость набросать простенький REST сервис, писать свои велосипеды не захотелось и нашел библиотеку...

NTFS/SMB сервер
Всем привет. Столкнулся с проблемой в курсовом проекте по сетям (тема - построение ЛКС). По условию, заказчику нужен NTFS/SMB сервер для...

SMB-сервер под Windows
Добрые времена суток, форумчане. Интересует вопрос: есть ли альтернативы встроенному решению самбы под окошки? Стоковый сервер...

Виртуальный сервер 2012r2 и проблема с SMB
Приветствую всех. Имеется такая ситуация и проблема с ней. Сразу говорю, что сталкиваюсь с виртуальным сервером впервые. Значит приобрели...

Как установить и настроить smb-сервер?
Приветствую, камрады! В общем понадобилось мне установить и настроить samba-сервер. Часть задания я сделал, а часть не получается. Прошу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Микросервис с нуля на Go с Kafka
stackoverflow 12.02.2025
Когда я впервые столкнулся с необходимостью разделить монолитное приложение на микросервисы, передо мной встал вопрос выбора правильных технологий и подходов. После долгих экспериментов с различными. . .
Микросервис с нуля на C# с RabbitMQ
stackoverflow 12.02.2025
Переход от монолитной архитектуры к микросервисной - это не просто модное веяние, а закономерный этап эволюции программных систем. В отличие от монолита, где все компоненты тесно связаны между собой. . .
Docker для начинающих
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения все чаще возникает необходимость быстро и надежно разворачивать приложения в различных средах. Разработчики постоянно сталкиваются с проблемой. . .
Создание бота для Телеграм на C#
stackoverflow 12.02.2025
В современном мире корпоративных коммуникаций Telegram-боты становятся незаменимым средством автоматизации бизнес-процессов и взаимодействия с сотрудниками. Как создать такого бота, который сможет. . .
Операторы сравнения (== и ===) в JavaScript
hw_wired 12.02.2025
JavaScript предоставляет два основных оператора сравнения - оператор нестрогого равенства (==) и оператор строгого равенства (===). На первый взгляд они могут показаться очень похожими, но их. . .
Определение адреса, откуда репозиторий Git был клонирован
hw_wired 12.02.2025
Система контроля версий Git хранит всю информацию о репозитории в специальной директории . git, включая данные об удаленных источниках. Эта информация необходима для синхронизации изменений между. . .
Объединение нескольких коммитов Git в один
hw_wired 12.02.2025
Представьте, что вы работаете над новой функциональностью и создали десяток небольших коммитов: исправление опечатки, форматирование кода, добавление комментариев, реализация основной логики. Каждый. . .
Как добавить локальную ветку в удалённый репозиторий Git
hw_wired 12.02.2025
Локальная ветка в Git - это изолированная линия разработки, существующая только на вашем компьютере. Представьте себе дерево с множеством веток - каждая ветка может расти в своем направлении, не. . .
Статическое отражение в C++
stackoverflow 12.02.2025
Статическое отражение представляет собой мощный механизм, позволяющий программам анализировать и манипулировать своей собственной структурой во время компиляции. Эта возможность открывает. . .
C++ в 21 веке - Бьярне Страуструп
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения C++ продолжает оставаться одним из ключевых языков программирования, несмотря на свой солидный возраст - более 45 лет с момента создания. За это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru