示例#1
0
        internal RP(EndianBinaryReader Reader)
        {
            base.UpdateProperties(Reader);

            ResponsibleMailbox = DnsPacket.DecodeName(Reader);
            TXTDomainName      = DnsPacket.DecodeName(Reader);

            base.RecordData = String.Format("{0} {1}", ResponsibleMailbox, TXTDomainName);
        }
示例#2
0
        internal RT(EndianBinaryReader Reader)
        {
            base.UpdateProperties(Reader);

            Preference = Reader.ReadUInt16(true);
            TargetName = DnsPacket.DecodeName(Reader);

            base.RecordData = String.Format("{0} {1}", Preference, TargetName);
        }
示例#3
0
文件: MINFO.cs 项目: killvxk/DnsShell
        internal MINFO(EndianBinaryReader Reader)
        {
            base.UpdateProperties(Reader);

            ResponsibleMailbox = DnsPacket.DecodeName(Reader);
            ErrorMailbox       = DnsPacket.DecodeName(Reader);

            base.RecordData = String.Format("{0} {1}", ResponsibleMailbox, ErrorMailbox);
        }
示例#4
0
文件: AFSDB.cs 项目: killvxk/DnsShell
        internal AFSDB(EndianBinaryReader Reader)
        {
            base.UpdateProperties(Reader);

            SubType = Reader.ReadUInt16(true);
            if (Enum.IsDefined(typeof(AFSDBSubType), SubType))
            {
                SubTypeName = (AFSDBSubType)SubType;
            }
            TargetName = DnsPacket.DecodeName(Reader);

            base.RecordData = String.Format("{0} {1}", SubType, TargetName);
        }
示例#5
0
文件: SRV.cs 项目: killvxk/DnsShell
        internal SRV(EndianBinaryReader Reader)
        {
            base.UpdateProperties(Reader);

            Priority   = Reader.ReadUInt16(true);
            Weight     = Reader.ReadUInt16(true);
            Port       = Reader.ReadUInt16(true);
            TargetName = DnsPacket.DecodeName(Reader);

            base.RecordData = String.Format("{0} {1} {2} {3}",
                                            Priority,
                                            Weight,
                                            Port,
                                            TargetName);
        }
示例#6
0
        internal SOA(EndianBinaryReader Reader)
        {
            base.UpdateProperties(Reader);

            TargetName        = DnsPacket.DecodeName(Reader);
            ResponsiblePerson = DnsPacket.DecodeName(Reader);
            Serial            = Reader.ReadUInt32(true);
            Refresh           = Reader.ReadUInt32(true);
            Retry             = Reader.ReadUInt32(true);
            Expire            = Reader.ReadUInt32(true);
            MinimumTTL        = Reader.ReadUInt32(true);

            base.RecordData = String.Format("{0} {1} {2} {3} {4} {5} {6}",
                                            TargetName,
                                            ResponsiblePerson,
                                            Serial,
                                            Refresh,
                                            Retry,
                                            Expire,
                                            MinimumTTL);
        }
示例#7
0
        internal WINSR(EndianBinaryReader Reader)
        {
            base.UpdateProperties(Reader);

            MappingFlag   = (WINSMappingFlag)Reader.ReadUInt32(true);
            LookupTimeout = Reader.ReadUInt32(true);
            CacheTimeout  = Reader.ReadUInt32(true);

            ResultDomain = DnsPacket.DecodeName(Reader);

            String RecordData = String.Format("L{0} C{1} ( {2} )",
                                              LookupTimeout,
                                              CacheTimeout,
                                              ResultDomain);

            if (MappingFlag == WINSMappingFlag.NoReplication)
            {
                RecordData = "LOCAL " + RecordData;
            }

            base.RecordData = RecordData;
        }
示例#8
0
        internal Byte[] ToIxfrByte()
        {
            Byte[] NameBytes        = DnsPacket.EncodeName(base.Name.TrimEnd(new char[] { '.' }));
            UInt16 RecordDataLength = 22;
            Int32  TotalLength      = NameBytes.Length + 32;

            Int32 CurrentIndex = 0;

            // Create the Byte Array
            Byte[] RecordBytes = new Byte[TotalLength];

            // Populate the Byte Array
            Array.Copy(NameBytes, RecordBytes, NameBytes.Length);
            CurrentIndex += NameBytes.Length;
            Array.Copy(EndianBitConverter.ToByte((UInt16)base.RecordType, false), 0, RecordBytes, CurrentIndex, 2);
            CurrentIndex += 2;
            Array.Copy(EndianBitConverter.ToByte((UInt16)base.RecordClass, false), 0, RecordBytes, CurrentIndex, 2);
            CurrentIndex += 6;
            Array.Copy(EndianBitConverter.ToByte(RecordDataLength, false), 0, RecordBytes, CurrentIndex, 2);
            CurrentIndex += 4;
            Array.Copy(EndianBitConverter.ToByte(Serial, false), 0, RecordBytes, CurrentIndex, 4);

            return(RecordBytes);
        }
示例#9
0
        // Private Methods

        private ResourceRecord ResourceRecord(EndianBinaryReader Reader)
        {
            Int64      Position   = Reader.BaseStream.Position;
            String     Name       = DnsPacket.DecodeName(Reader);
            RecordType RecordType = (RecordType)Reader.ReadUInt16(true);

            if (RecordType == RecordType.OPT)
            {
                Reader.BaseStream.Seek(Position, SeekOrigin.Begin);
                this.EDns = new EDns(Reader);
                return(null);
            }
            else
            {
                RecordClass RecordClass = (RecordClass)Reader.ReadUInt16(true);
                UInt32      TTL         = Reader.ReadUInt32(true);
                UInt16      RDataLength = Reader.ReadUInt16(true);
                Reader.BaseStream.Seek(Position, SeekOrigin.Begin);

                Object RData = new Object();
                switch (RecordType)
                {
                case RecordType.A: RData = new A(Reader); break;      // Tested

                case RecordType.NS: RData = new NS(Reader); break;    // Tested

                case RecordType.MD: RData = new MD(Reader); break;

                case RecordType.MF: RData = new MF(Reader); break;

                case RecordType.CNAME: RData = new CNAME(Reader); break; // Tested

                case RecordType.SOA: RData = new SOA(Reader); break;     // Tested

                case RecordType.MB: RData = new MB(Reader); break;       // Tested

                case RecordType.MG: RData = new MG(Reader); break;

                case RecordType.MR: RData = new MR(Reader); break;

                case RecordType.NULL: RData = new NULL(Reader, RDataLength); break;

                case RecordType.WKS: RData = new WKS(Reader, RDataLength); break;

                case RecordType.PTR: RData = new PTR(Reader); break;     // Tested

                case RecordType.HINFO: RData = new HINFO(Reader); break; // Tested

                case RecordType.MINFO: RData = new MINFO(Reader); break;

                case RecordType.MX: RData = new MX(Reader); break;     // Tested

                case RecordType.TXT: RData = new TXT(Reader); break;   // Tested

                case RecordType.RP: RData = new RP(Reader); break;

                case RecordType.AFSDB: RData = new AFSDB(Reader); break;     // Tested

                case RecordType.X25: RData = new X25(Reader); break;

                case RecordType.ISDN: RData = new ISDN(Reader); break;

                case RecordType.RT: RData = new RT(Reader); break;

                case RecordType.NSAP: RData = new NSAP(Reader); break;

                case RecordType.AAAA: RData = new AAAA(Reader); break;              // Tested

                case RecordType.SRV: RData = new SRV(Reader); break;                // Tested

                case RecordType.ATMA: RData = new ATMA(Reader, RDataLength); break; // Tested

                case RecordType.WINS: RData = new WINS(Reader); break;              // Tested

                case RecordType.WINSR: RData = new WINSR(Reader); break;            // Tested

                default: RData = Reader.ReadBytes(RDataLength); break;
                }

                return((ResourceRecord)RData);
            }
        }
示例#10
0
 internal Question(EndianBinaryReader Response)
 {
     this.Name        = DnsPacket.DecodeName(Response);
     this.RecordType  = (RecordType)(Response.ReadUInt16(true));
     this.RecordClass = (RecordClass)(Response.ReadUInt16(true));
 }
示例#11
0
        // Constructors

        internal Question(String Name, RecordType RecordType)
        {
            this.Name        = Name.TrimEnd(new char[] { '.' });
            this.RecordType  = RecordType;
            this.EncodedName = DnsPacket.EncodeName(this.Name);
        }
示例#12
0
 internal CNAME(EndianBinaryReader Reader)
 {
     base.UpdateProperties(Reader);
     Hostname        = DnsPacket.DecodeName(Reader);
     base.RecordData = Hostname.ToString();
 }