New logging scheme
Apple made some changes in the way system, and application, logs are managed.Now to get the log messages from a process use the command:
$ log stream
You will get a lot of messages. It is possible to restrict the messages from a particular process using predicates.
Logs from com.apple.ifdreader
To get only the log messages from the process$ log stream --predicate 'process == "com.apple.ifdreader"'
For example I get something like:
$ log stream --predicate 'process == "com.apple.ifdreader"' Filtering the log data using "process == "com.apple.ifdreader"" Timestamp Thread Type Activity PID 2017-11-06 16:11:21.092392+0100 0x751b1 Error 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] <private>: failed to transmit APDU 2017-11-06 16:11:22.173066+0100 0x74b9d Error 0x800000000000af43 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] <private>: failed to transmit APDU 2017-11-06 16:11:23.253418+0100 0x734eb Error 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] <private>: failed to transmit APDU
APDU logging
It is still possible to log the APDU sent to the card and the response received. Use the same command as before:$ sudo defaults write /Library/Preferences/com.apple.security.smartcard Logging -bool yes
You need to connect the reader after executing the above command to get the results.
For example I now get something like:
$ log stream --predicate 'process == "com.apple.ifdreader"' Filtering the log data using "process == "com.apple.ifdreader"" Timestamp Thread Type Activity PID 2017-11-06 16:13:58.514542+0100 0x7868a Activity 0x8000000000000511 260 com.apple.ifdreader: (CoreFoundation) Loading Preferences From System CFPrefsD 2017-11-06 16:13:58.514929+0100 0x7868a Activity 0x8000000000000512 260 com.apple.ifdreader: (CoreFoundation) Sending Updated Preferences to System CFPrefsD 2017-11-06 16:13:58.516120+0100 0x7868a Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] logging slot Gemalto PC Twin Reader 2017-11-06 16:14:06.444894+0100 0x734eb Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] card in 2017-11-06 16:14:06.508793+0100 0x734eb Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] ATR: 3b 7f 96 00 00 80 31 80 65 b0 85 03 00 ef 12 0f fe 82 90 00 2017-11-06 16:14:06.541594+0100 0x76ff0 Default 0x800000000000afe6 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] T=0 2017-11-06 16:14:06.542311+0100 0x76752 Default 0x800000000000afe6 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU -> 00 a4 04 00 0b a0 00 00 03 08 00 00 10 00 01 00 2017-11-06 16:14:06.560122+0100 0x76ff0 Default 0x800000000000afe6 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU <- 61 13 2017-11-06 16:14:06.568852+0100 0x76752 Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU -> 00 a6 00 00 15 2017-11-06 16:14:07.649227+0100 0x734eb Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU FAILED 2017-11-06 16:14:07.649267+0100 0x734eb Error 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] <private>: failed to transmit APDU 2017-11-06 16:14:07.650895+0100 0x76ff0 Default 0x800000000000b133 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU -> 00 a4 04 00 0b a0 00 00 03 08 00 00 10 00 01 00 2017-11-06 16:14:08.729874+0100 0x734eb Default 0x800000000000b133 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU FAILED 2017-11-06 16:14:08.729915+0100 0x734eb Error 0x800000000000b133 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] <private>: failed to transmit APDU 2017-11-06 16:14:08.731128+0100 0x74b9d Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU -> 00 a6 00 00 15 2017-11-06 16:14:09.809998+0100 0x734eb Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU FAILED 2017-11-06 16:14:09.810069+0100 0x734eb Error 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] <private>: failed to transmit APDU 2017-11-06 16:14:11.670245+0100 0x7868a Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] unpower
Private fields
Some fields are shown as<private>
in the log. To see the real value you must use:$ sudo log config --mode "private_data:on"
For example I now get something like:
$ log stream --predicate 'process == "com.apple.ifdreader"' Filtering the log data using "process == "com.apple.ifdreader"" Timestamp Thread Type Activity PID 2017-11-06 16:28:06.270662+0100 0x8689a Activity 0x8000000000000514 260 com.apple.ifdreader: (CoreFoundation) Loading Preferences From System CFPrefsD 2017-11-06 16:28:06.271009+0100 0x8689a Activity 0x8000000000000515 260 com.apple.ifdreader: (CoreFoundation) Sending Updated Preferences to System CFPrefsD 2017-11-06 16:28:06.280244+0100 0x8689a Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] logging slot Gemalto PC Twin Reader 2017-11-06 16:28:08.106965+0100 0x85613 Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] card in 2017-11-06 16:28:08.171131+0100 0x85613 Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] ATR: 3b 7f 96 00 00 80 31 80 65 b0 85 03 00 ef 12 0f fe 82 90 00 2017-11-06 16:28:08.197556+0100 0x86c91 Default 0x800000000000afef 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] T=0 2017-11-06 16:28:08.198083+0100 0x86c91 Default 0x800000000000afef 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU -> 00 a4 04 00 0b a0 00 00 03 08 00 00 10 00 01 00 2017-11-06 16:28:08.214878+0100 0x86c92 Default 0x800000000000afef 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU <- 61 13 2017-11-06 16:28:08.220709+0100 0x86c92 Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU -> 00 a6 00 00 15 2017-11-06 16:28:09.301451+0100 0x7c9d3 Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU FAILED 2017-11-06 16:28:09.301494+0100 0x7c9d3 Error 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: failed to transmit APDU 2017-11-06 16:28:09.302846+0100 0x86c91 Default 0x800000000000b693 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU -> 00 a4 04 00 0b a0 00 00 03 08 00 00 10 00 01 00 2017-11-06 16:28:10.381888+0100 0x82669 Default 0x800000000000b693 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU FAILED 2017-11-06 16:28:10.381933+0100 0x82669 Error 0x800000000000b693 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: failed to transmit APDU 2017-11-06 16:28:10.383481+0100 0x7c9d3 Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU -> 00 a6 00 00 15 2017-11-06 16:28:11.462582+0100 0x82669 Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] APDU FAILED 2017-11-06 16:28:11.462616+0100 0x82669 Error 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: failed to transmit APDU 2017-11-06 16:28:13.333227+0100 0x85613 Default 0x0 260 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] unpower
More debug
You can get even more details by adding the--debug
argument.For example, just by connecting the smart card reader, I now get something like:
$ log stream --predicate 'process == "com.apple.ifdreader"' --debug Filtering the log data using "process == "com.apple.ifdreader"" Timestamp Thread Type Activity PID 2017-11-06 16:39:11.456379+0100 0x91fc6 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] deviceRemovalHandler invoked (entryId=4294970878) 2017-11-06 16:39:11.456411+0100 0x91fc6 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] installed device removal notification 2017-11-06 16:39:11.456533+0100 0x91fc6 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] new device arrival: 08e6:3437 14400000 (entryId=4294970878) 2017-11-06 16:39:11.470462+0100 0x91fc6 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] bundle loaded: /usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle 2017-11-06 16:39:11.470519+0100 0x91fc6 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] found bundle for device, resolved entryId=4294970878 to deviceName='Gemalto PC Twin Reader' 2017-11-06 16:39:11.470708+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] -> IFDHCreateChannelByName(00000000, 'Gemalto PC Twin Reader') 2017-11-06 16:39:11.778142+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] <- IFDHCreateChannelByName() = 0 2017-11-06 16:39:11.778188+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] -> IFDHGetCapabilities(00000000, TAG_IFD_THREAD_SAFE) 2017-11-06 16:39:11.778203+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] <- IFDHGetCapabilities() = 0 (0) 2017-11-06 16:39:11.778297+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] -> IFDHGetCapabilities(00000000, SCARD_ATTR_MAXINPUT) 2017-11-06 16:39:11.778323+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] <- IFDHGetCapabilities() = 0 (261) 2017-11-06 16:39:11.778495+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] -> IFDHControl_v3(00000000, code=1107299656, in=(null)) 2017-11-06 16:39:11.778570+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] <- IFDHControl(out=<12044233 0012>) = 0 2017-11-06 16:39:11.778590+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] -> IFDHGetCapabilities(00000000, TAG_IFD_SLOTS_NUMBER) 2017-11-06 16:39:11.778605+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: [com.apple.CryptoTokenKit.smartcard] <- IFDHGetCapabilities() = 0, (1) 2017-11-06 16:39:11.778657+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] setupWithName:'Gemalto PC Twin Reader' 2017-11-06 16:39:11.779628+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] port for pm notifications registered 2017-11-06 16:39:11.781182+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] initWithName:'Gemalto PC Twin Reader' successfully registered 2017-11-06 16:39:11.781648+0100 0x92267 Activity 0x800000000000bb00 11944 com.apple.ifdreader: (CoreFoundation) Loading Preferences From System CFPrefsD 2017-11-06 16:39:11.781704+0100 0x92284 Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: new client connection established 2017-11-06 16:39:11.781847+0100 0x9228d Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: slot was set up 2017-11-06 16:39:11.781997+0100 0x92267 Debug 0x800000000000bb00 11944 com.apple.ifdreader: (CoreFoundation) [com.apple.defaults.User Defaults] CFPrefsPlistSource<0x7fd450c0d910> (Domain: com.apple.security.smartcard, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null)) loaded: a new base plist and no additional changes from the base plist 2017-11-06 16:39:11.782060+0100 0x92267 Activity 0x800000000000bb01 11944 com.apple.ifdreader: (CoreFoundation) Sending Updated Preferences to System CFPrefsD 2017-11-06 16:39:11.782193+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: (CoreFoundation) [com.apple.defaults.User Defaults] CFPrefsPlistSource<0x7fd450c0d910> (Domain: com.apple.security.smartcard, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null)) is waiting for writes to complete 2017-11-06 16:39:11.782204+0100 0x9228d Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: new client connection established 2017-11-06 16:39:11.782291+0100 0x9228d Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: slot was set up 2017-11-06 16:39:11.783202+0100 0x91fce Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: new client connection established 2017-11-06 16:39:11.783284+0100 0x9228d Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: slot was set up 2017-11-06 16:39:11.790768+0100 0x92267 Default 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.APDULog] logging slot Gemalto PC Twin Reader 2017-11-06 16:39:12.306587+0100 0x9228d Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: new client connection established 2017-11-06 16:39:12.306724+0100 0x92284 Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: slot was set up 2017-11-06 16:39:12.307550+0100 0x91fce Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: new client connection established 2017-11-06 16:39:12.307663+0100 0x92267 Debug 0x0 11944 com.apple.ifdreader: (CryptoTokenKit) [com.apple.CryptoTokenKit.token] Gemalto PC Twin Reader: slot was set up [...]
Resize your terminal
The logs lines are very long. I suggest you to resize your Terminal window to be very large, at least as large as the log lines.Console application
You can also use the Console application (I have not yet found a way to have the equivalent of
--debug
with the Console application.Conclusion
Apple provides nice tools to get useful debug messages. Since some applications can be very verbose logs messages are not all stored in a file likelog stream
command.The
log
command has many other options that you can explore.