X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-registry%2Fsrc%2Fdetect.rs;h=cf178757e5509d304385c860db2841979c5c1403;hb=refs%2Fheads%2Fmaster;hp=bb452b2a69a8cec0fdea24f625554417ebd6a0de;hpb=88fd1059c144439b922c31baa61fcf3e93f608f0;p=nihav.git diff --git a/nihav-registry/src/detect.rs b/nihav-registry/src/detect.rs index bb452b2..de78c0d 100644 --- a/nihav-registry/src/detect.rs +++ b/nihav-registry/src/detect.rs @@ -176,11 +176,11 @@ impl<'a> CC<'a> { CC::Le(ref arg) => { arg.le(src) }, CC::Gt(ref arg) => { arg.gt(src) }, CC::Ge(ref arg) => { arg.ge(src) }, - CC::Str(str) => { - let mut val: Vec = vec![0; str.len()]; + CC::Str(strng) => { + let mut val: Vec = vec![0; strng.len()]; let res = src.peek_buf(val.as_mut_slice()); if res.is_err() { return false; } - val == str + val == strng } } } @@ -222,6 +222,12 @@ const DETECTORS: &[DetectConditions] = &[ &CC::Str(b"moov")), &CC::Str(b"ftyp")) }], }, + DetectConditions { + demux_name: "gif", + extensions: ".gif", + conditions: &[CheckItem{offs: 0, cond: &CC::Or(&CC::Str(b"GIF87a"), + &CC::Str(b"GIF89a")) }], + }, DetectConditions { demux_name: "mov", extensions: ".mov", @@ -239,17 +245,40 @@ const DETECTORS: &[DetectConditions] = &[ CheckItem{offs: 0x7B, cond: &CC::Eq(Arg::Byte(0x81))}, CheckItem{offs: 0x84, cond: &CC::Str(b"mdat")}], }, + DetectConditions { + demux_name: "mov-resfork", + extensions: ".mov", + conditions: &[CheckItem{offs: 0, cond: &CC::Eq(Arg::U32BE(0x100))}, + CheckItem{offs: 0x108, cond: &CC::Str(b"moov")}], + }, DetectConditions { demux_name: "yuv4mpeg", extensions: ".y4m", conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"YUV4MPEG2 ") }], }, + DetectConditions { + demux_name: "armovie", + extensions: ".rpl", + conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"ARMovie\n") }], + }, + DetectConditions { + demux_name: "tca", + extensions: ".tca", + conditions: &[CheckItem{offs: 0x00, cond: &CC::Str(b"ACEF") }, + CheckItem{offs: 0x18, cond: &CC::Eq(Arg::U32LE(64))}], + }, DetectConditions { demux_name: "flv", extensions: ".flv", conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"FLV") }, CheckItem{offs: 3, cond: &CC::Le(Arg::Byte(1)) }], }, + DetectConditions { + demux_name: "dvi", + extensions: ".avs,.dvi", + conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"IVDV")}, + CheckItem{offs: 12, cond: &CC::Str(b"SSVA")}], + }, DetectConditions { demux_name: "ivf", extensions: ".ivf", @@ -262,54 +291,11 @@ const DETECTORS: &[DetectConditions] = &[ conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"DKIF\x00\x00")}, CheckItem{offs: 6, cond: &CC::Ge(Arg::U16LE(32))}], }, - DetectConditions { - demux_name: "arxel-cnm", - extensions: ".cnm", - conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"CNM UNR\x00")}], - }, - DetectConditions { - demux_name: "fcmp", - extensions: ".cmp", - conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"FCMP")}], - }, - DetectConditions { - demux_name: "fst", - extensions: ".fst", - conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"2TSF")}], - }, DetectConditions { demux_name: "gdv", extensions: ".gdv", conditions: &[CheckItem{offs: 0, cond: &CC::Eq(Arg::U32LE(0x29111994))}], }, - DetectConditions { - demux_name: "fable-imax", - extensions: ".imx", - conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"IMAX") }, - CheckItem{offs: 10, cond: &CC::Eq(Arg::U16LE(0x102)) }], - }, - DetectConditions { - demux_name: "hl-fmv", - extensions: ".fmv", - conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"FMV*") }, - CheckItem{offs: 4, cond: &CC::Eq(Arg::U32LE(0)) }], - }, - DetectConditions { - demux_name: "legend-q", - extensions: ".q", - conditions: &[CheckItem{offs: 0, cond: &CC::Eq(Arg::U16LE(0x6839))}, - CheckItem{offs: 2, cond: &CC::In(Arg::Byte(3), Arg::Byte(7))}], - }, - DetectConditions { - demux_name: "siff", - extensions: ".vb,.vbc,.fcp,.son", - conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"SIFF")}, - CheckItem{offs: 4, cond: &CC::Or( - &CC::Or( - &CC::Str(b"VBV1VBHD"), - &CC::Str(b"SOUNSHDR")), - &CC::Str(b"FCPKFCHD"))}], - }, DetectConditions { demux_name: "smush", extensions: ".san", @@ -329,6 +315,16 @@ const DETECTORS: &[DetectConditions] = &[ conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"SANM")}, CheckItem{offs: 8, cond: &CC::Str(b"SHDR")}], }, + DetectConditions { + demux_name: "qpeg", + extensions: ".dvc", + conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"IDVCd")}], + }, + DetectConditions { + demux_name: "tealmov", + extensions: ".pdb", + conditions: &[CheckItem{offs: 0x3C, cond: &CC::Str(b"MvieTlMv")}], + }, DetectConditions { demux_name: "realaudio", extensions: ".ra,.ram", @@ -404,14 +400,19 @@ const DETECTORS: &[DetectConditions] = &[ CheckItem{offs: 32, cond: &CC::Str(b"DATA")}], }, DetectConditions { - demux_name: "vmd", - extensions: ".vmd", + demux_name: "sga", + extensions: ".dtv,.avc", conditions: &[], }, DetectConditions { - demux_name: "vx", - extensions: ".vx", - conditions: &[CheckItem{offs: 0, cond: &CC::Str(b"VXDS") }], + demux_name: "sierra-seq", + extensions: ".seq", + conditions: &[], + }, + DetectConditions { + demux_name: "vmd", + extensions: ".vmd", + conditions: &[], }, ];