176 lines
3.9 KiB
Python
176 lines
3.9 KiB
Python
import sqlite3
|
|
from pathlib import Path
|
|
|
|
|
|
TOOL_INFO = [
|
|
{
|
|
"tool_name": "adagio",
|
|
"use_python": True,
|
|
"use_androguard": True,
|
|
},
|
|
{
|
|
"tool_name": "amandroid",
|
|
"use_scala": True,
|
|
"use_soot": False,
|
|
"use_apktool": True,
|
|
},
|
|
{
|
|
"tool_name": "anadroid",
|
|
"use_python": True,
|
|
"use_java": True,
|
|
"use_scala": True,
|
|
"use_soot": False,
|
|
"use_apktool": True,
|
|
},
|
|
{
|
|
"tool_name": "androguard",
|
|
"use_python": True,
|
|
"use_androguard": True, # Duh
|
|
},
|
|
{
|
|
"tool_name": "androguard_dad",
|
|
"use_python": True,
|
|
"use_androguard": True,
|
|
},
|
|
{
|
|
"tool_name": "apparecium",
|
|
"use_python": True,
|
|
"use_androguard": True,
|
|
},
|
|
{
|
|
"tool_name": "blueseal",
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
"use_apktool": True,
|
|
},
|
|
{
|
|
"tool_name": "dialdroid",
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
},
|
|
{
|
|
"tool_name": "didfail",
|
|
"use_python": True,
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
},
|
|
{
|
|
"tool_name": "droidsafe",
|
|
"use_python": True,
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
"use_apktool": True,
|
|
},
|
|
{
|
|
"tool_name": "flowdroid",
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
},
|
|
{
|
|
"tool_name": "gator",
|
|
"use_python": True,
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
"use_apktool": True,
|
|
},
|
|
{
|
|
"tool_name": "ic3",
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
},
|
|
{
|
|
"tool_name": "ic3_fork",
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
},
|
|
{
|
|
"tool_name": "iccta",
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
"use_apktool": True,
|
|
},
|
|
{
|
|
"tool_name": "mallodroid",
|
|
"use_python": True,
|
|
"use_androguard": True,
|
|
},
|
|
{
|
|
"tool_name": "perfchecker",
|
|
"use_java": True,
|
|
"use_soot": True,
|
|
},
|
|
{
|
|
"tool_name": "redexer",
|
|
"use_ocaml": True,
|
|
"use_ruby": True,
|
|
"use_apktool": True,
|
|
},
|
|
{
|
|
"tool_name": "saaf",
|
|
"use_java": True,
|
|
"use_soot": False,
|
|
"use_apktool": True,
|
|
},
|
|
{
|
|
"tool_name": "wognsen_et_al",
|
|
"use_python": True,
|
|
"use_prolog": True,
|
|
"use_apktool": True,
|
|
},
|
|
]
|
|
|
|
for line in TOOL_INFO:
|
|
for col in [
|
|
"use_python",
|
|
"use_java",
|
|
"use_scala",
|
|
"use_ocaml",
|
|
"use_ruby",
|
|
"use_prolog",
|
|
"use_soot",
|
|
"use_androguard",
|
|
"use_apktool",
|
|
]:
|
|
if col not in line:
|
|
line[col] = False
|
|
|
|
|
|
def create_tool_table(db: Path):
|
|
"""Create the db/table if it does not exist."""
|
|
with sqlite3.connect(db) as con:
|
|
cur = con.cursor()
|
|
if (
|
|
cur.execute("SELECT name FROM sqlite_master WHERE name='tool';").fetchone()
|
|
is None
|
|
):
|
|
cur.execute(
|
|
(
|
|
"CREATE TABLE tool ("
|
|
" tool_name, use_python, use_java, use_scala,"
|
|
" use_ocaml, use_ruby, use_prolog, use_soot, "
|
|
" use_androguard, use_apktool"
|
|
");"
|
|
)
|
|
)
|
|
con.commit()
|
|
|
|
|
|
def populate_tool(
|
|
db: Path,
|
|
):
|
|
"""Add to database the tool information"""
|
|
create_tool_table(db)
|
|
# DROP table if already exist? replace value?
|
|
with sqlite3.connect(db) as con:
|
|
cur = con.cursor()
|
|
cur.executemany(
|
|
(
|
|
"INSERT INTO tool VALUES("
|
|
" :tool_name, :use_python, :use_java, :use_scala,"
|
|
" :use_ocaml, :use_ruby, :use_prolog, :use_soot, "
|
|
" :use_androguard, :use_apktool"
|
|
");"
|
|
),
|
|
TOOL_INFO,
|
|
)
|
|
con.commit()
|