cleanup
This commit is contained in:
		
							parent
							
								
									4ecb1b679c
								
							
						
					
					
						commit
						f3a3c477a5
					
				
							
								
								
									
										90
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										90
									
								
								README.md
									
									
									
									
									
								
							@ -1,3 +1,87 @@
 | 
				
			|||||||
 | 
					dns-lint
 | 
				
			||||||
 | 
					========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fast, lightweight, **pure JavaScript** (ES5.1) implementation for DNS / mDNS.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Works great in **Web Browsers** and in node.js!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Details error checking makes it great for
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* capture
 | 
				
			||||||
 | 
					* packing (JSON to DNS)
 | 
				
			||||||
 | 
					* parsing (DNS to JSON)
 | 
				
			||||||
 | 
					* linting (finding errors in packets)
 | 
				
			||||||
 | 
					* debugging
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**No external dependencies** for modern browsers. Uses `DataView`, `Uint8Array`, `Uint16Array`, and `ArrayBuffer`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Similar API to `dns.js` and `native-dns-packet`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					npm install git+https://git@git.daplie.com:Daplie/dns-lint
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Usage
 | 
				
			||||||
 | 
					-----
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**CLI**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can work directly from `node_modules/dns-lint`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					pushd node_modules/dns-lint/
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Capture mDNS broadcast packets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# example
 | 
				
			||||||
 | 
					# node bin/mdns-capture.js <file-prefix>
 | 
				
			||||||
 | 
					node bin/mdns-capture.js mdns-test
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# in another terminal
 | 
				
			||||||
 | 
					dig @224.0.0.251 -p 5353 -t PTR _services._dns-sd._udp.local
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Parsing a saved packet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# example
 | 
				
			||||||
 | 
					# node bin/dns-parse.js </path/to/packet.dns.bin>
 | 
				
			||||||
 | 
					node bin/dns-parse.js samples/a-0.mdns.bin
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Library**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* `packet = dnsjs.unpack(arrayBuffer)`
 | 
				
			||||||
 | 
					* `packet = dnsjs.unpackRdatas(arrayBuffer, packet)`
 | 
				
			||||||
 | 
					* `packet.answers[0].data = dnsjs.unpackRdatas(arrayBuffer, packet, packet.answers[0])`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					node.js:
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					var nodeBuffer = fs.readFileSync('./samples/a-0.mdns.bin');
 | 
				
			||||||
 | 
					var arrayBuffer = nodeBuffer.buffer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var dnsjs = require('dns-lint');
 | 
				
			||||||
 | 
					var packet = dnsjs.unpack(arrayBuffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					console.log(packet);
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Browser:
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					var arrayBuffer = new Uint8Array.from([ /* bytes */ ]).buffer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var packet = pdns.unpack(arrayBuffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					console.log(packet);
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mDNS Documentation
 | 
					mDNS Documentation
 | 
				
			||||||
====
 | 
					====
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -69,7 +153,7 @@ which is located in the node.js buffer module. The API is [here](https://nodejs.
 | 
				
			|||||||
However, the error we are working with will most likely be dealt with by parsing through the binary
 | 
					However, the error we are working with will most likely be dealt with by parsing through the binary
 | 
				
			||||||
and putting it in a format that is acceptable to a custom buffer, since the current buffer.js does doesn't seem to do the trick.
 | 
					and putting it in a format that is acceptable to a custom buffer, since the current buffer.js does doesn't seem to do the trick.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Using 
 | 
					Using
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```javascript
 | 
					```javascript
 | 
				
			||||||
function pad(str, len, ch) {
 | 
					function pad(str, len, ch) {
 | 
				
			||||||
@ -170,7 +254,7 @@ function parseFlags(val, packet) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
One effective way to check is to create a dns packet, pass it to 
 | 
					One effective way to check is to create a dns packet, pass it to
 | 
				
			||||||
a custom packer and parser function and compare the input and output:
 | 
					a custom packer and parser function and compare the input and output:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```javascript
 | 
					```javascript
 | 
				
			||||||
@ -257,6 +341,6 @@ socket.on('message', function (message, rinfo) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DNS sec: security 
 | 
					DNS sec: security
 | 
				
			||||||
puts a signature on a DNS packet and imprints a signature so that the sender of
 | 
					puts a signature on a DNS packet and imprints a signature so that the sender of
 | 
				
			||||||
the packet is confirmed
 | 
					the packet is confirmed
 | 
				
			||||||
 | 
				
			|||||||
@ -25,11 +25,13 @@ handlers.onError = function (err) {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
handlers.onMessage = function (buffer) {
 | 
					handlers.onMessage = function (buffer) {
 | 
				
			||||||
  var path = require('path');
 | 
					  var path = require('path');
 | 
				
			||||||
  var name = type + '-' + count + '.mdns.bin';
 | 
					  var filename = type + '-' + count + '.mdns.bin';
 | 
				
			||||||
 | 
					  var fullpath = path.join('samples', filename);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  count += 1;
 | 
					  count += 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  fs.writeFileAsync(path.join('samples', name), buffer).then(function () {
 | 
					  fs.writeFileAsync(fullpath, buffer).then(function () {
 | 
				
			||||||
    console.log('wrote ' + buffer.length + ' bytes to ' + name);
 | 
					    console.log('wrote ' + buffer.length + ' bytes to ' + fullpath);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
handlers.onListening = function () {
 | 
					handlers.onListening = function () {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user