openvpn_parser/lib.rs
1//! # openvpn-parser
2//!
3//! [](./LICENSE-MIT)
4//! [](./LICENSE-APACHE)
5//! [](https://travis-ci.org/rusticata/openvpn-parser)
6//! [](https://crates.io/crates/openvpn-parser)
7//!
8//! ## Overview
9//!
10//! openvpn-parser is a parser for the ([OpenVPN](https://openvpn.net/)) protocol.
11//!
12//! It can be used to decode the packet structures, access fields and verify some properties.
13//! The content of the `Control` packets uses the TLS protocol, so
14//! [tls-parser](https://github.com/rusticata/tls-parser) can be used to decode the messages.
15//!
16//! *The parser does not decrypt messages.*
17//!
18//! This crate mostly serves as a demo/example crate for network protocol parsers written using nom, and nom-derive.
19//!
20//! ## Notes
21//!
22//! Writen in great pain, due to lack of specifications, and a number of fields
23//! defined in a very useless way, like "usually 16 or 20 bytes".
24//!
25//! Closest thing to specifications:
26//!
27//! - <https://openvpn.net/index.php/open-source/documentation/security-overview.html>
28//! - <http://ipseclab.eit.lth.se/tiki-index.php?page=6.+OpenVPN>
29//! - OpenVPN source code
30//! - OpenVPN wireshark parser
31
32#![deny(// missing_docs,
33 missing_debug_implementations,
34 unsafe_code,
35 unstable_features,
36 unused_import_braces, unused_qualifications)]
37
38mod openvpn;
39pub use openvpn::*;
40
41pub use nom;