## 一、数据库的表结构
所有数据表均采用**Innodb**,字符编码集为**utf8**
### verify表(身份校验表)
| Field | Type | Null | Key | Default | Extra |
|-------------------|-------------|------|-----|---------|-------|
| email | varchar(32) | NO | PRI | NULL | |
| verification_code | char(6) | NO | | NULL | |
| time | bigint(12) | NO | | NULL | |
### user表(用户表)
| Field | Type | Null | Key | Default | Extra |
|--------------------|------------------|------|-----|---------|----------------|
| user_id | bigint(16) | NO | PRI | NULL | auto_increment |
| email | varchar(32) | NO | | NULL | |
| password | text | NO | | NULL | |
| token_key | char(16) | NO | | NULL | |
| token_time_end | bigint(12) | NO | | NULL | |
| nickname | varchar(16) | NO | | NULL | |
| head_url | varchar(1024) | NO | | NULL | |
| file_num | int(10) unsigned | NO | | NULL | |
| file_protected_num | int(10) unsigned | NO | | NULL | |
| file_scan_num | int(10) unsigned | NO | | NULL | |
| file_leak_num | int(10) unsigned | NO | | NULL | |
| register_time | bigint(12) | NO | | NULL | |
| register_date | varchar(10) | NO | | NULL | |
### apk表(应用表)
| Field | Type | Null | Key | Default | Extra |说明|
|--------------------|---------------|------|-----|---------|----------------|-----|
| apk_id | bigint(20) | NO | PRI | NULL | auto_increment | apk的ID|
| user_id | bigint(16) | NO | | NULL | | user的ID|
| apk_name | varchar(1024) | NO | | NULL | |唯一识别apk的名称,是一串定长的关于用户邮箱的哈希值|
| apk_real_name | varchar(32) | NO | | NULL | | apk的展示名称|
| upload_time | bigint(12) | NO | | NULL | | 上传时间,距1970-1-1的秒数|
| upload_date | varchar(10) | NO | | NULL | | 上传时间,Y-m-d格式|
| upload | tinyint(1) | NO | | NULL | | 上传标志,1完成,0未完成|
| protected | tinyint(1) | NO | | NULL | | 加固标志,1完成,0未加固|
| scanned | tinyint(1) | NO | | NULL | | 扫描标志,1完成,0未完成|
| app | varchar(1024) | NO | | NULL | | 源apk的下载url
| report | varchar(1024) | YES | | NULL | | pdf版报告的url
| app_protect | varchar(1024) | YES | | NULL | | 加固后的apk下载url
| report_protect | varchar(1024) | YES | | NULL | | pdf
(需要修改源码文件)
### report表(报告表)
| Field | Type | Null | Key | Default | Extra | 说明 |
|------------------|----------------|------|-----|---------|---------------|-----------------------------|
| count | bigint(20) | NO | PRI | NULL | auto_increment| |
| apk\_id | bigint(20) | NO | | NULL | | |
| identify | char(5) | NO | | NULL | | |
| result | text | NO | | NULL | | |
| level | tinyint(1) | NO | | NULL | | |
select result, level where apk_id = XXX and identify = 'XXX';
## 二、数据交换格式(json)
前后端数据交换格式(后端由php/python)
```
{
state_message: xxxx //状态码,0为正常,其他的是错误
data: [] //具体的各种数据
}
```
python的扫描结果返回格式
```
{
state_message: xxxx
info:{
apk_name: //apk的唯一标识(string)
file_size: //文件大小,单位MB(float)
md5: //针对apk文件计算的32位的md5散列值(string)
package_name: //包名(string)
main_activity: //主活动(string)
min_sdk: //最小sdk(int)
target_sdk: //目标sdk(int)
permission:[{
{level:'xxx',data:'xxx'},
{level:'xxx',data:'xxx'},
......
{level:'xxx',data:'xxx'}]
}] //menifest中的权限内容
//(level-string,data-string),有顺序要求
activity: //(string)
service: //(string)
broadcast_recv: //(string)
content_provider: //(string)
leak:[
{level:xxx,data:'xxx'},
{level:xxx,data:'xxx'},
......
{level:xxx,data:'xxx'}]
} //总共有70项,大小为70的数组
//(level-string,data-string),有顺序要求
}
```
python返回格式的进一步说明
**permission**
```
每个应用申请权限的数量都不尽相同,所以permission的json数组的长度是不固定的,需要遍历manifest文件,取出所有的权限。详细的权限体制说明请参看《扫描项目详述》中的《权限信息检测》。
level-string类型
'xxx' //level的返回值请参考《扫描项目详述》中的《权限信息检测》
//所有权限对应的权限字符串,按照那个值进行返回
data-string类型
'xxxx' //权限的字符串,比如ACCESS_NETWORK_STATE
[注意]
需要仔细阅读《扫描项目详述》中的《权限信息检测》中的内容。
```
**leak**
```
根据《扫描概述》中《安全指数模型》70项的风险项的扫描情况,将leak设计成为存储70个对象的数组,长度为70,需要注意的逻辑顺序必须与文档中70个风险项的排列顺序保持一致。
level-string类型-返回以下7种情况中的1种
'safe' //安全
'remind' //提醒
'warning' //警告
'low' //低危
'middle' //中危
'high' //高危
'NF' //暂时无法实现该项的扫描功能(No Function)
date-string类型-返回以下2种情况中的1种
'xxxx' //扫描结果,需要定位具体的漏洞点,描述漏洞发生的位置
'NULL' //返回'NULL'字符串
[注意]
level=safe可以返回'NULL'字符串,或者level=NF也可以返回'NULL',注意不要返回空的内容,而是内容为'NULL'字符串。
```