GNU General Public License v3.0

项目介绍

n3d1117/cook 是一个托管在 GitHub 上的开源项目,主要使用 Swift 编写,采用 GNU General Public License v3.0 许可证,目前获得 93 个 Star、15 次 Fork。

仓库全名
n3d1117/cook
开源许可证
GNU General Public License v3.0
Star 数
93
Fork 数
15
未关闭 Issue
1

README 摘要

Cook 👨🏻‍🍳 Cook is a macOS command line tool wrapped around Riley Testut's AltSign to automate common iOS development tasks, such as managing iOS certificates, app identifiers, devices, provisioning profiles and resigning .ipa files. It works with free Apple IDs (not enrolled in the developer program). Usage Generic arguments -h, --help prints usage information -v, --verbose enables verbose mode -j, --json use…

完整内容见 GitHub 原始 README 或本页 。

常见问题

cook 用什么语言开发?

主要使用 Swift 编写,采用 GNU General Public License v3.0 许可证,目前有 93 个 Star。

cook 可以免费商用吗?

仓库标注的许可证为 GNU General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 cook 的源码?

可以直接克隆仓库:git clone https://github.com/n3d1117/cook.git,默认分支为 master;安装与运行步骤见仓库 README。

cook 最近还在维护吗?

仓库最近一次更新为 2022年5月21日,当前有 1 个未关闭 Issue;Star 数为 93,可作为社区活跃度的参考。

关于

macOS command line tool to automate common iOS development tasks

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

简要分析

热度分
129
价值分
60
活跃状态
活跃

README

Cook 👨🏻‍🍳

Cook is a macOS command line tool wrapped around Riley Testut’s AltSign to automate common iOS development tasks, such as managing iOS certificates, app identifiers, devices, provisioning profiles and resigning .ipa files. It works with free Apple IDs (not enrolled in the developer program).

Cook demo

Usage

./cook [AUTHENTICATION] [RECIPE] [RECIPE_ARGUMENTS]

Generic arguments

-h, --help prints usage information

-v, --verbose enables verbose mode

-j, --json use json output (all --output-* args are ignored in this mode)

Authentication

To authenticate you can pass the following arguments to any recipe: --appleId (your Apple ID’s email) and --password (Apple ID’s Password).

If you prefer, you can set these environment variables instead: COOK_APPLEID_EMAIL and COOK_APPLEID_PASSWORD.

Pass --2fa-code to specify the six-digit two factor authentication code.

You can also specify --base64-anisette-data to use custom base64 encoded anisette data in your requests (for example, generated with anisette_server recipe).

NOTE: Your Apple ID is never sent to anyone but Apple. Feel free to create a new Apple ID account to test it.

Recipes

  • create_certificate Create certificate (.pem or .p12) with arguments:

    --machine-name      Optional machine name (defaults to 'cook')
    --input-csr         Optional path to an existing CSR file
    --output-pem        Path/Directory where to save output PEM file
    --output-p12        Path/Directory where to save output p12 file
    --p12-password      Optional P12 password, defaults to blank
    -f                  Force certificate revocation if needed
    
  • register_app Register a new app with arguments:

    --app-name          App name to register
    --app-bundle-id     Bundle identifier to register
    -f                  Force removal of previous app if needed
    
  • register_device Register device with arguments:

    --name              Device name (use quotes if it contains spaces)
    --udid              Device udid
    
  • update_profile Update & download provisioning profile with arguments:

    --bundle-id         Bundle identifier of the app
    --output-profile    Path/Directory where to save updated profile
    -f                  Force remove app ID and then readd it
    
  • download_profiles Download provisioning profiles with arguments:

    --bundle-id         Optional, to specify an app's identifier (defaults to all apps)
    --output-folder     Directory where to save the profiles
    
  • resign Resign ipa file with arguments:

    --ipa                 Path to .ipa file to resign
    --output-ipa          Optional path to resigned ipa (if not specified, original is overwritten)
    --p12                 Optional path to P12 certificate to use for resigning
    --p12-password        Optional P12 password
    --machine-name        Optional machine name to use when adding certificate (defaults to 'cook', ignored if --p12 is specified)
    -f                    Revoke certificate (if --p12 is not specified) if needed, register app id if needed
    
  • anisette_server Listen to a specific port and respond with freshly generated base64 encoded anisette data. Arguments:

    --port                Server port (defaults to 8080)
    --secret              Secret path (the url will be 127.0.0.1:{PORT}/{SECRET})
    

JSON Mode

In JSON mode (-j, --json flag), command output is formatted as JSON.

See possible JSON responses
 'success':               '0' or '1'
 'error':                 Error description (if success is 0)

 - create_certificate recipe
   'pem_cert':            Plain text PEM cert
   'base64_p12_cert':     Base 64 encoded P12 cert
   'p12_password':        Plain text P12 password

 - update_profile recipe
   'base_64_profile':     Base 64 encoded mobileprovision

 - download_profiles recipe
   'profiles_count':      Number of profiles downloaded
   'base64_profile_i':    i-th base 64 encoded mobileprovision (0<i<=profiles_count)
 
 - anisette_server recipe
   'base64_encoded_data': Base 64 encoded anisette data

Sample usage

Here are some real world examples on how to use cook (authentication part is omitted):

See examples
  • Export .pem certificate generated using an existing .csr file:

    ./cook create_certificate --input-csr ~/desktop/req.csr --output-pem ~/desktop/cert.pem
    
  • Export .p12 certificate with password 123:

    ./cook create_certificate --output-p12 ~/desktop/cert.p12 -—p12-password "123"
    
  • Register app named My Fancy App with bundle identifier my.fancy.app:

    ./cook register_app --app-name "My Fancy App" --app-bundle-id my.fancy.app
    
  • Register a device named My iPhone 11 Pro with udid DEVICE_UDID:

    ./cook register_device --name "My iPhone 11 Pro"  --udid "DEVICE_UDID"
    
  • Update and export a provisioning profile for app with bundle identifier my.fancy.app:

    ./cook update_profile --bundle-id my.fancy.app --output-profile ~/desktop/profile.mobileprovision
    
  • Download all existing provisioning profiles:

    ./cook download_profiles --output-folder ~/desktop/profiles/
    
  • Resign .ipa file using a local p12 certificate (obtained with create_certificate recipe):

    ./cook resign --ipa ./app.ipa --p12 ./cert.p12 --p12-password "123"
    
  • Resign .ipa file using a new certificate (-f revokes current one if necessary)

    ./cook resign --ipa ./app.ipa --output-ipa ./app_signed.ipa -f
    

Installation

Download latest cook.zip release from the releases page to your downloads folder and unzip it (or build manually from Xcode).

If you haven’t already, you should install and enable the Mail.app plugin called CookMailPlugin (this is needed to fetch the correct headers to communicate with Apple’s servers).

See steps to install CookMailPlugin (only once):

Run the following commands:

$ cd ~/downloads/cook/
$ sudo codesign -f -s - CookMailPlugin.mailbundle
$ sudo mkdir -p /Library/Mail/Bundles
$ sudo cp -R CookMailPlugin.mailbundle /Library/Mail/Bundles
$ sudo defaults write "/Library/Preferences/com.apple.mail" EnableBundles 1

Then enable the plugin:

  • Open Mail.app and from the Menu bar go to Mail -> Preferences
  • Click on Manage Plug-ins...
  • Enable CookMailPlugin.mailbundle
  • Click Apply and Restart Mail
  • Done!
Cook mail plugin

Once the plugin is installed and enabled, you can use cook from the command line:

$ cd ~/downloads/cook/
$ ./cook -h

Build manually

Run the following commands:

$ cd ~/downloads
$ git clone https://github.com/n3d1117/cook.git
$ cd cook/
$ open cook.xcodeproj

Credits

License

Licensed under GNU General Public License v3.0. See LICENSE file for further information.

评论

暂无评论