| 604 | |
| 605 | |
| 606 | class SMBSession_Setup_AndX_Response(Packet): |
| 607 | name = "Session Setup AndX Response (CIFS)" |
| 608 | fields_desc = [ |
| 609 | ByteField("WordCount", 0x3), |
| 610 | ByteEnumField("AndXCommand", 0xFF, SMB_COM), |
| 611 | ByteField("AndXReserved", 0), |
| 612 | LEShortField("AndXOffset", None), |
| 613 | FlagsField( |
| 614 | "Action", |
| 615 | 0, |
| 616 | -16, |
| 617 | { |
| 618 | 0x0001: "SMB_SETUP_GUEST", |
| 619 | 0x0002: "SMB_SETUP_USE_LANMAN_KEY", |
| 620 | }, |
| 621 | ), |
| 622 | LEShortField("ByteCount", 25), |
| 623 | _SMBStrNullField("NativeOS", "Windows 4.0"), |
| 624 | _SMBStrNullField("NativeLanMan", "Windows 4.0"), |
| 625 | _SMBStrNullField("PrimaryDomain", ""), |
| 626 | # Off spec? |
| 627 | ByteField("WordCount2", 3), |
| 628 | ByteEnumField("AndXCommand2", 0xFF, SMB_COM), |
| 629 | ByteField("Reserved3", 0), |
| 630 | LEShortField("AndXOffset2", 80), |
| 631 | LEShortField("OptionalSupport", 0x01), |
| 632 | LEShortField("ByteCount2", 5), |
| 633 | StrNullField("Service", "IPC"), |
| 634 | StrNullField("NativeFileSystem", ""), |
| 635 | ] |
| 636 | |
| 637 | def post_build(self, pkt, pay): |
| 638 | if self.AndXOffset is None: |
| 639 | pkt = pkt[:3] + struct.pack("<H", len(pkt) + 32) + pkt[5:] |
| 640 | return pkt + pay |
| 641 | |
| 642 | |
| 643 | bind_top_down(SMB_Header, SMBSession_Setup_AndX_Response, Command=0x73, Flags=0x80) |
no test coverage detected
searching dependent graphs…