using System.Collections.Generic; namespace EonaCat.DnsTester.Helpers { public class DnsNameParser { public static string ParseName(byte[] responseBytes, ref int offset) { List labels = new List(); int length; while ((length = responseBytes[offset++]) != 0) { if ((length & 0xC0) == 0xC0) { // The name is compressed int pointer = ((length & 0x3F) << 8) | responseBytes[offset++]; int savedOffset = offset; offset = pointer; labels.AddRange(ParseName(responseBytes, ref offset).Split('.')); offset = savedOffset; break; } // The name is not compressed labels.Add(System.Text.Encoding.ASCII.GetString(responseBytes, offset, length)); offset += length; } return string.Join(".", labels); } } }