Initial upload
This commit is contained in:
13
Makefile
Normal file
13
Makefile
Normal 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
9
control
Normal 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
8
ent.xml
Normal 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
81
main.m
Normal 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;
|
||||||
|
}
|
Reference in New Issue
Block a user