jenkins的active directory plugin之DNS查詢
爲什麼在jenkins上Active Directory 插件那裏的Domain Name只配置個 company.com 就行了呢?
DNS查詢,通過udp通信查詢到公司的所有的DC(domain controller)地址,然後進行AD域認證。
其實是通過一個查詢獲取到了具體的dns服務器的IP,返回的是好幾個ip,
這個根據公司配置了幾個DC(domain controller)服務器有關係的。
DNS報文格式,不論是請求報文,還是DNS服務器返回的應答報文,都使用統一的格式。
DNS format
+--+--+--+--+--+--+--+
| Header |
+--+--+--+--+--+--+--+
| Question |
+--+--+--+--+--+--+--+
| Answer |
+--+--+--+--+--+--+--+
| Authority |
+--+--+--+--+--+--+--+
| Additional |
+--+--+--+--+--+--+--+
下面是整理的一次查詢發送報文
首先是頭部區域
Header format
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| opcode |AA|TC|RD|RA| Z | RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QDCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ANCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
0~1字節, 最前面的2個字節表示會話表示,也就是報文ID。ID: 2個字節(16bit),標識字段,
客戶端會解析服務器返回的DNS應答報文,獲取ID值與請求報文設置的ID值做比較,如果相同,則認爲是同一個DNS會話。
0 = 0x8C 演示例子給個 35935 -> 1000 1100 0101 1111 = 0x8C5F -> 右移8位,得到高8位的 0x8C
1 = 0x5F 35935的低8位存放到這裏。
2~3字節表示falg,標識。16位,2個字節表示。 QR(1bit),0爲查詢,1爲響應。
opcode(4bit),通常值爲0(標準查詢),其他值爲1(反向查詢)和2(服務器狀態請求),[3,15]保留值。
AA(1bit),表示授權回答。TC(1bit)表示可截斷。RD(1bit)表示期望遞歸。RA(1bit)表示可用遞歸。
rcode(4bit)表示返回碼,0表示沒有錯誤,其他表示錯誤,[6,15] : 保留值,暫未使用。
2 = 0x01 0000 0001
3 = 0x00 0000 0000
4~11字節,8個字節數量字段
4 = 0x0 問題數
5 = 0x1
6 = 0x0 回答資源記錄數
7 = 0x0
8 = 0x0 授權資源記錄數
9 = 0x0
10 = 0x0 附加資源記錄數
11 = 0x0
到此是header頭部結束。
下面是Question區域了
Question format
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ... |
| QNAME |
| ... |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QTYPE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QCLASS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
qname這一段比較長,也就是存放的我們的域名地址了,格式是 len+data,最後是個0.
12 = 0x03 十進制3 後面放了3個byte, 字符串是 "_gc"
13 = 0x5F
14 = 0x67
15 = 0x63
16 = 0x04 十進制4 後面放了4個byte, 字符串是”_tcp"
17 = 0x5F
18 = 0x74
19 = 0x63
20 = 0x70
21 = 0x0A 十進制10 後面10個byte,字符串 “company"
22 = 0x62
23 = 0x6C
24 = 0x61
25 = 0x63
26 = 0x6B
27 = 0x73
28 = 0x68
29 = 0x61
30 = 0x72
31 = 0x6B
32 = 0x03 十進制3 後面放了3個byte,後面3個byte,存放的是 字符串 “com”
33 = 0x63 字母 c
34 = 0x6F 字母 o
35 = 0x6D 字母 m
36 = 0x00 十進制 0, qname最後放的0
37 = 0x00
38 = 0x21 qtype=33 十進制的33, 無符號16bit整數表示查詢的協議類型.question type。這裏的33表示SRV。
39 = 0x00
40 = 0x01 qtclass=1 十進制1,無符號16bit整數表示查詢的類,比如,IN代表Internet. question class
這個例子採用了byte數組,長度41個byte,下標是0~40。這個例子沒有後面的3個區域。
java代碼,部分代碼摘抄自jenkins的active directory plugin源代碼。
package com.mage.demo;
import com.sun.jndi.dns.DnsName;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* Ldap Tester.
*
* @author <Authors name>
* @version 1.0
* @since <pre>二月 15, 2019</pre>
*/
public class LdapTest {
// DNS packet header field offsets
private static final int IDENT_OFFSET = 0;
private static final int FLAGS_OFFSET = 2;
private static final int NUMQ_OFFSET = 4;
private static final int NUMANS_OFFSET = 6;
private static final int NUMAUTH_OFFSET = 8;
private static final int NUMADD_OFFSET = 10;
private static final int DNS_HDR_SIZE = 12;
private static final int DEFAULT_PORT = 53;
@Before
public void before() throws Exception {
}
@After
public void after() throws Exception {
}
// Builds a query name in pkt according to the RFC spec.
private void makeQueryName(DnsName fqdn, Packet pkt, int off) {
// Loop through labels, least-significant first.
for (int i = fqdn.size() - 1; i >= 0; i--) {
String label = fqdn.get(i);
int len = label.length();
pkt.putByte(len, off++);
for (int j = 0; j < len; j++) {
pkt.putByte(label.charAt(j), off++);
}
}
if (!(!fqdn.isEmpty() && fqdn.get(0).equals(""))) {
pkt.putByte(0, off);
}
}
@Test
public void testObtainLDAPServer() throws Exception {
Packet pkt = new Packet(41);
DnsName fqdn = new DnsName("_gc._tcp.company.com.");
int qnameLen = fqdn.getOctets();
int xid = 35935;
pkt.putShort(xid, IDENT_OFFSET);
int flags = 256;
pkt.putShort(flags, FLAGS_OFFSET);
pkt.putShort(1, NUMQ_OFFSET);
pkt.putShort(0, NUMANS_OFFSET);
pkt.putInt(0, NUMAUTH_OFFSET);
makeQueryName(fqdn, pkt, DNS_HDR_SIZE);
int qtype = 33;
pkt.putShort(qtype, DNS_HDR_SIZE + qnameLen);
int qclass = 1;
pkt.putShort(qclass, DNS_HDR_SIZE + qnameLen + 2);
DatagramSocket socket = new DatagramSocket();
InetAddress server = InetAddress.getByName("127.0.0.53");//這裏爲什麼是這個IP地址呢????
int port = DEFAULT_PORT; //port is 53
DatagramPacket opkt = new DatagramPacket(pkt.getData(), pkt.length(), server, port);
DatagramPacket ipkt = new DatagramPacket(new byte[8000], 8000);
socket.connect(server, port);
socket.send(opkt);
socket.receive(ipkt);
byte[] data = ipkt.getData();
System.out.println(data);
}
}
響應報文
首先是頭部區域
Header format
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| opcode |AA|TC|RD|RA| Z | RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QDCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ANCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
0 = 0x8c
1 = 0x5f
2 = 0x81
3 = 0x80
4 = 0x00
5 = 0x01
6 = 0x00
7 = 0x04
8 = 0x00
9 = 0x00
10 = 0x00
11 = 0x00
下面是Question區域了
Question format
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ... |
| QNAME |
| ... |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QTYPE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QCLASS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
qname這一段比較長,也就是存放的我們的域名地址了,格式是 len+data,最後是個0.
12 = 0x03 十進制3 後面放了3個byte, 字符串是 "_gc"
13 = 0x5f
14 = 0x67
15 = 0x63
16 = 0x04 十進制4 後面放了4個byte, 字符串是”_tcp"
17 = 0x5f
18 = 0x74
19 = 0x63
20 = 0x70
21 = 0x0a 十進制10 後面10個byte,字符串 “company"
22 = 0x62
23 = 0x6c
24 = 0x61
25 = 0x63
26 = 0x6b
27 = 0x73
28 = 0x68
29 = 0x61
30 = 0x72
31 = 0x6b
32 = 0x03 十進制3 後面放了3個byte,後面3個byte,存放的是 字符串 “com”
33 = 0x63
34 = 0x6f
35 = 0x6d
36 = 0x00 十進制 0, qname最後放的0
37 = 0x00
38 = 0x21 qtype=33 十進制的33, 無符號16bit整數表示查詢的協議類型.question type。這裏的33表示SRV。
39 = 0x00
40 = 0x01 qtclass=1 十進制1,無符號16bit整數表示查詢的類,比如,IN代表Internet. question class。
這個就是上面那個查詢報文的響應報文,這裏對應的question 區域都是一樣的
Answer/Authority/Additional
Answer/Authority/Additional format
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NAME |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| TYPE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| CLASS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| TTL |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| RDLENGTH |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| RDATA |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
NAME 資源記錄包含的域名.
TYPE 表示DNS協議的類型.
CLASS 表示RDATA的類.
TTL 4字節無符號整數表示資源記錄可以緩存的時間。0代表只能被傳輸,但是不能被緩存。
RDLENGTH 2個字節無符號整數表示RDATA的長度
RDATA 不定長字符串來表示記錄,格式根TYPE和CLASS有關。比如,TYPE是A,CLASS 是 IN,那麼RDATA就是一個4個字節的ARPA網絡地址。
41 = 0xc0 NAME 資源記錄包含的域名. 1100 0000 0000 1100
42 = 0x0c
43 = 0x00 TYPE 表示DNS協議的類型. 0x21表示 A SRV record(s) for the domain name
44 = 0x21
45 = 0x00 CLASS 表示RDATA的類.
46 = 0x01
47 = 0x00 TTL 4字節, 十進制數字600
48 = 0x00
49 = 0x02
50 = 0x58
51 = 0x00 RDLENGTH 2個字節,十進制12
52 = 0x0d
53 = 0x00 十進制 0 priority
54 = 0x00
55 = 0x00 十進制 100 weight
56 = 0x64
57 = 0x0c 十進制3268 port
58 = 0xc4
59 = 0x04 十進制 4,後面4個字節,字符串"dc02"
60 = 0x64 字母d
61 = 0x63 字母c
62 = 0x30 數字0
63 = 0x32 數字2
64 = 0xc0 二進制的 11000000,十進制192,後面不可能跟上192字節長度,所以這裏表示name compression
65 = 0x15 十進制21,這裏表示跳轉到21字節,21字節後面10個字符,字符串 “company"
66 = 0xc0
67 = 0x0c
68 = 0x00
69 = 0x21
70 = 0x00
71 = 0x01
72 = 0x00
73 = 0x00
74 = 0x02
75 = 0x58
76 = 0x00
77 = 0x0d
78 = 0x00
79 = 0x00
80 = 0x00
81 = 0x64
82 = 0x0c
83 = 0xc4
84 = 0x04 十進制4,後面4個字節,字符串"szdc"
85 = 0x73 s
86 = 0x7a z
87 = 0x64 d
88 = 0x63 c
89 = 0xc0 二進制的 11000000,十進制192,後面不可能跟上192字節長度,所以這裏表示name compression
90 = 0x15 十進制21,這裏表示跳轉到21字節,21字節後面10個字符,字符串 “company"
91 = 0xc0
92 = 0x0c 十進制12,表示第12個字節了,字符串是 "_gc"
93 = 0x00
94 = 0x21
95 = 0x00
96 = 0x01
97 = 0x00
98 = 0x00
99 = 0x02
100 = 0x58
101 = 0x00
102 = 0x0c
103 = 0x00
104 = 0x00
105 = 0x00
106 = 0x64
107 = 0x0c
108 = 0xc4
109 = 0x03 十進制3,字符串是"dc1"
110 = 0x64 字母d
111 = 0x63 字母c
112 = 0x31 數字1
113 = 0xc0
114 = 0x15 十進制21 跳轉到第21個字節
115 = 0xc0
116 = 0x0c 十進制12,跳轉到第12個字節
117 = 0x00
118 = 0x21
119 = 0x00
120 = 0x01
121 = 0x00
122 = 0x00
123 = 0x02
124 = 0x58
125 = 0x00
126 = 0x0d
127 = 0x00
128 = 0x00
129 = 0x00
130 = 0x64
131 = 0x0c
132 = 0xc4
133 = 0x04
134 = 0x64
135 = 0x63
136 = 0x30
137 = 0x31
138 = 0xc0
139 = 0x15
140 = 0x00
141 = 0x00
142 = 0x00
143 = 0x00
144 = 0x00
145 = 0x00
146 = 0x00
147 = 0x00
148 = 0x00
149 = 0x00
150 = 0x00
151 = 0x00
152 = 0x00
153 = 0x00
154 = 0x00
155 = 0x00
156 = 0x00
157 = 0x00
158 = 0x00
159 = 0x00
160 = 0x00
161 = 0x00
162 = 0x00
163 = 0x00
164 = 0x00
165 = 0x00
166 = 0x00
167 = 0x00
下面是網上查詢到的一些qtype的值,表示DNS協議的類型,我們的例子中用的是33.SRV這個值。
A 1 a host address [RFC1035]
NS 2 an authoritative name server [RFC1035]
MD 3 a mail destination (OBSOLETE - use MX) [RFC1035]
MF 4 a mail forwarder (OBSOLETE - use MX) [RFC1035]
CNAME 5 the canonical name for an alias [RFC1035]
SOA 6 marks the start of a zone of authority [RFC1035]
MB 7 a mailbox domain name (EXPERIMENTAL) [RFC1035]
MG 8 a mail group member (EXPERIMENTAL) [RFC1035]
MR 9 a mail rename domain name (EXPERIMENTAL) [RFC1035]
NULL 10 a null RR (EXPERIMENTAL) [RFC1035]
WKS 11 a well known service description [RFC1035]
PTR 12 a domain name pointer [RFC1035]
HINFO 13 host information [RFC1035]
MINFO 14 mailbox or mail list information [RFC1035]
MX 15 mail exchange [RFC1035]
TXT 16 text strings [RFC1035]
RP 17 for Responsible Person [RFC1183]
AFSDB 18 for AFS Data Base location [RFC1183][RFC5864]
X25 19 for X.25 PSDN address [RFC1183]
ISDN 20 for ISDN address [RFC1183]
RT 21 for Route Through [RFC1183]
NSAP 22 for NSAP address, NSAP style A record [RFC1706]
NSAP-PTR 23 for domain name pointer, NSAP style [RFC1348][RFC1637][RFC1706]
SIG 24 for security signature [RFC4034][RFC3755][RFC2535][RFC2536][RFC2537][RFC2931][RFC3110][RFC3008]
KEY 25 for security key [RFC4034][RFC3755][RFC2535][RFC2536][RFC2537][RFC2539][RFC3008][RFC3110]
PX 26 X.400 mail mapping information [RFC2163]
GPOS 27 Geographical Position [RFC1712]
AAAA 28 IP6 Address [RFC3596]
LOC 29 Location Information [RFC1876]
NXT 30 Next Domain (OBSOLETE) [RFC3755][RFC2535]
EID 31 Endpoint Identifier [Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt] 1995-06
NIMLOC 32 Nimrod Locator [1][Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt] 1995-06
SRV 33 Server Selection [1][RFC2782]
ATMA 34 ATM Address [ ATM Forum Technical Committee, "ATM Name System, V2.0", Doc ID: AF-DANS-0152.000, July 2000. Available from and held in escrow by IANA.]
NAPTR 35 Naming Authority Pointer [RFC2915][RFC2168][RFC3403]
KX 36 Key Exchanger [RFC2230]
CERT 37 CERT [RFC4398]
A6 38 A6 (OBSOLETE - use AAAA) [RFC3226][RFC2874][RFC6563]
DNAME 39 DNAME [RFC6672]
SINK 40 SINK [Donald_E_Eastlake][http://tools.ietf.org/html/draft-eastlake-kitchen-sink] 1997-11
OPT 41 OPT [RFC6891][RFC3225]
APL 42 APL [RFC3123]
DS 43 Delegation Signer [RFC4034][RFC3658]
SSHFP 44 SSH Key Fingerprint [RFC4255]
IPSECKEY 45 IPSECKEY [RFC4025]
RRSIG 46 RRSIG [RFC4034][RFC3755]
NSEC 47 NSEC [RFC4034][RFC3755]
DNSKEY 48 DNSKEY [RFC4034][RFC3755]
DHCID 49 DHCID [RFC4701]
NSEC3 50 NSEC3 [RFC5155]
NSEC3PARAM 51 NSEC3PARAM [RFC5155]
TLSA 52 TLSA [RFC6698]
SMIMEA 53 S/MIME cert association [RFC8162] SMIMEA/smimea-completed-template 2015-12-01
Unassigned 54
HIP 55 Host Identity Protocol [RFC8005]
NINFO 56 NINFO [Jim_Reid] NINFO/ninfo-completed-template 2008-01-21
RKEY 57 RKEY [Jim_Reid] RKEY/rkey-completed-template 2008-01-21
TALINK 58 Trust Anchor LINK [Wouter_Wijngaards] TALINK/talink-completed-template 2010-02-17
CDS 59 Child DS [RFC7344] CDS/cds-completed-template 2011-06-06
CDNSKEY 60 DNSKEY(s) the Child wants reflected in DS [RFC7344] 2014-06-16
OPENPGPKEY 61 OpenPGP Key [RFC7929] OPENPGPKEY/openpgpkey-completed-template 2014-08-12
CSYNC 62 Child-To-Parent Synchronization [RFC7477] 2015-01-27
ZONEMD 63 message digest for DNS zone [draft-wessels-dns-zone-digest] ZONEMD/zonemd-completed-template 2018-12-12
Unassigned 64-98
SPF 99 [RFC7208]
UINFO 100 [IANA-Reserved]
UID 101 [IANA-Reserved]
GID 102 [IANA-Reserved]
UNSPEC 103 [IANA-Reserved]
NID 104 [RFC6742] ILNP/nid-completed-template
L32 105 [RFC6742] ILNP/l32-completed-template
L64 106 [RFC6742] ILNP/l64-completed-template
LP 107 [RFC6742] ILNP/lp-completed-template
EUI48 108 an EUI-48 address [RFC7043] EUI48/eui48-completed-template 2013-03-27
EUI64 109 an EUI-64 address [RFC7043] EUI64/eui64-completed-template 2013-03-27
Unassigned 110-248
TKEY 249 Transaction Key [RFC2930]
TSIG 250 Transaction Signature [RFC2845]
IXFR 251 incremental transfer [RFC1995]
AXFR 252 transfer of an entire zone [RFC1035][RFC5936]
MAILB 253 mailbox-related RRs (MB, MG or MR) [RFC1035]
MAILA 254 mail agent RRs (OBSOLETE - see MX) [RFC1035]
* 255 A request for some or all records the server has available [RFC1035][RFC6895][RFC8482]
URI 256 URI [RFC7553] URI/uri-completed-template 2011-02-22
CAA 257 Certification Authority Restriction [RFC6844] CAA/caa-completed-template 2011-04-07
AVC 258 Application Visibility and Control [Wolfgang_Riedel] AVC/avc-completed-template 2016-02-26
DOA 259 Digital Object Architecture [draft-durand-doa-over-dns] DOA/doa-completed-template 2017-08-30
AMTRELAY 260 Automatic Multicast Tunneling Relay [draft-ietf-mboned-driad-amt-discovery] AMTRELAY/amtrelay-completed-template 2019-02-06
Unassigned 261-32767
TA 32768 DNSSEC Trust Authorities [Sam_Weiler][http://cameo.library.cmu.edu/][ Deploying DNSSEC Without a Signed Root. Technical Report 1999-19, Information Networking Institute, Carnegie Mellon University, April 2004.] 2005-12-13
DLV 32769 DNSSEC Lookaside Validation [RFC4431]
Unassigned 32770-65279
Private use 65280-65534
Reserved 65535
0 = 0x8C
1 = 0x5F
2 = 0x81
3 = 0x80
4 = 0x0
5 = 0x1
6 = 0x0
7 = 0x4
8 = 0x0
9 = 0x0
10 = 0x0
11 = 0x0
12 = 0x3 3個長度,字符串是 _gc
13 = 0x5F
14 = 0x67
15 = 0x63
16 = 0x4 4個長度,字符串是 _tcp
17 = 0x5F
18 = 0x74
19 = 0x63
20 = 0x70
21 = 0xA 10個長度, company
22 = 0x62
23 = 0x6C
24 = 0x61
25 = 0x63
26 = 0x6B
27 = 0x73
28 = 0x68
29 = 0x61
30 = 0x72
31 = 0x6B
32 = 0x3 3個長度,com
33 = 0x63
34 = 0x6F
35 = 0x6D
36 = 0x0 0個長度,域名後面會添加個 點
上面的12~36首先解析出來了 DnsName的值“_gc._tcp.company.com.”
37 = 0x0
38 = 0x21
39 = 0x0
40 = 0x1
41 = 0xC0
42 = 0xC
43 = 0x0
44 = 0x21
45 = 0x0
46 = 0x1
47 = 0x0
48 = 0x0
49 = 0x2
50 = 0x58
51 = 0x0
52 = 0xC
53 = 0x0
54 = 0x0
55 = 0x0
56 = 0x64
57 = 0xC
58 = 0xC4
59 = 0x3 3個字符,“dc1”,長度是0表示結尾,會在域名後加個點。長度在63之內的是後續幾個字節。
60 = 0x64
61 = 0x63
62 = 0x31
63 = 0xC0 十進制192,表明後續一個byte是跳轉到哪個字節的。長度是0xC0表示跳轉的。
64 = 0x15 十進制21,跳轉到21字節處,“company” “com”,到此解析出來了,0 100 3268 dc1.company.com.
65 = 0xC0
66 = 0xC
67 = 0x0
68 = 0x21
69 = 0x0
70 = 0x1
71 = 0x0
72 = 0x0
73 = 0x2
74 = 0x58
75 = 0x0
76 = 0xD
77 = 0x0
78 = 0x0
79 = 0x0
80 = 0x64
81 = 0xC
82 = 0xC4
83 = 0x4
84 = 0x64
85 = 0x63
86 = 0x30
87 = 0x31
88 = 0xC0
89 = 0x15
90 = 0xC0
91 = 0xC
92 = 0x0
93 = 0x21
94 = 0x0
95 = 0x1
96 = 0x0
97 = 0x0
98 = 0x2
99 = 0x58
100 = 0x0
101 = 0xD
102 = 0x0
103 = 0x0
104 = 0x0
105 = 0x64
106 = 0xC
107 = 0xC4
108 = 0x4 dc02.company.com
109 = 0x64
110 = 0x63
111 = 0x30
112 = 0x32
113 = 0xC0
114 = 0x15
115 = 0xC0
116 = 0xC
117 = 0x0
118 = 0x21
119 = 0x0
120 = 0x1
121 = 0x0
122 = 0x0
123 = 0x2
124 = 0x58
125 = 0x0
126 = 0xD
127 = 0x0
128 = 0x0
129 = 0x0
130 = 0x64
131 = 0xC
132 = 0xC4
133 = 0x4 "szdc.company.com."
134 = 0x73
135 = 0x7A
136 = 0x64
137 = 0x63
138 = 0xC0
139 = 0x15
140 = 0x0
141 = 0x0
142 = 0x0
143 = 0x0
144 = 0x0
145 = 0x0
146 = 0x0
147 = 0x0
148 = 0x0
149 = 0x0