Skip to content

Commit 592aeff

Browse files
committed
updated documentation for CT
1 parent 37ad786 commit 592aeff

File tree

2 files changed

+24
-27
lines changed

2 files changed

+24
-27
lines changed

README.md

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,53 @@
11
# CertGraph
22
### A tool to crawl the graph of certificate Alternate Names
33

4-
CertGraph crawls SSL certificates creating a directed graph where each domain is a node and the certificate alternative names for that domain's certificate are the edges to other domain nodes. Upon completion the Graph's adjacency list is printed.
4+
CertGraph crawls SSL certificates creating a directed graph where each domain is a node and the certificate alternative names for that domain's certificate are the edges to other domain nodes. New domains are printed as they are found. In Detailed mode upon completion the Graph's adjacency list is printed.
55

6-
This tool was designed to be used for host name enumeration via SSL certificates, but it can also show you a "chain" of trust between domains and the certificates that re used between them.
6+
Crawling defaults to collectng certificate by connecting over TCP, however the `--ct` flag will use [Google's Certificate Transparency search](https://www.google.com/transparencyreport/https/ct/) to find additional certificates and domains.
7+
8+
This tool was designed to be used for host name enumeration via SSL certificates, but it can also show you a "chain" of trust between domains and the certificates that re-used between them.
79

810
## Usage
911
```
1012
Usage of ./certgraph: [OPTION]... HOST...
13+
-ct
14+
use certificate transparancy search to find certificates
1115
-depth uint
12-
maximum BFS depth to go (default 20)
16+
maximum BFS depth to go, default: 20 (default 20)
17+
-details
18+
print details about the domains crawled
1319
-json
14-
print the graph as json
15-
-list
16-
only print the domains found and not the entire graph
20+
print the graph as json, can be used for graph in web UI
21+
-notls
22+
don't connect to hosts to collect certificates
1723
-parallel uint
18-
number of certificates to retrieve in parallel (default 10)
24+
number of certificates to retrieve in parallel, default: 10 (default 10)
1925
-port uint
2026
tcp port to connect to (default 443)
2127
-save string
2228
save certs to folder in PEM formate
23-
-sort
24-
visit and print domains in sorted order
2529
-starttls
2630
connect without TLS and then upgrade with STARTTLS for SMTP, useful with -port 25
2731
-timeout uint
2832
tcp timeout in seconds (default 5)
2933
-verbose
3034
verbose logging
35+
-version
36+
print version and exit
3137
```
3238

3339
## Example
3440
```
35-
$ ./certgraph eff.org
36-
eff.org 0 Good 5C699512FD8763FC50A105A14DB2526A10AE6EAC3E79F5F44A7F99E90189FBE5 [maps.eff.org web6.eff.org eff.org atlas.eff.org https-everywhere-atlas.eff.org httpse-atlas.eff.org kittens.eff.org]
37-
web6.eff.org 1 Good AF842FA69A720E9FB2F37BAF723A20F80B8C2072693E55D0A1EA78C7BABE2699 [*.eff.org *.dev.eff.org *.s.eff.org *.staging.eff.org]
38-
https-everywhere-atlas.eff.org 1 Good 5C699512FD8763FC50A105A14DB2526A10AE6EAC3E79F5F44A7F99E90189FBE5 [kittens.eff.org maps.eff.org web6.eff.org eff.org atlas.eff.org https-everywhere-atlas.eff.org httpse-atlas.eff.org]
39-
maps.eff.org 1 Good 5C699512FD8763FC50A105A14DB2526A10AE6EAC3E79F5F44A7F99E90189FBE5 [maps.eff.org web6.eff.org eff.org atlas.eff.org https-everywhere-atlas.eff.org httpse-atlas.eff.org kittens.eff.org]
40-
atlas.eff.org 1 Good 5C699512FD8763FC50A105A14DB2526A10AE6EAC3E79F5F44A7F99E90189FBE5 [eff.org atlas.eff.org https-everywhere-atlas.eff.org httpse-atlas.eff.org kittens.eff.org maps.eff.org web6.eff.org]
41-
httpse-atlas.eff.org 1 Good 5C699512FD8763FC50A105A14DB2526A10AE6EAC3E79F5F44A7F99E90189FBE5 [eff.org atlas.eff.org https-everywhere-atlas.eff.org httpse-atlas.eff.org kittens.eff.org maps.eff.org web6.eff.org]
42-
kittens.eff.org 1 Good 5C699512FD8763FC50A105A14DB2526A10AE6EAC3E79F5F44A7F99E90189FBE5 [eff.org atlas.eff.org https-everywhere-atlas.eff.org httpse-atlas.eff.org kittens.eff.org maps.eff.org web6.eff.org]
43-
dev.eff.org 2 No Host []
44-
s.eff.org 2 Good AF842FA69A720E9FB2F37BAF723A20F80B8C2072693E55D0A1EA78C7BABE2699 [*.eff.org *.dev.eff.org *.s.eff.org *.staging.eff.org]
45-
staging.eff.org 2 Good AC3933B1B95BA5254F43ADBE5E3E38E539C74456EE2D00493F0B2F38F991D54F [max-dev-supporters.eff.org leez-dev-supporters.eff.org max-dev-www.eff.org micah-dev2-supporters.eff.org staging.eff.org]
46-
leez-dev-supporters.eff.org 3 Good AC3933B1B95BA5254F43ADBE5E3E38E539C74456EE2D00493F0B2F38F991D54F [staging.eff.org max-dev-supporters.eff.org leez-dev-supporters.eff.org max-dev-www.eff.org micah-dev2-supporters.eff.org]
47-
micah-dev2-supporters.eff.org 3 Good AC3933B1B95BA5254F43ADBE5E3E38E539C74456EE2D00493F0B2F38F991D54F [max-dev-supporters.eff.org leez-dev-supporters.eff.org max-dev-www.eff.org micah-dev2-supporters.eff.org staging.eff.org]
48-
max-dev-supporters.eff.org 3 Good AC3933B1B95BA5254F43ADBE5E3E38E539C74456EE2D00493F0B2F38F991D54F [max-dev-supporters.eff.org leez-dev-supporters.eff.org max-dev-www.eff.org micah-dev2-supporters.eff.org staging.eff.org]
49-
max-dev-www.eff.org 3 Good AC3933B1B95BA5254F43ADBE5E3E38E539C74456EE2D00493F0B2F38F991D54F [max-dev-www.eff.org micah-dev2-supporters.eff.org staging.eff.org max-dev-supporters.eff.org leez-dev-supporters.eff.org]
41+
$ ./certgraph --details eff.org
42+
eff.org 0 Good 42E3E4605D8BB4608EB64936E2176A98B97EBF2E0F8F93A64A6640713C7D4325
43+
maps.eff.org 1 Good 42E3E4605D8BB4608EB64936E2176A98B97EBF2E0F8F93A64A6640713C7D4325
44+
https-everywhere-atlas.eff.org 1 Good 42E3E4605D8BB4608EB64936E2176A98B97EBF2E0F8F93A64A6640713C7D4325
45+
httpse-atlas.eff.org 1 Good 42E3E4605D8BB4608EB64936E2176A98B97EBF2E0F8F93A64A6640713C7D4325
46+
atlas.eff.org 1 Good 42E3E4605D8BB4608EB64936E2176A98B97EBF2E0F8F93A64A6640713C7D4325
47+
kittens.eff.org 1 Good 42E3E4605D8BB4608EB64936E2176A98B97EBF2E0F8F93A64A6640713C7D4325
5048
```
5149
The above output represents the adjacency list for the graph for the root domain `eff.org`. The adjacency list is in the form:
52-
`Node Depth Status Cert-Fingerprint [Edge1 Edge2 ... EdgeN]`
50+
`Node Depth Status Cert-Fingerprint`
5351

5452
## [Releases](https://github.com/lanrat/certgraph/releases)
5553

certgraph.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ func NewDomainNode(domain string, depth uint) *DomainNode {
108108
// get the string representation of a node
109109
func (d *DomainNode) String() string {
110110
if details {
111-
// TODO need to update this and documentation after refractor
112111
cert := ""
113112
if d.Status == GOOD {
114113
cert = d.VisitedCert.HexString()
@@ -139,7 +138,7 @@ type CertNode struct {
139138
}
140139

141140
func (c *CertNode) String() string {
142-
// TODO need to update this and documentation after refractor
141+
//TODO Currently unused..
143142
ct := ""
144143
if c.CT {
145144
ct = "CT"

0 commit comments

Comments
 (0)