DNS compression pointer mutation
$ LD_PRELOAD=$PWD/sendmsg.so dig twitter.com @8.8.8.8 | |
;; Warning: Message parser reports malformed message packet. <-- malformed 因为把压缩指针当作域名一部分了 | |
;; Question section mismatch: got twitter.com/RESERVED0/CLASS256 | |
; <<>> DiG 9.9.5-3-Ubuntu <<>> twitter.com @8.8.8.8 | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44722 | |
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 512 | |
;; QUESTION SECTION: | |
;twitter.com. IN A | |
;; ANSWER SECTION: | |
twitter.com. 12 IN A 199.59.150.7 | |
twitter.com. 12 IN A 199.59.148.82 | |
twitter.com. 12 IN A 199.59.149.198 | |
twitter.com. 12 IN A 199.59.149.230 | |
;; Query time: 400 msec | |
;; SERVER: 8.8.8.8#53(8.8.8.8) | |
;; WHEN: Sat Nov 15 -------- CST 2014 | |
;; MSG SIZE rcvd: 104 | |
$ LD_PRELOAD=$PWD/sendmsg.so host twitter.com 8.8.8.8 | |
Using domain server: | |
Name: 8.8.8.8 | |
Address: 8.8.8.8#53 | |
Aliases: | |
twitter.com has address 199.59.148.82 | |
twitter.com has address 199.59.149.230 | |
twitter.com has address 199.59.149.198 | |
twitter.com has address 199.59.148.10 | |
twitter.com mail is handled by 30 ASPMX2.GOOGLEMAIL.com. | |
twitter.com mail is handled by 10 aspmx.l.google.com. | |
twitter.com mail is handled by 20 alt2.aspmx.l.google.com. | |
twitter.com mail is handled by 20 alt1.aspmx.l.google.com. | |
twitter.com mail is handled by 30 ASPMX3.GOOGLEMAIL.com. | |
$ host twitter.com 8.8.8.8 | |
Using domain server: | |
Name: 8.8.8.8 | |
Address: 8.8.8.8#53 | |
Aliases: | |
twitter.com has address 59.24.3.173 | |
twitter.com has address 59.24.3.173 | |
twitter.com has address 37.61.54.158 |
example.com normal google-dns1 NOERROR example.com. 20087 IN A 93.184.216.119 | |
example.com normal google-dns2 NOERROR example.com. 20098 IN A 93.184.216.119 | |
example.com normal opendns1 NOERROR example.com. 68574 IN A 93.184.216.119 | |
example.com normal opendns2 NOERROR example.com. 74046 IN A 93.184.216.119 | |
example.com normal twitter-ns1 NOERROR | |
example.com normal twitter-ns2 NOERROR | |
example.com normal he-dns NOERROR example.com. 86160 IN A 93.184.216.119 | |
example.com normal level3 NOERROR example.com. 86400 IN A 93.184.216.119 | |
example.com normal alidns1 NOERROR example.com. 57929 IN A 93.184.216.119 | |
example.com normal alidns2 NOERROR example.com. 32633 IN A 93.184.216.119 | |
example.com normal cnnic-dns1 NOERROR example.com. 84765 IN A 93.184.216.119 | |
example.com normal v2ex-dns1 NOERROR example.com. 4074 IN A 93.184.216.119 | |
example.com normal unicom-sh1 NOERROR example.com. 60682 IN A 93.184.216.119 | |
example.com normal unicom-sh2 NOERROR example.com. 79776 IN A 93.184.216.119 | |
example.com normal china-blackhole-1 | |
example.com normal china-blackhole-2 | |
example.com normal china-blackhole-3 | |
example.com normal china-blackhole-4 | |
twitter.com normal google-dns1 NOERROR twitter.com. 37569 IN A 37.61.54.158 | |
twitter.com normal google-dns2 NOERROR twitter.com. 41492 IN A 59.24.3.173 | |
twitter.com normal opendns1 NOERROR twitter.com. 13193 IN A 59.24.3.173 | |
twitter.com normal opendns2 NOERROR twitter.com. 8768 IN A 37.61.54.158 | |
twitter.com normal twitter-ns1 NOERROR twitter.com. 33232 IN A 37.61.54.158 | |
twitter.com normal twitter-ns2 NOERROR twitter.com. 30 IN A 199.59.150.7 twitter.com. 30 IN A 199.59.148.10 twitter.com. 30 IN A 199.59.149.230 twitter.com. 30 IN A 199.59.150.39 | |
twitter.com normal he-dns NOERROR twitter.com. 41492 IN A 59.24.3.173 | |
twitter.com normal level3 NOERROR twitter.com. 30851 IN A 37.61.54.158 | |
twitter.com normal alidns1 NOERROR twitter.com. 38987 IN A 59.24.3.173 | |
twitter.com normal alidns2 NOERROR twitter.com. 38987 IN A 59.24.3.173 | |
twitter.com normal cnnic-dns1 NOERROR twitter.com. 23292 IN A 37.61.54.158 | |
twitter.com normal v2ex-dns1 NOERROR twitter.com. 31559 IN A 59.24.3.173 | |
twitter.com normal unicom-sh1 NOERROR twitter.com. 19662 IN A 59.24.3.173 | |
twitter.com normal unicom-sh2 NOERROR twitter.com. 246 IN A 37.61.54.158 | |
twitter.com normal china-blackhole-1 | |
twitter.com normal china-blackhole-2 | |
twitter.com normal china-blackhole-3 | |
twitter.com normal china-blackhole-4 | |
example.com pointer-0 google-dns1 NOERROR example.com. 20069 IN A 93.184.216.119 | |
example.com pointer-0 google-dns2 NOERROR example.com. 20079 IN A 93.184.216.119 | |
example.com pointer-0 opendns1 NOERROR example.com. 68555 IN A 93.184.216.119 | |
example.com pointer-0 opendns2 NOERROR example.com. 74027 IN A 93.184.216.119 | |
example.com pointer-0 twitter-ns1 | |
example.com pointer-0 twitter-ns2 | |
example.com pointer-0 he-dns FORMERR | |
example.com pointer-0 level3 FORMERR | |
example.com pointer-0 alidns1 | |
example.com pointer-0 alidns2 | |
example.com pointer-0 cnnic-dns1 | |
example.com pointer-0 v2ex-dns1 NOERROR example.com. 4045 IN A 93.184.216.119 | |
example.com pointer-0 unicom-sh1 REFUSED | |
example.com pointer-0 unicom-sh2 | |
example.com pointer-0 china-blackhole-1 | |
example.com pointer-0 china-blackhole-2 | |
example.com pointer-0 china-blackhole-3 | |
example.com pointer-0 china-blackhole-4 | |
twitter.com pointer-0 google-dns1 NOERROR twitter.com. 21546 IN A 59.24.3.173 | |
twitter.com pointer-0 google-dns2 NOERROR twitter.com. 9482 IN A 59.24.3.173 | |
twitter.com pointer-0 opendns1 NOERROR twitter.com. 8377 IN A 59.24.3.173 | |
twitter.com pointer-0 opendns2 NOERROR twitter.com. 21546 IN A 59.24.3.173 | |
twitter.com pointer-0 twitter-ns1 NOERROR twitter.com. 21546 IN A 59.24.3.173 | |
twitter.com pointer-0 twitter-ns2 NOERROR twitter.com. 21546 IN A 59.24.3.173 | |
twitter.com pointer-0 he-dns NOERROR twitter.com. 21546 IN A 59.24.3.173 | |
twitter.com pointer-0 level3 NOERROR twitter.com. 21546 IN A 59.24.3.173 | |
twitter.com pointer-0 alidns1 | |
twitter.com pointer-0 alidns2 | |
twitter.com pointer-0 cnnic-dns1 | |
twitter.com pointer-0 v2ex-dns1 NOERROR twitter.com. 4493 IN A 59.24.3.173 | |
twitter.com pointer-0 unicom-sh1 REFUSED | |
twitter.com pointer-0 unicom-sh2 | |
twitter.com pointer-0 china-blackhole-1 | |
twitter.com pointer-0 china-blackhole-2 | |
twitter.com pointer-0 china-blackhole-3 | |
twitter.com pointer-0 china-blackhole-4 | |
example.com pointer-1 google-dns1 NOERROR example.com. 20035 IN A 93.184.216.119 | |
example.com pointer-1 google-dns2 NOERROR example.com. 20041 IN A 93.184.216.119 | |
example.com pointer-1 opendns1 NOERROR example.com. 74071 IN A 93.184.216.119 | |
example.com pointer-1 opendns2 NOERROR example.com. 74070 IN A 93.184.216.119 | |
example.com pointer-1 twitter-ns1 | |
example.com pointer-1 twitter-ns2 | |
example.com pointer-1 he-dns FORMERR | |
example.com pointer-1 level3 FORMERR | |
example.com pointer-1 alidns1 | |
example.com pointer-1 alidns2 | |
example.com pointer-1 cnnic-dns1 | |
example.com pointer-1 v2ex-dns1 NOERROR example.com. 4007 IN A 93.184.216.119 | |
example.com pointer-1 unicom-sh1 REFUSED | |
example.com pointer-1 unicom-sh2 | |
example.com pointer-1 china-blackhole-1 | |
example.com pointer-1 china-blackhole-2 | |
example.com pointer-1 china-blackhole-3 | |
example.com pointer-1 china-blackhole-4 | |
twitter.com pointer-1 google-dns1 NOERROR twitter.com. 27 IN A 199.59.149.230 twitter.com. 27 IN A 199.59.148.82 twitter.com. 27 IN A 199.59.150.39 twitter.com. 27 IN A 199.59.148.10 | |
twitter.com pointer-1 google-dns2 NOERROR twitter.com. 27 IN A 199.59.149.198 twitter.com. 27 IN A 199.59.149.230 twitter.com. 27 IN A 199.59.150.39 twitter.com. 27 IN A 199.59.148.10 | |
twitter.com pointer-1 opendns1 NOERROR twitter.com. 19 IN A 199.59.149.198 twitter.com. 19 IN A 199.59.150.7 twitter.com. 19 IN A 199.59.149.230 twitter.com. 19 IN A 199.59.148.82 | |
twitter.com pointer-1 opendns2 NOERROR twitter.com. 19 IN A 199.59.148.82 twitter.com. 19 IN A 199.59.150.39 twitter.com. 19 IN A 199.59.150.7 twitter.com. 19 IN A 199.59.149.230 | |
twitter.com pointer-1 twitter-ns1 | |
twitter.com pointer-1 twitter-ns2 | |
twitter.com pointer-1 he-dns FORMERR | |
twitter.com pointer-1 level3 FORMERR | |
twitter.com pointer-1 alidns1 | |
twitter.com pointer-1 alidns2 | |
twitter.com pointer-1 cnnic-dns1 | |
twitter.com pointer-1 v2ex-dns1 NOERROR twitter.com. 19 IN A 199.59.150.7 twitter.com. 19 IN A 199.59.148.10 twitter.com. 19 IN A 199.59.148.82 twitter.com. 19 IN A 199.59.150.39 | |
twitter.com pointer-1 unicom-sh1 REFUSED | |
twitter.com pointer-1 unicom-sh2 | |
twitter.com pointer-1 china-blackhole-1 | |
twitter.com pointer-1 china-blackhole-2 | |
twitter.com pointer-1 china-blackhole-3 | |
twitter.com pointer-1 china-blackhole-4 | |
example.com pointer-4 google-dns1 NOERROR example.com. 20004 IN A 93.184.216.119 | |
example.com pointer-4 google-dns2 NOERROR example.com. 19989 IN A 93.184.216.119 | |
example.com pointer-4 opendns1 NOERROR example.com. 73946 IN A 93.184.216.119 | |
example.com pointer-4 opendns2 NOERROR example.com. 68474 IN A 93.184.216.119 | |
example.com pointer-4 twitter-ns1 | |
example.com pointer-4 twitter-ns2 | |
example.com pointer-4 he-dns FORMERR | |
example.com pointer-4 level3 FORMERR | |
example.com pointer-4 alidns1 | |
example.com pointer-4 alidns2 | |
example.com pointer-4 cnnic-dns1 | |
example.com pointer-4 v2ex-dns1 NOERROR example.com. 3964 IN A 93.184.216.119 | |
example.com pointer-4 unicom-sh1 REFUSED | |
example.com pointer-4 unicom-sh2 | |
example.com pointer-4 china-blackhole-1 | |
example.com pointer-4 china-blackhole-2 | |
example.com pointer-4 china-blackhole-3 | |
example.com pointer-4 china-blackhole-4 | |
twitter.com pointer-4 google-dns1 NOERROR twitter.com. 14 IN A 199.59.149.198 twitter.com. 14 IN A 199.59.148.10 twitter.com. 14 IN A 199.59.150.39 twitter.com. 14 IN A 199.59.149.230 | |
twitter.com pointer-4 google-dns2 NOERROR twitter.com. 13 IN A 199.59.150.39 twitter.com. 13 IN A 199.59.148.10 twitter.com. 13 IN A 199.59.149.230 twitter.com. 13 IN A 199.59.150.7 | |
twitter.com pointer-4 opendns1 NOERROR twitter.com. 30 IN A 199.59.150.39 twitter.com. 30 IN A 199.59.148.10 twitter.com. 30 IN A 199.59.148.82 twitter.com. 30 IN A 199.59.149.198 | |
twitter.com pointer-4 opendns2 NOERROR twitter.com. 29 IN A 199.59.148.82 twitter.com. 29 IN A 199.59.150.39 twitter.com. 29 IN A 199.59.150.7 twitter.com. 29 IN A 199.59.149.198 | |
twitter.com pointer-4 twitter-ns1 | |
twitter.com pointer-4 twitter-ns2 | |
twitter.com pointer-4 he-dns FORMERR | |
twitter.com pointer-4 level3 FORMERR | |
twitter.com pointer-4 alidns1 | |
twitter.com pointer-4 alidns2 | |
twitter.com pointer-4 cnnic-dns1 | |
twitter.com pointer-4 v2ex-dns1 NOERROR twitter.com. 4 IN A 199.59.148.82 twitter.com. 4 IN A 199.59.148.10 twitter.com. 4 IN A 199.59.150.7 twitter.com. 4 IN A 199.59.149.198 | |
twitter.com pointer-4 unicom-sh1 REFUSED | |
twitter.com pointer-4 unicom-sh2 | |
twitter.com pointer-4 china-blackhole-1 | |
twitter.com pointer-4 china-blackhole-2 | |
twitter.com pointer-4 china-blackhole-3 | |
twitter.com pointer-4 china-blackhole-4 | |
example.com pointer-append google-dns1 NOERROR example.com. 19947 IN A 93.184.216.119 | |
example.com pointer-append google-dns2 NOERROR example.com. 19946 IN A 93.184.216.119 | |
example.com pointer-append opendns1 FORMERR | |
example.com pointer-append opendns2 FORMERR | |
example.com pointer-append twitter-ns1 | |
example.com pointer-append twitter-ns2 | |
example.com pointer-append he-dns parse error | |
example.com pointer-append level3 parse error | |
example.com pointer-append alidns1 | |
example.com pointer-append alidns2 | |
example.com pointer-append cnnic-dns1 | |
example.com pointer-append v2ex-dns1 NOERROR example.com. 3921 IN A 93.184.216.119 | |
example.com pointer-append unicom-sh1 FORMERR | |
example.com pointer-append unicom-sh2 FORMERR | |
example.com pointer-append china-blackhole-1 | |
example.com pointer-append china-blackhole-2 | |
example.com pointer-append china-blackhole-3 | |
example.com pointer-append china-blackhole-4 | |
twitter.com pointer-append google-dns1 NOERROR twitter.com. 29 IN A 199.59.148.10 twitter.com. 29 IN A 199.59.149.230 twitter.com. 29 IN A 199.59.148.82 twitter.com. 29 IN A 199.59.149.198 | |
twitter.com pointer-append google-dns2 NOERROR twitter.com. 28 IN A 199.59.150.39 twitter.com. 28 IN A 199.59.149.230 twitter.com. 28 IN A 199.59.148.82 twitter.com. 28 IN A 199.59.149.198 | |
twitter.com pointer-append opendns1 FORMERR | |
twitter.com pointer-append opendns2 FORMERR | |
twitter.com pointer-append twitter-ns1 | |
twitter.com pointer-append twitter-ns2 | |
twitter.com pointer-append he-dns parse error | |
twitter.com pointer-append level3 parse error | |
twitter.com pointer-append alidns1 | |
twitter.com pointer-append alidns2 | |
twitter.com pointer-append cnnic-dns1 | |
twitter.com pointer-append v2ex-dns1 NOERROR twitter.com. 22 IN A 199.59.148.10 twitter.com. 22 IN A 199.59.149.198 twitter.com. 22 IN A 199.59.150.39 twitter.com. 22 IN A 199.59.149.230 | |
twitter.com pointer-append unicom-sh1 FORMERR | |
twitter.com pointer-append unicom-sh2 FORMERR | |
twitter.com pointer-append china-blackhole-1 | |
twitter.com pointer-append china-blackhole-2 | |
twitter.com pointer-append china-blackhole-3 | |
twitter.com pointer-append china-blackhole-4 | |
example.com pointer-append-rr google-dns1 NOERROR example.com. 19923 IN A 93.184.216.119 | |
example.com pointer-append-rr google-dns2 NOERROR example.com. 19915 IN A 93.184.216.119 | |
example.com pointer-append-rr opendns1 FORMERR | |
example.com pointer-append-rr opendns2 FORMERR | |
example.com pointer-append-rr twitter-ns1 | |
example.com pointer-append-rr twitter-ns2 | |
example.com pointer-append-rr he-dns parse error | |
example.com pointer-append-rr level3 parse error | |
example.com pointer-append-rr alidns1 | |
example.com pointer-append-rr alidns2 | |
example.com pointer-append-rr cnnic-dns1 | |
example.com pointer-append-rr v2ex-dns1 NOERROR example.com. 3881 IN A 93.184.216.119 | |
example.com pointer-append-rr unicom-sh1 FORMERR | |
example.com pointer-append-rr unicom-sh2 FORMERR | |
example.com pointer-append-rr china-blackhole-1 | |
example.com pointer-append-rr china-blackhole-2 | |
example.com pointer-append-rr china-blackhole-3 | |
example.com pointer-append-rr china-blackhole-4 | |
twitter.com pointer-append-rr google-dns1 NOERROR twitter.com. 21 IN A 199.59.148.10 twitter.com. 21 IN A 199.59.150.39 twitter.com. 21 IN A 199.59.148.82 twitter.com. 21 IN A 199.59.149.230 | |
twitter.com pointer-append-rr google-dns2 NOERROR twitter.com. 20 IN A 199.59.149.230 twitter.com. 20 IN A 199.59.150.7 twitter.com. 20 IN A 199.59.150.39 twitter.com. 20 IN A 199.59.148.82 | |
twitter.com pointer-append-rr opendns1 FORMERR | |
twitter.com pointer-append-rr opendns2 FORMERR | |
twitter.com pointer-append-rr twitter-ns1 | |
twitter.com pointer-append-rr twitter-ns2 | |
twitter.com pointer-append-rr he-dns parse error | |
twitter.com pointer-append-rr level3 parse error | |
twitter.com pointer-append-rr alidns1 | |
twitter.com pointer-append-rr alidns2 | |
twitter.com pointer-append-rr cnnic-dns1 | |
twitter.com pointer-append-rr v2ex-dns1 NOERROR twitter.com. 9 IN A 199.59.150.39 twitter.com. 9 IN A 199.59.148.82 twitter.com. 9 IN A 199.59.148.10 twitter.com. 9 IN A 199.59.150.7 | |
twitter.com pointer-append-rr unicom-sh1 FORMERR | |
twitter.com pointer-append-rr unicom-sh2 FORMERR | |
twitter.com pointer-append-rr china-blackhole-1 | |
twitter.com pointer-append-rr china-blackhole-2 | |
twitter.com pointer-append-rr china-blackhole-3 | |
twitter.com pointer-append-rr china-blackhole-4 |
/* | |
gcc -fPIC -shared sendmsg.c -o sendmsg.so -ldl | |
LD_PRELOAD=$PWD/sendmsg.so host twitter.com 8.8.8.8 | |
LD_PRELOAD=$PWD/sendmsg.so dig twitter.com @8.8.8.8 | |
*/ | |
#define _GNU_SOURCE | |
#include <dlfcn.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <sys/types.h> | |
#include <sys/socket.h> | |
#include <netinet/in.h> | |
static ssize_t (*_sendmsg)(int, const struct msghdr *, int); | |
ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags) | |
{ | |
if (!_sendmsg) { | |
_sendmsg = dlsym(RTLD_NEXT, "sendmsg"); | |
if (!_sendmsg) { | |
perror("dlsym"); | |
exit(1); | |
} | |
} | |
struct msghdr newmsg; | |
char buffer[512]; | |
struct iovec vec; | |
if (msg->msg_namelen == sizeof(struct sockaddr_in) && msg->msg_iovlen == 1) { | |
const struct sockaddr_in *addr = (const struct sockaddr_in *)msg->msg_name; | |
const unsigned char *bytes = msg->msg_iov[0].iov_base; | |
const unsigned short *shorts = msg->msg_iov[0].iov_base; | |
size_t len = msg->msg_iov[0].iov_len; | |
if (addr->sin_family == AF_INET && addr->sin_port == htons(53) && | |
len < sizeof(buffer) - 1 && len > 16 && shorts[2] == htons(1) && shorts[3] == 0) { | |
size_t off = 12; | |
int ended = 0; | |
while (off < len - 4) { | |
if (bytes[off] & 0xc0) | |
break; | |
if (bytes[off] == 0) { | |
ended = 1; | |
off++; | |
break; | |
} | |
off += 1 + bytes[off]; | |
} | |
if (ended) { | |
memcpy(buffer, bytes, off - 1); | |
memcpy(buffer + off + 1, bytes + off, len - off); | |
buffer[off - 1] = '\xc0'; | |
buffer[off] = '\x04'; | |
vec.iov_base = buffer; | |
vec.iov_len = len + 1; | |
newmsg = *msg; | |
newmsg.msg_iov = &vec; | |
msg = &newmsg; | |
} | |
} | |
} | |
return _sendmsg(sockfd, msg, flags); | |
} |
import socket | |
import dns.message, dns.rcode | |
queries = [ | |
('example.com normal', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07example\x03com\x00\x00\x01\x00\x01"), | |
('twitter.com normal', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07twitter\x03com\x00\x00\x01\x00\x01"), | |
('example.com pointer-0', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07example\x03com\xc0\x00\x00\x01\x00\x01"), | |
('twitter.com pointer-0', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07twitter\x03com\xc0\x00\x00\x01\x00\x01"), | |
('example.com pointer-1', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07example\x03com\xc0\x01\x00\x01\x00\x01"), | |
('twitter.com pointer-1', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07twitter\x03com\xc0\x01\x00\x01\x00\x01"), | |
('example.com pointer-4', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07example\x03com\xc0\x04\x00\x01\x00\x01"), | |
('twitter.com pointer-4', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07twitter\x03com\xc0\x04\x00\x01\x00\x01"), | |
('example.com pointer-append', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\xc0\x12\x00\x01\x00\x01\x07example\x03com\x00"), | |
('twitter.com pointer-append', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\xc0\x12\x00\x01\x00\x01\x07twitter\x03com\x00"), | |
('example.com pointer-append-rr', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x01\xc0\x12\x00\x01\x00\x01\x07example\x03com\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00"), | |
('twitter.com pointer-append-rr', "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x01\xc0\x12\x00\x01\x00\x01\x07twitter\x03com\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00"), | |
] | |
resolvers = [ | |
('google-dns1', '8.8.8.8'), | |
('google-dns2', '8.8.4.4'), | |
('opendns1', '208.67.222.222'), | |
('opendns2', '208.67.220.220'), | |
('twitter-ns1', '208.78.70.34'), | |
('twitter-ns2', '204.13.250.34'), | |
('he-dns', '74.82.42.42'), | |
('level3', '4.2.2.2'), | |
('alidns1', '223.5.5.5'), | |
('alidns2', '223.6.6.6'), | |
('cnnic-dns1', '1.2.4.8'), | |
('v2ex-dns1', '199.91.73.222'), | |
('unicom-sh1', '210.22.70.3'), | |
('unicom-sh2', '210.22.84.3'), | |
('china-blackhole-1', '210.22.0.0'), | |
('china-blackhole-2', '210.21.0.0'), | |
('china-blackhole-3', '202.96.0.0'), | |
('china-blackhole-4', '116.228.0.0'), | |
] | |
def test_query(resolver, query): | |
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | |
sock.settimeout(0.1) | |
result = '' | |
for i in range(20): | |
sock.sendto(query, (resolver, 53)) | |
try: | |
packet, addr = sock.recvfrom(2048) | |
try: | |
r = dns.message.from_wire(packet) | |
rc = dns.rcode.from_flags(r.flags, r.ednsflags) | |
result = dns.rcode.to_text(rc) + ' ' + ' '.join(str(rr) for rr in r.answer).replace('\n', ' ') | |
except: | |
result = 'parse error' | |
break | |
except socket.timeout: | |
pass | |
sock.close() | |
return result | |
for qname, query in queries: | |
for rname, resolver in resolvers: | |
print qname, rname, test_query(resolver, query) |
example.com normal google-dns1 NOERROR example.com. 4268 IN A 93.184.216.119 | |
example.com normal google-dns2 NOERROR example.com. 4268 IN A 93.184.216.119 | |
example.com normal opendns1 NOERROR example.com. 27992 IN A 93.184.216.119 | |
example.com normal opendns2 NOERROR example.com. 27992 IN A 93.184.216.119 | |
example.com normal twitter-ns1 NOERROR | |
example.com normal twitter-ns2 NOERROR | |
example.com normal he-dns NOERROR example.com. 86278 IN A 93.184.216.119 | |
example.com normal level3 NOERROR example.com. 69051 IN A 93.184.216.119 | |
example.com normal alidns1 NOERROR example.com. 73901 IN A 93.184.216.119 | |
example.com normal alidns2 NOERROR example.com. 73900 IN A 93.184.216.119 | |
example.com normal cnnic-dns1 NOERROR example.com. 61965 IN A 93.184.216.119 | |
example.com normal v2ex-dns1 NOERROR example.com. 14652 IN A 93.184.216.119 | |
example.com normal unicom-sh1 NOERROR example.com. 84929 IN A 93.184.216.119 | |
example.com normal unicom-sh2 NOERROR example.com. 80503 IN A 93.184.216.119 | |
example.com normal china-blackhole-1 | |
example.com normal china-blackhole-2 | |
example.com normal china-blackhole-3 | |
example.com normal china-blackhole-4 | |
twitter.com normal google-dns1 NOERROR twitter.com. 29 IN A 199.16.156.230 twitter.com. 29 IN A 199.16.156.38 twitter.com. 29 IN A 199.16.156.70 twitter.com. 29 IN A 199.16.156.102 | |
twitter.com normal google-dns2 NOERROR twitter.com. 29 IN A 199.16.156.230 twitter.com. 29 IN A 199.16.156.38 twitter.com. 29 IN A 199.16.156.70 twitter.com. 29 IN A 199.16.156.102 | |
twitter.com normal opendns1 NOERROR twitter.com. 26 IN A 199.16.156.102 twitter.com. 26 IN A 199.16.156.198 twitter.com. 26 IN A 199.16.156.38 twitter.com. 26 IN A 199.16.156.70 | |
twitter.com normal opendns2 NOERROR twitter.com. 19 IN A 199.16.156.198 twitter.com. 19 IN A 199.16.156.6 twitter.com. 19 IN A 199.16.156.38 twitter.com. 19 IN A 199.16.156.230 | |
twitter.com normal twitter-ns1 NOERROR twitter.com. 30 IN A 199.16.156.38 twitter.com. 30 IN A 199.16.156.70 twitter.com. 30 IN A 199.16.156.6 twitter.com. 30 IN A 199.16.156.198 | |
twitter.com normal twitter-ns2 NOERROR twitter.com. 30 IN A 199.16.156.6 twitter.com. 30 IN A 199.16.156.102 twitter.com. 30 IN A 199.16.156.38 twitter.com. 30 IN A 199.16.156.198 | |
twitter.com normal he-dns NOERROR twitter.com. 18 IN A 199.59.149.198 twitter.com. 18 IN A 199.59.150.39 twitter.com. 18 IN A 199.59.150.7 twitter.com. 18 IN A 199.59.149.230 | |
twitter.com normal level3 NOERROR twitter.com. 63 IN A 199.16.156.38 twitter.com. 63 IN A 199.16.156.70 twitter.com. 63 IN A 199.16.156.230 twitter.com. 63 IN A 199.16.156.6 | |
twitter.com normal alidns1 NOERROR twitter.com. 25877 IN A 37.61.54.158 | |
twitter.com normal alidns2 NOERROR twitter.com. 9962 IN A 37.61.54.158 | |
twitter.com normal cnnic-dns1 NOERROR twitter.com. 30 IN A 199.59.149.198 twitter.com. 30 IN A 199.59.150.7 twitter.com. 30 IN A 199.59.148.82 twitter.com. 30 IN A 199.59.150.39 | |
twitter.com normal v2ex-dns1 NOERROR twitter.com. 27 IN A 199.59.149.198 twitter.com. 27 IN A 199.59.148.82 twitter.com. 27 IN A 199.59.150.39 twitter.com. 27 IN A 199.59.150.7 | |
twitter.com normal unicom-sh1 NOERROR twitter.com. 9340 IN A 37.61.54.158 | |
twitter.com normal unicom-sh2 NOERROR twitter.com. 43022 IN A 37.61.54.158 | |
twitter.com normal china-blackhole-1 NOERROR twitter.com. 44055 IN A 59.24.3.173 | |
twitter.com normal china-blackhole-2 NOERROR twitter.com. 42928 IN A 37.61.54.158 | |
twitter.com normal china-blackhole-3 NOERROR twitter.com. 17089 IN A 37.61.54.158 | |
twitter.com normal china-blackhole-4 NOERROR twitter.com. 41669 IN A 37.61.54.158 | |
example.com pointer-0 google-dns1 NOERROR example.com. 4254 IN A 93.184.216.119 | |
example.com pointer-0 google-dns2 NOERROR example.com. 4254 IN A 93.184.216.119 | |
example.com pointer-0 opendns1 NOERROR example.com. 25344 IN A 93.184.216.119 | |
example.com pointer-0 opendns2 NOERROR example.com. 31465 IN A 93.184.216.119 | |
example.com pointer-0 twitter-ns1 | |
example.com pointer-0 twitter-ns2 | |
example.com pointer-0 he-dns FORMERR | |
example.com pointer-0 level3 NOERROR example.com. 69033 IN A 93.184.216.119 | |
example.com pointer-0 alidns1 | |
example.com pointer-0 alidns2 | |
example.com pointer-0 cnnic-dns1 | |
example.com pointer-0 v2ex-dns1 NOERROR example.com. 14629 IN A 93.184.216.119 | |
example.com pointer-0 unicom-sh1 REFUSED | |
example.com pointer-0 unicom-sh2 | |
example.com pointer-0 china-blackhole-1 | |
example.com pointer-0 china-blackhole-2 | |
example.com pointer-0 china-blackhole-3 | |
example.com pointer-0 china-blackhole-4 | |
twitter.com pointer-0 google-dns1 NOERROR twitter.com. 4 IN A 199.16.156.6 twitter.com. 4 IN A 199.16.156.70 twitter.com. 4 IN A 199.16.156.230 twitter.com. 4 IN A 199.16.156.198 | |
twitter.com pointer-0 google-dns2 NOERROR twitter.com. 4 IN A 199.16.156.102 twitter.com. 4 IN A 199.16.156.70 twitter.com. 4 IN A 199.16.156.6 twitter.com. 4 IN A 199.16.156.38 | |
twitter.com pointer-0 opendns1 NOERROR twitter.com. 29 IN A 199.16.156.198 twitter.com. 29 IN A 199.16.156.230 twitter.com. 29 IN A 199.16.156.6 twitter.com. 29 IN A 199.16.156.38 | |
twitter.com pointer-0 opendns2 NOERROR twitter.com. 21 IN A 199.16.156.198 twitter.com. 21 IN A 199.16.156.38 twitter.com. 21 IN A 199.16.156.6 twitter.com. 21 IN A 199.16.156.230 | |
twitter.com pointer-0 twitter-ns1 | |
twitter.com pointer-0 twitter-ns2 | |
twitter.com pointer-0 he-dns FORMERR | |
twitter.com pointer-0 level3 FORMERR | |
twitter.com pointer-0 alidns1 NOERROR twitter.com. 38584 IN A 59.24.3.173 | |
twitter.com pointer-0 alidns2 NOERROR twitter.com. 46742 IN A 59.24.3.173 | |
twitter.com pointer-0 cnnic-dns1 | |
twitter.com pointer-0 v2ex-dns1 NOERROR twitter.com. 26 IN A 199.59.149.198 twitter.com. 26 IN A 199.59.150.39 twitter.com. 26 IN A 199.59.148.82 twitter.com. 26 IN A 199.59.149.230 | |
twitter.com pointer-0 unicom-sh1 NOERROR twitter.com. 31863 IN A 59.24.3.173 | |
twitter.com pointer-0 unicom-sh2 NOERROR twitter.com. 31863 IN A 59.24.3.173 | |
twitter.com pointer-0 china-blackhole-1 NOERROR twitter.com. 31919 IN A 59.24.3.173 | |
twitter.com pointer-0 china-blackhole-2 NOERROR twitter.com. 31919 IN A 59.24.3.173 | |
twitter.com pointer-0 china-blackhole-3 NOERROR twitter.com. 31919 IN A 59.24.3.173 | |
twitter.com pointer-0 china-blackhole-4 NOERROR twitter.com. 11862 IN A 59.24.3.173 | |
example.com pointer-1 google-dns1 NOERROR example.com. 4224 IN A 93.184.216.119 | |
example.com pointer-1 google-dns2 NOERROR example.com. 4223 IN A 93.184.216.119 | |
example.com pointer-1 opendns1 NOERROR example.com. 27947 IN A 93.184.216.119 | |
example.com pointer-1 opendns2 NOERROR example.com. 31038 IN A 93.184.216.119 | |
example.com pointer-1 twitter-ns1 | |
example.com pointer-1 twitter-ns2 | |
example.com pointer-1 he-dns FORMERR | |
example.com pointer-1 level3 NOERROR example.com. 69002 IN A 93.184.216.119 | |
example.com pointer-1 alidns1 | |
example.com pointer-1 alidns2 | |
example.com pointer-1 cnnic-dns1 | |
example.com pointer-1 v2ex-dns1 NOERROR example.com. 14598 IN A 93.184.216.119 | |
example.com pointer-1 unicom-sh1 REFUSED | |
example.com pointer-1 unicom-sh2 | |
example.com pointer-1 china-blackhole-1 | |
example.com pointer-1 china-blackhole-2 | |
example.com pointer-1 china-blackhole-3 | |
example.com pointer-1 china-blackhole-4 | |
twitter.com pointer-1 google-dns1 NOERROR twitter.com. 3 IN A 199.16.156.198 twitter.com. 3 IN A 199.16.156.6 twitter.com. 3 IN A 199.16.156.102 twitter.com. 3 IN A 199.16.156.230 | |
twitter.com pointer-1 google-dns2 NOERROR twitter.com. 3 IN A 199.16.156.70 twitter.com. 3 IN A 199.16.156.102 twitter.com. 3 IN A 199.16.156.198 twitter.com. 3 IN A 199.16.156.38 | |
twitter.com pointer-1 opendns1 NOERROR twitter.com. 25 IN A 199.16.156.198 twitter.com. 25 IN A 199.16.156.102 twitter.com. 25 IN A 199.16.156.70 twitter.com. 25 IN A 199.16.156.230 | |
twitter.com pointer-1 opendns2 NOERROR twitter.com. 25 IN A 199.16.156.198 twitter.com. 25 IN A 199.16.156.102 twitter.com. 25 IN A 199.16.156.70 twitter.com. 25 IN A 199.16.156.230 | |
twitter.com pointer-1 twitter-ns1 | |
twitter.com pointer-1 twitter-ns2 | |
twitter.com pointer-1 he-dns FORMERR | |
twitter.com pointer-1 level3 NOERROR twitter.com. 18 IN A 199.16.156.38 twitter.com. 18 IN A 199.16.156.70 twitter.com. 18 IN A 199.16.156.6 twitter.com. 18 IN A 199.16.156.198 | |
twitter.com pointer-1 alidns1 | |
twitter.com pointer-1 alidns2 | |
twitter.com pointer-1 cnnic-dns1 | |
twitter.com pointer-1 v2ex-dns1 NOERROR twitter.com. 21 IN A 199.59.148.82 twitter.com. 21 IN A 199.59.149.198 twitter.com. 21 IN A 199.59.150.7 twitter.com. 21 IN A 199.59.148.10 | |
twitter.com pointer-1 unicom-sh1 REFUSED | |
twitter.com pointer-1 unicom-sh2 | |
twitter.com pointer-1 china-blackhole-1 | |
twitter.com pointer-1 china-blackhole-2 | |
twitter.com pointer-1 china-blackhole-3 | |
twitter.com pointer-1 china-blackhole-4 | |
example.com pointer-4 google-dns1 NOERROR example.com. 4182 IN A 93.184.216.119 | |
example.com pointer-4 google-dns2 NOERROR example.com. 4182 IN A 93.184.216.119 | |
example.com pointer-4 opendns1 NOERROR example.com. 28298 IN A 93.184.216.119 | |
example.com pointer-4 opendns2 NOERROR example.com. 30996 IN A 93.184.216.119 | |
example.com pointer-4 twitter-ns1 | |
example.com pointer-4 twitter-ns2 | |
example.com pointer-4 he-dns FORMERR | |
example.com pointer-4 level3 NOERROR example.com. 68961 IN A 93.184.216.119 | |
example.com pointer-4 alidns1 | |
example.com pointer-4 alidns2 | |
example.com pointer-4 cnnic-dns1 | |
example.com pointer-4 v2ex-dns1 NOERROR example.com. 14557 IN A 93.184.216.119 | |
example.com pointer-4 unicom-sh1 REFUSED | |
example.com pointer-4 unicom-sh2 | |
example.com pointer-4 china-blackhole-1 | |
example.com pointer-4 china-blackhole-2 | |
example.com pointer-4 china-blackhole-3 | |
example.com pointer-4 china-blackhole-4 | |
twitter.com pointer-4 google-dns1 NOERROR twitter.com. 19 IN A 199.16.156.38 twitter.com. 19 IN A 199.16.156.198 twitter.com. 19 IN A 199.16.156.6 twitter.com. 19 IN A 199.16.156.102 | |
twitter.com pointer-4 google-dns2 NOERROR twitter.com. 19 IN A 199.16.156.198 twitter.com. 19 IN A 199.16.156.38 twitter.com. 19 IN A 199.16.156.230 twitter.com. 19 IN A 199.16.156.70 | |
twitter.com pointer-4 opendns1 NOERROR twitter.com. 4 IN A 199.16.156.70 twitter.com. 4 IN A 199.16.156.6 twitter.com. 4 IN A 199.16.156.198 twitter.com. 4 IN A 199.16.156.38 | |
twitter.com pointer-4 opendns2 NOERROR twitter.com. 30 IN A 199.16.156.102 twitter.com. 30 IN A 199.16.156.230 twitter.com. 30 IN A 199.16.156.6 twitter.com. 30 IN A 199.16.156.38 | |
twitter.com pointer-4 twitter-ns1 | |
twitter.com pointer-4 twitter-ns2 | |
twitter.com pointer-4 he-dns FORMERR | |
twitter.com pointer-4 level3 FORMERR | |
twitter.com pointer-4 alidns1 | |
twitter.com pointer-4 alidns2 | |
twitter.com pointer-4 cnnic-dns1 | |
twitter.com pointer-4 v2ex-dns1 NOERROR twitter.com. 9 IN A 199.59.150.7 twitter.com. 9 IN A 199.59.148.82 twitter.com. 9 IN A 199.59.149.230 twitter.com. 9 IN A 199.59.148.10 | |
twitter.com pointer-4 unicom-sh1 REFUSED | |
twitter.com pointer-4 unicom-sh2 | |
twitter.com pointer-4 china-blackhole-1 | |
twitter.com pointer-4 china-blackhole-2 | |
twitter.com pointer-4 china-blackhole-3 | |
twitter.com pointer-4 china-blackhole-4 | |
example.com pointer-append google-dns1 NOERROR example.com. 4141 IN A 93.184.216.119 | |
example.com pointer-append google-dns2 NOERROR example.com. 4141 IN A 93.184.216.119 | |
example.com pointer-append opendns1 FORMERR | |
example.com pointer-append opendns2 FORMERR | |
example.com pointer-append twitter-ns1 | |
example.com pointer-append twitter-ns2 | |
example.com pointer-append he-dns parse error | |
example.com pointer-append level3 | |
example.com pointer-append alidns1 | |
example.com pointer-append alidns2 | |
example.com pointer-append cnnic-dns1 | |
example.com pointer-append v2ex-dns1 NOERROR example.com. 14513 IN A 93.184.216.119 | |
example.com pointer-append unicom-sh1 FORMERR | |
example.com pointer-append unicom-sh2 FORMERR | |
example.com pointer-append china-blackhole-1 | |
example.com pointer-append china-blackhole-2 | |
example.com pointer-append china-blackhole-3 | |
example.com pointer-append china-blackhole-4 | |
twitter.com pointer-append google-dns1 NOERROR twitter.com. 6 IN A 199.16.156.70 twitter.com. 6 IN A 199.16.156.230 twitter.com. 6 IN A 199.16.156.6 twitter.com. 6 IN A 199.16.156.198 | |
twitter.com pointer-append google-dns2 NOERROR twitter.com. 6 IN A 199.16.156.70 twitter.com. 6 IN A 199.16.156.38 twitter.com. 6 IN A 199.16.156.102 twitter.com. 6 IN A 199.16.156.6 | |
twitter.com pointer-append opendns1 FORMERR | |
twitter.com pointer-append opendns2 FORMERR | |
twitter.com pointer-append twitter-ns1 | |
twitter.com pointer-append twitter-ns2 | |
twitter.com pointer-append he-dns parse error | |
twitter.com pointer-append level3 parse error | |
twitter.com pointer-append alidns1 | |
twitter.com pointer-append alidns2 | |
twitter.com pointer-append cnnic-dns1 | |
twitter.com pointer-append v2ex-dns1 NOERROR twitter.com. 25 IN A 199.59.148.82 twitter.com. 25 IN A 199.59.149.198 twitter.com. 25 IN A 199.59.148.10 twitter.com. 25 IN A 199.59.150.39 | |
twitter.com pointer-append unicom-sh1 FORMERR | |
twitter.com pointer-append unicom-sh2 FORMERR | |
twitter.com pointer-append china-blackhole-1 | |
twitter.com pointer-append china-blackhole-2 | |
twitter.com pointer-append china-blackhole-3 | |
twitter.com pointer-append china-blackhole-4 | |
example.com pointer-append-rr google-dns1 NOERROR example.com. 4100 IN A 93.184.216.119 | |
example.com pointer-append-rr google-dns2 NOERROR example.com. 4100 IN A 93.184.216.119 | |
example.com pointer-append-rr opendns1 FORMERR | |
example.com pointer-append-rr opendns2 FORMERR | |
example.com pointer-append-rr twitter-ns1 | |
example.com pointer-append-rr twitter-ns2 | |
example.com pointer-append-rr he-dns parse error | |
example.com pointer-append-rr level3 parse error | |
example.com pointer-append-rr alidns1 | |
example.com pointer-append-rr alidns2 | |
example.com pointer-append-rr cnnic-dns1 | |
example.com pointer-append-rr v2ex-dns1 NOERROR example.com. 14474 IN A 93.184.216.119 | |
example.com pointer-append-rr unicom-sh1 FORMERR | |
example.com pointer-append-rr unicom-sh2 FORMERR | |
example.com pointer-append-rr china-blackhole-1 | |
example.com pointer-append-rr china-blackhole-2 | |
example.com pointer-append-rr china-blackhole-3 | |
example.com pointer-append-rr china-blackhole-4 | |
twitter.com pointer-append-rr google-dns1 NOERROR twitter.com. 26 IN A 199.16.156.102 twitter.com. 26 IN A 199.16.156.230 twitter.com. 26 IN A 199.16.156.38 twitter.com. 26 IN A 199.16.156.198 | |
twitter.com pointer-append-rr google-dns2 NOERROR twitter.com. 26 IN A 199.16.156.198 twitter.com. 26 IN A 199.16.156.230 twitter.com. 26 IN A 199.16.156.38 twitter.com. 26 IN A 199.16.156.70 | |
twitter.com pointer-append-rr opendns1 FORMERR | |
twitter.com pointer-append-rr opendns2 FORMERR | |
twitter.com pointer-append-rr twitter-ns1 | |
twitter.com pointer-append-rr twitter-ns2 | |
twitter.com pointer-append-rr he-dns parse error | |
twitter.com pointer-append-rr level3 NOERROR twitter.com. 4 IN A 199.16.156.230 twitter.com. 4 IN A 199.16.156.6 twitter.com. 4 IN A 199.16.156.198 twitter.com. 4 IN A 199.16.156.38 | |
twitter.com pointer-append-rr alidns1 | |
twitter.com pointer-append-rr alidns2 | |
twitter.com pointer-append-rr cnnic-dns1 | |
twitter.com pointer-append-rr v2ex-dns1 NOERROR twitter.com. 16 IN A 199.59.148.10 twitter.com. 16 IN A 199.59.148.82 twitter.com. 16 IN A 199.59.149.198 twitter.com. 16 IN A 199.59.150.7 | |
twitter.com pointer-append-rr unicom-sh1 FORMERR | |
twitter.com pointer-append-rr unicom-sh2 FORMERR | |
twitter.com pointer-append-rr china-blackhole-1 | |
twitter.com pointer-append-rr china-blackhole-2 | |
twitter.com pointer-append-rr china-blackhole-3 | |
twitter.com pointer-append-rr china-blackhole-4 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment