| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | dig.js | 
					
						
							|  |  |  | ====== | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-27 23:50:37 -06:00
										 |  |  | | [dns-suite](https://git.coolaj86.com/coolaj86/dns-suite) | 
					
						
							|  |  |  | | **dig.js** | 
					
						
							| 
									
										
										
										
											2017-11-02 23:47:58 -06:00
										 |  |  | | [mdig.js](https://git.coolaj86.com/coolaj86/mdig.js) | 
					
						
							| 
									
										
										
										
											2017-10-27 23:50:37 -06:00
										 |  |  | | [digd.js](https://git.coolaj86.com/coolaj86/digd.js) | 
					
						
							| 
									
										
										
										
											2018-03-20 20:11:57 -06:00
										 |  |  | | Sponsored by [ppl](https://ppl.family)[.](https://dapliefounder.com) | 
					
						
							| 
									
										
										
										
											2017-10-02 11:30:32 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | Create and capture DNS and mDNS query and response packets to disk as binary and/or JSON. | 
					
						
							| 
									
										
										
										
											2017-10-02 16:43:58 -06:00
										 |  |  | Options are similar to the Unix `dig` command. Supports dns0x20 security checking. | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-02 11:50:02 -06:00
										 |  |  | Install | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | ------- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-02 11:50:02 -06:00
										 |  |  | ### with git
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | ```bash | 
					
						
							| 
									
										
										
										
											2017-02-23 16:55:24 -07:00
										 |  |  | # Install the latest of v1.x
 | 
					
						
							| 
									
										
										
										
											2017-10-27 23:43:59 -06:00
										 |  |  | npm install -g 'git+https://git.coolaj86.com/coolaj86/dig.js.git#v1' | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 16:55:24 -07:00
										 |  |  | ```bash | 
					
						
							|  |  |  | # Install exactly v1.0.0
 | 
					
						
							| 
									
										
										
										
											2017-10-27 23:43:59 -06:00
										 |  |  | npm install -g 'git+https://git.coolaj86.com/coolaj86/dig.js.git#v1.0.0' | 
					
						
							| 
									
										
										
										
											2017-02-23 16:55:24 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-02 11:50:02 -06:00
										 |  |  | ### without git
 | 
					
						
							| 
									
										
										
										
											2017-02-23 16:55:24 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | Don't have git? Well, you can also bow down to the gods of the centralized, monopolized, concentrated, *dictator*net | 
					
						
							| 
									
										
										
										
											2018-03-20 20:11:57 -06:00
										 |  |  | (as we like to call it here at ppl Labs), if that's how you roll: | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							|  |  |  | npm install -g dig.js | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Usage | 
					
						
							|  |  |  | ----- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							|  |  |  | dig.js [TYPE] <domainname> | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-02 11:50:02 -06:00
										 |  |  | **Example**: | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							| 
									
										
										
										
											2018-03-20 20:11:57 -06:00
										 |  |  | dig.js coolaj86.com | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### mDNS Browser Example
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This is pretty much an mDNS browser | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							|  |  |  | dig.js --mdns _services._dns-sd._udp.local | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Really the `--mdns` option is just an alias for setting all of these options as the default: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							| 
									
										
										
										
											2017-02-23 18:22:16 -07:00
										 |  |  | dig.js -p 5353 @224.0.0.251 PTR _services._dns-sd._udp.local +time=3 | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Moar Examples
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							| 
									
										
										
										
											2018-03-20 20:11:57 -06:00
										 |  |  | dig.js A coolaj86.com | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-20 20:11:57 -06:00
										 |  |  | dig.js @8.8.8.8 A coolaj86.com | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options | 
					
						
							|  |  |  | ------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2017-02-17 20:18:19 -07:00
										 |  |  | --output <path/to/file>     write query and response(s) to disk with this path prefix (ex: ./samples/dns) | 
					
						
							| 
									
										
										
										
											2017-10-02 11:52:50 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | --mdns                      Use mDNS port and nameserver address, and listen for multiple packets | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-09 14:45:07 -06:00
										 |  |  | -t <type> (superfluous)     A, CNAME, MX, etc. Also supports -t type<decimal> for "unsupported" types. default ANY (mdns default: PTR) | 
					
						
							| 
									
										
										
										
											2017-02-17 20:18:19 -07:00
										 |  |  | -c <class>                  default IN | 
					
						
							|  |  |  | -p <port>                   default 53 (mdns default: 5353) (listener is random for DNS and 5353 for mDNS) | 
					
						
							| 
									
										
										
										
											2018-03-20 20:11:57 -06:00
										 |  |  | -q <query> (superfluous)    required (ex: coolaj86.com) | 
					
						
							| 
									
										
										
										
											2017-10-02 11:46:55 -06:00
										 |  |  | --nameserver <ns>           alias of @<nameserver> | 
					
						
							|  |  |  | --timeout <ms>              alias of +time=<seconds>, but in milliseconds | 
					
						
							| 
									
										
										
										
											2017-02-23 17:31:09 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-02 11:46:55 -06:00
										 |  |  | @<nameserver>               specify the nameserver to use for DNS resolution (defaults to system defaults) | 
					
						
							| 
									
										
										
										
											2017-02-23 17:31:09 -07:00
										 |  |  | +time=<seconds>             Sets the timeout for a query in seconds. | 
					
						
							| 
									
										
										
										
											2017-10-02 11:46:55 -06:00
										 |  |  | +norecurse                  Set `rd` flag to 0. Do not request recursion | 
					
						
							|  |  |  | +aaonly                     Set `aa` flag to 1. | 
					
						
							| 
									
										
										
										
											2017-10-02 11:52:50 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-02 16:43:58 -06:00
										 |  |  | --norecase         					Disable dns0x20 security checking (mixed casing). See https://dyn.com/blog/use-of-bit-0x20-in-dns-labels/ | 
					
						
							|  |  |  | --recase           					Print the dns0x20 casing as-is rather than converting it back to lowercase. This is the default when explicitly using mixed case. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-02 11:52:50 -06:00
										 |  |  | --debug                     verbose output | 
					
						
							| 
									
										
										
										
											2017-02-17 19:07:02 -07:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2017-10-06 18:42:37 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | Security Concerns | 
					
						
							|  |  |  | ----------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The 16-bit `id` of the query must match that of the response. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Extra entropy is added by using `dns0x20`, the de facto standard for RanDOmCASiNg on the query which must be matched in the response. |