Spaces:
Runtime error
Runtime error
| import os | |
| import sys | |
| import gradio as gr | |
| from androguard.misc import AnalyzeAPK | |
| from DroidDetective.DroidDetective import APK_Analyser | |
| def check_apk(apk_to_check): | |
| if apk_to_check == None: | |
| return "Provide an APK to analyse." | |
| output_builder = "" | |
| analyser = APK_Analyser() | |
| model_path = f"{os.path.dirname(os.path.abspath(__file__))}/DroidDetective/apk_malware.model" | |
| file_to_check = apk_to_check.name | |
| if not file_to_check.endswith(".apk"): | |
| return "Please provide an .apk file." | |
| # Check should train | |
| if not os.path.isfile(model_path): | |
| if os.path.isdir("malware") and os.path.isdir("normal"): | |
| apk_info = analyser.train_model(malware_apks_folder_path="malware", normal_apks_folder_path="normal") | |
| else: | |
| return "When training a model, ensure that a 'malware' and 'normal' folder exist at the root of this project and that training APKs exist in both folders." | |
| # Check if model exists | |
| if os.path.exists(model_path): | |
| print("test0") | |
| result, apk_data = analyser.identify(file_to_check, model_path) | |
| print("test1") | |
| if result == 1: | |
| output_builder = output_builder + "Analysed file, identified as malware!" | |
| else: | |
| output_builder = output_builder + "Analysed file, identified as not malware.".format(file_to_check) | |
| print("test2") | |
| output_builder = output_builder + "\n"+"-"*20 +"\n"+"Permissions: \n" | |
| print("test3") | |
| permissions = apk_data["permissions"] | |
| print("permissions: {}".format(permissions)) | |
| print("test4") | |
| for permission in permissions: | |
| print(permission) | |
| output_builder = output_builder + permission + "\n" | |
| print("test5") | |
| print(output_builder) | |
| return output_builder | |
| print("Test6") | |
| else: | |
| return "No model found, please train model" | |
| print(output_builder) | |
| return output_builder | |
| demo = gr.Interface( | |
| fn=check_apk, | |
| inputs= "file", | |
| outputs="text", | |
| ) | |
| demo.launch() | |