| 3410 | |
| 3411 | |
| 3412 | class SMB2_Read_Response(_SMB2_Payload, _NTLMPayloadPacket): |
| 3413 | name = "SMB2 READ Response" |
| 3414 | Command = 0x0008 |
| 3415 | OFFSET = 16 + 64 |
| 3416 | _NTLM_PAYLOAD_FIELD_NAME = "Buffer" |
| 3417 | fields_desc = [ |
| 3418 | XLEShortField("StructureSize", 0x11), |
| 3419 | LEShortField("DataBufferOffset", None), |
| 3420 | LEIntField("DataLen", None), |
| 3421 | LEIntField("DataRemaining", 0), |
| 3422 | FlagsField( |
| 3423 | "Flags", |
| 3424 | 0, |
| 3425 | -32, |
| 3426 | { |
| 3427 | 0x01: "SMB2_READFLAG_RESPONSE_RDMA_TRANSFORM", |
| 3428 | }, |
| 3429 | ), |
| 3430 | _NTLMPayloadField( |
| 3431 | "Buffer", |
| 3432 | OFFSET, |
| 3433 | [StrLenField("Data", b"", length_from=lambda pkt: pkt.DataLen)], |
| 3434 | ), |
| 3435 | ] |
| 3436 | |
| 3437 | def post_build(self, pkt, pay): |
| 3438 | # type: (bytes, bytes) -> bytes |
| 3439 | return ( |
| 3440 | _SMB2_post_build( |
| 3441 | self, |
| 3442 | pkt, |
| 3443 | self.OFFSET, |
| 3444 | { |
| 3445 | "Data": 2, |
| 3446 | }, |
| 3447 | ) |
| 3448 | + pay |
| 3449 | ) |
| 3450 | |
| 3451 | |
| 3452 | bind_top_down( |
no test coverage detected
searching dependent graphs…