dig.js/README.md

103 lines
2.8 KiB
Markdown
Raw Normal View History

2017-02-18 02:07:02 +00:00
dig.js
======
2017-10-28 05:50:37 +00:00
| [dns-suite](https://git.coolaj86.com/coolaj86/dns-suite)
| **dig.js**
| [digd.js](https://git.coolaj86.com/coolaj86/digd.js)
2017-10-29 03:40:05 +00:00
| Sponsored by [Daplie](https://daplie.com).
2017-10-02 17:30:32 +00:00
2017-02-18 02:07:02 +00:00
Create and capture DNS and mDNS query and response packets to disk as binary and/or JSON.
2017-10-02 22:43:58 +00:00
Options are similar to the Unix `dig` command. Supports dns0x20 security checking.
2017-02-18 02:07:02 +00:00
2017-10-02 17:50:02 +00:00
Install
2017-02-18 02:07:02 +00:00
-------
2017-10-02 17:50:02 +00:00
### with git
2017-02-18 02:07:02 +00:00
```bash
2017-02-23 23:55:24 +00:00
# Install the latest of v1.x
2017-10-28 05:43:59 +00:00
npm install -g 'git+https://git.coolaj86.com/coolaj86/dig.js.git#v1'
2017-02-18 02:07:02 +00:00
```
2017-02-23 23:55:24 +00:00
```bash
# Install exactly v1.0.0
2017-10-28 05:43:59 +00:00
npm install -g 'git+https://git.coolaj86.com/coolaj86/dig.js.git#v1.0.0'
2017-02-23 23:55:24 +00:00
```
2017-10-02 17:50:02 +00:00
### without git
2017-02-23 23:55:24 +00:00
Don't have git? Well, you can also bow down to the gods of the centralized, monopolized, concentrated, *dictator*net
(as we like to call it here at Daplie Labs), if that's how you roll:
2017-02-18 02:07:02 +00:00
```bash
npm install -g dig.js
```
Usage
-----
```bash
dig.js [TYPE] <domainname>
```
2017-10-02 17:50:02 +00:00
**Example**:
2017-02-18 02:07:02 +00:00
```bash
dig.js daplie.com
```
### 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-24 01:22:16 +00:00
dig.js -p 5353 @224.0.0.251 PTR _services._dns-sd._udp.local +time=3
2017-02-18 02:07:02 +00:00
```
### Moar Examples
```bash
dig.js A daplie.com
dig.js @8.8.8.8 A daplie.com
```
Options
-------
```
2017-02-18 03:18:19 +00:00
--output <path/to/file> write query and response(s) to disk with this path prefix (ex: ./samples/dns)
2017-10-02 17:52:50 +00:00
--mdns Use mDNS port and nameserver address, and listen for multiple packets
-t <type> (superfluous) A, CNAME, MX, etc. Also supports -t type<decimal> for "unsupported" types. default ANY (mdns default: PTR)
2017-02-18 03:18:19 +00:00
-c <class> default IN
-p <port> default 53 (mdns default: 5353) (listener is random for DNS and 5353 for mDNS)
-q <query> (superfluous) required (ex: daplie.com)
2017-10-02 17:46:55 +00:00
--nameserver <ns> alias of @<nameserver>
--timeout <ms> alias of +time=<seconds>, but in milliseconds
2017-02-24 00:31:09 +00:00
2017-10-02 17:46:55 +00:00
@<nameserver> specify the nameserver to use for DNS resolution (defaults to system defaults)
2017-02-24 00:31:09 +00:00
+time=<seconds> Sets the timeout for a query in seconds.
2017-10-02 17:46:55 +00:00
+norecurse Set `rd` flag to 0. Do not request recursion
+aaonly Set `aa` flag to 1.
2017-10-02 17:52:50 +00:00
2017-10-02 22:43:58 +00: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 17:52:50 +00:00
--debug verbose output
2017-02-18 02:07:02 +00: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.