iOSReSignApp


NameiOSReSignApp JSON
Version 1.5.8 PyPI version JSON
download
home_pagehttps://github.com/shede333/iOSReSignApp
Summary
upload_time2023-10-10 06:12:33
maintainer
docs_urlNone
authorshede333
requires_python~=3.6
license
keywords codesign ios resign re-sign re_sign re sign app
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # iOSReSignApp

> 对'.app/.ipa'文件,进行重签名;  
> 注意:仅支持 Python3;

## 安装 Install

```

pip3 install iOSReSignApp

```

## CLI 使用说明

```bash

iosresignapp -h 

```

## Python Modules 使用说明

```python

from iosresignapp import resign

app_path = "~/Desktop/hello.app"
mobileprovision_path = "~/Desktop/hello.mobileprovision"

# 自动检测mobileprovision文件 sign信息+entitlements信息
resign(app_path, mobileprovision_path)

# is_show_ipa: 重签完成后,使用Finder打开ipa文件所在目录
resign(app_path, mobileprovision_path, is_show_ipa=True)

# 到系统路径(~/Library/MobileDevice/Provisioning Profiles),查找"Name"属性为"dev-hello"的最新的mobileprovision文件
resign(app_path, "Name:dev-hello")

# 到系统路径(~/Library/MobileDevice/Provisioning Profiles),查找"UUID"属性为"a4adb1bd-948f-1234-5678-79628e8ce280"的最新的mobileprovision文件
resign(app_path, "UUID:a4adb1bd-948f-1234-5678-79628e8ce280")

# 使用是在的sign和entitlements信息重签名
entitlements_path = "~/Desktop/entitlements.plist"
sign = "40位长签名证书的SHA1字符串,例如:ABC5F4F03263A3A29F0BC84910303364E0123456"
resign(app_path, mobileprovision_path, sign=sign, entitlements_path=entitlements_path)


```

## Example CLI:

```shell

iosresignapp -h 

usage: 对'.app/.ipa'文件,进行重签名 [-h] -m MOBILEPROVISION_INFO [-s SIGN]
                            [-e ENTITLEMENTS_PATH]
                            [--re-suffix-name RE_SUFFIX_NAME]
                            [-o OUTPUT_IPA_PATH] [-q] [-S]
                            app_path

positional arguments:
  app_path              '.app/.ipa'文件路径

optional arguments:
  -h, --help            show this help message and exit
  -m MOBILEPROVISION_INFO, --mobileprovision MOBILEPROVISION_INFO
                        mobileprovision文件路径,或者Name属性,或者UUID属性
  -s SIGN, --sign SIGN  (可选)签名证书的 SHA1或者name
  -e ENTITLEMENTS_PATH, --entitlements-path ENTITLEMENTS_PATH
                        (可选)entitlements环境plist文件
  --re-suffix-name RE_SUFFIX_NAME
                        (可选)重签名后的文件名后缀,如果设置了'--output-ipa-
                        path',此选项无效,默认为'resign'
  -o OUTPUT_IPA_PATH, --output-ipa-path OUTPUT_IPA_PATH
                        (可选)ipa文件输出路径,不传此值则输出到.app同级目录下
  -q, --quiet           是否隐藏print信息
  -S, --show-ipa        是否打开Finder显示最终的ipa文件


```

## 注意

重签名时,需要使用 Keychain(钥匙串)里的证书,这时候就有2个点要注意:  
1.证书所在的钥匙串(一般为`登录`钥匙串)必须要被解锁(也可以通过security来解锁);  
2.证书首次被使用时,会有`授权弹框`提示,这是需要手动确认(可以通过security导入证书到钥匙串,解决授权弹框问题);  


## 待完成的功能

* 检测.app文件里可执行文件是否已经 加壳/砸过壳;
* 优化codesign命令输出的log信息;
* ~~支持App的扩展,例如watch, today等~~;
* ~~支持修改更多Info.plist的参数~~;
* 支持换图标icon;
* 支持在图标上版本号等额外信息;
* 屏蔽:读取info.plist信息时的错误输出;


## 公司招聘:

欧科云链招募新同学:  
可分布式`居家办公`,行业龙头,高薪资,年终奖优越,拒绝加班,**1075工作制**,公司提供团建费每人每周200元,还提供各种福利;  
各地同学均可在家办公(**拿北京薪资+社保,在老家工作+生活**),也可在北京公司内(海淀上地)办公;  
支持远程 **线上面试**;  
**web前端、后端、移动端**均在招人,欢迎加入团队~  
**简历**可发送至:<wshw333@gmail.com>  
微信搜索“shede333sw”咨询岗位详情;  

移动端招聘详情如下:  

iOS工程师任职要求:  
1.本科以上学历,可使用英文交流者加分;  
2.三年以上的iOS平台研发经验,良好的代码编写规范。有已上线App开发经验加分,有跨平台开发经验加分;  
3.精通Object-C/Swift语言,熟悉账户Xcode等开发佛能根据,熟练掌握使用iOS SDK,熟悉Go、Python、Ruby语言加分;  
4.有高性能客户端编程经验,有性能调优经历加分;  
5.熟悉iOS主流开源框架,并学习、研究过实现原理和源码;  

Android工程师任职要求:  
1.本科以上学历,可使用英文交流者加分;  
2.三年以上Android开发经验;  
3.熟悉Android常用控件的使用并理解其原理;  
4.熟悉Android Framework原理,阅读过Android源代码者优先;  
5.对java、Kotlin、基本数据结构、计算机网络有较为深入的了解;  



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/shede333/iOSReSignApp",
    "name": "iOSReSignApp",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "~=3.6",
    "maintainer_email": "",
    "keywords": "codesign ios resign re-sign re_sign re sign app",
    "author": "shede333",
    "author_email": "333wshw@163.com",
    "download_url": "https://files.pythonhosted.org/packages/42/90/71fca0a570675aa28a819ba3c2a8eb5615c553ff387cfe63f1e1acb9ad57/iOSReSignApp-1.5.8.tar.gz",
    "platform": null,
    "description": "# iOSReSignApp\n\n> \u5bf9'.app/.ipa'\u6587\u4ef6\uff0c\u8fdb\u884c\u91cd\u7b7e\u540d\uff1b  \n> \u6ce8\u610f\uff1a\u4ec5\u652f\u6301 Python3\uff1b\n\n## \u5b89\u88c5 Install\n\n```\n\npip3 install iOSReSignApp\n\n```\n\n## CLI \u4f7f\u7528\u8bf4\u660e\n\n```bash\n\niosresignapp -h \n\n```\n\n## Python Modules \u4f7f\u7528\u8bf4\u660e\n\n```python\n\nfrom iosresignapp import resign\n\napp_path = \"~/Desktop/hello.app\"\nmobileprovision_path = \"~/Desktop/hello.mobileprovision\"\n\n# \u81ea\u52a8\u68c0\u6d4bmobileprovision\u6587\u4ef6 sign\u4fe1\u606f+entitlements\u4fe1\u606f\nresign(app_path, mobileprovision_path)\n\n# is_show_ipa: \u91cd\u7b7e\u5b8c\u6210\u540e\uff0c\u4f7f\u7528Finder\u6253\u5f00ipa\u6587\u4ef6\u6240\u5728\u76ee\u5f55\nresign(app_path, mobileprovision_path, is_show_ipa=True)\n\n# \u5230\u7cfb\u7edf\u8def\u5f84\uff08~/Library/MobileDevice/Provisioning Profiles\uff09\uff0c\u67e5\u627e\"Name\"\u5c5e\u6027\u4e3a\"dev-hello\"\u7684\u6700\u65b0\u7684mobileprovision\u6587\u4ef6\nresign(app_path, \"Name:dev-hello\")\n\n# \u5230\u7cfb\u7edf\u8def\u5f84\uff08~/Library/MobileDevice/Provisioning Profiles\uff09\uff0c\u67e5\u627e\"UUID\"\u5c5e\u6027\u4e3a\"a4adb1bd-948f-1234-5678-79628e8ce280\"\u7684\u6700\u65b0\u7684mobileprovision\u6587\u4ef6\nresign(app_path, \"UUID:a4adb1bd-948f-1234-5678-79628e8ce280\")\n\n# \u4f7f\u7528\u662f\u5728\u7684sign\u548centitlements\u4fe1\u606f\u91cd\u7b7e\u540d\nentitlements_path = \"~/Desktop/entitlements.plist\"\nsign = \"40\u4f4d\u957f\u7b7e\u540d\u8bc1\u4e66\u7684SHA1\u5b57\u7b26\u4e32\uff0c\u4f8b\u5982\uff1aABC5F4F03263A3A29F0BC84910303364E0123456\"\nresign(app_path, mobileprovision_path, sign=sign, entitlements_path=entitlements_path)\n\n\n```\n\n## Example CLI:\n\n```shell\n\niosresignapp -h \n\nusage: \u5bf9'.app/.ipa'\u6587\u4ef6\uff0c\u8fdb\u884c\u91cd\u7b7e\u540d [-h] -m MOBILEPROVISION_INFO [-s SIGN]\n                            [-e ENTITLEMENTS_PATH]\n                            [--re-suffix-name RE_SUFFIX_NAME]\n                            [-o OUTPUT_IPA_PATH] [-q] [-S]\n                            app_path\n\npositional arguments:\n  app_path              '.app/.ipa'\u6587\u4ef6\u8def\u5f84\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -m MOBILEPROVISION_INFO, --mobileprovision MOBILEPROVISION_INFO\n                        mobileprovision\u6587\u4ef6\u8def\u5f84,\u6216\u8005Name\u5c5e\u6027,\u6216\u8005UUID\u5c5e\u6027\n  -s SIGN, --sign SIGN  (\u53ef\u9009)\u7b7e\u540d\u8bc1\u4e66\u7684 SHA1\u6216\u8005name\n  -e ENTITLEMENTS_PATH, --entitlements-path ENTITLEMENTS_PATH\n                        (\u53ef\u9009)entitlements\u73af\u5883plist\u6587\u4ef6\n  --re-suffix-name RE_SUFFIX_NAME\n                        (\u53ef\u9009)\u91cd\u7b7e\u540d\u540e\u7684\u6587\u4ef6\u540d\u540e\u7f00\uff0c\u5982\u679c\u8bbe\u7f6e\u4e86'--output-ipa-\n                        path'\uff0c\u6b64\u9009\u9879\u65e0\u6548\uff0c\u9ed8\u8ba4\u4e3a'resign'\n  -o OUTPUT_IPA_PATH, --output-ipa-path OUTPUT_IPA_PATH\n                        (\u53ef\u9009)ipa\u6587\u4ef6\u8f93\u51fa\u8def\u5f84\uff0c\u4e0d\u4f20\u6b64\u503c\u5219\u8f93\u51fa\u5230.app\u540c\u7ea7\u76ee\u5f55\u4e0b\n  -q, --quiet           \u662f\u5426\u9690\u85cfprint\u4fe1\u606f\n  -S, --show-ipa        \u662f\u5426\u6253\u5f00Finder\u663e\u793a\u6700\u7ec8\u7684ipa\u6587\u4ef6\n\n\n```\n\n## \u6ce8\u610f\n\n\u91cd\u7b7e\u540d\u65f6\uff0c\u9700\u8981\u4f7f\u7528 Keychain\uff08\u94a5\u5319\u4e32\uff09\u91cc\u7684\u8bc1\u4e66\uff0c\u8fd9\u65f6\u5019\u5c31\u67092\u4e2a\u70b9\u8981\u6ce8\u610f\uff1a  \n1.\u8bc1\u4e66\u6240\u5728\u7684\u94a5\u5319\u4e32\uff08\u4e00\u822c\u4e3a`\u767b\u5f55`\u94a5\u5319\u4e32\uff09\u5fc5\u987b\u8981\u88ab\u89e3\u9501(\u4e5f\u53ef\u4ee5\u901a\u8fc7security\u6765\u89e3\u9501)\uff1b  \n2.\u8bc1\u4e66\u9996\u6b21\u88ab\u4f7f\u7528\u65f6\uff0c\u4f1a\u6709`\u6388\u6743\u5f39\u6846`\u63d0\u793a\uff0c\u8fd9\u662f\u9700\u8981\u624b\u52a8\u786e\u8ba4\uff08\u53ef\u4ee5\u901a\u8fc7security\u5bfc\u5165\u8bc1\u4e66\u5230\u94a5\u5319\u4e32\uff0c\u89e3\u51b3\u6388\u6743\u5f39\u6846\u95ee\u9898\uff09\uff1b  \n\n\n## \u5f85\u5b8c\u6210\u7684\u529f\u80fd\n\n* \u68c0\u6d4b.app\u6587\u4ef6\u91cc\u53ef\u6267\u884c\u6587\u4ef6\u662f\u5426\u5df2\u7ecf \u52a0\u58f3/\u7838\u8fc7\u58f3;\n* \u4f18\u5316codesign\u547d\u4ee4\u8f93\u51fa\u7684log\u4fe1\u606f;\n* ~~\u652f\u6301App\u7684\u6269\u5c55\uff0c\u4f8b\u5982watch, today\u7b49~~;\n* ~~\u652f\u6301\u4fee\u6539\u66f4\u591aInfo.plist\u7684\u53c2\u6570~~;\n* \u652f\u6301\u6362\u56fe\u6807icon\uff1b\n* \u652f\u6301\u5728\u56fe\u6807\u4e0a\u7248\u672c\u53f7\u7b49\u989d\u5916\u4fe1\u606f\uff1b\n* \u5c4f\u853d\uff1a\u8bfb\u53d6info.plist\u4fe1\u606f\u65f6\u7684\u9519\u8bef\u8f93\u51fa\uff1b\n\n\n## \u516c\u53f8\u62db\u8058\uff1a\n\n\u6b27\u79d1\u4e91\u94fe\u62db\u52df\u65b0\u540c\u5b66\uff1a  \n\u53ef\u5206\u5e03\u5f0f`\u5c45\u5bb6\u529e\u516c`\uff0c\u884c\u4e1a\u9f99\u5934\uff0c\u9ad8\u85aa\u8d44\uff0c\u5e74\u7ec8\u5956\u4f18\u8d8a\uff0c\u62d2\u7edd\u52a0\u73ed\uff0c**1075\u5de5\u4f5c\u5236**\uff0c\u516c\u53f8\u63d0\u4f9b\u56e2\u5efa\u8d39\u6bcf\u4eba\u6bcf\u5468200\u5143\uff0c\u8fd8\u63d0\u4f9b\u5404\u79cd\u798f\u5229\uff1b  \n\u5404\u5730\u540c\u5b66\u5747\u53ef\u5728\u5bb6\u529e\u516c\uff08**\u62ff\u5317\u4eac\u85aa\u8d44+\u793e\u4fdd\uff0c\u5728\u8001\u5bb6\u5de5\u4f5c+\u751f\u6d3b**\uff09\uff0c\u4e5f\u53ef\u5728\u5317\u4eac\u516c\u53f8\u5185\uff08\u6d77\u6dc0\u4e0a\u5730\uff09\u529e\u516c\uff1b  \n\u652f\u6301\u8fdc\u7a0b **\u7ebf\u4e0a\u9762\u8bd5**\uff1b  \n**web\u524d\u7aef\u3001\u540e\u7aef\u3001\u79fb\u52a8\u7aef**\u5747\u5728\u62db\u4eba\uff0c\u6b22\u8fce\u52a0\u5165\u56e2\u961f~  \n**\u7b80\u5386**\u53ef\u53d1\u9001\u81f3\uff1a<wshw333@gmail.com>  \n\u5fae\u4fe1\u641c\u7d22\u201cshede333sw\u201d\u54a8\u8be2\u5c97\u4f4d\u8be6\u60c5\uff1b  \n\n\u79fb\u52a8\u7aef\u62db\u8058\u8be6\u60c5\u5982\u4e0b\uff1a  \n\niOS\u5de5\u7a0b\u5e08\u4efb\u804c\u8981\u6c42\uff1a  \n1.\u672c\u79d1\u4ee5\u4e0a\u5b66\u5386\uff0c\u53ef\u4f7f\u7528\u82f1\u6587\u4ea4\u6d41\u8005\u52a0\u5206\uff1b  \n2.\u4e09\u5e74\u4ee5\u4e0a\u7684iOS\u5e73\u53f0\u7814\u53d1\u7ecf\u9a8c\uff0c\u826f\u597d\u7684\u4ee3\u7801\u7f16\u5199\u89c4\u8303\u3002\u6709\u5df2\u4e0a\u7ebfApp\u5f00\u53d1\u7ecf\u9a8c\u52a0\u5206\uff0c\u6709\u8de8\u5e73\u53f0\u5f00\u53d1\u7ecf\u9a8c\u52a0\u5206\uff1b  \n3.\u7cbe\u901aObject-C/Swift\u8bed\u8a00\uff0c\u719f\u6089\u8d26\u6237Xcode\u7b49\u5f00\u53d1\u4f5b\u80fd\u6839\u636e\uff0c\u719f\u7ec3\u638c\u63e1\u4f7f\u7528iOS SDK\uff0c\u719f\u6089Go\u3001Python\u3001Ruby\u8bed\u8a00\u52a0\u5206\uff1b  \n4.\u6709\u9ad8\u6027\u80fd\u5ba2\u6237\u7aef\u7f16\u7a0b\u7ecf\u9a8c\uff0c\u6709\u6027\u80fd\u8c03\u4f18\u7ecf\u5386\u52a0\u5206\uff1b  \n5.\u719f\u6089iOS\u4e3b\u6d41\u5f00\u6e90\u6846\u67b6\uff0c\u5e76\u5b66\u4e60\u3001\u7814\u7a76\u8fc7\u5b9e\u73b0\u539f\u7406\u548c\u6e90\u7801\uff1b  \n\nAndroid\u5de5\u7a0b\u5e08\u4efb\u804c\u8981\u6c42\uff1a  \n1.\u672c\u79d1\u4ee5\u4e0a\u5b66\u5386\uff0c\u53ef\u4f7f\u7528\u82f1\u6587\u4ea4\u6d41\u8005\u52a0\u5206\uff1b  \n2.\u4e09\u5e74\u4ee5\u4e0aAndroid\u5f00\u53d1\u7ecf\u9a8c\uff1b  \n3.\u719f\u6089Android\u5e38\u7528\u63a7\u4ef6\u7684\u4f7f\u7528\u5e76\u7406\u89e3\u5176\u539f\u7406\uff1b  \n4.\u719f\u6089Android Framework\u539f\u7406\uff0c\u9605\u8bfb\u8fc7Android\u6e90\u4ee3\u7801\u8005\u4f18\u5148\uff1b  \n5.\u5bf9java\u3001Kotlin\u3001\u57fa\u672c\u6570\u636e\u7ed3\u6784\u3001\u8ba1\u7b97\u673a\u7f51\u7edc\u6709\u8f83\u4e3a\u6df1\u5165\u7684\u4e86\u89e3\uff1b  \n\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "",
    "version": "1.5.8",
    "project_urls": {
        "Homepage": "https://github.com/shede333/iOSReSignApp"
    },
    "split_keywords": [
        "codesign",
        "ios",
        "resign",
        "re-sign",
        "re_sign",
        "re",
        "sign",
        "app"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3fe042dcf61f9962610ca7c3b920b7c016b8018c822dd39dc3bdbd30ed801a32",
                "md5": "c8b82e2dd17934778d0181a6dbc8bcf1",
                "sha256": "1d8dd1fff5911f56dc8e13dfab53896dc45a75db627346f455267f7b93a252d8"
            },
            "downloads": -1,
            "filename": "iOSReSignApp-1.5.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c8b82e2dd17934778d0181a6dbc8bcf1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "~=3.6",
            "size": 12172,
            "upload_time": "2023-10-10T06:12:31",
            "upload_time_iso_8601": "2023-10-10T06:12:31.769089Z",
            "url": "https://files.pythonhosted.org/packages/3f/e0/42dcf61f9962610ca7c3b920b7c016b8018c822dd39dc3bdbd30ed801a32/iOSReSignApp-1.5.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "429071fca0a570675aa28a819ba3c2a8eb5615c553ff387cfe63f1e1acb9ad57",
                "md5": "78159d02f3c9d0121ee96610017e877a",
                "sha256": "2db2c830f0ae5a3d6f3639e43a81dd5ccfb803f8e0bd5b6ef953adf1eef0498c"
            },
            "downloads": -1,
            "filename": "iOSReSignApp-1.5.8.tar.gz",
            "has_sig": false,
            "md5_digest": "78159d02f3c9d0121ee96610017e877a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "~=3.6",
            "size": 10458,
            "upload_time": "2023-10-10T06:12:33",
            "upload_time_iso_8601": "2023-10-10T06:12:33.250442Z",
            "url": "https://files.pythonhosted.org/packages/42/90/71fca0a570675aa28a819ba3c2a8eb5615c553ff387cfe63f1e1acb9ad57/iOSReSignApp-1.5.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-10 06:12:33",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "shede333",
    "github_project": "iOSReSignApp",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "iosresignapp"
}
        
Elapsed time: 0.21722s