public DSRecord(DataBuffer buffer, int length) { _key = buffer.ReadShortInt(); _algorithm = buffer.ReadByte(); _digestType = buffer.ReadByte(); _digest = buffer.ReadBytes(length - 4); }
public KeyRecord(DataBuffer buffer, int length) { _flags = buffer.ReadShortInt(); _protocol = buffer.ReadByte(); _algorithm = buffer.ReadByte(); _publicKey = buffer.ReadBytes(length - 4); }
public WksRecord(DataBuffer buffer, int length) { _ipAddress = buffer.ReadIPAddress(); _protocol = buffer.ReadByte(); _services = new Byte[length - 5]; for (int i = 0; i < (length - 5); i++) _services[i] = buffer.ReadByte(); }
public DnsEntry(DataBuffer buffer) { try { _domain = buffer.ReadDomainName(); byte b = buffer.ReadByte(); _recType = (RecordType)buffer.ReadShortInt(); _classType = buffer.ReadShortInt(); _ttl = buffer.ReadInt(); int length = buffer.ReadByte(); switch (_recType) { case RecordType.A: _data = new ARecord(buffer); break; case RecordType.NS: _data = new NSRecord(buffer); break; case RecordType.CNAME: _data = new CNameRecord(buffer); break; case RecordType.SOA: _data = new SoaRecord(buffer); break; case RecordType.MB: _data = new MBRecord(buffer); break; case RecordType.MG: _data = new MGRecord(buffer); break; case RecordType.MR: _data = new MRRecord(buffer); break; case RecordType.NULL: _data = new NullRecord(buffer, length); break; case RecordType.WKS: _data = new WksRecord(buffer, length); break; case RecordType.PTR: _data = new PtrRecord(buffer); break; case RecordType.HINFO: _data = new HInfoRecord(buffer, length); break; case RecordType.MINFO: _data = new MInfoRecord(buffer); break; case RecordType.MX: _data = new MXRecord(buffer); break; case RecordType.TXT: _data = new TxtRecord(buffer, length); break; case RecordType.RP: _data = new RPRecord(buffer); break; case RecordType.AFSDB: _data = new AfsdbRecord(buffer); break; case RecordType.X25: _data = new X25Record(buffer); break; case RecordType.ISDN: _data = new IsdnRecord(buffer); break; case RecordType.RT: _data = new RTRecord(buffer); break; case RecordType.NSAP: _data = new NsapRecord(buffer, length); break; case RecordType.SIG: _data = new SigRecord(buffer, length); break; case RecordType.KEY: _data = new KeyRecord(buffer, length); break; case RecordType.PX: _data = new PXRecord(buffer); break; case RecordType.AAAA: _data = new AAAARecord(buffer); break; case RecordType.LOC: _data = new LocRecord(buffer); break; case RecordType.SRV: _data = new SrvRecord(buffer); break; case RecordType.NAPTR: _data = new NaptrRecord(buffer); break; case RecordType.KX: _data = new KXRecord(buffer); break; case RecordType.A6: _data = new A6Record(buffer); break; case RecordType.DNAME: _data = new DNameRecord(buffer); break; case RecordType.DS: _data = new DSRecord(buffer, length); break; case RecordType.TKEY: _data = new TKeyRecord(buffer); break; case RecordType.TSIG: _data = new TSigRecord(buffer); break; default: throw new DnsQueryException("Invalid DNS Record Type in DNS Response", null); } } catch (Exception ex) { _data = new ExceptionRecord(ex.Message); throw ex; } }
public SigRecord(DataBuffer buffer, int length) { int pos = buffer.Position; _coveredType = buffer.ReadShortInt(); _algorithm = buffer.ReadByte(); _numLabels = buffer.ReadByte(); _expiration = buffer.ReadUInt(); _inception = buffer.ReadUInt(); _keyTag = buffer.ReadShortInt(); _signer = buffer.ReadDomainName(); buffer.Position = pos - length; }
public A6Record(DataBuffer buffer) { _prefixLength = buffer.ReadByte(); if (_prefixLength == 0) //Only Address Present { _ipAddress = buffer.ReadIPv6Address(); } else if (_prefixLength == 128) //Only Domain Name Present { _domain = buffer.ReadDomainName(); } else //Address and Domain Name Present { _ipAddress = buffer.ReadIPv6Address(); _domain = buffer.ReadDomainName(); } }
public DnsAnswer(byte[] response) { _questions = new List<Question>(); _answers = new List<Answer>(); _servers = new List<Server>(); _additional = new List<Record>(); _exceptions = new List<Exception>(); DataBuffer buffer = new DataBuffer(response, 2); byte bits1 = buffer.ReadByte(); byte bits2 = buffer.ReadByte(); //Mask off return code int returnCode = bits2 & 15; if (returnCode > 6) returnCode = 6; this._returnCode = (ReturnCode)returnCode; //Get Additional Flags _authoritative = TestBit(bits1, 2); _recursive = TestBit(bits2, 8); _truncated = TestBit(bits1, 1); int nQuestions = buffer.ReadBEShortInt(); int nAnswers = buffer.ReadBEShortInt(); int nServers = buffer.ReadBEShortInt(); int nAdditional = buffer.ReadBEShortInt(); //read in questions for (int i = 0; i < nQuestions; i++) { try { _questions.Add(new Question(buffer)); } catch (Exception ex) { _exceptions.Add(ex); } } //read in answers for (int i = 0; i < nAnswers; i++) { try { _answers.Add(new Answer(buffer)); } catch (Exception ex) { _exceptions.Add(ex); } } //read in servers for (int i = 0; i < nServers; i++) { try { _servers.Add(new Server(buffer)); } catch (Exception ex) { _exceptions.Add(ex); } } //read in additional records for (int i = 0; i < nAdditional; i++) { try { _additional.Add(new Record(buffer)); } catch (Exception ex) { _exceptions.Add(ex); } } }
public DnsEntry(DataBuffer buffer) { try { _domain = buffer.ReadDomainName(); byte b = buffer.ReadByte(); _recType = (RecordType)buffer.ReadShortInt(); _classType = buffer.ReadShortInt(); _ttl = buffer.ReadInt(); int length = buffer.ReadByte(); switch (_recType) { case RecordType.A: _data = new ARecord(buffer); break; case RecordType.NS: _data = new NSRecord(buffer); break; case RecordType.CNAME: _data = new CNameRecord(buffer); break; case RecordType.SOA: _data = new SoaRecord(buffer); break; case RecordType.MB: _data = new MBRecord(buffer); break; case RecordType.MG: _data = new MGRecord(buffer); break; case RecordType.MR: _data = new MRRecord(buffer); break; case RecordType.NULL: _data = new NullRecord(buffer, length); break; case RecordType.WKS: _data = new WksRecord(buffer, length); break; case RecordType.PTR: _data = new PtrRecord(buffer); break; case RecordType.HINFO: _data = new HInfoRecord(buffer, length); break; case RecordType.MINFO: _data = new MInfoRecord(buffer); break; case RecordType.MX: _data = new MXRecord(buffer); break; case RecordType.TXT: _data = new TxtRecord(buffer, length); break; case RecordType.RP: _data = new RPRecord(buffer); break; case RecordType.AFSDB: _data = new AfsdbRecord(buffer); break; case RecordType.X25: _data = new X25Record(buffer); break; case RecordType.ISDN: _data = new IsdnRecord(buffer); break; case RecordType.RT: _data = new RTRecord(buffer); break; case RecordType.NSAP: _data = new NsapRecord(buffer, length); break; case RecordType.SIG: _data = new SigRecord(buffer, length); break; case RecordType.KEY: _data = new KeyRecord(buffer, length); break; case RecordType.PX: _data = new PXRecord(buffer); break; case RecordType.AAAA: _data = new AAAARecord(buffer); break; case RecordType.LOC: _data = new LocRecord(buffer); break; case RecordType.SRV: _data = new SrvRecord(buffer); break; case RecordType.NAPTR: _data = new NaptrRecord(buffer); break; case RecordType.KX: _data = new KXRecord(buffer); break; case RecordType.A6: _data = new A6Record(buffer); break; case RecordType.DNAME: _data = new DNameRecord(buffer); break; case RecordType.DS: _data = new DSRecord(buffer, length); break; case RecordType.TKEY: _data = new TKeyRecord(buffer); break; case RecordType.TSIG: _data = new TSigRecord(buffer); break; default: throw new DnsQueryException("Invalid DNS Record Type in DNS Response", null); } } catch (Exception ex) { _data = new ExceptionRecord(ex.Message); throw ex; } }
public DnsAnswer(byte[] response) { _questions = new List <Question>(); _answers = new List <Answer>(); _servers = new List <Server>(); _additional = new List <Record>(); _exceptions = new List <Exception>(); DataBuffer buffer = new DataBuffer(response, 2); byte bits1 = buffer.ReadByte(); byte bits2 = buffer.ReadByte(); //Mask off return code int returnCode = bits2 & 15; if (returnCode > 6) { returnCode = 6; } this._returnCode = (ReturnCode)returnCode; //Get Additional Flags _authoritative = TestBit(bits1, 2); _recursive = TestBit(bits2, 8); _truncated = TestBit(bits1, 1); int nQuestions = buffer.ReadBEShortInt(); int nAnswers = buffer.ReadBEShortInt(); int nServers = buffer.ReadBEShortInt(); int nAdditional = buffer.ReadBEShortInt(); //read in questions for (int i = 0; i < nQuestions; i++) { try { _questions.Add(new Question(buffer)); } catch (Exception ex) { _exceptions.Add(ex); } } //read in answers for (int i = 0; i < nAnswers; i++) { try { _answers.Add(new Answer(buffer)); } catch (Exception ex) { _exceptions.Add(ex); } } //read in servers for (int i = 0; i < nServers; i++) { try { _servers.Add(new Server(buffer)); } catch (Exception ex) { _exceptions.Add(ex); } } //read in additional records for (int i = 0; i < nAdditional; i++) { try { _additional.Add(new Record(buffer)); } catch (Exception ex) { _exceptions.Add(ex); } } }