Exemplo n.º 1
0
        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()));
        }
Exemplo n.º 2
0
        /// <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()));
        }
Exemplo n.º 3
0
        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);
        }