Ai.KG项目相关内容 郝伟 2021/02/01 [TOC]

1. 主要研究内容

  • 概述:通过各类爬虫技术,可以从网络上获得各类漏洞信息,这类漏洞信息都是纯文的形式,那么就会出现这样的问题:如何将没有编号的漏洞与其官方(如CNNVD)的漏洞编号关联起来?
  • 课题目标:实现漏洞知识图谱的网站,参考:思知网站 https://www.ownthink.com/ 在国外的网站上,抓取一些漏洞信息无法格式化,那么如何判断漏洞影响的内容?这个问题可以描述为:
  • 输入:未格式化的漏洞描述信息(英文)
  • 输出:漏洞影响的实体,包括系统、模块、软件等
  • 问题模型 首先,需要建立实体类,实体可以通过CPE描述,参见《CPE 漏洞比对机制.pptx》。
  • 参考数据源:公司漏洞信息网站 https://vti.huaun.com:8443/index/

2. 进度计划

任务名称 说明 输出 工期(天) 开始时间 完成时间
原始需求列表 对整理的需求进行细化分析,拆分成多条,以方便设计和验证。 《需求列表》 1 2021/01/27 2021/01/27
业务流程图 根据需求绘制相关的业务流程图 《业务流程图》 2 2021/01/28 2021/01/29
概要设计 系统概要设计,包括系统构架和主要功能模块。 《概要设计文档》 1 2021/02/01 2021/02/01
详细设计 对各功能模块进行细分,明确接口的定义 《系统框架及接口设计文档》 7 2021/02/02 2021/02/10
测试方案 根据详细设计定义测试方案。 《测试设计文档》 1 2021/02/18 2021/02/18
系统原型 基于python的包括主要功能的原型系统一套。所有接口均为空函数或简单实现,用于验证架构和接口的正确性。 Python版源代码一套及相关测试数据 5 2021/02/22 2021/03/01

3. 主要功能模块

功能模块 子功能 详细介绍
1 数据库管理 数据库操作 新建、删除、数据库属性编辑、导入和导出等操作
2 数据管理 本体操作 本体增删改操作
- 关系操作 关系增删改操作
- 属性操作 对本体或关系进行属性的增删改操作
3 数据查询 节点查询 根据条件,返回满足条件的节点及其1至n层的关系+本体的查询结果
- 关系查询 返回满足关系的包括多对满足此关系的节点列表
- 路径查询 根据给定的路径,返回满足条件的节点。
4 数据导出 数据导出 能够将数据以自定义的Json或CSV导出。
5 数据导入 自定义数据导入 能够将自定义的Json或CSV数据导入。
- 格式化数据导入 能够导入CNNVD的数据(csv或json)。
6 扩展功能 HTTP REST接口 提供主要功能的相关接口。
7 系统配置 - -
URI Funs
以下省略“ https://www.example.com/” dict = {k1:v1, k2:v2}
/api/node/create/{label_name}?k1=v1&k2=v2 create_node(label_name, dict}创建一个节点
/api/relation/create_relation/{label_name}/?k1=v1&k2=v2 create_relation(label_name, dict)创建两个节点之间的关系
/api/node/delete/{label_name}?k1=v1&k2=v2&k3=v3 delete_node(label_name,[(k1,v1),(k2, v2)])
/api/node/update/{label_name}?k1=v1&k2=v2&k1=v1 update_node(label_name,dict,k1,v1)修改 某一个节点的属性
/api/node/query/{label_name}?k1=v1&k2=v2 query_node(label_name,dict) 查询某一个节点
/api/node/query_relation1/?relaton_name query_relation(relation_name) 查询有这个关系的所 有节点
/api/node/query_relation1/{label_name} query_relation1(label_name)查询这个标签下所有有关系 的节点
/api/node/query_relation2/{label_name}?k1=v1&k2=v2&k3=v3&n query_relation2(label_name, dict,n)查询以这个节点为中心的n层的关系
/api/node/query_relation3/{label_name}?k1=v1&k2=v2&k11=v11&k22=v22 query_relation3 (label_name,dict1,dict2) 查询节点到节点的最短路径
/api/node/query_relation3/{label_name}?k1=v1&k2=v2&k11=v11&k22=v22&relation_name delete_relation(label_name,dict1,dict2,relation_name)

4. 函数定义

接口格式:/api/node/create/{label_name}?k1=v1&k2=v2 实现函数:create_node(label_name, args),其中label_name对应标签名,args是一个key-value的字典

5. neo4j 桌面版下载与激活

  • Experience Neo4j 4.2 on Your Desktop 下载地址:https://neo4j.com/download/
  • 激活信息:
    First Name: Wei
    Last Name: HAO
    Organization: AUST
    Email: hwaust@126.com
    Activiation Code: 
    eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Imh3YXVzdEAxMjYuY29tIiwiZ29vZ2xlQW5hbHl0aWNzSWQiOiIzMDc3Mjc1MTQuMTYxMjU1ODY1OSIsIm9yZyI6IkFVU1QiLCJwdWIiOiJuZW80ai5jb20iLCJyZWciOiJXZWkgSEFPIiwic3ViIjoibmVvNGotZGVza3RvcCIsImV4cCI6MTY0NDA5NTc0MiwidmVyIjoiKiIsImlzcyI6Im5lbzRqLmNvbSIsIm5iZiI6MTYxMjU1OTc0MiwiaWF0IjoxNjEyNTU5NzQyLCJqdGkiOiJzMVB1V2E2RFAifQ.IWHl7w_A155gqNlY_7eYiGXUa6zch2AL1p7SYyZDrlF2d7Br-QBYw7-KlOpEN9NC6pt3G92jEgrHb5SJnyasN6R-OnfXgKUpLwraAPToNoDbIxdv-s7V913zqmzGr-kkju66cQLik64LVOvSa2E7fhSBcjrTwfwni-Bm3Qvbj1hRZ6uIor6A19Trd-6KCMYTIW_ey7PEYdhxP94WLPcNhTophdJkYZW8T_-ILBnUNeEaFxpWHNv-VCa0RCb3M0DupBtSBdeA6Q0ssvRf5t2KRxKOClWFD9ZKlNbSvPywk23DXsXuFYQrKB2mrP-oPAa4JMJaeY8oHLnsNi45sEeA1w
    

6. 测试服务器

  • VPS公网服务器 网 址:http://121.196.157.14:7474/browser/ 接 口:bolt://121.196.157.14:7687 用户名:neo4j 密 码:hd7iu2_X@v4u 登 陆:0p9o*I&U

  • 合肥公司内网neo4j测试服务器(限公司内网) 网 址:http://192.168.3.232:7474/browser/ 接 口:bolt://192.168.3.232:7687 用户名:neo4j 密 码:123456

7. 一些测试内容

7.1. 使用经验

  • neo4j不允许属性存储空值null。如果属性的值不存在,那么节点或者关系中的属性将被删除。这也可以通过remove来删除。

8. 基于Django的示例网站

最后更新:2021/02/04 http://121.199.10.158:8200/webapi/question/

8.1. 接口设计

8.2. 语法

-- 同时创建2个节点,每个节点有2个标签
CREATE (n1:TestNode:Greeting{name: "T&G1"}), (n2:TestNode:Greeting{name: "T&G2"})
-- 返回:Added 4 labels, created 2 nodes, set 2 properties, completed after 1 ms.

8.2.1. 可选参数

  • limit=10,表示最多显示10条
  • skip=5,跳过前5条记录

主要参考资料

DJango Demo页:http://121.199.10.158:8200/

9. 一些开发中的问题

9.1. 2021/07/01 优化底层代码和接口

发现大量的实体与关系存在问题

  1. 优化关系和实体 -> 实体与关系图
  2. 建立新的框架 -> 代码
  3. 在新框架上定义接口 -> 接口文档
  4. 逐步将现有的接口用现有的接口实现

9.2. 2021/07/13 现有VIT平台迁移方案

关于VTi管理平台迁移至Ai.KG,提出三种方案: 1、将原平台迁移至Ai.KG内,通过研发一套同步机制将原平台数据同步至Ai.KG平台内,但是具有一定不可靠性; 2、重新在Ai.KG数据平台基础上再开发一套相同功能的平台,可靠性好; 3、使用现有原平台的界面,仅底层开发一套接口,即将原平台UI架在Ai.KG上,可靠性好,但有一定的兼容性问题需要不断改进。 三种方案都有一定的工作量和风险,鉴于1最容易实现且风险小,所以推荐先使用方案1,后期根据使用情况可以考虑向更可靠的方案2或方案3过度。

10. 参考资料

results matching ""

    No results matching ""