rust/smb: convert parser to nom7 functions (SMB3)

pull/6705/head
Pierre Chifflier 4 years ago committed by Victor Julien
parent 4c97dfa851
commit 5cadb878ff

@ -15,7 +15,9 @@
* 02110-1301, USA. * 02110-1301, USA.
*/ */
use nom::number::streaming::{le_u16, le_u32, le_u64}; use nom7::bytes::streaming::{tag, take};
use nom7::number::streaming::{le_u16, le_u32, le_u64};
use nom7::IResult;
#[derive(Debug,PartialEq)] #[derive(Debug,PartialEq)]
pub struct Smb3TransformRecord<'a> { pub struct Smb3TransformRecord<'a> {
@ -24,19 +26,19 @@ pub struct Smb3TransformRecord<'a> {
pub enc_data: &'a[u8], pub enc_data: &'a[u8],
} }
named!(pub parse_smb3_transform_record<Smb3TransformRecord>, pub fn parse_smb3_transform_record(i: &[u8]) -> IResult<&[u8], Smb3TransformRecord> {
do_parse!( let (i, _) = tag(b"\xfdSMB")(i)?;
tag!(b"\xfdSMB") let (i, _signature) = take(16_usize)(i)?;
>> _signature: take!(16) let (i, _nonce) = take(16_usize)(i)?;
>> _nonce: take!(16) let (i, msg_size) = le_u32(i)?;
>> msg_size: le_u32 let (i, _reserved) = le_u16(i)?;
>> _reserved: le_u16 let (i, enc_algo) = le_u16(i)?;
>> enc_algo: le_u16 let (i, session_id) = le_u64(i)?;
>> session_id: le_u64 let (i, enc_data) = take(msg_size)(i)?;
>> enc_data: take!(msg_size) let record = Smb3TransformRecord {
>> ( Smb3TransformRecord { session_id,
session_id, enc_algo,
enc_algo, enc_data,
enc_data, };
}) Ok((i, record))
)); }

Loading…
Cancel
Save