Initial upload

This commit is contained in:
wxb1ank
2020-01-03 02:21:46 -05:00
commit 6f2a417332
4 changed files with 111 additions and 0 deletions

13
Makefile Normal file
View File

@ -0,0 +1,13 @@
ARCHS = arm64 arm64e
TARGET = iphone::latest
include $(THEOS)/makefiles/common.mk
TOOL_NAME = lockpick
lockpick_FILES = main.m
lockpick_CFLAGS = -fobjc-arc
lockpick_PRIVATE_FRAMEWORKS = ManagedConfiguration SpringBoard
lockpick_CODESIGN_FLAGS = -Sent.xml
include $(THEOS_MAKE_PATH)/tool.mk

9
control Normal file
View File

@ -0,0 +1,9 @@
Package: com.wxblank.lockpick
Name: lockpick
Version: 0.0.1
Architecture: iphoneos-arm
Description: lock/unlock the device
Maintainer: wxblank <wxblank@gmail.com>
Author: wxblank <wxblank@gmail.com>
Section: System
Tag: role::hacker

8
ent.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.springboard-ui.client</key>
<true/>
</dict>
</plist>

81
main.m Normal file
View File

@ -0,0 +1,81 @@
#include <stdio.h>
#include <string.h>
#import <Foundation/Foundation.h>
#define PROG_NAME "lockpick"
@interface MCPasscodeManager : NSObject
+ (MCPasscodeManager *)sharedManager;
+ (BOOL)isDeviceUnlocked;
+ (BOOL)isDeviceLocked;
- (BOOL)isPasscodeSet;
- (void)lockDevice;
- (BOOL)unlockDeviceWithPasscode:(id)passcode outError:(out NSError * _Nullable *)error;
@end
@interface SBLockdownManager : NSObject
+ (SBLockdownManager *)sharedInstance;
@end
void print_usage() {
printf("Usage: %s lock\n", PROG_NAME);
printf(" %s unlock [passcode]\n", PROG_NAME);
}
int main(int argc, char *argv[]) {
if(argc == 1) {
print_usage();
return 0;
}
if(strcmp(argv[1], "lock") == 0) {
if([MCPasscodeManager isDeviceUnlocked]) {
[[MCPasscodeManager sharedManager] lockDevice];
} else {
fprintf(stderr, "Device is already locked.\n");
return 1;
}
}
else if(strcmp(argv[1], "unlock") == 0) {
NSError *error = nil;
if(![MCPasscodeManager isDeviceUnlocked]) {
if(![MCPasscodeManager sharedManager].isPasscodeSet) {
[[MCPasscodeManager sharedManager] unlockDeviceWithPasscode:nil outError:&error];
if(error) {
fprintf(stderr, "Couldn't unlock device.\n");
return 1;
}
}
else if(argc < 3) {
fprintf(stderr, "This device requires a passcode.\n");
return 1;
}
NSString *givenPasscode = @(argv[2]);
[[MCPasscodeManager sharedManager] unlockDeviceWithPasscode:givenPasscode outError:&error];
if(error) {
if(error.code == 5011) {
fprintf(stderr, "Wrong passcode.\n");
return 1;
}
fprintf(stderr, "Unknown error code.\n");
return 1;
}
} else {
fprintf(stderr, "Device is already unlocked.\n");
return 1;
}
}
return 0;
}