diff --git a/mdns-udp-capturer.js b/mdns-udp-capturer.js new file mode 100644 index 0000000..9b2901e --- /dev/null +++ b/mdns-udp-capturer.js @@ -0,0 +1,57 @@ +'use strict'; + +// pass a terminal arg +var type = process.argv[2] || 'unknown'; +var count = parseInt(process.argv[3]) || 0; +if (!type) { + console.error("Usage: node aj-listener.js [count]"); + console.error("Example: node aj-listener.js _service 0"); + process.exit(1); +} + +var PromiseA = require('bluebird'); +var fs = PromiseA.promisifyAll(require('fs')); +var dgram = require('dgram'); +var server = dgram.createSocket({ + type: 'udp4' +, reuseAddr: true +}); + + +var handlers = {}; +handlers.onError = function (err) { + console.error("error:", err.stack); + server.close(); +}; +handlers.onMessage = function (buffer) { + var name; + + if (!count) { + name = type + '-' + count + '.mdns.bin'; + } + else { + // probably the same device name responding + name = type + '-' + buffer.length + '.mdns.bin'; + } + + fs.writeFileAsync(name, buffer).then(function () { + console.log('wrote ' + buffer.length + ' bytes to ' + name); + }); +}; +handlers.onListening = function () { + /*jshint validthis:true*/ + var server = this; + console.log(server.address()); + + server.setBroadcast(true); + server.addMembership('224.0.0.251'); +}; + + +server.on('error', handlers.onError); +server.on('message', handlers.onMessage); +server.on('listening', handlers.onListening); + +// 53 dns +// 5353 mdns +server.bind(5353); diff --git a/samples/README.md b/samples/README.md new file mode 100644 index 0000000..53b466b --- /dev/null +++ b/samples/README.md @@ -0,0 +1,12 @@ +These samples were captured by running a generic udp listener and then running dig to create a query. + +Most likely the 0th samples are the query from dig and the other immediately numbered samples are responses to that query... + +However, devices broadcast mDNS packets pretty much at random, so there'll be some other goodies in there too. + +``` +dig @224.0.0.251 -p 5353 -t ptr _services._dns-sd._udp.local +dig @224.0.0.251 -p 5353 -t ptr _ssh._tcp.local +dig @224.0.0.251 -p 5353 -t ptr _sftp-ssh._tcp.local +dig @224.0.0.251 -p 5353 -t A bowie._sftp-ssh._tcp.local +``` diff --git a/samples/a-0.mdns.bin b/samples/a-0.mdns.bin new file mode 100644 index 0000000..19db915 Binary files /dev/null and b/samples/a-0.mdns.bin differ diff --git a/samples/a-1.mdns.bin b/samples/a-1.mdns.bin new file mode 100644 index 0000000..c15c3d8 Binary files /dev/null and b/samples/a-1.mdns.bin differ diff --git a/samples/random-0.mdns.bin b/samples/random-0.mdns.bin new file mode 100644 index 0000000..26e559b Binary files /dev/null and b/samples/random-0.mdns.bin differ diff --git a/samples/random-1.mdns.bin b/samples/random-1.mdns.bin new file mode 100644 index 0000000..c00bf52 Binary files /dev/null and b/samples/random-1.mdns.bin differ diff --git a/samples/random-2.mdns.bin b/samples/random-2.mdns.bin new file mode 100644 index 0000000..4d4a80b Binary files /dev/null and b/samples/random-2.mdns.bin differ diff --git a/samples/random-3.mdns.bin b/samples/random-3.mdns.bin new file mode 100644 index 0000000..11f2bc6 Binary files /dev/null and b/samples/random-3.mdns.bin differ diff --git a/samples/services-0.mdns.bin b/samples/services-0.mdns.bin new file mode 100644 index 0000000..061f627 Binary files /dev/null and b/samples/services-0.mdns.bin differ diff --git a/samples/services-1.mdns.bin b/samples/services-1.mdns.bin new file mode 100644 index 0000000..8d01736 Binary files /dev/null and b/samples/services-1.mdns.bin differ diff --git a/samples/services-2.mdns.bin b/samples/services-2.mdns.bin new file mode 100644 index 0000000..3a0d326 Binary files /dev/null and b/samples/services-2.mdns.bin differ diff --git a/samples/services-3.mdns.bin b/samples/services-3.mdns.bin new file mode 100644 index 0000000..98ec82d Binary files /dev/null and b/samples/services-3.mdns.bin differ diff --git a/samples/sftp-ssh-0.mdns.bin b/samples/sftp-ssh-0.mdns.bin new file mode 100644 index 0000000..fdeb400 Binary files /dev/null and b/samples/sftp-ssh-0.mdns.bin differ diff --git a/samples/sftp-ssh-1.mdns.bin b/samples/sftp-ssh-1.mdns.bin new file mode 100644 index 0000000..d18aeac Binary files /dev/null and b/samples/sftp-ssh-1.mdns.bin differ diff --git a/samples/sftp-ssh-2.mdns.bin b/samples/sftp-ssh-2.mdns.bin new file mode 100644 index 0000000..592a7cf Binary files /dev/null and b/samples/sftp-ssh-2.mdns.bin differ diff --git a/samples/sftp-ssh-3.mdns.bin b/samples/sftp-ssh-3.mdns.bin new file mode 100644 index 0000000..592a7cf Binary files /dev/null and b/samples/sftp-ssh-3.mdns.bin differ diff --git a/samples/sftp-ssh-4.mdns.bin b/samples/sftp-ssh-4.mdns.bin new file mode 100644 index 0000000..2822ea5 Binary files /dev/null and b/samples/sftp-ssh-4.mdns.bin differ diff --git a/samples/sftp-ssh-5.mdns.bin b/samples/sftp-ssh-5.mdns.bin new file mode 100644 index 0000000..2822ea5 Binary files /dev/null and b/samples/sftp-ssh-5.mdns.bin differ diff --git a/samples/ssh-ptr-0.mdns.bin b/samples/ssh-ptr-0.mdns.bin new file mode 100644 index 0000000..5aaf066 Binary files /dev/null and b/samples/ssh-ptr-0.mdns.bin differ diff --git a/samples/ssh-ptr-1.mdns.bin b/samples/ssh-ptr-1.mdns.bin new file mode 100644 index 0000000..f239e6f Binary files /dev/null and b/samples/ssh-ptr-1.mdns.bin differ diff --git a/samples/ssh-ptr-3.mdns.bin b/samples/ssh-ptr-3.mdns.bin new file mode 100644 index 0000000..cb2cd9c Binary files /dev/null and b/samples/ssh-ptr-3.mdns.bin differ diff --git a/samples/ssh-ptr-4.mdns.bin b/samples/ssh-ptr-4.mdns.bin new file mode 100644 index 0000000..8998d66 Binary files /dev/null and b/samples/ssh-ptr-4.mdns.bin differ