|
|
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 lingg 于 2013-6-20 13:29 编辑
audreamer 发表于 2013-6-19 21:38 
这些当然是标准化的数据结构啦,DNS这些通讯数据结构在RFC 1035里定义,你去参考这个官方网址(http://www. ...
非常感谢,我昨天找到这个RFC以后,最后还是CHEAT了
关于NAME这一块的转换。。看了文档,还是不知道怎么把字符串转换成对应的值,
没时间钻研了,麻烦有知道的同学科普一下,谢谢了
最后走的DUMP包,WIRESHARK开包,
然后做一个带 NAME的QUERY,拆了包拿的对应的值- 4.1.2. Question section format
- 1 1 1 1 1 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | |
- / QNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | QTYPE |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | QCLASS |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
复制代码 下面打开包里的这个部分,对应第一贴的数据结构:
- diff -Naur a/src/protocols/dns.c b/src/protocols/dns.c
- --- a/src/protocols/dns.c 2013-06-20 13:03:55.999891664 +1000
- +++ b/src/protocols/dns.c 2013-06-20 13:07:22.087892847 +1000
- @@ -59,9 +59,9 @@
- int rc;
- unsigned char buf[STRLEN];
- unsigned char *response = NULL;
- - unsigned char request[19] = {
- + unsigned char request[29] = {
- 0x00, /** Request Length field for DNS via TCP */
- - 0x11,
- + 0x1b,
- 0x00, /** Transaction ID */
- 0x01,
- @@ -82,7 +82,16 @@
- 0x00,
- /** Query: */
- -
- + 0x05, /** Name: xxxxx.net - Start */
- + 0xY1,
- + 0xY2,
- + 0xY3,
- + 0xY4,
- + 0xY5,
- + 0x03,
- + 0xY6,
- + 0xY7,
- + 0xY8, /** Name: xxxxx.net - End, overwrite default monit Name below */
- 0x00, /** Name: DNS root (empty string) */
- 0x00, /** Type: NS */
复制代码 有2个地方要注意,根据选取的NAME不同,长度要改,具体的NAME要改。
只说一下NAME的格式,一个长度后面接一个DATA,最后以00收尾,xxxxx.net 拆成
QNAME LengthOctet: 0x05 (5)
QNAME Data: xxxxx - 请自行转换成 C ARRAY格式,WIRESHARK里面有这个功能。
QNAME LengthOctet: 0x03 (3)
QNAME Data: net 对应 PATCH中的
+ 0xY6,
+ 0xY7,
+ 0xY8,
再次感谢楼上的
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|