a quick summary, I bought a laptop on ebay from china (lesson learned lol), and found it was EFI locked. henceforth, I took my Arduino Uno R3, and made the following sketch that works
but I had to flash HID keyboard for it to work after, hex files attached
so,
I uploaded the sketch to Arduino Uno ,
then placed it on DFU mode,
on terminal:
sudo dfu-programmer atmega16u2 erase
** sudo dfu-programmer atmega16u2 flash --debug 1 Arduinokeyboard-0.3.hex.txt**
** sudo dfu-programmer atmega16u2 reset**
when i test it, it produced the four digits needed, except number letter Z instead of number zero such as zzzz, zzz1 , zzz2 .........999z
//EFI Pin bruteforce
const int ledPin = 13;
int counter = 0;
//waits for iCould
int loops = 0;
int value0 = 0;
int value1 = 0;
int value2 = 0;
int value4 = 0;
int fakecounter = counter;
char pin[]="xxxx";
uint8_t buf[8] = {
0 }; /* Keyboard report buffer */
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
randomSeed(analogRead(0));
delay(200);
}
void loop(){
if (counter <= 9999){
delay(8000);
digitalWrite(ledPin, LOW);
delay(5500);
digitalWrite(ledPin, HIGH);
sprintf(pin, "%04d", fakecounter);
//First Digit
int value0 = pin[0] - '0';
buf[3] = value0 + 29;
if (buf[3] = 30){
buf[3] = value0 + 29;
Serial.write(buf, 8);
delay(450);
releaseKey();
delay(420);
}
//Second Digit
int value1 = pin[1] - '0';
buf[3] = value1 + 29;
if (buf[3] = 30){
buf[3] = value1 + 29;
Serial.write(buf, 8);
delay(398);
releaseKey();
delay(510);
}
//Third Digit
int value2 = pin[2] - '0';
buf[3] = value2 + 29;
if (buf[3] = 30){
buf[3] = value2 + 29;
Serial.write(buf, 8);
delay(421);
releaseKey();
delay(423);
}
//Forth Digit
int value3 = pin[3] - '0';
buf[3] = value3 + 29;
if (buf[3] = 30){
buf[3] = value3 + 29;
Serial.write(buf, 8);
delay(430);
releaseKey();
delay(525);
}
//Enter Key
buf[3] = 40;
Serial.write(buf, 8);
delay(305);
releaseKey();
}
//reached 4 digit PIN max value
if (counter > 9999){
for (int blinkies = 0; blinkies < 8; blinkies++) {
digitalWrite(ledPin, HIGH);
delay(20);
digitalWrite(ledPin, LOW);
delay(200);
}
delay(6000);
}
++counter;
fakecounter = counter;
}
void releaseKey() {
buf[0] = 0;
buf[2] = 0;
buf[3] = 0;
Serial.write(buf, 8); // Release key
}
Arduino-keyboard-0.3.hex.txt (11.1 KB)
Arduino-usbserial-uno.hex.txt (11.2 KB)