## 一、數據庫的表結構
所有數據表均采用**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'字符串。
```