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

#![deny(// missing_docs,
        missing_debug_implementations,
        unsafe_code,
        unstable_features,
        unused_import_braces, unused_qualifications)]

mod openvpn;
pub use openvpn::*;

pub use nom;