1. 程式人生 > >搭建了一個在線的機器學習webshell檢測RESTful API

搭建了一個在線的機器學習webshell檢測RESTful API

如果 restful mongo 請求 日誌 結構 IV int 執行

# 地址:

http://118.190.147.89:5000/

# 說明:

簡單的基於機器學習檢測webshell:
目前只支持php的檢測

#使用方法:
1.上傳檢測文件
接口地址: /put
請求方式: POST
接收參數: file
例如:
目前上傳的方式支持2中文件格式[php,zip]
curl http://127.0.0.1:5000/put -F [email protected]
curl http://127.0.0.1:5000/put -F [email protected]
執行命令後將會返回任務id (taskid)

2.獲取檢測結果
接口地址: /result/<taskid>
請求方式: GET

例如:
http://127.0.0.1:5000/result/9b4c561a111b25a95666bcd5f062ce00

返回數據結構:
類型: json
字段:
code(int),msg(dict):
當code為1時, 任務正在進行中, msg返回相應信息
當code為2時, 任務尚未開始, msg返回消息,如果常時間未開始可能隊列出現異常,可聯系管理員解決
當code為0時, 任務執行完成, msg返回相應的數據內容
當code為0具體結構如下:

   {
    code:0,
    msg: {
     status: 0,
     file_hash: string,
     file_name: string,
     result: {
      filename: boolean
     }
    }
   }

# 更新日誌
2018年06月12日 部署添加

# 聯系方式:
sevck#jdsec.com

# 雜項

簡單說說架構吧,使用flask,mongodb,rabbitmq

flask主要做來web:

  /index,比較簡單的使用說明

  /put, 上傳任務,返回taskid

  /result/<taskid>, 任務查詢結果,根據動態路由,taskid,32位,查詢任務結果

mongodb主要用來存取任務結果:

  put任務的時候會把這次的任務ID,文件屬性等進行上傳,任務狀態存到mongodb中,result查詢這個taskid的任務結果

check主要是核心的機器學習引擎:

檢測文件是不是webshell

rabbitmq,消息隊列,來一個push到隊列裏

  為了保證任務的順序和後期更新叠代,采用消息隊列進行傳輸,中間做了持久化,防止中途掛掉或者其他意外情況。

搭建了一個在線的機器學習webshell檢測RESTful API