smb: relax probing parser to handle first NBSS message

cf dcerpc-udp S-V test :
First message is Message Type: Session request (0x81)
Second message is SMB
pull/5948/head
Philippe Antoine 6 years ago committed by Victor Julien
parent 660e9e489b
commit 8307010255

@ -1990,6 +1990,26 @@ pub extern "C" fn rs_smb_probe_tcp(flags: u8,
return 1; return 1;
} else if hdr.needs_more(){ } else if hdr.needs_more(){
return 0; return 0;
} else if hdr.is_valid() &&
hdr.message_type != NBSS_MSGTYPE_SESSION_MESSAGE {
//we accept a first small netbios message before real SMB
let hl = hdr.length as usize;
if hdr.data.len() >= hl + 8 {
// 8 is 4 bytes NBSS + 4 bytes SMB0xFX magic
match parse_nbss_record_partial(&hdr.data[hl..]) {
Ok((_, ref hdr2)) => {
if hdr2.is_smb() {
SCLogDebug!("smb found");
return 1;
}
}
_ => {}
}
} else if hdr.length < 256 {
// we want more data, 256 is some random value
return 0;
}
// default is failure
} }
}, },
_ => { }, _ => { },

Loading…
Cancel
Save