You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* update: add documentation to newly added contents
Signed-off-by: Gaukas Wang <[email protected]>
* update: minor improvements
Signed-off-by: Gaukas Wang <[email protected]>
* deps: bump up caddy version
Signed-off-by: Gaukas Wang <[email protected]>
* fix: always set header to disable QUIC for TLS
Also updated some wording to make error messages sound consistent.
Signed-off-by: Gaukas Wang <[email protected]>
* docs: update comments and README [ci skip]
Signed-off-by: Gaukas Wang <[email protected]>
* fix: save QUIC visitor when H3 is enabled only
otherwise the TLS-fallback will incorrectly overwrite the cached QUIC fingerprint's sender.
Signed-off-by: Gaukas Wang <[email protected]>
* logging: fix typo and add debugging printouts
Signed-off-by: Gaukas Wang <[email protected]>
* update: new Caddyfile
Signed-off-by: Gaukas Wang <[email protected]>
---------
Signed-off-by: Gaukas Wang <[email protected]>
ClientHello Parser/Resolver as a Service from [tlsfingerprint.io](https://tlsfingerprint.io).
7
+
`clienthellod`, read as "client-hello-D", is a TLS ClientHello/QUIC Initial Packet reflection service. It can be used to parses TLS ClientHello messages and QUIC Initial Packets into human-readable and highly programmable formats such as JSON.
8
8
9
-
## What does it do
10
-
11
-
`clienthellod`, read as "client hello DEE", is a service that parses and resolves the ClientHello message sent by the client to the server. It is a part of the TLS fingerprintability research project which spans [tlsfingerprint.io](https://tlsfingerprint.io) and [quic.tlsfingerprint.io](https://quic.tlsfingerprint.io). It parses the ClientHello messages sent by TLS clients and QUIC Client Initial Packets sent by QUIC clients and display the parsed information in a human-readable format with high programmability.
9
+
Is is a part of the TLS fingerprintability research project which spans [tlsfingerprint.io](https://tlsfingerprint.io) and [quic.tlsfingerprint.io](https://quic.tlsfingerprint.io). It parses the ClientHello messages sent by TLS clients and QUIC Client Initial Packets sent by QUIC clients and display the parsed information in a human-readable format with high programmability.
12
10
13
11
See [tlsfingerprint.io](https://tlsfingerprint.io) and [quic.tlsfingerprint.io](https://quic.tlsfingerprint.io) for more details about the project.
14
12
15
-
## How to use
13
+
## Quick Start
14
+
15
+
`clienthellod` comes as a Go library, which can be used to parse both TLS and QUIC protocols.
@@ -75,79 +96,42 @@ See [tlsfingerprint.io](https://tlsfingerprint.io) and [quic.tlsfingerprint.io](
75
96
fmt.Println(string(jsonB)) // including fingerprint IDs of: ClientInitialPacket, QUIC Header, QUIC ClientHello, QUIC Transport Parameters' combination
76
97
```
77
98
78
-
#### Use with Caddy
79
-
80
-
`clienthellod` is also provided as a Caddy plugin, `modcaddy`, which can be used to capture ClientHello messages and QUIC Client Initial Packets. See Section [modcaddy](#modcaddy) for more details.
81
-
82
-
## modcaddy
83
-
84
-
`modcaddy` is a Caddy plugin that provides:
85
-
- An caddy `app` that can be used to temporarily store captured ClientHello messages and QUIC Client Initial Packets.
86
-
- A caddy `handler` that can be used to serve the ClientHello messages and QUIC Client Initial Packets to the client sending the request.
87
-
- A caddy `listener` that can be used to capture ClientHello messages and QUIC Client Initial Packets.
99
+
#### Multiple packets
88
100
89
-
You will need to use [xcaddy](https://github.com/caddyserver/xcaddy) to rebuild Caddy with `modcaddy` included.
101
+
Implementations including Chrome/Chromium sends oversized Client Hello which does not fit into one single QUIC packet, in which case multiple QUIC Initial Packets are sent.
90
102
91
-
It is worth noting that some web browsers may not choose to switch to QUIC protocol in localhost environment, which may result in the QUIC Client Initial Packet not being sent and therefore not being captured/analyzed.
gci:=GatherClientInitials() // Each GatherClientInitials reassembles one QUIC Client Initial Packets stream. Use a QUIC Fingerprinter for multiple potential senders, which automatically demultiplexes the packets based on the source address.
udp # listens for UDP and saves QUIC Client Initial Packet
122
-
}
123
-
tls
125
+
err = gci.AddPacket(ci)
126
+
if err != nil {
127
+
panic(err)
124
128
}
125
-
# protocols h3
126
129
}
127
-
}
130
+
```
128
131
129
-
1.mydomain.com {
130
-
# tls internal
131
-
clienthellod { # handler
132
-
# quic # mutually exclusive with tls
133
-
tls # listener_wrappers.clienthellod.tcp must be set
134
-
}
135
-
file_server {
136
-
root /var/www/html
137
-
}
138
-
}
132
+
### Use with Caddy
139
133
140
-
2.mydomain.com {
141
-
# tls internal
142
-
clienthellod { # handler
143
-
quic # listener_wrappers.clienthellod.udp must be set
144
-
# tls # mutually exclusive with quic
145
-
}
146
-
file_server {
147
-
root /var/www/html
148
-
}
149
-
}
150
-
```
134
+
We also provide clienthellod as a Caddy Module in `modcaddy`, which you can use with Caddy to capture ClientHello messages and QUIC Client Initial Packets. See [modcaddy](https://github.com/gaukas/clienthellod/tree/master/modcaddy) for more details.
0 commit comments