最近一段时间,在一个前端大佬那里了解到一个构建知识图谱的开源项目,激起了我的兴趣。我之前讨论过如何构建垂直搜索引擎,本质上也是想构建出独特的领域知识。
这个开源项目是https://github.com/AISHU-Technology/kweaver
以这个开源项目为例,我将一步步剖析如何读懂一个开源项目,以及利用各种方法尽可能的去了解这个项目
了解开源协议
什么是开源协议?
该项目的开源协议为
即保留著作权,使用者可以商用。
了解开源协议的目的是为了避免自己未来在使用里面的部分代码的时候,出现法务问题。
按说明进行部署
在关注一个开源项目并进行代码审计之前,必须要确保该项目是可以正常使用的,而不是一个空壳。
该项目提供了一个自动化构建部署的脚本,主要是需要自己安装docker和docker-compose,同时docker-compose的版本要求比较高,这也要求我们不要使用操作系统自带的命令进行安装,否则很有可能不满足其限定条件。
centos具体安装过程:
可以将以下内容放到一个脚本中:
yum update && yum install -y git && git clone https://github.com/AISHU-Technology/kweaver.git && rm -rf /var/lib/docker && yum install -y yum-utils device-mapper-persistent-data lvm2 && yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum install -y docker-ce && mkdir -p /etc/docke
然后执行:/bin/bash xxx.sh(centos)
再执行
curl -L https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
执行docker-compose version验证安装,如果不是1版本,就证明成功了。
执行systemctl start docker启动docker守护进程,因为docker-compose是通过守护进程sock的方式跟docker进行连接的,所以必须要有此操作。
最后执行
cd kweaver/deploy/
./instash.sh
即可。
安装完成之后,利用docker ps指令查看开启的docker容器提供的服务如下:
圈出来的一系列是容器端口与外部端口的映射,避免出现使用的问题,需要在服务器厂商那里打开安全组。
最终的访问地址为:/home/graph-list
商业版的登录界面应该是:
厂家在商业版中应该有更全面的打算。但是,在同一些模块里面,代码应该都是同一份,所以,如果能审计出开源版的漏洞,那么商业版大概率也有类似的问题,不过这个就涉及漏洞审计的内容了,这里不深入讨论。
项目应该是可用的,那么,接下来我们就应该开始尽可能的多收集该开源项目的应用场景。
收集开源项目(和其商业版)的应用场景
基本信息
目前我们掌握的信息有:
开源地址:https://github.com/AISHU-Technology/kweaver
商业版名称:anyData
利用商业名称,我们可以找到部署了这个商业版的一些地址,比如
/login 2.0版本
/login 1.0版本
顺便找到了中文商业版的文档:
有了接口文档,将有利于我们理解项目的运行逻辑和系统架构。
ps:这一定是一个有趣的前端
可能使用到的框架
了解使用的框架有助于我们从更多层面了解项目,不至于看代码看不懂写的啥。
vuexy
更多信息
利用fofa,谷歌搜索等基本工具,我们可以获取到更多的信息,获取到的信息越多,越有利于我们对开源项目的代码审计。
下载开源项目的代码
git clone https://github.com/AISHU-Technology/kweaver.git
目录结构如下:
根据我的观察,studio部分是程序的界面部分,里面包含了前后端界面的代码。sdk应该是封装的远程过程调用的函数。engine目录中实现了图的相关api,以及api 的相关服务,这个api 的相关服务我感觉有点像是自动化测试的东西。deploy就是部署发布相关的准备文件。builder看起来像是构建相关的文件。
阅读源码
阅读前端源码
利用pycharm打开项目,然后用webstorm打开前端所在目录:
\anydata\kweaver\studio\webui
执行
yarn install
yarn serve
就可以将项目启动起来。后端的代码是利用go语言写的,可以考虑使用idea打开。
但是其实我想说,我们查看一个开源项目的代码其实不一定非要运行起来,还有一种方式叫静态代码审计,下一篇我将描写如何利用Java实现对前端代码的自动化静态代码审计
待更新,太晚了,感兴趣请收藏