... | ... |
@@ -126,6 +126,7 @@ static const struct ftmap_s { |
126 | 126 |
{ "CL_TYPE_XML_HWP", CL_TYPE_XML_HWP }, |
127 | 127 |
{ "CL_TYPE_HWPOLE2", CL_TYPE_HWPOLE2 }, |
128 | 128 |
{ "CL_TYPE_OOXML_HWP", CL_TYPE_OOXML_HWP }, |
129 |
+ { "CL_TYPE_MHTML", CL_TYPE_MHTML }, |
|
129 | 130 |
{ NULL, CL_TYPE_IGNORED } |
130 | 131 |
}; |
131 | 132 |
|
... | ... |
@@ -193,6 +193,8 @@ static const char *ftypes_int[] = { |
193 | 193 |
"0:4:d0cf11e0a1b11ae1:HWP embedded OLE2:CL_TYPE_ANY:CL_TYPE_HWPOLE2", |
194 | 194 |
"0:0:48575020446f63756d656e742046696c652056332e3030201a0102030405:HWP 3.x Document:CL_TYPE_ANY:CL_TYPE_HWP3:82", |
195 | 195 |
"1:0:efbbbf3c3f786d6c2076657273696f6e3d22312e3022*3c4857504d4c:HWPML Document:CL_TYPE_ANY:CL_TYPE_XML_HWP:82", |
196 |
+ "1:0:(4d|6d)(49|69)(4d|6d)(45|65)2d(56|76)657273696f6e3a20{-1024}0a(43|63)6f6e74656e742d(54|74)7970653a20:MHTML file:CL_TYPE_ANY:CL_TYPE_MHTML:83", |
|
197 |
+ "1:*:0a(4d|6d)(49|69)(4d|6d)(45|65)2d(56|76)657273696f6e3a20{-1024}0a(43|63)6f6e74656e742d(54|74)7970653a20:MHTML file:CL_TYPE_ANY:CL_TYPE_MHTML:83", |
|
196 | 198 |
NULL |
197 | 199 |
}; |
198 | 200 |
|
... | ... |
@@ -2268,6 +2268,14 @@ static int cli_scanraw(cli_ctx *ctx, cli_file_t type, uint8_t typercg, cli_file_ |
2268 | 2268 |
|
2269 | 2269 |
while(fpt) { |
2270 | 2270 |
if(fpt->offset) switch(fpt->type) { |
2271 |
+ case CL_TYPE_MHTML: |
|
2272 |
+ ctx->container_type = CL_TYPE_MHTML; |
|
2273 |
+ if(SCAN_MAIL && (DCONF_MAIL & MAIL_CONF_MBOX)) { |
|
2274 |
+ cli_dbgmsg("MHTML signature found at %u\n", (unsigned int) fpt->offset); |
|
2275 |
+ ret = cli_scanmail(ctx); |
|
2276 |
+ } |
|
2277 |
+ break; |
|
2278 |
+ |
|
2271 | 2279 |
case CL_TYPE_XDP: |
2272 | 2280 |
if(SCAN_PDF && (DCONF_DOC & DOC_CONF_PDF)) { |
2273 | 2281 |
cli_dbgmsg("XDP signature found at %u\n", (unsigned int) fpt->offset); |
... | ... |
@@ -3027,6 +3035,12 @@ static int magic_scandesc(cli_ctx *ctx, cli_file_t type) |
3027 | 3027 |
ret = cli_scanmail(ctx); |
3028 | 3028 |
break; |
3029 | 3029 |
|
3030 |
+ case CL_TYPE_MHTML: |
|
3031 |
+ ctx->container_type = CL_TYPE_MHTML; |
|
3032 |
+ if(SCAN_MAIL && (DCONF_MAIL & MAIL_CONF_MBOX)) |
|
3033 |
+ ret = cli_scanmail(ctx); |
|
3034 |
+ break; |
|
3035 |
+ |
|
3030 | 3036 |
case CL_TYPE_TNEF: |
3031 | 3037 |
if(SCAN_MAIL && (DCONF_MAIL & MAIL_CONF_TNEF)) |
3032 | 3038 |
ret = cli_scantnef(ctx); |