NetBios: Added NodeStatusRequest and improved NameQueryRequest implementation

This commit is contained in:
Tal Aloni 2020-01-25 21:53:33 +02:00
parent 28fa346b5b
commit 1afd4bc61d
4 changed files with 49 additions and 1 deletions

View file

@ -24,7 +24,9 @@ namespace SMBLibrary.NetBios
{ {
Header = new NameServicePacketHeader(); Header = new NameServicePacketHeader();
Header.OpCode = NameServiceOperation.QueryRequest; Header.OpCode = NameServiceOperation.QueryRequest;
Header.Flags = OperationFlags.RecursionDesired;
Question = new QuestionSection(); Question = new QuestionSection();
Question.Type = NameRecordType.NB;
} }
public NameQueryRequest(byte[] buffer, int offset) public NameQueryRequest(byte[] buffer, int offset)

View file

@ -0,0 +1,45 @@
/* Copyright (C) 2014-2020 Tal Aloni <tal.aloni.il@gmail.com>. All rights reserved.
*
* You can redistribute this program and/or modify it under the terms of
* the GNU Lesser Public License as published by the Free Software Foundation,
* either version 3 of the License, or (at your option) any later version.
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Utilities;
namespace SMBLibrary.NetBios
{
/// <summary>
/// [RFC 1002] 4.2.17. NODE STATUS REQUEST
/// </summary>
public class NodeStatusRequest
{
public NameServicePacketHeader Header;
public QuestionSection Question;
public NodeStatusRequest()
{
Header = new NameServicePacketHeader();
Header.OpCode = NameServiceOperation.QueryRequest;
Question = new QuestionSection();
Question.Type = NameRecordType.NBStat;
}
public NodeStatusRequest(byte[] buffer, int offset)
{
Header = new NameServicePacketHeader(buffer, ref offset);
Question = new QuestionSection(buffer, ref offset);
}
public byte[] GetBytes()
{
MemoryStream stream = new MemoryStream();
Header.WriteBytes(stream);
Question.WriteBytes(stream);
return stream.ToArray();
}
}
}

View file

@ -7,7 +7,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Text;
using Utilities; using Utilities;
namespace SMBLibrary.NetBios namespace SMBLibrary.NetBios
@ -23,6 +22,7 @@ namespace SMBLibrary.NetBios
public QuestionSection() public QuestionSection()
{ {
Class = QuestionClass.In;
} }
public QuestionSection(byte[] buffer, ref int offset) public QuestionSection(byte[] buffer, ref int offset)

View file

@ -83,6 +83,7 @@
<Compile Include="NetBios\NameServicePackets\NameQueryRequest.cs" /> <Compile Include="NetBios\NameServicePackets\NameQueryRequest.cs" />
<Compile Include="NetBios\NameServicePackets\NameRegistrationRequest.cs" /> <Compile Include="NetBios\NameServicePackets\NameRegistrationRequest.cs" />
<Compile Include="NetBios\NameServicePackets\NameServicePacketHeader.cs" /> <Compile Include="NetBios\NameServicePackets\NameServicePacketHeader.cs" />
<Compile Include="NetBios\NameServicePackets\NodeStatusRequest.cs" />
<Compile Include="NetBios\NameServicePackets\NodeStatusResponse.cs" /> <Compile Include="NetBios\NameServicePackets\NodeStatusResponse.cs" />
<Compile Include="NetBios\NameServicePackets\PositiveNameQueryResponse.cs" /> <Compile Include="NetBios\NameServicePackets\PositiveNameQueryResponse.cs" />
<Compile Include="NetBios\NameServicePackets\Structures\NodeStatistics.cs" /> <Compile Include="NetBios\NameServicePackets\Structures\NodeStatistics.cs" />