Пример #1
0
def add(args: list) -> None:
    """
        Adds a new keychain entry to the keychain

        :param args:
        :return:
    """

    if not _has_minimum_flags_to_add_item(args):
        click.secho(
            'Usage: ios keychain add --key <key name> --data <entry data>',
            bold=True)
        return

    key = _get_flag_value(args, '--key')
    value = _get_flag_value(args, '--data')

    click.secho('Adding a new entry to the iOS keychain...', dim=True)
    click.secho('Key:       {0}'.format(key), dim=True)
    click.secho('Value:     {0}'.format(value), dim=True)

    runner = FridaRunner()
    runner.set_hook_with_data(ios_hook('keychain/add'))

    api = runner.rpc_exports()

    if api.add(key, value):
        click.secho('Successfully added the keychain item', fg='green')
        return

    click.secho('Failed to add the keychain item', fg='red')
Пример #2
0
def dump(args: list = None) -> None:
    """
        Dumps credentials stored in NSURLCredentialStorage

        :param args:
        :return:
    """

    hook = ios_hook('nsurlcredentialstorage/dump')

    runner = FridaRunner(hook=hook)
    api = runner.rpc_exports()

    data = api.dump()

    runner.unload_script()

    if not data:
        click.secho('No credentials found using NSURLCredentialStorage')

    click.secho('')
    click.secho(tabulate(data, headers="keys"))
    click.secho('')
    click.secho('Found {count} credentials'.format(count=len(data)), bold=True)