public RecordTXT(RecordReader rr, int Length) { int pos = rr.Position; TXT = new List<string>(); while ((rr.Position - pos) < Length) TXT.Add(rr.ReadString()); }
public RecordKEY(RecordReader rr) { FLAGS = rr.ReadUInt16(); PROTOCOL = rr.ReadByte(); ALGORITHM = rr.ReadByte(); PUBLICKEY = rr.ReadString(); }
public Response(IPEndPoint iPEndPoint, byte[] data) { Error = ""; Server = iPEndPoint; TimeStamp = DateTime.Now; MessageSize = data.Length; RecordReader rr = new RecordReader(data); Questions = new List<Question>(); Answers = new List<AnswerRR>(); Authorities = new List<AuthorityRR>(); Additionals = new List<AdditionalRR>(); header = new Header(rr); for (int intI = 0; intI < header.QDCOUNT; intI++) { Questions.Add(new Question(rr)); } for (int intI = 0; intI < header.ANCOUNT; intI++) { Answers.Add(new AnswerRR(rr)); } for (int intI = 0; intI < header.NSCOUNT; intI++) { Authorities.Add(new AuthorityRR(rr)); } for (int intI = 0; intI < header.ARCOUNT; intI++) { Additionals.Add(new AdditionalRR(rr)); } }
public string ReadDomainName() { var bytes = new List<byte>(); int length = 0; // get the length of the first label while ((length = ReadByte()) != 0) { // top 2 bits set denotes domain name compression and to reference elsewhere if ((length & 0xc0) == 0xc0) { // work out the existing domain name, copy this pointer RecordReader newRecordReader = new RecordReader(m_Data, (length & 0x3f) << 8 | ReadByte()); if (bytes.Count > 0) { return Encoding.UTF8.GetString(bytes.ToArray(), 0, bytes.Count) + newRecordReader.ReadDomainName(); } return newRecordReader.ReadDomainName(); } // if not using compression, copy a char at a time to the domain name while (length > 0) { bytes.Add(ReadByte()); length--; } bytes.Add((byte)'.'); } if (bytes.Count == 0) return "."; return Encoding.UTF8.GetString(bytes.ToArray(), 0, bytes.Count); }
public RecordSRV(RecordReader rr) { PRIORITY = rr.ReadUInt16(); WEIGHT = rr.ReadUInt16(); PORT = rr.ReadUInt16(); TARGET = rr.ReadDomainName(); }
public string ReadDomainName() { StringBuilder name = new StringBuilder(); int length = 0; // get the length of the first label while ((length = ReadByte()) != 0) { // top 2 bits set denotes domain name compression and to reference elsewhere if ((length & 0xc0) == 0xc0) { // work out the existing domain name, copy this pointer RecordReader newRecordReader = new RecordReader(m_Data, (length & 0x3f) << 8 | ReadByte()); name.Append(newRecordReader.ReadDomainName()); return name.ToString(); } // if not using compression, copy a char at a time to the domain name while (length > 0) { name.Append(ReadChar()); length--; } name.Append('.'); } if (name.Length == 0) return "."; else return name.ToString(); }
public RecordNSEC(RecordReader rr) { // re-read length ushort RDLENGTH = rr.ReadUInt16(-2); RDATA = rr.ReadBytes(RDLENGTH); }
public RecordSRV(RecordReader rr) { Priority = rr.ReadShort(); Weight = rr.ReadShort(); Port = rr.ReadShort(); Target = rr.ReadDomainName(); }
public RecordUnknown(RecordReader rr) { rr.Position -=2; // re-read length ushort RDLENGTH = rr.ReadShort(); // skip bytes rr.ReadBytes(RDLENGTH); }
public RecordNXT(RecordReader rr) { ushort length = rr.ReadUInt16(-2); NEXTDOMAINNAME = rr.ReadDomainName(); length -= (ushort)rr.Position; BITMAP = new byte[length]; BITMAP = rr.ReadBytes(length); }
public RecordA(RecordReader rr) { Address = string.Format("{0}.{1}.{2}.{3}", rr.ReadByte(), rr.ReadByte(), rr.ReadByte(), rr.ReadByte()); }
public RecordA(RecordReader rr) { System.Net.IPAddress.TryParse(string.Format(CultureInfo.InvariantCulture, "{0}.{1}.{2}.{3}", rr.ReadByte(), rr.ReadByte(), rr.ReadByte(), rr.ReadByte()), out this.m_address); }
public RecordNULL(RecordReader rr) { rr.Position -= 2; // re-read length ushort RDLENGTH = rr.ReadUInt16(); ANYTHING = new byte[RDLENGTH]; ANYTHING = rr.ReadBytes(RDLENGTH); }
public RecordA(RecordReader rr) { System.Net.IPAddress.TryParse(string.Format("{0}.{1}.{2}.{3}", rr.ReadByte(), rr.ReadByte(), rr.ReadByte(), rr.ReadByte()), out this.Address); }
public RecordNAPTR(RecordReader rr) { ORDER = rr.ReadUInt16(); PREFERENCE = rr.ReadUInt16(); FLAGS = rr.ReadString(); SERVICES = rr.ReadString(); REGEXP = rr.ReadString(); REPLACEMENT = rr.ReadDomainName(); }
public RecordA(RecordReader rr) { Address = new System.Net.IPAddress(rr.ReadBytes(4)); //System.Net.IPAddress.TryParse(string.Format("{0}.{1}.{2}.{3}", // rr.ReadByte(), // rr.ReadByte(), // rr.ReadByte(), // rr.ReadByte()), out this.Address); }
public RecordSOA(RecordReader rr) { MNAME = rr.ReadDomainName(); RNAME = rr.ReadDomainName(); SERIAL = rr.ReadInt(); REFRESH = rr.ReadInt(); RETRY = rr.ReadInt(); EXPIRE = rr.ReadInt(); MINIMUM = rr.ReadInt(); }
public RecordSOA(RecordReader rr) { MNAME = rr.ReadDomainName(); RNAME = rr.ReadDomainName(); SERIAL = rr.ReadUInt32(); REFRESH = rr.ReadUInt32(); RETRY = rr.ReadUInt32(); EXPIRE = rr.ReadUInt32(); MINIMUM = rr.ReadUInt32(); }
public RecordLOC(RecordReader rr) { VERSION = rr.ReadByte(); // must be 0! SIZE = rr.ReadByte(); HORIZPRE = rr.ReadByte(); VERTPRE = rr.ReadByte(); LATITUDE = rr.ReadUInt32(); LONGITUDE = rr.ReadUInt32(); ALTITUDE = rr.ReadUInt32(); }
public RecordDS(RecordReader rr) { ushort length = rr.ReadUInt16(-2); KEYTAG = rr.ReadUInt16(); ALGORITHM = rr.ReadByte(); DIGESTTYPE = rr.ReadByte(); length -= 4; DIGEST = new byte[length]; DIGEST = rr.ReadBytes(length); }
public RecordTXT(RecordReader rr, int Length) { int pos = rr.Position; TXT = new List <string>(); while ((rr.Position - pos) < Length) { TXT.Add(rr.ReadString()); } }
public RecordNAPTR(RecordReader rr) { Order = rr.ReadShort(); Preference = rr.ReadShort(); rr.ReadChar(); // 1 byte needs to be skipped since for ENUM lookups the flag should be single char only. Flag = rr.ReadChar(); Service = rr.ReadString(); Rule = rr.ReadString(); Rule = (Rule != null) ? Rule.Replace(@"\\", @"\") : null; Replacement = rr.ReadDomainName(); }
public RR(RecordReader rr) { TimeLived = 0; NAME = rr.ReadDomainName(); Type = (Type)rr.ReadUInt16(); Class = (Class)rr.ReadUInt16(); TTL = rr.ReadUInt32(); RDLENGTH = rr.ReadUInt16(); RECORD = rr.ReadRecord(Type); RECORD.RR = this; }
public RecordTKEY(RecordReader rr) { ALGORITHM = rr.ReadDomainName(); INCEPTION = rr.ReadUInt32(); EXPIRATION = rr.ReadUInt32(); MODE = rr.ReadUInt16(); ERROR = rr.ReadUInt16(); KEYSIZE = rr.ReadUInt16(); KEYDATA = rr.ReadBytes(KEYSIZE); OTHERSIZE = rr.ReadUInt16(); OTHERDATA = rr.ReadBytes(OTHERSIZE); }
public RecordTSIG(RecordReader rr) { ALGORITHMNAME = rr.ReadDomainName(); TIMESIGNED = rr.ReadUInt32() << 32 | rr.ReadUInt32(); FUDGE = rr.ReadUInt16(); MACSIZE = rr.ReadUInt16(); MAC = rr.ReadBytes(MACSIZE); ORIGINALID = rr.ReadUInt16(); ERROR = rr.ReadUInt16(); OTHERLEN = rr.ReadUInt16(); OTHERDATA = rr.ReadBytes(OTHERLEN); }
public RecordAAAA(RecordReader rr) { Address = string.Format("{0:x}:{1:x}:{2:x}:{3:x}:{4:x}:{5:x}:{6:x}:{7:x}", rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16()); }
public RecordSIG(RecordReader rr) { TYPECOVERED = rr.ReadUInt16(); ALGORITHM = rr.ReadByte(); LABELS = rr.ReadByte(); ORIGINALTTL = rr.ReadUInt32(); SIGNATUREEXPIRATION = rr.ReadUInt32(); SIGNATUREINCEPTION = rr.ReadUInt32(); KEYTAG = rr.ReadUInt16(); SIGNERSNAME = rr.ReadDomainName(); SIGNATURE = rr.ReadString(); }
public RecordWKS(RecordReader rr) { ushort length = rr.ReadShort(-2); ADDRESS = string.Format("{0}.{1}.{2}.{3}", rr.ReadByte(), rr.ReadByte(), rr.ReadByte(), rr.ReadByte()); PROTOCOL = (int)rr.ReadByte(); length -= 5; BITMAP = new byte[length]; BITMAP = rr.ReadBytes(length); }
public RecordAAAA(RecordReader rr) { System.Net.IPAddress.TryParse( string.Format("{0:x}:{1:x}:{2:x}:{3:x}:{4:x}:{5:x}:{6:x}:{7:x}", rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16()), out this.Address); }
public RecordAAAA(RecordReader rr) { System.Net.IPAddress.TryParse( string.Format(CultureInfo.InvariantCulture, "{0:x}:{1:x}:{2:x}:{3:x}:{4:x}:{5:x}:{6:x}:{7:x}", rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16(), rr.ReadUInt16()), out this.m_address); }
public RecordWKS(RecordReader rr) { ushort length = rr.ReadUInt16(-2); ADDRESS = string.Format(CultureInfo.InvariantCulture, "{0}.{1}.{2}.{3}", rr.ReadByte(), rr.ReadByte(), rr.ReadByte(), rr.ReadByte()); PROTOCOL = (int)rr.ReadByte(); length -= 5; BITMAP = new byte[length]; BITMAP = rr.ReadBytes(length); }
public RecordCERT(RecordReader rr) { // re-read length ushort RDLENGTH = rr.ReadUInt16(-2); //RDATA = rr.ReadBytes(RDLENGTH); TYPE = rr.ReadUInt16(); KEYTAG = rr.ReadUInt16(); ALGORITHM = rr.ReadByte(); var length = RDLENGTH - 5; RAWKEY = rr.ReadBytes(length); PUBLICKEY = Convert.ToBase64String(RAWKEY); }
public RR(RecordReader rr) { TimeLived = 0; NAME = rr.ReadDomainName(); Type = (DNSType)rr.ReadShort(); Class = (Class)rr.ReadShort(); TTL = rr.ReadInt(); RDLENGTH = rr.ReadShort(); //Console.WriteLine("RDLENGTH : " + RDLENGTH.ToString()); RECORD = rr.ReadRecord(Type); //Console.WriteLine("Type : " + Type.ToString()); RECORD.RR = this; //Console.WriteLine("TTL=" + TTL + "."); if (TTL <= 0) { TTL = MIN_TTL; } }
public DNSResponse(IPEndPoint iPEndPoint, byte[] data) { Server = iPEndPoint; TimeStamp = DateTime.Now; MessageSize = data.Length; RecordReader rr = new RecordReader(data); Questions = new List <Question>(); Answers = new List <AnswerRR>(); Authorities = new List <AuthorityRR>(); Additionals = new List <AdditionalRR>(); header = new Header(rr); for (int intI = 0; intI < header.QDCOUNT; intI++) { Questions.Add(new Question(rr)); } for (int intI = 0; intI < header.ANCOUNT; intI++) { Answers.Add(new AnswerRR(rr)); } for (int intI = 0; intI < header.NSCOUNT; intI++) { Authorities.Add(new AuthorityRR(rr)); } for (int intI = 0; intI < header.ARCOUNT; intI++) { Additionals.Add(new AdditionalRR(rr)); } if (header.RCODE != RCode.NOERROR) { Error = header.RCODE.ToString(); } }
public string ReadDomainName() { StringBuilder name = new StringBuilder(); int length = 0; // get the length of the first label while ((length = ReadByte()) != 0) { // top 2 bits set denotes domain name compression and to reference elsewhere if ((length & 0xc0) == 0xc0) { // work out the existing domain name, copy this pointer RecordReader newRecordReader = new RecordReader(m_Data, (length & 0x3f) << 8 | ReadByte()); name.Append(newRecordReader.ReadDomainName()); return(name.ToString()); } // if not using compression, copy a char at a time to the domain name while (length > 0) { name.Append(ReadChar()); length--; } name.Append('.'); } if (name.Length == 0) { return("."); } else { return(name.ToString()); } }
public RecordMG(RecordReader rr) { MGMNAME = rr.ReadDomainName(); }
public RecordRP(RecordReader rr) { //MBOXDNAME = rr.ReadString(); MBOXDNAME = rr.ReadDomainName(); TXTDNAME = rr.ReadDomainName(); }
public RecordTXT(RecordReader rr) { TXT = rr.ReadString(); }
public RecordNSAP(RecordReader rr) { LENGTH = rr.ReadUInt16(); NSAPADDRESS = rr.ReadBytes(LENGTH); }
public RecordMX(RecordReader rr) { PREFERENCE = rr.ReadShort(); EXCHANGE = rr.ReadDomainName(); }
public AdditionalRR(RecordReader br) : base(br) { }
/// <summary> /// .ctor using record (from response) /// </summary> /// <param name="rr"></param> public Question(RecordReader rr) { QName = rr.ReadDomainName(); QType = (QType)rr.ReadUInt16(); QClass = (QClass)rr.ReadUInt16(); }
public RecordGPOS(RecordReader rr) { LONGITUDE = rr.ReadString(); LATITUDE = rr.ReadString(); ALTITUDE = rr.ReadString(); }
public AnswerRR(RecordReader br) : base(br) { }
public RecordMB(RecordReader rr) { MADNAME = rr.ReadDomainName(); }
public RecordMINFO(RecordReader rr) { RMAILBX = rr.ReadDomainName(); EMAILBX = rr.ReadDomainName(); }
public Question(RecordReader rr) { QName = rr.ReadDomainName(); QType = (DNSQType)rr.ReadShort(); QClass = (QClass)rr.ReadShort(); }
public RecordCNAME(RecordReader rr) { CNAME = rr.ReadDomainName(); }
public AuthorityRR(RecordReader br) : base(br) { }