NetBios: NodeStatusResponse: Added read constructor

This commit is contained in:
Tal Aloni 2020-01-25 20:59:33 +02:00
parent 156e9a0631
commit c3f00c5757

View file

@ -19,6 +19,7 @@ namespace SMBLibrary.NetBios
{ {
public NameServicePacketHeader Header; public NameServicePacketHeader Header;
public ResourceRecord Resource; public ResourceRecord Resource;
// Resource Data:
// byte NumberOfNames; // byte NumberOfNames;
public KeyValuePairList<string, NameFlags> Names = new KeyValuePairList<string, NameFlags>(); public KeyValuePairList<string, NameFlags> Names = new KeyValuePairList<string, NameFlags>();
public NodeStatistics Statistics; public NodeStatistics Statistics;
@ -33,6 +34,22 @@ namespace SMBLibrary.NetBios
Statistics = new NodeStatistics(); Statistics = new NodeStatistics();
} }
public NodeStatusResponse(byte[] buffer, int offset)
{
Header = new NameServicePacketHeader(buffer, ref offset);
Resource = new ResourceRecord(buffer, ref offset);
int position = 0;
byte numberOfNames = ByteReader.ReadByte(Resource.Data, ref position);
for (int index = 0; index < numberOfNames; index++)
{
string name = ByteReader.ReadAnsiString(Resource.Data, ref position, 16);
NameFlags nameFlags = (NameFlags)BigEndianReader.ReadUInt16(Resource.Data, ref position);
Names.Add(name, nameFlags);
}
Statistics = new NodeStatistics(Resource.Data, ref position);
}
public byte[] GetBytes() public byte[] GetBytes()
{ {
Resource.Data = GetData(); Resource.Data = GetData();