diff options
Diffstat (limited to '')
-rwxr-xr-x | examples/dumpdns2pcap.lua | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/examples/dumpdns2pcap.lua b/examples/dumpdns2pcap.lua new file mode 100755 index 0000000..08656cc --- /dev/null +++ b/examples/dumpdns2pcap.lua @@ -0,0 +1,38 @@ +#!/usr/bin/env dnsjit +local pcap_in = arg[2] +local pcap_out = arg[3] + +if pcap_in == nil or pcap_out == nil then + print("usage: "..arg[1].." <pcap in> <pcap out>") + return +end + +local object = require("dnsjit.core.objects") +local input = require("dnsjit.input.pcap").new() +local layer = require("dnsjit.filter.layer").new() +local dns = require("dnsjit.core.object.dns").new() +local output = require("dnsjit.output.pcap").new() + +input:open_offline(pcap_in) +layer:producer(input) +local producer, ctx = layer:produce() + +output:open(pcap_out, input:linktype(), input:snaplen()) +local receiver, rctx = output:receive() + +local n = 0 +while true do + local obj = producer(ctx) + if obj == nil then break end + local pl = obj:cast() + if obj:type() == "payload" and pl.len > 0 then + dns.obj_prev = obj + if dns:parse_header() == 0 then + receiver(rctx, obj) + n = n + 1 + end + end +end + +output:close() +print(n, "DNS packets dumped") |