2014-11-14 20 views
0

目前我試圖嘲弄的查詢要求_printer._tcp.localRDATA領域Wireshark的未知擴展標籤通過Scapy的結果發送

一個DNS-SD回覆我正在與Scapy的發送後面是:

send(IP(dst="224.0.0.251")/UDP(sport=5353,dport=5353)/DNS(aa=1, qr=1,rd=0,an=DNSRR(rrname='_printer._tcp.local', type="PTR", rclass=1, ttl=100, rdata="Devon's awesome printer._printer._tcp.local"))) 

然而,當我在Wireshark的檢查我收到以下錯誤信息包

_printer._tcp.local: type PTR, class IN, <Unknown extended label> 

我想我有我送一些錯誤的參數functi上。但是,我嘗試了一些變化,我似乎無法讓它正常工作(我與來自打印機的實際回覆相比,而且看起來相同)。

任何人都可以幫我解決正確的參數嗎?提前致謝!

回答

1

這是一個突出的問題,可以在scapy's issue tracker上看到。

因此,你必須編碼自己rdata領域,具體如下:

from scapy.all import * 
import struct 

label = "Devon's awesome printer._printer._tcp.local" 
sublabels = label.split(".") + [""] 
label_format = "" 

for s in sublabels: 
    label_format = '%s%dp' % (label_format, len(s) + 1) 

label_data = struct.pack(label_format, *sublabels) 

send(IP(dst="224.0.0.251")/UDP(sport=5353,dport=5353)/DNS(aa=1,qr=1,rd=0,an=DNSRR(rrname='_printer._tcp.local',type="PTR",rclass=1,ttl=100,rdata=label_data)))