-
Como obtener la clave OSK de un Mac mediante su SMC
Dado que vamos a necesitar el compilador GCC, antes que nada asegúrate de tener XCode instalado en el Mac. Una vez comprobada la instalación de XCode, abre una terminal y ejecuta lo siguiente:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152echo "#include <stdio.h>" > ~/Desktop/LeerClaveOSK.cecho "#include <IOKit/IOKitLib.h>" >> ~/Desktop/LeerClaveOSK.cecho "" >> ~/Desktop/LeerClaveOSK.cecho "typedef struct {" >> ~/Desktop/LeerClaveOSK.cecho " uint32_t key;" >> ~/Desktop/LeerClaveOSK.cecho " uint8_t __d0[22];" >> ~/Desktop/LeerClaveOSK.cecho " uint32_t datasize;" >> ~/Desktop/LeerClaveOSK.cecho " uint8_t __d1[10];" >> ~/Desktop/LeerClaveOSK.cecho " uint8_t cmd;" >> ~/Desktop/LeerClaveOSK.cecho " uint32_t __d2;" >> ~/Desktop/LeerClaveOSK.cecho " uint8_t data[32];" >> ~/Desktop/LeerClaveOSK.cecho "} AppleSMCBuffer_t;" >> ~/Desktop/LeerClaveOSK.cecho "" >> ~/Desktop/LeerClaveOSK.cecho "int" >> ~/Desktop/LeerClaveOSK.cecho "main(void)" >> ~/Desktop/LeerClaveOSK.cecho "{" >> ~/Desktop/LeerClaveOSK.cecho " io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault," >> ~/Desktop/LeerClaveOSK.cecho ' IOServiceMatching("AppleSMC"));' >> ~/Desktop/LeerClaveOSK.cecho ' if (!service)' >> ~/Desktop/LeerClaveOSK.cecho " return -1;" >> ~/Desktop/LeerClaveOSK.cecho "" >> ~/Desktop/LeerClaveOSK.cecho " io_connect_t port = (io_connect_t)0;" >> ~/Desktop/LeerClaveOSK.cecho " kern_return_t kr = IOServiceOpen(service, mach_task_self(), 0, &port);" >> ~/Desktop/LeerClaveOSK.cecho " IOObjectRelease(service);" >> ~/Desktop/LeerClaveOSK.cecho " if (kr != kIOReturnSuccess)" >> ~/Desktop/LeerClaveOSK.cecho " return kr;" >> ~/Desktop/LeerClaveOSK.cecho "" >> ~/Desktop/LeerClaveOSK.cecho " AppleSMCBuffer_t inputStruct = { 'OSK0', {0}, 32, {0}, 5, }, outputStruct;" >> ~/Desktop/LeerClaveOSK.cecho " size_t outputStructCnt = sizeof(outputStruct);" >> ~/Desktop/LeerClaveOSK.cecho "" >> ~/Desktop/LeerClaveOSK.cecho " kr = IOConnectCallStructMethod((mach_port_t)port, (uint32_t)2," >> ~/Desktop/LeerClaveOSK.cecho " (const void*)&inputStruct, sizeof(inputStruct)," >> ~/Desktop/LeerClaveOSK.cecho " (void*)&outputStruct, &outputStructCnt);" >> ~/Desktop/LeerClaveOSK.cecho " if (kr != kIOReturnSuccess)" >> ~/Desktop/LeerClaveOSK.cecho " return kr;" >> ~/Desktop/LeerClaveOSK.cecho "" >> ~/Desktop/LeerClaveOSK.cecho " int i = 0;" >> ~/Desktop/LeerClaveOSK.cecho " for (i = 0; i < 32; i++)" >> ~/Desktop/LeerClaveOSK.cecho ' printf("%c", outputStruct.data[i]);' >> ~/Desktop/LeerClaveOSK.cecho "" >> ~/Desktop/LeerClaveOSK.cecho " inputStruct.key = 'OSK1';" >> ~/Desktop/LeerClaveOSK.cecho " kr = IOConnectCallStructMethod((mach_port_t)port, (uint32_t)2," >> ~/Desktop/LeerClaveOSK.cecho " (const void*)&inputStruct, sizeof(inputStruct)," >> ~/Desktop/LeerClaveOSK.cecho " (void*)&outputStruct, &outputStructCnt);" >> ~/Desktop/LeerClaveOSK.cecho " if (kr == kIOReturnSuccess)" >> ~/Desktop/LeerClaveOSK.cecho " for (i = 0; i < 32; i++)" >> ~/Desktop/LeerClaveOSK.cecho ' printf("%c", outputStruct.data[i]);' >> ~/Desktop/LeerClaveOSK.cecho "" >> ~/Desktop/LeerClaveOSK.cecho ' printf("\n");' >> ~/Desktop/LeerClaveOSK.cecho "" >> ~/Desktop/LeerClaveOSK.cecho " return IOServiceClose(port);" >> ~/Desktop/LeerClaveOSK.cecho "}" >> ~/Desktop/LeerClaveOSK.cSe te habrá creado un archivo llamado LeerClaveOSK.c en el escritorio. Compílalo pegando y ejecutando lo siguiente en la terminal:
1gcc -Wall -o ~/Desktop/LeerClaveOSK ~/Desktop/LeerClaveOSK.c -framework IOKitUna vez compilado, podrás ejecutarlo pegando lo siguiente en la terminal:
1~/Desktop/LeerClaveOSKEl resultado será una cadena de autentificación que tiene su historia con el TPM y que podrás copiar y pegar donde lo requieras. 🙂
Cuenta de usuario:
Visitantes por ubicación:
Suscríbete por RSS
Suscríbete por email
Categorías de los posts:
Historial de posts:
Nuestra actividad en Twitter: