|
|
|
|
@ -16,15 +16,15 @@
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
use crate::common::nom7::{bits, take_until_and_consume};
|
|
|
|
|
use std::fmt;
|
|
|
|
|
use nom7::bits::streaming::take as take_bits;
|
|
|
|
|
use nom7::bytes::streaming::take;
|
|
|
|
|
use nom7::combinator::{cond, rest, verify};
|
|
|
|
|
use nom7::number::streaming::{le_u8, le_u16, le_u32};
|
|
|
|
|
use nom7::error::{make_error, ErrorKind};
|
|
|
|
|
use nom7::number::streaming::{le_u16, le_u32, le_u8};
|
|
|
|
|
use nom7::sequence::tuple;
|
|
|
|
|
use nom7::IResult;
|
|
|
|
|
use nom7::Err;
|
|
|
|
|
use nom7::error::{ErrorKind, make_error};
|
|
|
|
|
use nom7::IResult;
|
|
|
|
|
use std::fmt;
|
|
|
|
|
|
|
|
|
|
#[derive(Debug, PartialEq, Eq)]
|
|
|
|
|
pub struct NTLMSSPVersion {
|
|
|
|
|
@ -36,9 +36,11 @@ pub struct NTLMSSPVersion {
|
|
|
|
|
|
|
|
|
|
impl fmt::Display for NTLMSSPVersion {
|
|
|
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
|
|
|
write!(f, "{}.{} build {} rev {}",
|
|
|
|
|
self.ver_major, self.ver_minor,
|
|
|
|
|
self.ver_build, self.ver_ntlm_rev)
|
|
|
|
|
write!(
|
|
|
|
|
f,
|
|
|
|
|
"{}.{} build {} rev {}",
|
|
|
|
|
self.ver_major, self.ver_minor, self.ver_build, self.ver_ntlm_rev
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -66,11 +68,7 @@ pub struct NTLMSSPAuthRecord<'a> {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn parse_ntlm_auth_nego_flags(i: &[u8]) -> IResult<&[u8], (u8, u8, u32)> {
|
|
|
|
|
bits(tuple((
|
|
|
|
|
take_bits(6u8),
|
|
|
|
|
take_bits(1u8),
|
|
|
|
|
take_bits(25u32),
|
|
|
|
|
)))(i)
|
|
|
|
|
bits(tuple((take_bits(6u8), take_bits(1u8), take_bits(25u32))))(i)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const NTLMSSP_IDTYPE_LEN: usize = 12;
|
|
|
|
|
|