GithubHelp home page GithubHelp logo

kelvinben / appinfoscanner Goto Github PK

View Code? Open in Web Editor NEW
2.9K 42.0 366.0 82.46 MB

一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。

License: GNU General Public License v3.0

Python 100.00%
security python3 tools apk apk-dex android ipa scanner web-hacking security-tools

appinfoscanner's Introduction

License Language License HitCount

该项目目前仅仅是规划项目中的冰山一角,如果您对此项目感兴趣或者想参与后继项目的开发工作或者翻译工作中,请发送邮件至[email protected]说明你的能力和诉求。

AppInfoScanner

一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。

前言

  • 本项目的开发者目前为个人开发者同时有自己的工作,新的功能或者需求会在闲暇时间进行开发,BUG会优先进行处理。
  • 如果在使用中遇到问题或者有新的需求,请在提交BUG反馈,提交BUG前请先阅读最后的"常见问题"。
  • 如果您觉得这个项目对您有用,请点击本项目右上角的"star"按钮。
  • 如果您想持续跟进新的版本情况,请点击本项目右上角的"Watch"按钮。
  • 如果您想参与本项目的开发,请点击本项目右上角的"Fork"按钮,否则请勿点击"Fork"按钮。

免责声明

请勿将本项目技术或代码应用在恶意软件制作、软件著作权/知识产权盗取或不当牟利等非法用途中。实施上述行为或利用本项目对非自己著作权所有的程序进行数据嗅探将涉嫌违反《中华人民共和国刑法》第二百一十七条、第二百八十六条,《中华人民共和国网络安全法》《中华人民共和国计算机软件保护条例》等法律规定。本项目提及的技术仅可用于私人学习测试等合法场景中,任何不当利用该技术所造成的刑事、民事责任均与本项目作者无关。

适用场景

  • 日常渗透测试中对APP中进行关键资产信息收集,比如URL地址、IP地址、关键字等信息的采集等。
  • 大型攻防演练场景中对APP中进行关键资产信息收集,比如URL地址、IP地址、关键字等信息的采集等。
  • 对WEB网站源代码进行URL地址、IP地址、关键字等信息进行采集等(可以是开源的代码也可以是右击网页源代码另存为)。
  • 对H5页面进行进行URL地址、IP地址、关键字等信息进行采集等。
  • 对某个APP进行定相信息收集等

功能介绍:

  • 支持目录级别的批量扫描
  • 支持DEX、APK、IPA、MACH-O、HTML、JS、Smali、ELF等文件的信息收集
  • 支持APK、IPA、H5等文件自动下载并进行一键信息收集
  • 支持自定义请求头、请求报文、请求方法
  • 支持规则自定义,随心自定义扫描规则
  • 支持自定义忽略资源文件
  • 支持自定义配置Android壳规则
  • 支持自定义配置中间件规则
  • 支持Android加固壳、iPA官方壳的检测
  • 支持IP地址、URL地址、中间件(json组件和xml组件)的信息采集
  • 支持Android对应包名下内容的采集
  • 支持网络嗅探功能,可以提供基本的信息输出
  • 支持Windows系统、MacOS系统、*nux系列的系统
  • 具备简单的AI识别功能,可以快速过滤三方URL地址
  • 指纹识别模块
  • 添加国际化语言包
  • 一键对APK文件进行自动修复
  • 识别到壳后自动进行脱壳处理

部分截图

环境说明

  • Apk文件解析需要使用JAVA环境,JAVA版本1.8及以下
  • Python3的运行环境

目录说明

AppInfoScanner
    |-- libs  程序的核心代码
        |-- core
            |-- __init__.py 全局配置信息
            |-- parses.py 用于解析文件中的静态信息
            |-- download.py 用于自动下载APP或者H5页面
            |-- net.py 用于进行网络嗅探,并获取基本信息
        |-- task
            |-- __init__.py 目录初始化文件
            |-- base_task.py 统一任务调度中心
 			|-- android_task.py 用于处理Android相关的任务
            |-- download_task.py 用于处理自动下载APP或者H5的任务            
​			 |-- ios_task.py 用于处理iOS相关的任务
            |-- net_task.py 用于处理网络嗅探相关任务
​            |-- web_task.py 用于处理Web相关的任务,比如网页右键源代码、H5相关的静态信息
​    |-- tools 程序需要依赖的工具
​        |-- apktool.jar 用于反编译apk文件,不同平台可能需要进行自我切换
​        |-- baksmali.jar 用于反编译dex文件,不同平台可能需要进行自我切换
​        |-- strings.exe 用于windows 32下获取iPA的字符串信息
​        |-- strings64.exe 用于windows 64的系统获取iPA的字符串信息
​    |-- __init__.py 目录初始化文件 
    |-- app.py 主运行程序
​    |-- config.py 整个程序的配置文件
​    |-- README.md  程序使用说明
    |-- requirements.txt 程序中需要安装的依赖库
    |-- update.md 程序历史版本信息

使用说明

  1. 下载
    git clone https://github.com/kelvinBen/AppInfoScanner.git
    
    或者复制以下链接到浏览器下载最新正式版本
    
    https://github.com/kelvinBen/AppInfoScanner/releases/latest

    国内快速下载通道:

    git clone https://gitee.com/kelvin_ben/AppInfoScanner.git

  1. 安装依赖库
    cd AppInfoScanner
    python -m pip install -r requirements.txt
  1. 运行(基础版)
  • 扫描Android应用的APK文件、DEX文件、需要下载的APK文件下载地址、保存需要扫描的文件的目录
    python app.py android -i <Your APK File or DEX File or APK Download Url or Save File Dir>
  • 扫描iOS应用的IPA文件、Mach-o文件、需要下载的IPA文件下载地址、保存需要扫描的文件目录
    python app.py ios -i <Your IPA file or Mach-o File or IPA Download Url or Save File Dir>
  • 扫描Web站点的文件、目录、需要缓存的站点URl
    python app.py web -i <Your Web file or Save Web Dir or Web Cache Url>

进阶操作指南

基本命令格式

python app.py [TYPE] [OPTIONS] <The URL or directory to scan>

符号信息说明

<> 代表需要扫描的文件或者目录或者URL地址
| 或的关系,只能选择一个
[] 代表需要输入的参数

TYPE参数详细说明

此参数类型对应基本命令格式中的[TYPE],目前仅支持[android/ios/web]三种类型形式,三种类型形式必须指定一个。

android: 用于扫描Android应用相关的文件的内容
ios: 用于扫描iOS应用相关的文件内容
web: 用于扫描WEB站点或者H5相关的文件内容

支持自动根据后缀名称进行修正,即便输入的是ios,实际上-i 输入的参数的文件名为XXX.apk,则会执行android相关的扫描。

OPTIONS参数详细说明

该参数类型对应基本命令格式中的[OPTIONS],支持多个参数共同使用

-i 或者 --inputs: 输入需要进行扫描的文件、目录或者需要自动下载的文件URL地址,如果路径过长请加"进行包裹,此参数为必填项。
-r 或者 --rules: 输入需要扫描文件内容的临时扫描规则。
-s 或者 --sniffer: 开启网络嗅探功能,默认为开启状态。
-n 或者 --no-resource: 忽略所有的资源文件,包含网络嗅探功能中的资源文件(需要先在config.py中配置sniffer_filter相关规则),默认为不忽略资源。
-a 或者 --all: 输出所有符合扫描规则的结果集合,默认为开启状态。
-t 或者 --threads: 设置线程并发数量,默认为10个线程并发。
-o 或者 --output: 指定扫描结果和扫描过程中产生的临时文件的输出目录,默认为脚本所在的目录。
-p 或者 -- package: 指定Android的APK文件或者DEX文件需要扫描的JAVA包名信息。此参数只能在android类型下使用。

具体使用方法

Android相关基本操作

  • 对本地APK文件进行扫描
python app.py android -i <Your apk file>  

例:

python app.py android -i  C:\Users\Administrator\Desktop\Demo.apk
  • 对本地Dex文件进行扫描
python app.py android -i <Your DEX file>  

例:

python app.py android -i  C:\Users\Administrator\Desktop\Demo.dex

  • 对URL地址中包含的APK文件进行扫描
python app.py android -i <APK Download Url>  

例:

python app.py android -i "https://127.0.0.1/Demo.apk" 

需要注意此处如果URL地址过长需要使用双引号(")进行包裹

iOS相关基本操作

  • 对本地IPA文件进行扫描
python app.py ios -i <Your ipa file>

例:

python app.py ios -i "C:\Users\Administrator\Desktop\Demo.ipa" 
  • 对本地Macho文件进行扫描
python app.py ios -i <Your Mach-o file>

例:

python app.py ios -i "C:\Users\Administrator\Desktop\Demo\Payload\Demo.app\Demo" 
  • 对URL地址中包含的IPA文件进行扫描
python app.py ios -i <IPA Download Url>  

例:

python app.py ios -i "https://127.0.0.1/Demo.ipa" 

需要注意此处如果URL地址过长需要使用双引号(")进行包裹,暂时不支持对Apple Store中的IPA文件进行扫描

Web相关基本操作

  • 对本地WEB站点进行扫描
python app.py web -i <Your web file>

例:

python app.py web -i "C:\Users\Administrator\Desktop\Demo.html" 
  • 对URL地址中包含的WEB站点文件进行扫描
python app.py web -i <Web Download Url>  

例:

python app.py web -i "https://127.0.0.1/Demo.html" 

具有共同性的操作

以下操作均以android类型为例:

  • 对一个本地的目录进行扫描
python app.py android -i <Your Dir>

例:

python app.py android -i C:\Users\Administrator\Desktop\Demo
  • 添加临时规则或者关键字
python app.py android -i <Your apk> -r <the keyword | the rules>

例:
添加对百度域名的扫描

python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -r ".*baidu.com.*"
  • 关闭网络嗅探功能
python app.py android -i <Your apk> -s

例:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -s

  • 忽略所有的资源文件
python app.py android -i <Your apk> -n

例:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -n

  • 关闭输出所有符合扫描规则内容的功能
python app.py android -i <Your apk> -a

例:

python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -a
  • 设置并发数量
python app.py android -i <Your apk> -t 20

例:
设置20个并发线程
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -t 20 
  • 指定结果集和缓存文件输出目录
python app.py android -i <Your apk> -o <output path>

例:
比如输出到桌面的Temp目录
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -o C:\Users\Administrator\Desktop\Temp
  • 对指定包名下的文件内容进行扫描,该功能仅支持android类型
python app.py android -i <Your apk> -p <Java package name>

例:
比如需要过滤com.baidu包名下的内容

python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -p "com.baidu"

高级版使用说明

该项目中的程序仅作为一个基本的架子,会内置一些基本的规则,并不是每一个输入的内容都可以完成相关的扫描工作。所以可以根据自己的需要进行相关规则的配置,优秀的配置内容可以达到质的的效果。

  • 配置文件路径为 根目录下的config.py文件,即README.md的同级目录

配置项说明

filter_components: 此配置项用于配置相关组件内容,包括Json组件或者XML组件等
filter_strs: 用于配置需要进行扫描的文件内容,比如需要扫描端口号,则配置为:"r'.*://([\d{1,3}\.]{3}\d{1,3}).*'"
filter_no: 用于忽略扫描文件中不想要的内容
shell_list: 用于配置Android相关的壳特征
web_file_suffix: 此处配置需要进行扫描的WEB文件后缀名称
sniffer_filter: 此处用于配置需要进行忽略网络嗅探的文件后缀名称
headers: 用于配置自动下载过程中需要的请求头信息
data: 用于配置自动下载过程中需要的请求报文体
method: 用于配置自动下载过程中需要的请求方法

常见问题

1. 信息检索垃圾数据过多?

方法1: 根据实际情况调整config.py中的规则信息
方法2: 忽略资源文件

2. 出现错误:Error: This application has shell, the retrieval results may not be accurate, Please remove the shell and try again!

说明需要扫描的应用存在壳,需要进行脱壳/砸壳以后才能进行扫描,目前可以结合以下工具进行脱壳/砸壳处理

    
    Android:
        xposed模块: dexdump
        frida模块: FRIDA-DEXDump
        无Root脱壳:blackdex
    iOS:
        firda模块:
            windows系统使用: frida-ipa-dump
            MacOS系统使用:frida-ios-dump

3. 出现错误: File download failed! Please download the file manually and try again.

文件下载失败。

1) 请检查输入的URL地址是否正确
2)请检查网络是否存在问题或者在配置文件config.py中配置请求头信息(headers)、请求报文体(data)、请求方法(method)保存后重新再执行。

4. 出现错误:Decompilation failed, please submit error information at https://github.com/kelvinBen/AppInfoScanner/issues"

文件反编译失败。

请将错误截图以及对应的APK文件提交至 https://github.com/kelvinBen/AppInfoScanner/issues,作者看到后会及时进行处理。

自定义规则添加

自定义规则提交路径:

[点击添加自定义规则](https://github.com/kelvinBen/AppInfoScanner/issues/7)

提交格式:

1. APP自定义组件添加

如: fastjson的规则如下:
APP组件: fastjson com.alibaba.fastjson

2. 需要进行搜索的字符串

如:查询阿里的AK规则如下:
字符串: 
阿里云AK .*accessKeyId.*".*"

3. 需要搜素的web文件后缀名

如:jsp文件的规则如下:
网站: java语言 jsp

4. Android壳规则
如: 某数字公司的壳规则如下:
壳:某数字公司 com.stub.StubApp

联系作者

微信:bromomo (添加好友请备注:GitHub)

微信群

image

如无法加入请添加微信好友后进群。

邮箱[email protected]

提交需求、提交BUG修复、技术交流、商务合作均可添加作者好友。

Stargazers over time

Stargazers over time

404StarLink 2.0 - Galaxy

AppInfoScanner 是 404Team 星链计划2.0中的一环,如果对AppInfoScanner 有任何疑问又或是想要找小伙伴交流,可以参考星链计划的加群方式。

https://github.com/knownsec/404StarLink2.0-Galaxy#community

appinfoscanner's People

Contributors

kelvinben avatar xiaokanghub avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

appinfoscanner's Issues

Exception in thread "main" brut.androlib.err.RawXmlEncounteredException: Could not decode XML 出错

Exception in thread "main" brut.androlib.err.RawXmlEncounteredException: Could not decode XML
at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:149)
at brut.androlib.res.decoder.XmlPullStreamDecoder.decodeManifest(XmlPullStreamDecoder.java:155)
at brut.androlib.res.decoder.ResFileDecoder.decodeManifest(ResFileDecoder.java:162)
at brut.androlib.res.AndrolibResources.decodeManifestWithResources(AndrolibResources.java:204)
at brut.androlib.Androlib.decodeManifestWithResources(Androlib.java:134)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:122)
at brut.apktool.Main.cmdDecode(Main.java:179)
at brut.apktool.Main.main(Main.java:82)
Caused by: java.io.IOException: Expected: 0x00080003 or 0x00080001, got: 0x0008dddd
at brut.util.ExtDataInput.skipCheckInt(ExtDataInput.java:48)
at brut.androlib.res.decoder.AXmlResourceParser.doNext(AXmlResourceParser.java:858)
at brut.androlib.res.decoder.AXmlResourceParser.next(AXmlResourceParser.java:102)
at brut.androlib.res.decoder.AXmlResourceParser.nextToken(AXmlResourceParser.java:112)
at org.xmlpull.v1.wrapper.classic.XmlPullParserDelegate.nextToken(XmlPullParserDelegate.java:105)
at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:142)
... 7 more

报错页面

当前环境:
python 3.8.7
win 10企业版 1909
AppInfoScanner版本:1.0.8

报错现象:
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\javax\annotation\concurrent
*多余文件 1611 GuardedBy.java
*多余文件 1333 Immutable.java
*多余文件 892 NotThreadSafe.java
*多余文件 752 ThreadSafe.java
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\javax\annotation\meta
*多余文件 650 Exclusive.java
*多余文件 1097 Exhaustive.java
*多余文件 796 TypeQualifier.java
*多余文件 590 TypeQualifierDefault.java
*多余文件 822 TypeQualifierNickname.java
*多余文件 687 TypeQualifierValidator.java
*多余文件 639 When.java
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\okhttp3
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\okhttp3\internal
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\okhttp3\internal\publicsuffix
*多余文件 34000 publicsuffixes.gz
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\org
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\org\apache
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\org\apache\http
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\org\apache\http\entity
*多余目录 -1 D:\security_tools\APP\AppInfoScanner\out\baihe_android_tuiguang1296_y_10_22_0\unknown\org\apache\http\entity\mime
*多余文件 907 version.properties


              总数        复制        跳过       不匹配        失败        其他
   目录:         1         0         1         0         0      3068
   文件:         0         0         0         0         0     27344
   字节:         0         0         0         0         0  234.44 m
   时间:   0:00:31   0:00:00                       0:00:00   0:00:31

结束时间: 2021年11月8日 11:24:01

Traceback (most recent call last):
File "app.py", line 72, in
main()
File "app.py", line 69, in main
cli()
File "E:\python3\lib\site-packages\click\core.py", line 1128, in call
return self.main(*args, **kwargs)
File "E:\python3\lib\site-packages\click\core.py", line 1053, in main
rv = self.invoke(ctx)
File "E:\python3\lib\site-packages\click\core.py", line 1659, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "E:\python3\lib\site-packages\click\core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "E:\python3\lib\site-packages\click\core.py", line 754, in invoke
return _callback(*args, **kwargs)
File "app.py", line 32, in android
raise e
File "app.py", line 28, in android
bootstrapper.init()
File "D:\security_tools\APP\AppInfoScanner\libs\core_init
.py", line 99, in init
os.makedirs(output_path)
File "E:\python3\lib\os.py", line 223, in makedirs
mkdir(name, mode)
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'D:\security_tools\APP\AppInfoScanner\out'

解析ipa报错

[] Create directory D:\AppInfoScanner\out
[
] AI is analyzing filtering rules......
[*] The filtering rules obtained by AI are as follows: {'.*w3.org', '.*0.0.0.0', '.*apache.org', '.*localhost', '.*umeng.com', '.umengcloud.com', '..amap.com', '.*jpush.cn', '.*github.com', '.*127.0.0.1', '.*apple.com', '.*w3school.com.cn', '.*android.com'}
Traceback (most recent call last):
File "D:\AppInfoScanner\app.py", line 72, in
main()
File "D:\AppInfoScanner\app.py", line 69, in main
cli()
File "C:\Users\58891\AppData\Local\Programs\Python\Python39\lib\site-packages\click\core.py", line 829, in call
return self.main(*args, **kwargs)
File "C:\Users\58891\AppData\Local\Programs\Python\Python39\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "C:\Users\58891\AppData\Local\Programs\Python\Python39\lib\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\58891\AppData\Local\Programs\Python\Python39\lib\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\58891\AppData\Local\Programs\Python\Python39\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "D:\AppInfoScanner\app.py", line 49, in ios
raise e
File "D:\AppInfoScanner\app.py", line 47, in ios
BaseTask("iOS", inputs, rules, sniffer, threads).start()
File "D:\AppInfoScanner\libs\task\base_task.py", line 45, in start
task_info = self.tast_control()
File "D:\AppInfoScanner\libs\task\base_task.py", line 87, in tast_control
task_info = iOSTask(cacar_path).start()
File "D:\AppInfoScanner\libs\task\ios_task.py", line 25, in start
self.decode_ipa(cores.output_path)
File "D:\AppInfoScanner\libs\task\ios_task.py", line 96, in decode_ipa
old_zip_dir = self.get_parse_dir(output_path,zip_file_names[0])
File "D:\AppInfoScanner\libs\task\ios_task.py", line 124, in get_parse_dir
end = file_path.index(".app")
ValueError: substring not found

执行apt分析,显示Running failed, please check the error in terminal

C:\source\python\AppInfoScanner\venv\Scripts\python.exe C:\source\python\AppInfoScanner\app.py android -i C:\apk\bk.stxedotehdwwu.sta.apk
[] Create directory C:\source\python\AppInfoScanner\out
[
] AI is analyzing filtering rules......
[*] The filtering rules obtained by AI are as follows: {'.*jpush.cn', '.0.0.0.0', '..amap.com', '.*apple.com', '.*localhost', '.*127.0.0.1', '.*android.com', '.*github.com', '.*umeng.com', '.*apache.org', '.*w3.org', '.*umengcloud.com', '.*slf4j.org', '.*w3school.com.cn'}
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
15.2.2
detect 【腾讯Bugly】 protector
specific code:lib/armeabi/libBugly.so->libBugly.so

detect 【腾讯Bugly】 protector
specific code:lib/x86_64/libBugly.so->libBugly.so

detect 【腾讯Bugly】 protector
specific code:lib/armeabi-v7a/libBugly.so->libBugly.so

detect 【腾讯Bugly】 protector
specific code:lib/x86/libBugly.so->libBugly.so

detect 【腾讯Bugly】 protector
specific code:lib/arm64-v8a/libBugly.so->lib/arm64-v8a/libBugly.so

detect 【腾讯Bugly】 protector
specific code:lib/arm64-v8a/libBugly.so->libBugly.so

[] unpacking
[
] Install the APK
Performing Streamed Install
Success
Push Frida Server
[*] Running Frida Server
C:\source\python\AppInfoScanner\tools\unpacker\hexl-server-arm32: 1 file pushed, 0 skipped. 36.6 MB/s (19977096 bytes in 0.520s)
C:\source\python\AppInfoScanner\tools\unpacker\hexl-server-arm64: 1 file pushed, 0 skipped. 23.9 MB/s (47196872 bytes in 1.884s)
su: invalid uid/gid '-c'
[-] Running failed, please check the error in terminal

Process finished with exit code 0

用pip install frida-tools命令安装frida-tools报错

Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting frida-tools
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ab/42/7823de1787e4c13c88c5de4caaf315365687d5425c9b484df2917bb6ca75/frida-tools-12.3.0.tar.gz (200 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... error
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [25 lines of output]
Traceback (most recent call last):
File "D:\soft\language\python_environment\lib\site-packages\pip_vendor\pyproject_hooks_in_process_in_process.py", line 353, in
main()
File "D:\soft\language\python_environment\lib\site-packages\pip_vendor\pyproject_hooks_in_process_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "D:\soft\language\python_environment\lib\site-packages\pip_vendor\pyproject_hooks_in_process_in_process.py", line 118, in get_requires_for_build_wheel
return hook(config_settings)
File "C:\Users\hua'wei\AppData\Local\Temp\pip-build-env-ujw9tq2l\overlay\Lib\site-packages\setuptools\build_meta.py", line 325, in get_requires_for_build_wheel
return self._get_build_requires(config_settings, requirements=['wheel'])
File "C:\Users\hua'wei\AppData\Local\Temp\pip-build-env-ujw9tq2l\overlay\Lib\site-packages\setuptools\build_meta.py", line 295, in get_build_requires
self.run_setup()
File "C:\Users\hua'wei\AppData\Local\Temp\pip-build-env-ujw9tq2l\overlay\Lib\site-packages\setuptools\build_meta.py", line 487, in run_setup
super().run_setup(setup_script=setup_script)
File "C:\Users\hua'wei\AppData\Local\Temp\pip-build-env-ujw9tq2l\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup
exec(code, locals())
File "", line 13, in
File "C:\Users\hua'wei\AppData\Local\Temp\pip-build-env-ujw9tq2l\overlay\Lib\site-packages\setuptools_init
.py", line 103, in setup
install_setup_requires(attrs)
File "C:\Users\hua'wei\AppData\Local\Temp\pip-build-env-ujw9tq2l\overlay\Lib\site-packages\setuptools_init
.py", line 71, in install_setup_requires
dist = MinimalDistribution(attrs)
File "C:\Users\hua'wei\AppData\Local\Temp\pip-build-env-ujw9tq2l\overlay\Lib\site-packages\setuptools_init
.py", line 53, in init
super().init(filtered)
File "C:\Users\hua'wei\AppData\Local\Temp\pip-build-env-ujw9tq2l\overlay\Lib\site-packages\setuptools\dist.py", line 301, in init
for ep in metadata.entry_points(group='distutils.setup_keywords'):
TypeError: entry_points() got an unexpected keyword argument 'group'
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

增加功能

增加accessKeyId accessSecret等信息泄露检测

星链计划

您好,

我是星链计划的负责人,觉得您的项目很不错,想要将AppInfoScanner收录到星链计划中。

关于星链计划2.0的任何信息,可以了解

https://github.com/knownsec/404StarLink2.0-Galaxy

如果您对我的提议感兴趣,麻烦通过上述链接中的微信联系我,感谢。

反编译失败

报错信息如下:

[*] Create directory /root/桌面/AppInfoScanner/out
[*] Create directory /root/桌面/AppInfoScanner/download
[*] Create directory /root/桌面/AppInfoScanner/history
[*] AI is analyzing filtering rules......
[*] The filtering rules obtained by AI are as follows: {'.*jpush.cn', '.*umengcloud.com', '.*apple.com', '.*.amap.com', '.*apache.org', '.*w3.org', '.*0.0.0.0', '.*umeng.com', '.*android.com', '.*127.0.0.1', '.*github.com', '.*w3school.com.cn', '.*localhost'}
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
Exception in thread "main" java.lang.UnsupportedClassVersionError: brut/apktool/Main : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: brut.apktool.Main. Program will exit.
[-] Decompilation failed, please submit error information at https://github.com/kelvinBen/AppInfoScanner/issues
Traceback (most recent call last):
  File "/root/桌面/AppInfoScanner/app.py", line 72, in <module>
    main()
  File "/root/桌面/AppInfoScanner/app.py", line 69, in main
    cli()
  File "/usr/lib/python3/dist-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/桌面/AppInfoScanner/app.py", line 32, in android
    raise e
  File "/root/桌面/AppInfoScanner/app.py", line 30, in android
    BaseTask("Android", inputs, rules, sniffer, threads, package).start()
  File "/root/桌面/AppInfoScanner/libs/task/base_task.py", line 46, in start
    task_info = self.__tast_control__()
                ^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/桌面/AppInfoScanner/libs/task/base_task.py", line 86, in __tast_control__
    task_info = AndroidTask(cacar_path,self.package).start()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/桌面/AppInfoScanner/libs/task/android_task.py", line 35, in start
    if self.__decode_file__(input_file_path) == "error":
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/桌面/AppInfoScanner/libs/task/android_task.py", line 50, in __decode_file__
    self.__decode_apk__(file_path,apktool_path,output_path)
  File "/root/桌面/AppInfoScanner/libs/task/android_task.py", line 86, in __decode_apk__
    raise Exception(file_path + ", Decompilation failed.")
Exception: /root/桌面/Illusion.apk, Decompilation failed.

AttributeError: 'WrappedSocket' object has no attribute 'getpeername'

AttributeError: 'WrappedSocket' object has no attribute 'getpeername'
Exception in thread Thread - 2:
Traceback (most recent call last):
File "/opt/homebrew/Cellar/[email protected]/3.9.7_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/threading.py", line 973, in _bootstrap_inner
self.run()
File "/Applications/Xc7ACD/APP/AppInfoScanner/libs/core/net.py", line 88, in run
self.get_Http_info(threadLock)
File "/Applications/Xc7ACD/APP/AppInfoScanner/libs/core/net.py", line 29, in get_Http_info
result = self.get_request_result(url_ip)
File "/Applications/Xc7ACD/APP/AppInfoScanner/libs/core/net.py", line 66, in get_request_result
des_ip = sock.getpeername()[0]
AttributeError: 'WrappedSocket' object has no attribute 'getpeername'

Exception in thread "main" brut.androlib.AndrolibException: Invalid chunk type

Exception in thread "main" brut.androlib.AndrolibException: Invalid chunk type: expected=0x00000200, got=0x00000203
at brut.androlib.res.decoder.ARSCDecoder.checkChunkType(ARSCDecoder.java:544)
at brut.androlib.res.decoder.ARSCDecoder.readTablePackage(ARSCDecoder.java:88)
at brut.androlib.res.decoder.ARSCDecoder.readTableHeader(ARSCDecoder.java:82)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:48)
at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:790)
at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:67)
at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:59)
at brut.androlib.Androlib.getResTable(Androlib.java:66)
at brut.androlib.ApkDecoder.setTargetSdkVersion(ApkDecoder.java:236)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:118)
at brut.apktool.Main.cmdDecode(Main.java:179)
at brut.apktool.Main.main(Main.java:82)
[-] Decompilation failed, please submit error information at https://github.com/kelvinBen/AppInfoScanner/issues
Traceback (most recent call last):
File "/opt/AppInfoScanner/app.py", line 72, in
main()
File "/opt/AppInfoScanner/app.py", line 69, in main
cli()
File "/usr/lib/python3/dist-packages/click/core.py", line 1128, in call
return self.main(*args, **kwargs)
File "/usr/lib/python3/dist-packages/click/core.py", line 1053, in main
rv = self.invoke(ctx)
File "/usr/lib/python3/dist-packages/click/core.py", line 1659, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3/dist-packages/click/core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3/dist-packages/click/core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "/opt/AppInfoScanner/app.py", line 32, in android
raise e
File "/opt/AppInfoScanner/app.py", line 30, in android
BaseTask("Android", inputs, rules, sniffer, threads, package).start()
File "/opt/AppInfoScanner/libs/task/base_task.py", line 46, in start
task_info = self.tast_control()
File "/opt/AppInfoScanner/libs/task/base_task.py", line 85, in tast_control
task_info = AndroidTask(cacar_path,self.package).start()
File "/opt/AppInfoScanner/libs/task/android_task.py", line 32, in start
self.decode_dir(input_file_path)
File "/opt/AppInfoScanner/libs/task/android_task.py", line 74, in decode_dir
if self.decode_file(dir_or_file_path) == "error":
File "/opt/AppInfoScanner/libs/task/android_task.py", line 49, in decode_file
self.decode_apk(file_path,apktool_path,output_path)
File "/opt/AppInfoScanner/libs/task/android_task.py", line 85, in decode_apk
raise Exception(file_path + ", Decompilation failed.")
Exception: /media/sf_share-disk/wandou/test.apk, Decompilation failed.

规则配置集合

自定义规则提交路径:

[点击添加自定义规则](https://github.com/kelvinBen/AppInfoScanner/issues/7)

提交格式:

1. APP自定义组件添加

如: fastjson的规则如下:
APP组件: fastjson com.alibaba.fastjson

2. 需要进行搜索的字符串

如:查询阿里的AK规则如下:
字符串: 
阿里云AK .*accessKeyId.*".*"

3. 需要搜素的web文件后缀名

如:jsp文件的规则如下:
网站: java语言 jsp

4. Android壳规则
如: 某数字公司的壳规则如下:
壳:某数字公司 com.stub.StubApp

执行报错

└─# python app.py android -i app/1667305394914.apk
[] Create directory /root/tools/6-appinfo/appInfoScanner/out
[
] AI is analyzing filtering rules......
[*] The filtering rules obtained by AI are as follows: {'.*apache.org', '.*w3school.com.cn', '.*127.0.0.1', '.*w3.org', '.*umengcloud.com', '.*jpush.cn', '.*localhost', '.*android.com', '.*umeng.com', '.*apple.com', '.0.0.0.0', '..amap.com', '.*github.com', '.*slf4j.org'}
openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1)
OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1, mixed mode, sharing)
I: Using Apktool 2.6.1 on 1667305394914.apk
I: Loading resource table...
W: Skipping package group: cai.dongfandsfadsgcaifuailiaot.caifudg
I: Decoding AndroidManifest.xml with resources...
Exception in thread "main" brut.androlib.err.RawXmlEncounteredException: Could not decode XML
at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:145)
at brut.androlib.res.decoder.XmlPullStreamDecoder.decodeManifest(XmlPullStreamDecoder.java:151)
at brut.androlib.res.decoder.ResFileDecoder.decodeManifest(ResFileDecoder.java:159)
at brut.androlib.res.AndrolibResources.decodeManifestWithResources(AndrolibResources.java:193)
at brut.androlib.Androlib.decodeManifestWithResources(Androlib.java:141)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:109)
at brut.apktool.Main.cmdDecode(Main.java:175)
at brut.apktool.Main.main(Main.java:79)
Caused by: java.io.IOException: Expected: 0x00080003 or 0x00080001, got: 0x00080000
at brut.util.ExtDataInput.skipCheckInt(ExtDataInput.java:45)
at brut.androlib.res.decoder.AXmlResourceParser.doNext(AXmlResourceParser.java:808)
at brut.androlib.res.decoder.AXmlResourceParser.next(AXmlResourceParser.java:98)
at brut.androlib.res.decoder.AXmlResourceParser.nextToken(AXmlResourceParser.java:108)
at org.xmlpull.v1.wrapper.classic.XmlPullParserDelegate.nextToken(XmlPullParserDelegate.java:105)
at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:138)
... 7 more
[-] Decompilation failed, please submit error information at https://github.com/kelvinBen/AppInfoScanner/issues
Traceback (most recent call last):
File "/root/tools/6-appinfo/appInfoScanner/app.py", line 79, in
main()
File "/root/tools/6-appinfo/appInfoScanner/app.py", line 75, in main
cli()
File "/usr/lib/python3/dist-packages/click/core.py", line 1128, in call
return self.main(*args, **kwargs)
File "/usr/lib/python3/dist-packages/click/core.py", line 1053, in main
rv = self.invoke(ctx)
File "/usr/lib/python3/dist-packages/click/core.py", line 1659, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3/dist-packages/click/core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3/dist-packages/click/core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "/root/tools/6-appinfo/appInfoScanner/app.py", line 35, in android
raise e
File "/root/tools/6-appinfo/appInfoScanner/app.py", line 33, in android
BaseTask("Android", inputs, rules, sniffer, threads, package).start()
File "/root/tools/6-appinfo/appInfoScanner/libs/task/base_task.py", line 47, in start
task_info = self.tast_control()
File "/root/tools/6-appinfo/appInfoScanner/libs/task/base_task.py", line 89, in tast_control
task_info = AndroidTask(cacar_path, self.package).start()
File "/root/tools/6-appinfo/appInfoScanner/libs/task/android_task.py", line 35, in start
if self.decode_file(input_file_path) == "error":
File "/root/tools/6-appinfo/appInfoScanner/libs/task/android_task.py", line 51, in decode_file
self.decode_apk(file_path, apktool_path, output_path)
File "/root/tools/6-appinfo/appInfoScanner/libs/task/android_task.py", line 88, in decode_apk
raise Exception(file_path + ", Decompilation failed.")
Exception: app/1667305394914.apk, Decompilation failed.

关于对 dex 文件扫描出现 "无结果" 或 "Decompilation failed" 的解决方法

问题原因:
无结果的原因是,反编译后的文件保存路径与扫描时的文件路径不一致;当使用其他反编译工具对 dex 文件可以正常反编译时,出现 "Decompilation failed" 的原因是,反编译过程中会出现一些方法或类的依赖项扫描错误等情况,导致 "os.system(cmd_str)" 结果返回非 0 而出现 "Decompilation failed" (其中此处的“正常反编译”指的是:使用反编译工具可以反编译出smali等文件,而不是无其他错误出现!)

解决方法:
1、确保dex文件可以正常反编译
1)使用反编译工具进行检查,如jadx、GDA等,也可以使用"..\AppInfoScanner_V1.0.9_Releases\tools\baksmali.jar"工具进行反编译。(一般来说,脱壳后的dex可能存在CheckSum错误的情况,需要计算正确的CheckSum值并修改dex)
2)忽略除反编译失败的其他错误,确保可以正常反编译
2、修改代码
1)修改 "..\AppInfoScanner_V1.0.9_Releases\libs\task\android_task.py" 文件中的 "decode_dex()" 方法,将该方法的所有代码注释
2)将以下三行代码写入 "decode_dex()" 方法
cmd_str = ('java -jar "%s" d "%s" -o "%s"') % (str(backsmali_path), str(file_path), str(output_path))
os.system(cmd_str)
self.__get_scanner_file__(output_path)

邮箱&密码

邮箱 .@."."
密码 .pass.".
"
密码 .password."."
密码 .pwd.".
"
密码 .password."."
OSS .OSS.".
"

Could not decode arsc file. Decompilation failed.

C:\Users\admin\Desktop\Tools\AppInfoScanner>python app.py android -i release20230620jg.apk

[] Create directory C:\Users\admin\Desktop\Tools\AppInfoScanner\out
[
] AI is analyzing filtering rules......
[*] The filtering rules obtained by AI are as follows: {'.*apache.org', '.*apple.com', '.*umeng.com', '.*localhost', '.*android.com', '.*github.com', '.*umengcloud.com', '.w3school.com.cn', '..amap.com', '.*0.0.0.0', '.*w3.org', '.*slf4j.org', '.*127.0.0.1', '.*jpush.cn'}
java version "17.0.3" 2022-04-19 LTS
Java(TM) SE Runtime Environment (build 17.0.3+8-LTS-111)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.3+8-LTS-111, mixed mode, sharing)
15.2.2
We can't detect protect
I: Using Apktool 2.6.1 on release20230620jg.apk
I: Loading resource table...
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:55)
at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:783)
at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:64)
at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:56)
at brut.androlib.Androlib.getResTable(Androlib.java:70)
at brut.androlib.ApkDecoder.getResTable(ApkDecoder.java:247)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:109)
at brut.apktool.Main.cmdDecode(Main.java:175)
at brut.apktool.Main.main(Main.java:79)
Caused by: java.io.IOException: Expected: 0x001c0001, got: 0x00750069
at brut.util.ExtDataInput.skipCheckChunkTypeInt(ExtDataInput.java:72)
at brut.util.ExtDataInput.skipCheckChunkTypeInt(ExtDataInput.java:70)
at brut.util.ExtDataInput.skipCheckChunkTypeInt(ExtDataInput.java:70)
at brut.androlib.res.decoder.StringBlock.read(StringBlock.java:50)
at brut.androlib.res.decoder.ARSCDecoder.readTableHeader(ARSCDecoder.java:78)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:50)
... 8 more
[-] Decompilation failed, please submit error information at https://github.com/kelvinBen/AppInfoScanner/issues
Traceback (most recent call last):
File "app.py", line 100, in
main()
File "app.py", line 96, in main
cli()
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\click\core.py", line 829, in call
return self.main(*args, **kwargs)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "app.py", line 44, in android
raise e
File "app.py", line 42, in android
BaseTask("Android", inputs, rules, sniffer, threads, package).start()
File "C:\Users\admin\Desktop\Tools\AppInfoScanner\libs\task\base_task.py", line 47, in start
task_info = self.tast_control()
File "C:\Users\admin\Desktop\Tools\AppInfoScanner\libs\task\base_task.py", line 89, in tast_control
task_info = AndroidTask(cacar_path, self.package).start()
File "C:\Users\admin\Desktop\Tools\AppInfoScanner\libs\task\android_task.py", line 306, in start
if self.decode_file(input_file_path) == "error":
File "C:\Users\admin\Desktop\Tools\AppInfoScanner\libs\task\android_task.py", line 386, in decode_file
self.decode_apk(file_path, apktool_path, output_path)
File "C:\Users\admin\Desktop\Tools\AppInfoScanner\libs\task\android_task.py", line 424, in decode_apk
raise Exception(file_path + ", Decompilation failed.")
Exception: release20230620jg.apk, Decompilation failed.

error

how to do this????????

Traceback (most recent call last):
File "/home/chris/V1.0.8_Releases/app.py", line 79, in
main()
File "/home/chris/V1.0.8_Releases/app.py", line 75, in main
cli()
File "/usr/lib/python3/dist-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/usr/lib/python3/dist-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/usr/lib/python3/dist-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3/dist-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3/dist-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/home/chris/V1.0.8_Releases/app.py", line 35, in android
raise e
File "/home/chris/V1.0.8_Releases/app.py", line 33, in android
BaseTask("Android", inputs, rules, sniffer, threads, package).start()
File "/home/chris/V1.0.8_Releases/libs/task/base_task.py", line 47, in start
task_info = self.tast_control()
File "/home/chris/V1.0.8_Releases/libs/task/base_task.py", line 89, in tast_control
task_info = AndroidTask(cacar_path, self.package).start()
File "/home/chris/V1.0.8_Releases/libs/task/android_task.py", line 35, in start
if self.decode_file(input_file_path) == "error":
File "/home/chris/V1.0.8_Releases/libs/task/android_task.py", line 51, in decode_file
self.decode_apk(file_path, apktool_path, output_path)
File "/home/chris/V1.0.8_Releases/libs/task/android_task.py", line 88, in decode_apk
raise Exception(file_path + ", Decompilation failed.")
Exception: LeaveHomeSafe_3.5.2.apk, Decompilation failed.

Decompilation failed, please submit error information at

反编译失败:
Exception in thread "main" java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(Unknown Source)
at java.util.regex.Matcher.reset(Unknown Source)
at java.util.regex.Matcher.(Unknown Source)
at java.util.regex.Pattern.matcher(Unknown Source)
at brut.androlib.res.decoder.AndroidManifestResourceParser.isNumericStringMetadataAttributeValue(AndroidManifestResourceParser.java:56)
at brut.androlib.res.decoder.AndroidManifestResourceParser.getAttributeValue(AndroidManifestResourceParser.java:41)
at org.xmlpull.v1.wrapper.classic.XmlPullParserDelegate.getAttributeValue(XmlPullParserDelegate.java:69)
at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.writeStartTag(StaticXmlSerializerWrapper.java:267)
at org.xmlpull.v1.wrapper.classic.StaticXmlSerializerWrapper.event(StaticXmlSerializerWrapper.java:211)
at brut.androlib.res.decoder.XmlPullStreamDecoder$1.event(XmlPullStreamDecoder.java:80)
at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:139)
at brut.androlib.res.decoder.XmlPullStreamDecoder.decodeManifest(XmlPullStreamDecoder.java:151)
at brut.androlib.res.decoder.ResFileDecoder.decodeManifest(ResFileDecoder.java:159)
at brut.androlib.res.AndrolibResources.decodeManifestWithResources(AndrolibResources.java:193)
at brut.androlib.Androlib.decodeManifestWithResources(Androlib.java:141)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:109)
at brut.apktool.Main.cmdDecode(Main.java:175)
at brut.apktool.Main.main(Main.java:79)
[-] Decompilation failed, please submit error information at https://github.com/kelvinBen/AppInfoScanner/issues
Traceback (most recent call last):
File "D:\sectools\01漏洞分析\AppInfoScanner-master\app.py", line 100, in
main()
File "D:\sectools\01漏洞分析\AppInfoScanner-master\app.py", line 96, in main
cli()
File "C:\Users\bqc\AppData\Roaming\Python\Python311\site-packages\click\core.py", line 829, in call
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bqc\AppData\Roaming\Python\Python311\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "C:\Users\bqc\AppData\Roaming\Python\Python311\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bqc\AppData\Roaming\Python\Python311\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bqc\AppData\Roaming\Python\Python311\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\sectools\01漏洞分析\AppInfoScanner-master\app.py", line 44, in android
raise e
File "D:\sectools\01漏洞分析\AppInfoScanner-master\app.py", line 42, in android
BaseTask("Android", inputs, rules, sniffer, threads, package).start()
File "D:\sectools\01漏洞分析\AppInfoScanner-master\libs\task\base_task.py", line 47, in start
task_info = self.tast_control()
^^^^^^^^^^^^^^^^^^^^^^^
File "D:\sectools\01漏洞分析\AppInfoScanner-master\libs\task\base_task.py", line 89, in tast_control
task_info = AndroidTask(cacar_path, self.package).start()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\sectools\01漏洞分析\AppInfoScanner-master\libs\task\android_task.py", line 306, in start
if self.decode_file(input_file_path) == "error":
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\sectools\01漏洞分析\AppInfoScanner-master\libs\task\android_task.py", line 386, in decode_file
self.decode_apk(file_path, apktool_path, output_path)
File "D:\sectools\01漏洞分析\AppInfoScanner-master\libs\task\android_task.py", line 424, in decode_apk
raise Exception(file_path + ", Decompilation failed.")
07b67979ae9d6873e0bdb34335e31f6

安装requirements.txt错误

D:\armoury\app Capture packet\AppInfoScanner\V1.0.8_Releases>python -m pip install -r requirements.txt
WARNING: Ignoring invalid distribution -ip (d:\python\python3.8.6\lib\site-packages)
Looking in indexes: https://mirrors.aliyun.com/pypi/simple
Requirement already satisfied: requests in d:\python\python3.8.6\lib\site-packages (from -r requirements.txt (line 1)) (2.24.0)
Requirement already satisfied: click in d:\python\python3.8.6\lib\site-packages (from -r requirements.txt (line 2)) (8.1.3)
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1124)'))': /pypi/simple/openpyxl/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1124)'))': /pypi/simple/openpyxl/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1124)'))': /pypi/simple/openpyxl/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1124)'))': /pypi/simple/openpyxl/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1124)'))': /pypi/simple/openpyxl/
Could not fetch URL https://mirrors.aliyun.com/pypi/simple/openpyxl/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='mirrors.aliyun.com', port=443): Max retries exceeded with url: /pypi/simple/openpyxl/ (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1124)'))) - skipping
ERROR: Could not find a version that satisfies the requirement openpyxl (from versions: none)
ERROR: No matching distribution found for openpyxl
Could not fetch URL https://mirrors.aliyun.com/pypi/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='mirrors.aliyun.com', port=443): Max retries exceeded with url: /pypi/simple/pip/ (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1124)'))) - skipping

系统增加自定义jdk的配置项或参数

尝试使用 AppInfoScanner 时报错:

env:

python:Python 3.10.6
jdk:openjdk version "11.0.16.1" 2022-08-12
os: macOS 12.5.1
AppInfoScanner:V1.0.8_Releases(9月5日直接clone仓库)

└─$ python3 app.py android -i './main_sit_v1.0.0.37_debug.apk'
[*] Create directory /Users/hacker/Desktop/AppInfoScanner/out
[*] AI is analyzing filtering rules......
[*] The filtering rules obtained by AI are as follows: {'.*umeng.com', '.*w3.org', '.*apache.org', '.*localhost', '.*127.0.0.1', '.*android.com', '.*jpush.cn', '.*w3school.com.cn', '.*0.0.0.0', '.*apple.com', '.*.amap.com', '.*github.com', '.*umengcloud.com'}
openjdk version "11.0.16.1" 2022-08-12
OpenJDK Runtime Environment Homebrew (build 11.0.16.1+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.16.1+0, mixed mode)
Input file (./main_sit_v1.0.0.37_debug.apk) was not found or was not readable.
[-] Decompilation failed, please submit error information at https://github.com/kelvinBen/AppInfoScanner/issues
Traceback (most recent call last):
  File "/Users/hacker/Desktop/AppInfoScanner/app.py", line 72, in <module>
    main()
  File "/Users/hacker/Desktop/AppInfoScanner/app.py", line 69, in main
    cli()
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/hacker/Desktop/AppInfoScanner/app.py", line 32, in android
    raise e
  File "/Users/hacker/Desktop/AppInfoScanner/app.py", line 30, in android
    BaseTask("Android", inputs, rules, sniffer, threads, package).start()
  File "/Users/hacker/Desktop/AppInfoScanner/libs/task/base_task.py", line 46, in start
    task_info = self.__tast_control__()
  File "/Users/hacker/Desktop/AppInfoScanner/libs/task/base_task.py", line 86, in __tast_control__
    task_info = AndroidTask(cacar_path,self.package).start()
  File "/Users/hacker/Desktop/AppInfoScanner/libs/task/android_task.py", line 35, in start
    if self.__decode_file__(input_file_path) == "error":
  File "/Users/hacker/Desktop/AppInfoScanner/libs/task/android_task.py", line 50, in __decode_file__
    self.__decode_apk__(file_path,apktool_path,output_path)
  File "/Users/hacker/Desktop/AppInfoScanner/libs/task/android_task.py", line 86, in __decode_apk__
    raise Exception(file_path + ", Decompilation failed.")
Exception: ./main_sit_v1.0.0.37_debug.apk, Decompilation failed.

因个人习惯,系统增加自定义jdk的配置项或参数

Exception: Please install the Java environment!

PS D:\Tools\渗透测试\APP\AppinfoScanner_V1.0.8_Releases> python.exe .\app.py android -i C:\Users\Administrator\Downloads\6399.apk
[] Create directory D:\Tools\渗透测试\APP\AppinfoScanner_V1.0.8_Releases\out
[
] AI is analyzing filtering rules......
[*] The filtering rules obtained by AI are as follows: {'.*apache.org', '.*apple.com', '.*jpush.cn', '.*github.com', '.*0.0.0.0', '.*w3school.com.cn', '.*localhost', '.*w3.org', '.*umeng.com', '.android.com', '..amap.com', '.*127.0.0.1', '.*umengcloud.com', '.*slf4j.org'}
系统找不到指定的路径。
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)
Traceback (most recent call last):
File "D:\Tools\渗透测试\APP\AppinfoScanner_V1.0.8_Releases\app.py", line 79, in
main()
File "D:\Tools\渗透测试\APP\AppinfoScanner_V1.0.8_Releases\app.py", line 75, in main
cli()
File "D:\install\python39\lib\site-packages\click\core.py", line 1130, in call
return self.main(*args, **kwargs)
File "D:\install\python39\lib\site-packages\click\core.py", line 1055, in main
rv = self.invoke(ctx)
File "D:\install\python39\lib\site-packages\click\core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "D:\install\python39\lib\site-packages\click\core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "D:\install\python39\lib\site-packages\click\core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "D:\Tools\渗透测试\APP\AppinfoScanner_V1.0.8_Releases\app.py", line 35, in android
raise e
File "D:\Tools\渗透测试\APP\AppinfoScanner_V1.0.8_Releases\app.py", line 33, in android
BaseTask("Android", inputs, rules, sniffer, threads, package).start()
File "D:\Tools\渗透测试\APP\AppinfoScanner_V1.0.8_Releases\libs\task\base_task.py", line 47, in start
task_info = self.tast_control()
File "D:\Tools\渗透测试\APP\AppinfoScanner_V1.0.8_Releases\libs\task\base_task.py", line 89, in tast_control
task_info = AndroidTask(cacar_path, self.package).start()
File "D:\Tools\渗透测试\APP\AppinfoScanner_V1.0.8_Releases\libs\task\android_task.py", line 28, in start
raise Exception("Please install the Java environment!")
Exception: Please install the Java environment!

WEB扫描文件夹的功能还没实现呀

开头以为有bug
import hashlib
40行,变量写错了,dir_file_path
42行附近,要改一下,不然报nonetype的错。
md5 = hashlib.md5()
md5.update(f.read())
dex_md5 = str(md5.hexdigest()).upper()

图片

改了几行,再写下去发现有些属性还没实现,还没写好哈哈哈,加油
图片

报错

Error: This application has shell, the retrieval results may not be accurate, Please remove the shell and try again!

代码理解

/libs/task/base_task.py 文件的__history_handle__函数中,第139-141行如何理解?为什么这样计算cout的值?

Remote Permission

add "识别到壳后自动进行脱壳处理"
Remote: Permission to kelvinBen/AppInfoScanner.git denied to xiaokanghub

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.