/// <summary>method <c>GetBytes</c> returns reply buffer.</summary> public static byte[] GetBytes(NetBIOSNSHeader header, NetBIOSNSQuestion question, uint ttl, string replyIP) { byte[] rdata = Utilities.BlockCopy(new byte[2], IPAddress.Parse(replyIP).GetAddressBytes()); NetBIOSNSHeader responseHeader = new NetBIOSNSHeader { ID = header.ID, R = true, Opcode = "0000", AA = true, TC = false, RD = true, RA = false, Z = "00", B = false, RCode = "0000", QDCount = 0, ANCount = 1 }; NetBIOSNSResource resource = new NetBIOSNSResource(); resource.Name = question.QName; resource.Type = question.QType; resource.Class = question.QClass; resource.TTL = ttl; resource.RDLength = 6; resource.RData = rdata; return(Utilities.BlockCopy(responseHeader.GetBytes(), resource.GetBytes())); }
public byte[] Parse(uint ttl, string ip, byte[] data, out string name, out string type) { this.ReadBytes(data, 0); name = ""; type = ""; if (this.QDCount == 1 && this.ANCount == 0) { NetBIOSNSQuestion question = new NetBIOSNSQuestion(); question.ReadBytes(data, 12); NetBIOSNSResource response = new NetBIOSNSResource(); return(response.GetBytes(question, ttl, ip, this.ID)); } return(null); }
public byte[] GetBytes(NetBIOSNSQuestion requestQuestion, uint ttl, string reply, byte[] id) { byte[] rdata = Utilities.BlockCopy(new byte[2], IPAddress.Parse(reply).GetAddressBytes()); NetBIOSNSHeader responseHeader = new NetBIOSNSHeader { ID = id, QDCount = 0, ANCount = 1 }; this.Name = requestQuestion.QName; this.Type = requestQuestion.QType; this.Class = requestQuestion.QClass; this.TTL = ttl; this.RDLength = 6; this.RData = rdata; return(Utilities.BlockCopy(responseHeader.GetBytes(), this.GetBytes())); }