Не совсем ответ ... после анализа ответа Python некоторые значения полей выглядят немного странно. И мимо логического конца PDU есть байт. Я пришел к выводу, что дополнительный байт 0d был вставлен по ошибке, но я не могу сказать, почему.
Это SMB, а не CIFS, в зависимости от формата ответа.
Спецификация SMB
Ответ Python
00 00 00 55
header
FF 53 4D 42 protocol identifier
72 negprot
00 00 00
00 status
98 flags (response + others)
01 28 flags2
00 00 pid high
00 00
00 00 00 00
00 00 security features
00 00 rsvd
00 00 tid
2F 4B pid low
00 00 uid
C5 5E mid
params
11 word count (17)
03 00 dialect index 3
03 security mode
0D 0A max mpx (2573 ?!)
00 01 max vcs (256 ?!)
00 04 11 00 max buff size (1,115,136 ?!)
00 00 00 01 max raw size (1 ?!)
00 00 00 00 session key
00 FD E3 00 capabilities
80 12 E5 E0
59 36 7A D5 server time
01 88 server tz (34817 ?!)
FF challenge len (255 ?!)
data
00
10 byte count
00 B0 44
B3 6C 20 08
11 44 A9 84
31 87 23 FC
C7 server guid
45 fell off the end
or maybe I have forgotten
the SMB alignment rules
Некоторые числовые поля имеют совершенно неправдоподобные числа;пометил их как «?!».
Ответ Java
00 00 00 55
header (same as before)
FF 53 4D 42
72 00 00 00
00 98 01 28
00 00 00 00
00 00 00 00
00 00 00 00
00 00 2F 4B
00 00 C5 5E
params
11 word count (17)
03 00 dialect index 3
03 security mode
0A 00 max mpx (10)
01 00 max vcs (1)
04 11 00 00 max buffer (4356)
00 00 01 00 max raw (64k)
00 00 00 00 session key
FD E3 00 80 capabilities
12 E5 E0 59 server time
36 7A D5 01
88 FF server tz (-120)
00 challenge len
data
10
00 byte count (16)
B0 44 B3
6C 20 08 11
44 A9 84 31
87 23 FC C7
45
Поля имеют гораздо больший смысл в версии Java.
Итак вот моя попытка фактически ответить на подразумеваемый вопрос - версия Python неверна;по какой-то причине он решил вставить дополнительный байт. Дополнительный байт равен 0D, который может интерпретироваться как ASCII CR, и находится перед байтом, который, как оказалось, имеет значение 0A, которое может (неправильно) интерпретироваться как ASCII LF. Таким образом, мы могли бы догадаться, что это какая-то ошибочная процедура преобразования текста в нетекстовые данные.
== Эпилог ==
Да, есть более простой способ определить, какая из них неправильная. Длина SMB должна быть 0x55 (85) от первого слова сообщения. В версии Java 85 байтов, в версии Python 86 байтов. QED.