zoukankan      html  css  js  c++  java
  • 搭建了一个在线的机器学习webshell检测RESTful API

    # 地址:

    http://118.190.147.89:5001/

    如果不能访问,联系sevck#jdsec.com

    # 说明:

    简单的基于机器学习检测webshell:
    目前只支持php的检测

    #使用方法:
     1.上传检测文件
     接口地址: /put
     请求方式: POST
     接收参数: file
     例如:
       目前上传的方式支持2中文件格式[php,zip]
       curl http://127.0.0.1:5001/put -F file=@test.php
       curl http://127.0.0.1:5001/put -F file=@aaa.zip
       执行命令后将会返回任务id (taskid)

     2.获取检测结果
      接口地址: /result/<taskid>
      请求方式: GET
      例如:
       http://127.0.0.1:5001/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日 部署添加

    2018年06月26日 优化性能,内存占用

    # 联系方式:
     sevck#jdsec.com

    # 杂项

    简单说说架构吧,使用flask,mongodb,rabbitmq

    falsk主要做来web:

      /index,比较简单的使用说明

      /put, 上传任务,返回taskid

      /result/<taskid>, 任务查询结果,根据动态路由,taskid,32位,查询任务结果

    mongodb主要用来存取任务结果:

      put任务的时候会把这次的任务ID,文件属性等进行上传,任务状态存到mongodb中,result查询这个taskid的任务结果

    check主要是核心的机器学习引擎:

         检测文件是不是webshell

    rabbitmq,消息队列,来一个push到队列里

      为了保证任务的顺序和后期更新迭代,采用消息队列进行传输,中间做了持久化,防止中途挂掉或者其他意外情况。

  • 相关阅读:
    [基础规范]JavaBeans规范
    leetcode 114.Flatten Binary Tree to Linked List (将二叉树转换链表) 解题思路和方法
    sql 分组取每组的前n条或每组的n%(百分之n)的数据
    D3js-API介绍【中】
    微信公众平台开发 一 账号类别与申请
    Apple Swift编程语言新手教程
    iOS中xib与storyboard原理,与Android界面布局的异同
    Scala入门到精通——第十五节 Case Class与模式匹配(二)
    使用IDA破解TraceMe.exe
    21行python代码实现拼写检查器
  • 原文地址:https://www.cnblogs.com/sevck/p/9176776.html
Copyright © 2011-2022 走看看