From a9549a9c3c1763158c506efde24ef0f420d150a6 Mon Sep 17 00:00:00 2001 From: Daniel A Mayer Date: Sat, 26 Dec 2015 04:32:10 -0600 Subject: [PATCH 1/2] Changing colors of help to reset color at end of usage. * Also added ldid codesigning with entitlements to the Makefile --- Makefile | 5 +++-- main.m | 36 ++++++++++++++++++------------------ 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index f6bc566..1d6d9ad 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,14 @@ -ARCH_FLAGS=-arch armv7 -marm -march=armv7-a +ARCH_FLAGS=-arch arm64 -arch armv7 -marm -march=armv7-a keychaineditor: main.m clang \ -Os -Wall -bind_at_load -fobjc-arc \ $(ARCH_FLAGS) \ -mios-version-min=7.0 \ - -isysroot `xcrun --sdk iphoneos8.3 --show-sdk-path` \ + -isysroot `xcrun --sdk iphoneos9.2 --show-sdk-path` \ -framework Foundation -framework Security \ -o keychaineditor main.m + ldid -Sentitlements.xml keychaineditor clean: rm -f keychaineditor diff --git a/main.m b/main.m index a4d7517..c4a2595 100644 --- a/main.m +++ b/main.m @@ -37,8 +37,8 @@ void printUsage() { - fprintf(stdout, "\n\e[4;30mUsage:\e[0;31m ./keychaineditor commands \ - \n\e[4;30mCommands can be:\e[0;31m\ + fprintf(stdout, "\n\e[0;0mUsage:\e[0;31m ./keychaineditor commands \ + \n\e[0;0mCommands can be:\e[0;31m\ \n\t--help: Prints the usage.\ \n\t--action: Can be either min-dump, dump, edit, delete.\ \n\t--find: uses 'CONTAINS' to find strings from the dump.\ @@ -50,13 +50,13 @@ void printUsage() { \n\e[0;32mNote: If there is no account name, pass a '' string.\ \n\e[0;32mNote: --find is an optional command for dump. It search from\ \n\e[0;32m{Account, Service, EntitlementGroup, Protection}.\ - \n\e[4;30mExamples:\e[0;31m\ + \n\e[4;0mExamples:\e[0;31m\ \n\t./keychaineditor --action dump --find XXX\ \n\tOr\ \n\t./keychaineditor --action delete --account XXX --service XXX\ \n\tOr\ \n\t./keychaineditor --action edit --account XXX --service XXX --data XXX\ - \e[0;30m\n\n"); + \e[0;0m\n\n"); return; @@ -75,21 +75,21 @@ OSStatus osstatusToHumanReadableString(OSStatus status) { switch (status) { case errSecSuccess: - fprintf(stdout, "\e[0;32mOperation successfully completed.\e[0;30m\n"); + fprintf(stdout, "\e[0;32mOperation successfully completed.\e[0;0m\n"); break; case errSecItemNotFound: - fprintf(stderr, "\e[0;31mThe specified item could not be found in the keychain.\e[0;30m\n"); + fprintf(stderr, "\e[0;31mThe specified item could not be found in the keychain.\e[0;0m\n"); break; case errSecAuthFailed: - fprintf(stderr, "\e[0;31mDid you turn off the passcode on device? The item is no longer available.\e[0;30m\n"); - fprintf(stderr, "\e[0;31mIf that is not the case, UserPresence is required. Check your device for the prompt.\e[0;30m\n"); + fprintf(stderr, "\e[0;31mDid you turn off the passcode on device? The item is no longer available.\e[0;0m\n"); + fprintf(stderr, "\e[0;31mIf that is not the case, UserPresence is required. Check your device for the prompt.\e[0;0m\n"); break; case -34018: - fprintf(stderr, "\e[0;31mError: Client has neither application-identifier nor keychain-access-groups entitlements. Please refer README for further instructions.\e[0;30m\n"); + fprintf(stderr, "\e[0;31mError: Client has neither application-identifier nor keychain-access-groups entitlements. Please refer README for further instructions.\e[0;0m\n"); break; default: - fprintf(stderr, "\e[0;31mUnhandled Error: Please contact developer to report this error. Error code: %d\e[0;30m\n", (int)status); + fprintf(stderr, "\e[0;31mUnhandled Error: Please contact developer to report this error. Error code: %d\e[0;0m\n", (int)status); break; } @@ -316,7 +316,7 @@ void prepareJsonOutput(NSDictionary *results, NSString *find) { fprintf(stdout, "%s\n", [[[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding] UTF8String]); } else { - fprintf(stderr, "\n\e[0;31mInternal error when preparing JSON output. Error: %s\e[0;30m\n", [[error localizedDescription] UTF8String]); + fprintf(stderr, "\n\e[0;31mInternal error when preparing JSON output. Error: %s\e[0;0m\n", [[error localizedDescription] UTF8String]); } } @@ -332,7 +332,7 @@ void prepareMinimumOutput(NSDictionary *results) { NSString *account = [[NSString alloc] init]; NSString *service = [[NSString alloc] init]; - fprintf(stdout, "\e[0;31mWarning: The names are truncated to max width of 35 charaters. Please use this dump as a reference, and use --find to get full details.\n\e[0;30m"); + fprintf(stdout, "\e[0;31mWarning: The names are truncated to max width of 35 charaters. Please use this dump as a reference, and use --find to get full details.\n\e[0;0m"); // Prettify the output. fprintf(stdout, "Account%28s | Service\n", ""); @@ -555,7 +555,7 @@ int main(int argc, char *argv[]) { */ if (![[NSString stringWithFormat:@"%s", argv[1]] isEqualToString:@"--action"]) { - fprintf(stderr, "\e[0;31mInvalid command passed as first argument. Please use --help to get usage information.\e[0;30m"); + fprintf(stderr, "\e[0;31mInvalid command passed as first argument. Please use --help to get usage information.\e[0;0m"); return EXIT_FAILURE; } @@ -589,7 +589,7 @@ int main(int argc, char *argv[]) { */ if (![@[@"min-dump", @"dump", @"edit", @"delete"] containsObject:action]) { - fprintf(stderr, "\e[0;31mInvalid action passed. Please use --help to get usage information.\n\e[0;30m"); + fprintf(stderr, "\e[0;31mInvalid action passed. Please use --help to get usage information.\n\e[0;0m"); return EXIT_FAILURE; } @@ -611,7 +611,7 @@ int main(int argc, char *argv[]) { */ if ( (acct == nil) || (srvc == nil) || (data == nil) ) { - fprintf(stderr, "\e[0;31mEdit requires account, service and data. Please use --help to get usage information.\n\e[0;30m"); + fprintf(stderr, "\e[0;31mEdit requires account, service and data. Please use --help to get usage information.\n\e[0;0m"); return EXIT_FAILURE; } @@ -627,7 +627,7 @@ int main(int argc, char *argv[]) { NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:data options:NSDataBase64DecodingIgnoreUnknownCharacters]; if (decodedData == nil) { - fprintf(stderr, "\e[0;31mData only accepts base64 strings. Please use --help to get usage information.\n\e[0;30m"); + fprintf(stderr, "\e[0;31mData only accepts base64 strings. Please use --help to get usage information.\n\e[0;0m"); return EXIT_FAILURE; } @@ -642,7 +642,7 @@ int main(int argc, char *argv[]) { */ if ( (acct == nil) || (srvc == nil) ) { - fprintf(stderr, "\e[0;31mDelete requires account, service. Please use --help to get usage information.\n\e[0;30m"); + fprintf(stderr, "\e[0;31mDelete requires account, service. Please use --help to get usage information.\n\e[0;0m"); return EXIT_FAILURE; } @@ -653,4 +653,4 @@ int main(int argc, char *argv[]) { } return EXIT_SUCCESS; -} \ No newline at end of file +} From 489340250d32a399a5fba755338e5c6e718e0306 Mon Sep 17 00:00:00 2001 From: Daniel A Mayer Date: Sat, 26 Dec 2015 04:41:46 -0600 Subject: [PATCH 2/2] Added nil check based on other pull request https://github.com/NitinJami/keychaineditor/pull/7 * Also includes new binary compiled and signed for iOS9 --- keychaineditor | Bin 62800 -> 199200 bytes main.m | 8 +++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/keychaineditor b/keychaineditor index 9af566231cbc172b015bffd42609cd72929dd98c..90a46e1bcaf81929723b9a99467c0fbbda07fea4 100755 GIT binary patch literal 199200 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 literal 62800 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 diff --git a/main.m b/main.m index c4a2595..19c9015 100644 --- a/main.m +++ b/main.m @@ -282,9 +282,11 @@ void prepareJsonOutput(NSDictionary *results, NSString *find) { forKey:@"Creation Time"]; [innerJSON setObject:checkForNoDataValue([eachItemFromResults objectForKey:(__bridge id)kSecValueData]) forKey:@"Data"]; - - [innerJSON setObject:checkUserPresence((__bridge SecAccessControlRef) \ - ([eachItemFromResults objectForKey:(__bridge id)(kSecAttrAccessControl)])) forKey:@"UserPresence"]; + + if([eachItemFromResults objectForKey:(__bridge id)(kSecAttrAccessControl)]) { + [innerJSON setObject: checkUserPresence((__bridge SecAccessControlRef) \ + ([eachItemFromResults objectForKey:(__bridge id)(kSecAttrAccessControl)])) forKey:@"UserPresence"]; + } [parentJSON setObject:innerJSON forKey:[NSString stringWithFormat:@"%lu", (unsigned long)++index]]; }