1. tcpdump/cookie
ここで解析して、構造を把握して、python/dnslibで記述すると、
DNS cookiesを扱うためのリゾルバー(雛型)ができそう。-- ToshinoriMaeno 2017-04-08 08:10:22
$ dig dns1.prevosti.ch @a.nic.ch
; <<>> DiG 9.11.0-P3 <<>> dns1.prevosti.ch @a.nic.ch ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33823 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 3 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 9674127b7fd96ebf7574f55d58e86f33e7cc59c6e6d39ee7 (good) ;; QUESTION SECTION: ;dns1.prevosti.ch. IN A ;; AUTHORITY SECTION: prevosti.ch. 3600 IN NS dns6.prevosti.ch. prevosti.ch. 3600 IN NS dns1.prevosti.ch. ;; ADDITIONAL SECTION: dns1.prevosti.ch. 3600 IN A 193.93.22.133 dns6.prevosti.ch. 3600 IN A 193.93.21.220 ;; Query time: 288 msec ;; SERVER: 130.59.31.41#53(130.59.31.41) ;; WHEN: Sat Apr 08 14:03:47 JST 2017 ;; MSG SIZE rcvd: 138
14:03:47.768855 IP (tos 0x0, ttl 48, id 37429, offset 0, flags [none], proto UDP (17),length 166) a.nic.ch.domain > ubuntu.55226: [udp sum ok] 33823- q: A? dns1.prevosti.ch. 0/2/3 ns: prevosti.ch. NS dns6.prevosti.ch., prevosti.ch. NS dns1.prevosti.ch. ar: dns1.prevosti.ch. A 193.93.22.133, dns6.prevosti.ch. A 193.93.21.220, . OPT UDPsize=4096 (138)
これが返答パケット全体らしい。
1.1. header部分
130.59.31.41 = 823b 1f29
- *** = c0a8 0a07
0035 = 53 source port (サーバ側)
UDP Length = 0092
additional sectionの数が3であることに注意。
- (あとはEDNS flagを確認しなければ)
dns1.prevosti.ch. (0464 6e73 3108 7072 6576 6f73 7469 0263 6800)
0x0000: 4500 00a6 9235 0000 3011 8bfe 823b 1f29 0x0010: c0a8 0a07 0035 d7ba 0092 0acc 841f 8100 0x0020: 0001 0000 0002 0003 0464 6e73 3108 7072 0x0030: 6576 6f73 7469 0263 6800 0001 0001 c011 0x0040: 0002 0001 0000 0e10 0007 0464 6e73 36c0 0x0050: 11c0 1100 0200 0100 000e 1000 02c0 0cc0 0x0060: 0c00 0100 0100 000e 1000 04c1 5d16 85c0 0x0070: 2e00 0100 0100 000e 1000 04c1 5d15 dc00 0x0080: 0029 1000 0000 0000 001c 000a 0018 9674 0x0090: 127b 7fd9 6ebf 7574 f55d 58e8 6f33 e7cc 0x00a0: 59c6 e6d3 9ee7
3600 = 0e10 (x) TTL
04c1 5d16 85 = 193.93.22.133 (Additional)
04c1 5d15 dc = 193.93.21.220
138 = 8A, これにUDPヘッダが付くのか。
ここの最後の部分にcookieらしきものがある。9674127b7fd96ebf7574f55d58e86f33e7cc59c6e6d39ee7
クライアントのIPアドレスも含まれているらしいが、まあいい。w -- ToshinoriMaeno 2017-04-08 05:53:36