2.优化任务处理逻辑,识别到有壳后,停止执行后继逻辑 3.增加ipa壳识别功能,将能够更好的对壳进行识别 4.增加单独的macho文件扫描功能 5.增加将结果url和ip地址单独输出到excel 6.修复ipa包中存在中文路径不能识别macho问题v1.0.5
parent
2b8fa22228
commit
e2456032c0
@ -0,0 +1,119 @@ |
||||
# -*- coding: utf-8 -*- |
||||
# Author: kelvinBen |
||||
# Github: https://github.com/kelvinBen/AppInfoScanner |
||||
|
||||
# 接收传入的参数信息,根据参数进行平台分发 |
||||
import os |
||||
import re |
||||
import xlwt |
||||
import config |
||||
import threading |
||||
from queue import Queue |
||||
import libs.core as cores |
||||
from libs.core.parses import ParsesThreads |
||||
from libs.task.android_task import AndroidTask |
||||
from libs.task.ios_task import iOSTask |
||||
from libs.task.web_task import WebTask |
||||
|
||||
class BaseTask(object): |
||||
thread_list =[] |
||||
result_dict = {} |
||||
value_list = [] |
||||
|
||||
# 统一初始化入口 |
||||
def __init__(self, types="Android", inputs="", rules="", net_sniffer=False, no_resource=False, package="", all_str=False, threads=10): |
||||
self.types = types |
||||
self.net_sniffer = net_sniffer |
||||
self.path = inputs |
||||
if rules: |
||||
config.filter_strs.append(r'.*'+str(rules)+'.*') |
||||
self.no_resource = no_resource |
||||
self.package = package |
||||
self.all = all_str |
||||
self.threads = threads |
||||
self.file_queue = Queue() |
||||
|
||||
# 统一调度平台 |
||||
def start(self): |
||||
workbook = xlwt.Workbook(encoding = 'utf-8') |
||||
|
||||
# 创建excel头 |
||||
worksheet = self.__creating_excel_header__(workbook) |
||||
|
||||
# 任务控制中心 |
||||
task_info = self.__tast_control__() |
||||
file_queue = task_info["file_queue"] |
||||
shell_flag = task_info["shell_flag"] |
||||
comp_list = task_info["comp_list"] |
||||
packagename = task_info["packagename"] |
||||
|
||||
if shell_flag: |
||||
print('\033[3;31m Error: This application has shell, the retrieval results may not be accurate, Please remove the shell and try again!') |
||||
return |
||||
|
||||
# 线程控制中心 |
||||
self.__threads_control__(file_queue) |
||||
|
||||
# 等待线程结束 |
||||
for thread in self.thread_list: |
||||
thread.join() |
||||
|
||||
# 结果输出中心 |
||||
self.__print_control__(packagename,comp_list,workbook,worksheet) |
||||
|
||||
def __creating_excel_header__(self,workbook): |
||||
worksheet = workbook.add_sheet("扫描信息",cell_overwrite_ok=True) |
||||
worksheet.write(0,0, label = "扫描结果") |
||||
return worksheet |
||||
|
||||
def __tast_control__(self): |
||||
task_info = {} |
||||
# 调用Android 相关处理逻辑 |
||||
if self.types == "Android": |
||||
task_info = AndroidTask(self.path,self.no_resource,self.package).start() |
||||
# 调用iOS 相关处理逻辑 |
||||
elif self.types == "iOS": |
||||
task_info = iOSTask(self.path,self.no_resource).start() |
||||
# 调用Web 相关处理逻辑 |
||||
else: |
||||
task_info = WebTask.start() |
||||
return task_info |
||||
|
||||
def __threads_control__(self,file_queue): |
||||
for threadID in range(1,self.threads): |
||||
name = "Thread - " + str(threadID) |
||||
thread = ParsesThreads(threadID,name,file_queue,self.all,self.result_dict,self.types) |
||||
thread.start() |
||||
self.thread_list.append(thread) |
||||
|
||||
def __print_control__(self,packagename,comp_list,workbook,worksheet): |
||||
txt_result_path = cores.txt_result_path |
||||
xls_result_path = cores.xls_result_path |
||||
|
||||
if packagename: |
||||
print("========= The package name of this APP is: ===============") |
||||
print(packagename) |
||||
|
||||
if len(comp_list) != 0: |
||||
print("========= Component information is as follows :===============") |
||||
for json in comp_list: |
||||
print(json) |
||||
|
||||
print("=========The result set for the static scan is shown below:===============") |
||||
with open(txt_result_path,"a+",encoding='utf-8',errors='ignore') as f: |
||||
row = 1 |
||||
for key,value in self.result_dict.items(): |
||||
f.write(key+"\r") |
||||
for result in value: |
||||
if result in self.value_list: |
||||
continue |
||||
self.value_list.append(result) |
||||
print(result) |
||||
worksheet.write(row,0, label = result) |
||||
row = row + 1 |
||||
f.write("\t"+result+"\r") |
||||
print("For more information about the search, see TXT file result: %s" %(txt_result_path)) |
||||
print("For more information about the search, see XLS file result: %s" %(xls_result_path)) |
||||
workbook.save(xls_result_path) |
||||
|
||||
|
@ -1 +1,2 @@ |
||||
click |
||||
click |
||||
xlwt |
Loading…
Reference in new issue