now captures packets, yay!
This commit is contained in:
parent
e23046f736
commit
578f57bf10
|
@ -62,8 +62,9 @@ Options
|
||||||
```
|
```
|
||||||
--debug
|
--debug
|
||||||
--mdns
|
--mdns
|
||||||
-t <type> (superfluous)
|
--output <path/to/file> write query and response(s) to disk with this path prefix (ex: ./samples/dns)
|
||||||
-c <class>
|
-t <type> (superfluous) default ANY (mdns default: PTR)
|
||||||
-p <port>
|
-c <class> default IN
|
||||||
-q <query> (superfluous)
|
-p <port> default 53 (mdns default: 5353) (listener is random for DNS and 5353 for mDNS)
|
||||||
|
-q <query> (superfluous) required (ex: daplie.com)
|
||||||
```
|
```
|
||||||
|
|
41
bin/dig.js
41
bin/dig.js
|
@ -87,6 +87,35 @@ function hexdump(ab) {
|
||||||
return head + '\n' + str + '\n' + trail;
|
return head + '\n' + str + '\n' + trail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function writeQuery(opts, query, queryAb) {
|
||||||
|
var path = require('path');
|
||||||
|
var filename = query.question[0].name + '.' + query.question[0].typeName.toLowerCase() + '.query.bin';
|
||||||
|
var fullpath = opts.output + '.' + filename;
|
||||||
|
if (-1 !== ['.', '/', '\\' ].indexOf(opts.output[opts.output.length -1])) {
|
||||||
|
fullpath = path.join(opts.output, filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.writeFileAsync(fullpath, Buffer.from(queryAb)).then(function () {
|
||||||
|
console.log('wrote ' + queryAb.byteLength + ' bytes to ' + fullpath);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var count = 0;
|
||||||
|
function writeResponse(opts, query, nb) {
|
||||||
|
var path = require('path');
|
||||||
|
var filename = query.question[0].name + '.' + query.question[0].typeName.toLowerCase() + '.' + count + '.bin';
|
||||||
|
var fullpath = opts.output + '.' + filename;
|
||||||
|
if (-1 !== ['.', '/', '\\' ].indexOf(opts.output[opts.output.length -1])) {
|
||||||
|
fullpath = path.join(opts.output, filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
count += 1;
|
||||||
|
|
||||||
|
fs.writeFileAsync(fullpath, nb).then(function () {
|
||||||
|
console.log('wrote ' + nb.length + ' bytes to ' + fullpath);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function request(query, opts) {
|
function request(query, opts) {
|
||||||
var queryAb = dnsjs.DNSPacket.write(query);
|
var queryAb = dnsjs.DNSPacket.write(query);
|
||||||
|
|
||||||
|
@ -102,7 +131,6 @@ function request(query, opts) {
|
||||||
console.log('');
|
console.log('');
|
||||||
}
|
}
|
||||||
|
|
||||||
var count = 0;
|
|
||||||
var handlers = {};
|
var handlers = {};
|
||||||
var server = dgram.createSocket({
|
var server = dgram.createSocket({
|
||||||
type: 'udp4'
|
type: 'udp4'
|
||||||
|
@ -164,14 +192,9 @@ function request(query, opts) {
|
||||||
console.log('');
|
console.log('');
|
||||||
|
|
||||||
if (opts.output) {
|
if (opts.output) {
|
||||||
var filename = packet.question[0].typeName + '-' + count + '.bin';
|
console.log('');
|
||||||
var fullpath = opts.output + filename;
|
writeQuery(opts, query, queryAb);
|
||||||
|
writeResponse(opts, query, nb);
|
||||||
count += 1;
|
|
||||||
|
|
||||||
return fs.writeFileAsync(fullpath, nb).then(function () {
|
|
||||||
console.log('wrote ' + nb.length + ' bytes to ' + fullpath);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
handlers.onListening = function () {
|
handlers.onListening = function () {
|
||||||
|
|
Loading…
Reference in New Issue