2014-01-27 56 views
2

當我做Scapy的總結DNS答

.summary()

與Scapy的,我得到以下結果返回

'DNS Ans "ee-in-f139.1e100.net."' 

有Scapy的中的任何過濾器,只返回

"ee-in-f139.1e100.net" 

或者是我唯一的選擇去除字符串?

@ RyPeck

此時

get hostname(ip): 

    ip = x.split('.') 
    ip.reverse() 
    x = '.'.join(ip) + ".in-addr.arpa" 

    answer = sr1(IP(dst="8.8.8.8")/UDP(dport=53)/DNS(rd=1, qd=DNSQR(qname= ip , qtype='PTR')), verbose = 0) 
    filter = answer[DNS].summary() 
    filter = filter.strip('DNS Ans ') 
    filter = filter.strip('."') 

這給我回的主機名和我過濾掉了DNS答案。我希望scapy只是返回主機名而不需要我過濾它。

+0

你能發表一個你跑得到答案的例子嗎? – RyPeck

+1

@ RyPeck 請參閱更新 – Beardage

+0

您是否需要使用Scapy進行反向查找? – RyPeck

回答

2

當然。

def gethostname(ip): 
    ip = ip.split('.') 
    ip.reverse() 
    ip = '.'.join(ip) + ".in-addr.arpa" 
    answer = sr1(IP(dst="8.8.8.8")/UDP(dport=53)/DNS(rd=1, qd=DNSQR(qname= ip , qtype='PTR')), verbose = 0) 
    #answer.show() 
    return answer["DNS"].an.rdata[:-1] 

我所做的: 而不是使用.summary()的,我只是拆開了答案:["DNS"]給DNS層,.an給出給出了答案,.rdata是您要的實際數據,並[:-1]剝掉最後一個點,因爲按照RFC1034中的規定,完全限定域名(FQDN)始終以尾隨.結尾。如果你想看到整個數據包,你應該只取消評論anser.show()