end | end | ||||
exports.mime_part_heuristic = function(part, log_obj) | exports.mime_part_heuristic = function(part, log_obj) | ||||
if part:is_image() then | |||||
local img = part:get_image() | |||||
local img_type = img:get_type():lower() | |||||
if img_type == 'jpeg' then img_type = 'jpg' end | |||||
return img_type,60 | |||||
end | |||||
if part:is_archive() then | if part:is_archive() then | ||||
local arch = part:get_archive() | local arch = part:get_archive() | ||||
return detect_archive_flaw(part, arch, log_obj) | return detect_archive_flaw(part, arch, log_obj) |
} | } | ||||
} | } | ||||
}, | }, | ||||
jpg = { | |||||
matches = { | |||||
{ -- JPEG2000 | |||||
hex = [[0000000c6a5020200d0a870a]], | |||||
relative_position = 0, | |||||
weight = 60, | |||||
}, | |||||
{ | |||||
string = [[^\x{ff}\x{d8}\x{ff}(?:[\x{e0}\x{e1}])]], | |||||
weight = 60, | |||||
position = 4, | |||||
}, | |||||
}, | |||||
}, | |||||
png = { | |||||
matches = { | |||||
{ | |||||
string = [[^\x{89}PNG\x{0d}\x{0a}\x{1a}\x{0a}]], | |||||
position = 8, | |||||
weight = 60, | |||||
}, | |||||
} | |||||
}, | |||||
gif = { | |||||
matches = { | |||||
{ | |||||
string = [[^GIF8\d]], | |||||
position = 5, | |||||
weight = 60, | |||||
}, | |||||
} | |||||
}, | |||||
bmp = { | |||||
matches = { | |||||
{ | |||||
string = [[^BM...\x{00}\x{00}\x{00}\x{00}]], | |||||
position = 9, | |||||
weight = 60, | |||||
}, | |||||
} | |||||
}, | |||||
} | } | ||||
return patterns | return patterns |