rasta/rasta_data_manipulation/rasta_triturage/populate_db_tool.py
Jean-Marie Mineau cd1e91bb99
first commit
2023-11-16 14:30:24 +01:00

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()