123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using Utilities;
- namespace SMBLibrary.RPC
- {
-
-
-
- public class BindPDU : RPCPDU
- {
- public ushort MaxTransmitFragmentSize;
- public ushort MaxReceiveFragmentSize;
- public uint AssociationGroupID;
- public ContextList ContextList;
- public byte[] AuthVerifier;
- public BindPDU() : base()
- {
- PacketType = PacketTypeName.Bind;
- ContextList = new ContextList();
- AuthVerifier = new byte[0];
- }
- public BindPDU(byte[] buffer, int offset) : base(buffer, offset)
- {
- offset += RPCPDU.CommonFieldsLength;
- MaxTransmitFragmentSize = LittleEndianReader.ReadUInt16(buffer, ref offset);
- MaxReceiveFragmentSize = LittleEndianReader.ReadUInt16(buffer, ref offset);
- AssociationGroupID = LittleEndianReader.ReadUInt32(buffer, ref offset);
- ContextList = new ContextList(buffer, offset);
- offset += ContextList.Length;
- AuthVerifier = ByteReader.ReadBytes(buffer, offset, AuthLength);
- }
- public override byte[] GetBytes()
- {
- AuthLength =(ushort)AuthVerifier.Length;
- FragmentLength = (ushort)(RPCPDU.CommonFieldsLength + 8 + ContextList.Length + AuthLength);
- byte[] buffer = new byte[FragmentLength];
- WriteCommonFieldsBytes(buffer);
- int offset = RPCPDU.CommonFieldsLength;
- LittleEndianWriter.WriteUInt16(buffer, ref offset, MaxTransmitFragmentSize);
- LittleEndianWriter.WriteUInt16(buffer, ref offset, MaxReceiveFragmentSize);
- LittleEndianWriter.WriteUInt32(buffer, ref offset, AssociationGroupID);
- ContextList.WriteBytes(buffer, ref offset);
- ByteWriter.WriteBytes(buffer, offset, AuthVerifier);
- return buffer;
- }
- }
- }
|