コード例 #1
0
def is_api_exist_in_with_framework(table_name, api_name, framework, sdk):
    sql = "select * from " + table_name + " where api_name = ? and framework = ? and sdk = ?;"

    if (framework.endswith(".framework") == False):
        framework = "%s.framework" % (framework)

    params = (api_name, framework, sdk)
    return SqliteHandler().exec_select_one(sql, params)
コード例 #2
0
def create_document_type_table(table_name):
    sql = "CREATE TABLE IF NOT EXISTS %s (\
              api_name varchar,\
              class_name varchar,\
              type varchar,\
              header_file varchar,\
              sdk varchar,\
              framework varchar)" % (table_name)
    SqliteHandler().exec_sql(sql)
コード例 #3
0
def get_dsidx_apis(db_path):
    '''
    has document apis
    info:获得带文档的api。(/Users/Test/Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleiOS7.0.iOSLibrary.docset/Contents/Resources),在里面有个docSet.dsidx的文件,这就是Xcode针对api做的数据库,从这里可以获得带文档的api的各种信息了,从而有了带文档的api集合set_B。
    
    '''
    sql = "SELECT T.Z_PK, T.ZTOKENNAME, T.ZTOKENTYPE, T.ZCONTAINER, M.ZDECLAREDIN FROM ZTOKEN AS T, ZTOKENMETAINFORMATION AS M WHERE ZTOKENTYPE IN (3,9,12,13,16) AND T.Z_PK = M.ZTOKEN"
    apiset = SqliteHandler(db=db_path).exec_select(sql)
    return apiset
コード例 #4
0
def get_private_api_list():
    '''
    缓存数据,批量检查的时候,减少sql io
    '''
    global private_apis
    if not private_apis:
        sql = "select * from private_apis group by api_name having private_apis.api_name not in (select api_name from whitelist group by api_name);"
        params = ()
        private_apis = SqliteHandler().exec_select(sql, params)

    return private_apis
コード例 #5
0
def get_white_api_list():
    '''
    白名单中的api
    缓存数据,批量检查的时候,减少sql io
    '''
    global white_apis
    if not white_apis:
        sql = "select * from whitelist group by api_name;"
        params = ()
        private_apis = SqliteHandler().exec_select(sql, params)
    
    return private_apis
コード例 #6
0
def get_private_api_list(framework = None):
    framework_str = None
    if framework and len(framework) > 0:
        framework_str = '('
        for f in framework:
            framework_str = framework_str + "'" + f + "', "

        framework_str = framework_str[0:-2]
        framework_str = framework_str + ')'
    
    #有frame过滤条件
    if framework_str:
        sql = "select * from private_apis group by api_name having private_apis.framework in " + framework_str + " and private_apis.api_name not in (select api_name from whitelist group by api_name);"
        params = ()
    else:
        sql = "select * from private_apis group by api_name having private_apis.api_name not in (select api_name from whitelist group by api_name);"
        params = ()
    private_apis = SqliteHandler().exec_select(sql, params)
    return private_apis
コード例 #7
0
def get_private_apis(private=None, public=None):
    where_content = ""
    if (private != None and len(private) > 0):
        for single_private in private:
            if (single_private.endswith(".framework") == False):
                single_private = "%s.framework" % (single_private)
            where_content += "'%s'," % (single_private)

    if (public != None and len(public) > 0):
        for single_public in public:
            if (single_public.endswith(".framework") == False):
                single_public = "%s.framework" % (single_public)
            where_content += "'%s'," % (single_public)

    if (len(where_content) > 0):
        where_content = "(%s)" % (where_content[0:-1])
        sql = "select * from private_apis where framework in %s group by api_name;" % (
            where_content)
    else:
        sql = "select * from private_apis group by api_name;"
    params = ()
    return SqliteHandler().exec_select(sql, params)
コード例 #8
0
def get_container_name(Z_PK, db_path):
    sql = "SELECT ZCONTAINERNAME FROM ZCONTAINER WHERE Z_PK = ?;"
    container = SqliteHandler(db=db_path).exec_select_one(sql, (Z_PK, ))
    if container:
        return container['ZCONTAINERNAME']
    return None
コード例 #9
0
def delete_apis_by_sdk(table_name, sdk):
    sql = "delete from " + table_name + " where sdk = ?;"
    return SqliteHandler().exec_update(sql, (sdk, ))
コード例 #10
0
def create_some_table():
    #从public framework 中dump出来的所有api,其中包含部分私有api(sql7)
    sql1 = ("create table framework_dump_apis("
            "api_name varchar,"
            "class_name varchar,"
            "type varchar,"
            "header_file varchar,"
            "sdk varchar,"
            "framework varchar)")

    #从public framework .h文件中解析代码解析出来的api
    sql2 = ("create table framework_header_apis("
            "api_name varchar,"
            "class_name varchar,"
            "type varchar,"
            "header_file varchar,"
            "sdk varchar,"
            "framework varchar)")

    # #有文档的pi
    # sql3 = ("create table document_apis("
    #        "api_name varchar,"
    #        "class_name varchar,"
    #        "type varchar,"
    #        "header_file varchar,"
    #        "sdk varchar,"
    #        "framework varchar)")

    # #sql2 - sql3
    # sql4 = ("create table undocument_apis("
    #        "api_name varchar,"
    #        "class_name varchar,"
    #        "type varchar,"
    #        "header_file varchar,"
    #        "sdk varchar,"
    #        "framework varchar)")

    #包括sql6,sql7的所有内容
    sql5 = ("create table private_apis("
            "api_name varchar,"
            "class_name varchar,"
            "type varchar,"
            "header_file varchar,"
            "sdk varchar,"
            "framework varchar)")

    #private framework dump出来的api,全部为私有api
    sql6 = ("create table private_framework_dump_apis("
            "api_name varchar,"
            "class_name varchar,"
            "type varchar,"
            "header_file varchar,"
            "sdk varchar,"
            "framework varchar)")

    sql7 = ("create table framework_private_apis("
            "api_name varchar,"
            "class_name varchar,"
            "type varchar,"
            "header_file varchar,"
            "sdk varchar,"
            "framework varchar)")

    SqliteHandler().exec_sql(sql1, ())
    SqliteHandler().exec_sql(sql2, ())
    # SqliteHandler().exec_sql(sql3, ())
    # SqliteHandler().exec_sql(sql4, ())
    SqliteHandler().exec_sql(sql5, ())
    SqliteHandler().exec_sql(sql6, ())
    SqliteHandler().exec_sql(sql7, ())
コード例 #11
0
from db.sqlite_utils import SqliteHandler

fp = open("/Users/gavin/Documents/03-my_develop/01-code/pythonWorkspace/iOS-private-api-checker/result/private_2.txt")
content = fp.readlines()
fp.close()


for line in content:
    line = str(line.replace("\n",""))
    sql = "select * from ZTOKEN  WHERE  ZTOKENNAME like '%s' and ZLANGUAGE in (1,2)" % (line)
    rt = SqliteHandler(db="9.3-docSet.dsidx").exec_select(sql)
    if rt:
        print sql
コード例 #12
0
def is_api_exist_in_private_apis(api_name):
    sql = "select * from private_apis where api_name = '%s'" % (api_name)
    return SqliteHandler().exec_select_one(sql)
コード例 #13
0
def get_document_apis(sdk=config.sdks_config[0]["sdk"]):
    sql = "select * from document_apis where sdk = ?"
    params = (sdk, )
    return SqliteHandler().exec_select(sql, params)
コード例 #14
0
def is_api_exist_in(table_name, api):
    sql = "select * from " + table_name + " where api_name = ? and class_name = ? and sdk = ?;"
    params = (api['api_name'], api['class_name'], api['sdk'])
    return SqliteHandler().exec_select_one(sql, params)
コード例 #15
0
def get_framework_dump_apis(sdk):
    sql = "select * from framework_dump_apis where sdk = ?"
    params = (sdk, )
    return SqliteHandler().exec_select(sql, params)
コード例 #16
0
def delete_apis_from_private_apis(api_name, framework, class_name, sdk):
    sql = "delete from private_apis where api_name = '%s' and class_name = '%s' and framework = '%s' and sdk = '%s'" % (
        api_name, class_name, framework, sdk)
    return SqliteHandler().exec_update(sql)
コード例 #17
0
def get_document_apis_type(type_name, sdk=config.sdks_config[0]["sdk"]):
    sql = "select * from document_apis_type_%s where sdk = ?" % (type_name)
    params = (sdk, )
    return SqliteHandler().exec_select(sql, params)
コード例 #18
0
def get_framework_private_apis():
    sql = "select * from framework_private_apis group by api_name;"
    params = ()
    return SqliteHandler().exec_select(sql, params)
コード例 #19
0
def get_framework_and_header(Z_PK, db_path):
    sql = "SELECT ZFRAMEWORKNAME, ZHEADERPATH FROM ZHEADER WHERE Z_PK = ?;"
    rst = SqliteHandler(db=db_path).exec_select_one(sql, (Z_PK, ))
    return rst
コード例 #20
0
def insert_apis(table_name, datas):
    sql = "insert into " + table_name + "(api_name, class_name, type, header_file, sdk, framework) values(:api_name, :class_name, :type, :header_file, :sdk, :framework)"
    return SqliteHandler().exec_insert_many(sql, datas)
コード例 #21
0
def clean_table(table_name):
    sql = "delete from %s" % (table_name)
    return SqliteHandler().exec_sql(sql)