public byte[] GetBytes(uint ttl, string replyIP) { byte[] rdata = Utilities.BlockCopy(new byte[2], IPAddress.Parse(replyIP).GetAddressBytes()); this.Header = new NetBIOSNSHeader { ID = this.Header.ID, R = true, Opcode = "0000", AA = true, TC = false, RD = true, RA = false, Z = "00", B = false, RCode = "0000", QDCount = 0, ANCount = 1 }; this.Resource = new NetBIOSNSResource { Name = this.Question.QName, Type = this.Question.QType, Class = this.Question.QClass, TTL = ttl, RDLength = 6, RData = rdata }; return(Utilities.BlockCopy(this.Header.GetBytes(), this.Resource.GetBytes())); }
/// <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); }