node-pcap / node_pcap

libpcap bindings for node
MIT License
930 stars 254 forks source link

Can't get DNS packet from a UDP packet #277

Open coconut750750 opened 3 years ago

coconut750750 commented 3 years ago

The UDP object doesn't expose decoded DNS data if the sport or dport are 53. It just saves the data as this.data:

this.data = raw_packet.slice(offset, offset + (this.length - 8));

However, it does decode DNS in the toString() function:

UDP.prototype.toString = function () {
    var ret = "UDP " + this.sport + "->" + this.dport + " len " + this.length;
    if (this.sport === 53 || this.dport === 53) {
        ret += (new DNS().decode(this.data, 0, this.data.length).toString());
    }
    return ret;
};

Moreover, the pcap library doesn't export the DNS decoder for a developer to manually decode DNS.

Is there a way to get the decoded DNS packet from a UDP packet?

Thanks