Skip to content

rusticata/snmp-parser

Repository files navigation

Maintenance License: MIT Apache License 2.0 Build Status Crates.io Version

SNMP Parser

An SNMP parser, implemented with the nom parser combinator framework.

It is written in pure Rust, fast, and makes extensive use of zero-copy. It also aims to be panic-free.

The goal of this parser is to implement SNMP messages analysis, for example to use rules from a network IDS.

To read a message, different functions must be used depending on the expected message version. This crate implements the [asn1_rs::FromBer] trait, so to parse a message, use the expected object and call function from_ber.

For example, to parse a SNMP v1 or v2c message (message structure is the same), use [SnmpMessage]::from_ber(input). To parse a SNMP v3 message, use [SnmpV3Message]::from_ber(input). If you don't know the version of the message and want to parse a generic SNMP message, use [SnmpGenericMessage]::from_ber(input).

Other methods of parsing (functions) are provided for compatibility: these functions are parse_snmp_v1, parse_snmp_v2c and parse_snmp_v3. If you don't know the version of the message and want to parse a generic SNMP message, use the parse_snmp_generic_message function.

The code is available on Github and is part of the Rusticata project.

Changes

0.11.0

  • Update asn1-rs to 0.7
  • Update thiserror to 2.0
  • Fix clippy warnings: elided lifetime has a name
  • Use #[from] instead of From impl for asn1 error
  • Re-export Oid and OidParseError
  • Fix renamed lint
  • Implement FromBer for all top-level messages

Thanks: @MattesWhite

0.10.0

  • Update asn1-rs to 0.6

0.9.0

  • Convert to asn1-rs
  • Set MSRV to 1.57

0.8.0

  • Upgrade to nom 7 / der-parser 6

0.7.0

  • Upgrade to nom 6 / der-parser 5

0.6.0

  • Upgrade to der-parser 4

0.5.2

  • Use parse_ber_u32 from der-parser crate

0.5.1

  • Fix parsing: use BER parsing so DER constraints are not applied

0.5.0

  • Upgrade to nom 5 and der-parser 3

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

SNMP parser written in rust with nom

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5

Languages