- 2015-02-20: OX 10.10.5 on Apple hardware can successfully build
- NOTE: Credit and thanks to Amit Singh
- Reference:
http://www.osxbook.com/book/bonus/chapter7/tpmdrmmyth/
- Create smc_read.cand paste in code:
vi smc_read.c
/*
 * smc_read.c: Written for Mac OS X 10.5. Compile as follows:
 *
 * gcc -Wall -o smc_read smc_read.c -framework IOKit
 */
#include <stdio.h>
#include <IOKit/IOKitLib.h>
typedef struct {
    uint32_t key;
    uint8_t  __d0[22];
    uint32_t datasize;
    uint8_t  __d1[10];
    uint8_t  cmd;
    uint32_t __d2;
    uint8_t  data[32];
} AppleSMCBuffer_t;
int
main(void)
{
    io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault,
                               IOServiceMatching("AppleSMC"));
    if (!service)
        return -1;
    io_connect_t port = (io_connect_t)0;
    kern_return_t kr = IOServiceOpen(service, mach_task_self(), 0, &port);
    IOObjectRelease(service);
    if (kr != kIOReturnSuccess)
        return kr;
    AppleSMCBuffer_t inputStruct = { 'OSK0', {0}, 32, {0}, 5, }, outputStruct;
    size_t outputStructCnt = sizeof(outputStruct);
    kr = IOConnectCallStructMethod((mach_port_t)port, (uint32_t)2,
             (const void*)&inputStruct, sizeof(inputStruct),
             (void*)&outputStruct, &outputStructCnt);
    if (kr != kIOReturnSuccess)
        return kr;
    int i = 0;
    for (i = 0; i < 32; i++)
        printf("%c", outputStruct.data[i]);
    inputStruct.key = 'OSK1';
    kr = IOConnectCallStructMethod((mach_port_t)port, (uint32_t)2,
             (const void*)&inputStruct, sizeof(inputStruct),
             (void*)&outputStruct, &outputStructCnt);
    if (kr == kIOReturnSuccess)
        for (i = 0; i < 32; i++)
            printf("%c", outputStruct.data[i]);
    printf("\n");
    return IOServiceClose(port);
}
- Compile:
gcc -Wall -o smc_read smc_read.c -framework IOKit
- Run:
./smc_read
- On 2015-12-09 output is:
ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc
- Reference:
http://www.osxbook.com/book/bonus/chapter7/tpmdrmmyth/
https://bbs.archlinux.org/viewtopic.php?id=162768
- Error message:
2015-12-09 19:47:32.799 xcodebuild[9169:2013175] [MT] PluginLoading: Required plug-in compatibility UUID 7265231C-39B4-402C-89E1-16167C4CC990 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/OFPlugin.xcplugin' not present in DVTPlugInCompatibilityUUIDs
- Confirm that Xcode command line tools are installed:
xcode-select --install