|
- /*
- * Tweak.xm
- * Date: January 16, 2018
- * Developed by Gh0stByte, All Rights Reserved
- */
- NSString *username, *password;
-
- // Hook into the main view controller
- %hook BBLFTWViewController
-
- // Hook into when the login page finishes loading
- - (void)webViewDidFinishLoad:(UIWebView *)webView {
- // The javascript that we're gonna execute, which will set the username & password to what we've stored
- NSString *inject = [NSString stringWithFormat:@"document.getElementById('username').value = '%@';document.getElementById('password').value = '%@';", username, password];
- // Inject the JS
- [webView stringByEvaluatingJavaScriptFromString:inject];
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void)
- {
- // Submit the form by pressing the button.
- [webView stringByEvaluatingJavaScriptFromString:@"document.forms[\"fm1\"].submit.click();"];
- });
- %orig;
- }
-
- %end
-
- // Interface so we can call our custom method
- @interface BBLFTWViewController : UIViewController
- -(void)getAutofillInfo;
- @end
-
- // Hook into the login view controller
- %hook BBLoginViewController
-
- // Hook into when the login button is pressed
- -(void)loginBtnTapped {
- // Grab your username and password from the userdefaults
- username = [[NSUserDefaults standardUserDefaults] objectForKey:@"USERNAME"];
- password = [[NSUserDefaults standardUserDefaults] objectForKey:@"PASSWORD"];
- // If you don't have an username & password setup
- if(!(username && password) || ([username isEqualToString:@""] || [password isEqualToString:@""])) {
- // Setup your username & password
- [self getAutofillInfo];
- } else {
- // Otherwise, load up the webview
- %orig;
- }
- }
-
- // Hook into when the help button is tapped
- -(void)helpBtnTapped {
- // Ask the user if they want to change their information
- UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Auto-Login" message:@"Would you like to change your login information?" preferredStyle:UIAlertControllerStyleAlert];
- UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"Change" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
- // If so, setup their username and pass
- [self getAutofillInfo];
- }];
- [alertController addAction:confirmAction];
- UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
- // Otherwise, use the normal function for the help button
- %orig;
- }];
- [alertController addAction:cancelAction];
- // Present the alert
- [self presentViewController:alertController animated:YES completion:nil];
- }
-
- // New function to get the login info
- %new
- -(void)getAutofillInfo {
- // Ask the user to enter their input
- UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Auto-Login" message:@"Enter your username & password\n(Note: Information stored plaintext in the standard app defaults. To change the information, press the help button)" preferredStyle:UIAlertControllerStyleAlert];
- [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
- textField.placeholder = @"Username";
- }];
- [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
- textField.placeholder = @"Password";
- textField.secureTextEntry = YES;
- }];
- UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
- //Store the information
- [[NSUserDefaults standardUserDefaults] setObject:[[alertController textFields][0] text] forKey:@"USERNAME"];
- [[NSUserDefaults standardUserDefaults] setObject:[[alertController textFields][1] text] forKey:@"PASSWORD"];
- [[NSUserDefaults standardUserDefaults] synchronize];
-
- }];
- [alertController addAction:confirmAction];
- UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
- }];
- [alertController addAction:cancelAction];
- // Show the alert
- [self presentViewController:alertController animated:YES completion:nil];
- }
-
- %end
|