commit 0f4f770: [Project] Lua_magic: Support ole documents recognition

Vsevolod Stakhov vsevolod at highsecure.ru
Sat Sep 7 15:14:08 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-09-07 15:11:21 +0100
URL: https://github.com/rspamd/rspamd/commit/0f4f770639d8ca2f472df95ba6dab6fa27e5772a

[Project] Lua_magic: Support ole documents recognition

---
 lualib/lua_magic/init.lua     |  2 +-
 lualib/lua_magic/patterns.lua | 13 +++++++++++++
 lualib/lua_magic/types.lua    | 21 +++++++++++++++++++++
 src/lua/lua_text.c            |  1 +
 4 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/lualib/lua_magic/init.lua b/lualib/lua_magic/init.lua
index 98d4845eb..59e2a6e36 100644
--- a/lualib/lua_magic/init.lua
+++ b/lualib/lua_magic/init.lua
@@ -140,7 +140,7 @@ local function match_chunk(chunk, input, tlen, offset, trie, processed_tbl, log_
     if not res[ext] then
       res[ext] = 0
     end
-    if match.weight then
+    if weight then
       res[ext] = res[ext] + weight
     else
       res[ext] = res[ext] + 1
diff --git a/lualib/lua_magic/patterns.lua b/lualib/lua_magic/patterns.lua
index 003073cab..9bb6df182 100644
--- a/lualib/lua_magic/patterns.lua
+++ b/lualib/lua_magic/patterns.lua
@@ -19,6 +19,8 @@ limitations under the License.
 -- This module contains most common patterns
 --]]
 
+local heuristics = require "lua_magic/heuristics"
+
 local patterns = {
   pdf = {
     -- These are alternatives
@@ -82,6 +84,17 @@ local patterns = {
       }
     }
   },
+  -- MS Office format, needs heuristic
+  ole = {
+    matches = {
+      {
+        hex = [[d0cf11e0a1b11ae1]],
+        relative_position = 0,
+        weight = 60,
+        heuristic = heuristics.ole_format_heuristic
+      }
+    }
+  },
   -- MS Exe file
   exe = {
     matches = {
diff --git a/lualib/lua_magic/types.lua b/lualib/lua_magic/types.lua
index b3af668c8..96c4952a8 100644
--- a/lualib/lua_magic/types.lua
+++ b/lualib/lua_magic/types.lua
@@ -130,6 +130,27 @@ local types = {
     ct = 'application/x-shockwave-flash',
     type = 'image',
   },
+  -- Ole files
+  ole = {
+    ct = 'application/octet-stream',
+    type = 'msoffice'
+  },
+  doc = {
+    ct = 'application/msword',
+    type = 'msoffice'
+  },
+  xls = {
+    ct = 'application/vnd.ms-excel',
+    type = 'msoffice'
+  },
+  ppt = {
+    ct = 'application/vnd.ms-powerpoint',
+    type = 'msoffice'
+  },
+  msi = {
+    ct = 'application/x-msi',
+    type = 'executable'
+  },
   -- other
   pgp = {
     ct = 'application/encrypted',
diff --git a/src/lua/lua_text.c b/src/lua/lua_text.c
index e095b8c43..68897019d 100644
--- a/src/lua/lua_text.c
+++ b/src/lua/lua_text.c
@@ -98,6 +98,7 @@ static const struct luaL_reg textlib_m[] = {
 		LUA_INTERFACE_DEF (text, take_ownership),
 		LUA_INTERFACE_DEF (text, save_in_file),
 		LUA_INTERFACE_DEF (text, span),
+		LUA_INTERFACE_DEF (text, at),
 		{"write", lua_text_save_in_file},
 		{"__len", lua_text_len},
 		{"__tostring", lua_text_str},


More information about the Commits mailing list