Sunday, May 13, 2018

ATR statistics: TB3 - Global after T=15 in TDi–1

Article from the series "ATR statistics".

TB3 - Global after T=15 in TDi–1


For T=1 protocol the first TBi encodes Block Waiting Integer and Character Waiting Integer. The high nibble encodes BWI. The low nibble encodes CWI.

For T=15 protocol TBi the coding is defined in the document ETSI TS 102 221 V10.0.0 (2011-12) chapter "6.3.3 Global Interface byte"

TB3#%
156575.53 %
0x4528813.90 %
0x55381.83 %
0x47231.11 %
0x5D211.01 %
0x43180.87 %
0x40170.82 %
0x75140.68 %
0x65110.53 %
0x4290.43 %
0x5890.43 %
0x7D80.39 %
0x4D70.34 %
0x9F70.34 %
0xA050.24 %
0x3540.19 %
0x1530.14 %
0x3430.14 %
0x5730.14 %
0x3720.10 %
0x4420.10 %
0x4920.10 %
0x5220.10 %
0x6720.10 %
0x2410.05 %
0x4110.05 %
0x5310.05 %
0x5910.05 %
0x6310.05 %
0x6910.05 %
0x6D10.05 %
0x7310.05 %
0x9E10.05 %

T=1 protocol

The list above is not really informative since both BWI and CWI are coded in the same byte.

BWI


BWI#%
434973,01 %
57315,27 %
7224,60 %
6163,35 %
391,88 %
961,26 %
120,42 %
210,21 %


CWI


CWI#%
5 343 72 %
1336 8 %
7 30 6 %
3 18 4 %
0 15 3 %
2 10 2 %
8 9 2 %
4 6 1 %
155 1 %
9 4 1 %
1 1 0 %
141 0 %


T=15 protocol

I my list I have only 5 cards with a TB3 for T=15. They all have the value TB3 = 0xA0 for "UICC-CLF interface supported as defined in TS 102 613".

Sunday, April 15, 2018

New version of pcsc-tools: 1.5.3

I just released a new version of pcsc-tools, a suite of tools for PC/SC.

The main changes are for the pcsc_scan command.

Changes:
1.5.3 - 15 April 2018, Ludovic ROUSSEAU
  • 253 new ATRs
  • pcsc_scan (thanks to Pascal J. Bourguignon):
    • add -v argument (default) for verbose
    • add -q argument for quiet
    • add -r argument to display the reader list
    • allow to use Control-C to break execution

Thursday, April 12, 2018

New PyKCS11 1.5.2 available

I just released a new version of PyKCS11, a Python wrapper above the PKCS#11 API.
See "PyKCS11 introduction".

Changes:

1.5.2 - April 2018, Ludovic Rousseau
  • Fix initPin()
  • add tests for initPin(), setPin(), initToken()

Friday, March 30, 2018

New PyKCS11 1.5.1 available

I just released a new version of PyKCS11, a Python wrapper above the PKCS#11 API.
See "PyKCS11 introduction".

Changes:

1.5.1 - March 2018, Ludovic Rousseau
  • Fix "pip install"

Monday, March 26, 2018

New PyKCS11 1.5.0 available

I just released a new version of PyKCS11, a Python wrapper above the PKCS#11 API.
See "PyKCS11 introduction".

Changes:

1.5.0 - March 2018, Ludovic Rousseau
  • Python 3: use strings instead of binary buffers for CK_UTF8CHAR PKCS#11 types. The behaviour is now the same as with Python 2
  • allow non string PIN values (binary PIN) for login(), initToken(), initPin(), setPin()
  • fix support of RSA PKCS PSS mechanism
    The mechanism object now uses a parameter "mechanism" instead of hard coding the mechanism value to CKM_RSA_PKCS_PSS.
  • add support of Python 2.7 on Windows
  • add AppVeyor configuration (automatic Windows builds)
  • ckbytelist: remove possibility to give a initial size
  • samples/getinfo: do not list the mechanisms by default
  • samples/events:
    • do not list the mechanisms by default
    • add support of pinpad readers
  • some minor improvements

Windows

If you are a Windows user and you want binary packages then please work on the AppVeyor configuration:

Sunday, March 18, 2018

MUSCLE web sites moved to .apdu.fr

With the decommissioning of alioth.debian.org I had to move the web site to a new place.


Update your bookmarks.

I also upgraded the HTML pages to Boostrap 4.0.

Please report any issue you may find.

Thursday, March 1, 2018

Level 1.5 smart card support on macOS

In a previous article "Level 1 smart card support on Mac OS X" I described some simple commands to check if the smart card stack is working correctly on a macOS system.

By re-reading the presentation "Working with Smart Cards: macOS and Security" by Richard Purves I discovered a new command.

I already knew "system_profiler SPUSBDataType" to list the USB devices. I mentioned it in "Level 1 smart card support on Mac OS X" to check the USB reader is seen by the system. But system_profiler provides a better command for smart cards.

SPSmartCardsDataType

system_profiler has another very interesting command: system_profiler SPSmartCardsDataType

Clean macOS installation

Example 1:
$ system_profiler SPSmartCardsDataType
SmartCards:

    Readers:

      #01: Cherry KC 1000 SC (ATR:<3b7f9600 00803180 65b08441 3df612ff fe829000>)

    Reader Drivers:

      #01: org.debian.alioth.pcsclite.smartcardccid:1.4.27 (/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle)

    Tokend Drivers:

    SmartCard Drivers:

      #01: com.apple.CryptoTokenKit.pivtoken:1.0 (/System/Library/Frameworks/CryptoTokenKit.framework/PlugIns/pivtoken.appex)

    Available SmartCards (keychain):

    Available SmartCards (token):


You get a lot of useful information:
  1. list of smart card readers
  2. list of installed reader drivers
  3. list of tokend drivers
  4. list of smart card drivers
  5. available smart cards (keychain)
  6. available smart cards (token)

What you can see in my example:
  • I use a Cherry KC 1000 SC reader. A card is inserted in the reader and you see the ATR.
  • by default Apple provides a CCID driver
  • by default Apple provides a PIV CryptoTokenKit token to support Personal Identity Verification cards

Using SafeNet Authentication Client

Example 2:
$ system_profiler SPSmartCardsDataType 
SmartCards:

    Readers:

      #01: Gemalto PC Twin Reader (ATR:<3b7f9600 00803180 65b08503 00ef120f fe829000>)

    Reader Drivers:

      #01: org.debian.alioth.pcsclite.smartcardccid:1.4.27 (/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle)
      #02: com.SafeNet.eTokenIfdh:9.0.0.0 (/Library/Frameworks/eToken.framework/Versions/A/aks-ifdh.bundle)
      #03: com.gemalto.ifd-bccid:1.0 (/usr/local/libexec/SmartCardServices/drivers/ifd-bccid.bundle)
      #04: org.debian.alioth.pcsclite.smartcardccid:1.4.27 (/usr/local/libexec/SmartCardServices/drivers/ifd-ccid-SafeNet-eToken5300.bundle)
      #05: (null):(null) (/Library/Frameworks/eToken.framework/Versions/A/ikey-ifdh.bundle)

    Tokend Drivers:

      #01: com.Safenet.eTokend:9.0 (/Library/Frameworks/eToken.framework/Versions/A/eTokend.tokend)

    SmartCard Drivers:

      #01: com.apple.CryptoTokenKit.pivtoken:1.0 (/System/Library/Frameworks/CryptoTokenKit.framework/PlugIns/pivtoken.appex)
      #02: com.gemalto.Gemalto-Smart-Card-Token.PKCS11-Token:1.0 (/Library/Frameworks/eToken.framework/Versions/A/SafeNet Authentication Client.app/Contents/PlugIns/PKCS11 Token.appex)

    Available SmartCards (keychain):

        com.gemalto.Gemalto-Smart-Card-Token.PKCS11-Token:9A522A4489DFA3DE:

          #01: Kind: private RSA 2048-bit, Certificate: <1cc4a99c 25e2b4eb 381850d2 e8e7a9a8 8d258b31>, Usage: Sign Decrypt Unwrap 
          #02: Kind: private RSA 2048-bit, Certificate: <425fa8c1 27ad75a1 aec73183 2b053b41 38befe7f>, Usage: Sign Decrypt Unwrap 
          #03: Kind: private RSA 4096-bit, Certificate: <16b5321b d4c7f3e0 e68ef3bd d2b03aee b23918d1>, Usage: Sign Decrypt Unwrap 
          #04: Kind: private RSA 4096-bit, Certificate: <16b5321b d4c7f3e0 e68ef3bd d2b03aee b23918d1>, Usage: Sign Decrypt Unwrap 
          #05: Kind: private RSA 2048-bit, Certificate: <31fde547 b4ca58d4 7b6231c2 62730efd 8c7538a1>, Usage: Sign Derive Decrypt Unwrap 

    Available SmartCards (token):

        com.gemalto.Gemalto-Smart-Card-Token.PKCS11-Token:9A522A4489DFA3DE:

          #01: Kind: private RSA 2048-bit, Certificate: <1cc4a99c 25e2b4eb 381850d2 e8e7a9a8 8d258b31>, Usage: Sign Decrypt Unwrap 
          #02: Kind: private RSA 2048-bit, Certificate: <425fa8c1 27ad75a1 aec73183 2b053b41 38befe7f>, Usage: Sign Decrypt Unwrap 
          #03: Kind: private RSA 4096-bit, Certificate: <16b5321b d4c7f3e0 e68ef3bd d2b03aee b23918d1>, Usage: Sign Decrypt Unwrap 
          #04: Kind: private RSA 2048-bit, Certificate: <31fde547 b4ca58d4 7b6231c2 62730efd 8c7538a1>, Usage: Sign Derive Decrypt Unwrap 
          #05: Certificate <1a222d8f 7458d082 d413fbdb 40c85f56 f48def63>


In this second example I installed SAC (SafeNet Authentication Client) from Gemalto. You can see some differences:
  • more reader drivers are installed
  • a tokend driver is installed
  • another SmartCard (Crypto Token Kit or CTK) driver is installed 
  • the card inserted in the reader is available in the keychain

Conclusion

This command provides information of a higher level that pcsctest.
You know what drivers (for readers and for cards) are installed.

Wednesday, February 21, 2018

New version of libccid: 1.4.29

I just released a version 1.4.29 of libccid the Free Software CCID class smart card reader driver.

Changes:
1.4.29 - 21 February 2018, Ludovic Rousseau
  • Add support of
    • Access IS NFC Smart Module (With idProduct 0x0164)
    • Bit4id Digital-DNA Key
    • Bit4id Digital-DNA Key BT
    • Bluink Ltd. Bluink CCID
    • Chicony HP Skylab USB Smartcard Keyboard
    • HID Global OMNIKEY 5023 Smart Card Reader
    • HID Global OMNIKEY 5027CK CCID CONFIG IF
    • KeyXentic Inc. KX906 Smart Card Reader
    • Spyrus Inc Rosetta USB
    • Spyrus Inc WorkSafe Pro
    • Watchdata USB Key (idProduct: 0x0418)
  • The C3PO LTC31 v2 wrongly declares PIN support
  • Remove extra EGT patch because if has bad side effects

Monday, February 5, 2018

How to use SCardGetStatusChange()?

Some smart card applications need to detect when a card is inserted or a reader is added to the system. One way to solve the problem is to call SCardListReaders() and SCardGetStatusChange() in a loop.

SCardListReaders()

SCardListReaders() is a function to list the smart card reader(s) connected to the system.

The function API is:

LONG SCardListReaders(
  SCARDCONTEXT  hContext,
  LPCSTR   mszGroups,
  LPSTR   mszReaders,
  LPDWORD   pcchReaders
)

The result in mszReaders is a multi-string containing the list of readers.

SCardGetStatusChange()

SCardGetStatusChange() is a function to get the status of a list of readers and wait for events.

The function API is:

LONG SCardGetStatusChange(
  SCARDCONTEXT        hContext,
  DWORD               dwTimeout,
  SCARD_READERSTATE * rgReaderStates,
  DWORD               cReaders 
)

The function will return any change from the reader(s) listed in the parameter rgReaderStates. See the function documentation for more details.

dwTimeout is a timeout in milliseconds. The function will block until the timeout expires or a change is reported.

Real world (bad) application

Here is a PC/SC log trace (see "PCSC API spy, third try") of an real world (non Free Software) application:

SCardEstablishContext
 i dwScope: SCARD_SCOPE_SYSTEM (0x00000002)
 o hContext: 0x40DB4852
 => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000189]
SCardListReaders
 i hContext: 0x40DB4852
 i mszGroups: (null)
 o pcchReaders: 0x00000001
 o mszReaders: 
 => Cannot find a smart card reader. (SCARD_E_NO_READERS_AVAILABLE [0x8010002E])  [0.000090]
SCardReleaseContext
 i hContext: 0x40DB4852
 => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000032]
    SCardEstablishContext
     i dwScope: SCARD_SCOPE_SYSTEM (0x00000002)
     o hContext: 0x21793B9A
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000294]
    SCardListReaders
     i hContext: 0x21793B9A
     i mszGroups: (null)
     o pcchReaders: 0x00000001
     o mszReaders: 
     => Cannot find a smart card reader. (SCARD_E_NO_READERS_AVAILABLE [0x8010002E])  [0.000124]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000014]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000047]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000035]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000037]
    SCardListReaders
     i hContext: 0x21793B9A
     i mszGroups: (null)
     o pcchReaders: 0x00000001
     o mszReaders: 
     => Cannot find a smart card reader. (SCARD_E_NO_READERS_AVAILABLE [0x8010002E])  [0.000186]

[... lots of similar lines removed...]

    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000014]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000034]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000046]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000035]
    SCardListReaders
     i hContext: 0x21793B9A
     i mszGroups: (null)
     o pcchReaders: 0x00000001
     o mszReaders: 
     => Cannot find a smart card reader. (SCARD_E_NO_READERS_AVAILABLE [0x8010002E])  [0.000160]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000014]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000036]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000035]
    SCardGetStatusChange
     i hContext: 0x21793B9A
     i dwTimeout: 0x000000C8 (200)
     i cReaders: 0
     => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000037]

Thread 1/2
Results sorted by total execution time
total time: 10.209201 sec
0.000189 sec (  1 calls)  0.00% SCardEstablishContext
0.000090 sec (  1 calls)  0.00% SCardListReaders
0.000032 sec (  1 calls)  0.00% SCardReleaseContext

Thread 2/2
Results sorted by total execution time
total time: 10.209201 sec
0.002053 sec ( 13 calls)  0.02% SCardListReaders
0.001655 sec ( 52 calls)  0.02% SCardGetStatusChange
0.000294 sec (  1 calls)  0.00% SCardEstablishContext

The application was executed during 10 seconds. The application made 14 calls to SCardListReaders() and 52 calls to SCardGetStatusChange().

No reader was connected at the beginning and nothing happened during the 10 seconds. So all the PC/SC calls were made to detect... nothing.

Real world (good) application

For this second example I will use my pcsc_scan application (from pcsc-tools):

SCardEstablishContext
 i dwScope: SCARD_SCOPE_SYSTEM (0x00000002)
 o hContext: 0x4D0F7F8C
 => Command successful. (SCARD_S_SUCCESS [0x00000000])  [0.000321]
SCardGetStatusChange
 i hContext: 0x4D0F7F8C
 i dwTimeout: 0x00000000 (0)
 i cReaders: 1
 i szReader: \\?PnP?\Notification
 i  dwCurrentState:  (0x00000000)
 i  dwEventState: SCARD_STATE_UNKNOWN, SCARD_STATE_UNAVAILABLE, SCARD_STATE_EXCLUSIVE, SCARD_STATE_INUSE, SCARD_STATE_MUTE, SCARD_STATE_PRESENT, SCARD_STATE_ATRMATCH (0x55FD66A4FBEC)
 i  Atr length: 0x55FD66A4FBF2 (94546837175282)
 i  Atr: NULL
 o szReader: \\?PnP?\Notification
 o  dwCurrentState:  (0x00000000)
 o  dwEventState:  (0x00000000)
 o  Atr length: 0x55FD66A4FBF2 (94546837175282)
 o  Atr: NULL
 => Command timeout. (SCARD_E_TIMEOUT [0x8010000A])  [0.000379]
SCardListReaders
 i hContext: 0x4D0F7F8C
 i mszGroups: (null)
 o pcchReaders: 0x00000001
 o mszReaders: NULL
 => Cannot find a smart card reader. (SCARD_E_NO_READERS_AVAILABLE [0x8010002E])  [0.000129]
SCardListReaders
 i hContext: 0x4D0F7F8C
 i mszGroups: (null)
 o pcchReaders: 0x00000001
 o mszReaders: 
 => Cannot find a smart card reader. (SCARD_E_NO_READERS_AVAILABLE [0x8010002E])  [0.000098]
SCardGetStatusChange
 i hContext: 0x4D0F7F8C
 i dwTimeout: 0xFFFFFFFF (4294967295)
 i cReaders: 1
 i szReader: \\?PnP?\Notification
 i  dwCurrentState:  (0x00000000)
 i  dwEventState:  (0x00000000)
 i  Atr length: 0x55FD66A4FBF2 (94546837175282)
 i  Atr: NULL

Thread 1/1
Results sorted by total execution time
total time: -1.000000 sec
0.000379 sec (  1 calls) -0.04% SCardGetStatusChange
0.000321 sec (  1 calls) -0.03% SCardEstablishContext
0.000227 sec (  2 calls) -0.02% SCardListReaders

The execution conditions are the same as in the previous case: no reader connected at the beginning and no change during 10 seconds.

pcsc_scan made 2 initial calls to SCardListReaders() and 2 calls to SCardGetStatusChange(). The second SCardGetStatusChange() call was interrupted after 10 seconds of execution (using Control-C). That is why the returned values of SCardGetStatusChange() are not logged.

\\?PnP?\Notification reader name

The difference between the 2 applications is the use of the special reader name \\?PnP?\Notification by pcsc_scan.

SCardGetStatusChange() is perfect to detect card events in the selected readers. But how to know when a new reader has been connected? When PC/SC was designed (PC/SC specification 1.0 released in 1996) most smart card readers were (mostly) serial readers. USB was not yet deployed (USB 1.0 specification were also released in 1996). (Serial) reader hotplug was not a use case at that time. So it is not surprising this use case is not handled by PC/SC.

To solve this problem a special reader name is used. This is (still) NOT documented in the PC/SC workgroup specification, even in the version 2 (PC/SC v2 part 5 page 18), and I guess it is a Microsoft invention.

The special reader name will tell SCardGetStatusChange() to generate associated events when a reader is added or removed. So no need to continuously call SCardListReaders() as it is the case with the first application.

macOS case

Windows WinSCard does support \\?PnP?\Notification since a long time.

pcsc-lite (WinSCard for Unix) does support \\?PnP?\Notification since version 1.6.0 released in May 2010.

Apple has no support of \\?PnP?\Notification reader name. I opened a bug for that in 2015 (see "OS X El Capitan missing feature: SCardGetStatusChange() and "\\?PnP?\Notification"") but nothing changed since then.

So on macOS you have to regularly call SCardListReaders() to detect a reader connection or disconnection.

CPU consumption

To reduce the CPU and battery usage an efficient PC/SC application should always use \\?PnP?\Notification when possible (so on Windows and Unix except macOS).

pcsc-tools 1.5.0

Since its version 1.5.0 pcsc_scan provides a graphical animation when nothing happens. To update the animation every second a timeout of 1 second is used in SCardGetStatusChange(). So if you redo the experiment with a recent pcsc_scan you will see one SCardGetStatusChange() call every second.

Since a new reader connection is detected using SCardGetStatusChange() no need to also call SCardListReaders() every second.

SCardCancel()

To force SCardGetStatusChange() to return before the end of the timeout you must use SCardCancel() from another thread of the application.

You can use a very long timeout (or even the special value INFINITE) and use SCardCancel() when needed.

Conclusion

PC/SC provides functions to be notified of events. I invested a lot of time and work to make pcsc-lite efficient regarding events management. Every pcsc-lite internal polling has been removed.

Please use \\?PnP?\Notification in your applications. You may not save the world but you will save a few CPU cycles.

Monday, January 1, 2018

MUSCLE mailing list statistics for 2017

As I did in 2009, 2010, 2011, 2012, 2013, 2014, 2015 ans 2016 I propose some statistics of the MUSCLE mailing list usage.

Important: list server change

As indicated in "[Pcsclite-muscle] How to replace/move the MUSCLE mailing list?" the list has moved to a new home.

The list is now hosted at http://lists.infradead.org/mailman/listinfo/pcsclite-muscle.

The old list archives have also been migrated. No email should have been lost.

Text only, no html email

One important change is that the list server only accept text emails, html emails are rejected. Sorry for that. Please configure your email client to send text only (I don't know how to do that using Gmail).

Evolution

YearTotal number of messages Progression
2009603
2010718+19 %
2011999+39 %
2012207-79 %
2013198-4 %
2014194-2 %
2014194-2 %
2015120-38 %
2016125+4 %
2017128+2 %

Comments

I am still the top poster on the MUSCLE mailing list with 42% of the messages.



Statistics from 7.1.2017 to 29.12.2017
for pcsclite-muscle@lists.infradead.org



People who have written most messages:

  Author  Msg  Percent 
1ludovic.rousseau@gmail.com54 42.19 %
2wully@bluewin.ch7 5.47 %
3ludovic.rousseau@free.fr7 5.47 %
4hemanth.sahara@gmail.com6 4.69 %
5wpichler@callino.at4 3.12 %
6olivier.revillon@akka.eu4 3.12 %
7maximilian.stein@secunet.com3 2.34 %
8fdeybach@gmail.com3 2.34 %
9pcsclite@madingley.org3 2.34 %
10martin@martinpaljak.net3 2.34 %
11godfreyhkchung@gmail.com3 2.34 %
12nmav@redhat.com2 1.56 %
13euidzero@gmail.com2 1.56 %
14fmarchal@perso.be2 1.56 %
15frankmorgner@gmail.com2 1.56 %
16mauro@faresoftware.it2 1.56 %
17mvogt1@gmail.com2 1.56 %
18ivo.raisr@oracle.com1 0.78 %
19emaxx@google.com1 0.78 %
20uv.wildner.ext@openlimit.com1 0.78 %
21git@madingley.org1 0.78 %
22robinlambertz+dev@gmail.com1 0.78 %
23nonomos@mail.com1 0.78 %
24carsten.blueggel@freenet.de1 0.78 %
25mstjohns@comcast.net1 0.78 %
26szempy@gmail.com1 0.78 %
27gokcenur.canli@udea.com.tr1 0.78 %
28y.bulbul@hotmail.com1 0.78 %
29fgrieu@gmail.com1 0.78 %
30wrosenauer@gmail.com1 0.78 %
 other6 4.69 %

Best authors, by total size of their messages (w/o quoting):

  Author  KBytes 
1ludovic.rousseau@gmail.com 686.4
2nonomos@mail.com 196.6
3wully@bluewin.ch 92.3
4git@madingley.org 92.1
5hemanth.sahara@gmail.com 68.4
6ludovic.rousseau@free.fr 61.5
7mauro@faresoftware.it 56.8
8nmav@redhat.com 52.6
9fmarchal@perso.be 34.9
10godfreyhkchung@gmail.com 34.5
11frankmorgner@gmail.com 32.6
12martin@martinpaljak.net 26.4
13pcsclite@madingley.org 26.1
14Rajan.Gurjar@ll.mit.edu 24.8
15y.bulbul@hotmail.com 22.4
16mvogt1@gmail.com 20.3
17maximilian.stein@secunet.com 19.0
18wpichler@callino.at 18.0
19mstjohns@comcast.net 17.1
20fdeybach@gmail.com 16.7
21mickamusset@gmail.com 16.5
22euidzero@gmail.com 15.9
23wrosenauer@gmail.com 15.6
2400cpxxx@gmail.com 13.8
25carsten.blueggel@freenet.de 13.7
26"Denniston, Todd A CIV NAVSURFWARCENDIV Crane, JXVS"
13.0
27dwmw2@infradead.org 9.9
28olivier.revillon@akka.eu 9.8
29fgrieu@gmail.com 8.5
30emaxx@google.com 7.4

Best authors, by average size of their message (w/o quoting):

  Author  bytes 
1nonomos@mail.com201306
2git@madingley.org94335
3mauro@faresoftware.it29074
4nmav@redhat.com26924
5Rajan.Gurjar@ll.mit.edu25445
6y.bulbul@hotmail.com22970
7fmarchal@perso.be17881
8mstjohns@comcast.net17501
9mickamusset@gmail.com16876
10frankmorgner@gmail.com16685
11wrosenauer@gmail.com15995
1200cpxxx@gmail.com14142
13carsten.blueggel@freenet.de14001
14wully@bluewin.ch13495
15"Denniston, Todd A CIV NAVSURFWARCENDIV Crane, JXVS"
13337
16ludovic.rousseau@gmail.com13015
17godfreyhkchung@gmail.com11792
18hemanth.sahara@gmail.com11670
19mvogt1@gmail.com10396
20dwmw2@infradead.org10099
21martin@martinpaljak.net9024
22ludovic.rousseau@free.fr8999
23pcsclite@madingley.org8920
24fgrieu@gmail.com8725
25euidzero@gmail.com8166
26emaxx@google.com7601
27maximilian.stein@secunet.com6480
28robinlambertz+dev@gmail.com5834
29fdeybach@gmail.com5694
30ivo.raisr@oracle.com5613

Table showing the most successful subjects:

  Subject  Msg  Percent 
1[Pcsclite-muscle] Gemalto (was Gemplus) GemPC Key SmartCard
12 9.38 %
2[Pcsclite-muscle] Serial non-usb readers - Help required
8 6.25 %
3[Pcsclite-muscle] Cyberjack e-com on openSuse 42.2 fails
7 5.47 %
4[Pcsclite-muscle] How to replace/move the MUSCLE mailing list?
6 4.69 %
5[Pcsclite-muscle] max length of randomLen for C_GenerateRandom
5 3.91 %
6[Pcsclite-muscle] Jinmuyu MR800 card reader problem
5 3.91 %
7[Pcsclite-muscle] pcsc_stringify_error thread safety
4 3.12 %
8[Pcsclite-muscle] Race condition with SCardGetStatusChange() when
4 3.12 %
9[Pcsclite-muscle] Cherry kc sc 1000
4 3.12 %
10[Pcsclite-muscle] Real time issue for register / unregister to
4 3.12 %
11[Pcsclite-muscle] How to Identify USB devices on linux/ubuntu/debian
3 2.34 %
12[Pcsclite-muscle] omnikey 3121 and long APDUs
3 2.34 %
13[Pcsclite-muscle] SCardConnect() returns unresponsive card
3 2.34 %
14[Pcsclite-muscle] RFC - one old and one new bluetooth device
3 2.34 %
15[Pcsclite-muscle] CCID_Receive Card absent or mute
3 2.34 %
16[Pcsclite-muscle] Yubikey init failed
2 1.56 %
17[Pcsclite-muscle] libccid IFDHControl() / CmdEscape() might
2 1.56 %
18[Pcsclite-muscle] ACS ACR122U A9 issues
2 1.56 %
19[Pcsclite-muscle] Building CCID from Github encounters error
2 1.56 %
20[Pcsclite-muscle] More smart cards compile problem
2 1.56 %
21[Pcsclite-muscle] PCSC-LITE more than one Card Reader.
2 1.56 %
22[Pcsclite-muscle] EZ100PU/PR Linux 64 bit
2 1.56 %
23[Pcsclite-muscle] How to find out which process is accessing the card?
2 1.56 %
24[Pcsclite-muscle] Fujitsu D323 Reader properties
2 1.56 %
25[Pcsclite-muscle] New pcsc-lite 1.8.23
2 1.56 %
26[Pcsclite-muscle] problem with scanning OMNIKEY card
2 1.56 %
27New version of libccid: 1.4.26
1 0.78 %
28[Pcsclite-muscle] generic drivers?
1 0.78 %
29[Pcsclite-muscle] Data races related to SCardCancel
1 0.78 %
30[Pcsclite-muscle] How to Identify USB devices on
1 0.78 %
 other2821.88 %

Most used email clients:

  Mailer  Msg  Percent 
1(unknown)83 64.84 %
2Mozilla/5.x27 21.09 %
3Zimbra 8.6.0_GA_1153 (ZimbraWebClient - FF50 (Linux)/8.6.0_GA_1153)
4 3.12 %
4Mutt4 3.12 %
5Apple Mail (2.3273)
3 2.34 %
6KMail2 1.56 %
7K-9 Mail for Android
1 0.78 %
8Apple Mail (2.3259)
1 0.78 %
9Evolution 3.18.5.2-0ubuntu3.2
1 0.78 %
10Zimbra 7.2.0-GA2598 (ZimbraWebClient - FF3.0 (Mac)/7.2.0-GA2598)
1 0.78 %
 other1 0.78 %

Table of maximal quoting:

  Author  Percent 
1szempy@gmail.com 30.71 %
2fdeybach@gmail.com 22.80 %
3olivier.revillon@akka.eu 21.25 %
4wpichler@callino.at 20.87 %
5gokcenur.canli@udea.com.tr 20.24 %
600cpxxx@gmail.com 16.28 %
7euidzero@gmail.com 16.13 %
8robinlambertz+dev@gmail.com 15.63 %
9mauro@faresoftware.it 12.66 %
10pcsclite@madingley.org 11.36 %
11martin@martinpaljak.net 11.04 %
12frankmorgner@gmail.com 10.86 %
13maximilian.stein@secunet.com 10.19 %
14carsten.blueggel@freenet.de 10.12 %
15fmarchal@perso.be 9.44 %
16fgrieu@gmail.com 8.31 %
17ludovic.rousseau@gmail.com 8.21 %
18Rajan.Gurjar@ll.mit.edu 7.66 %
19uv.wildner.ext@openlimit.com 7.41 %
20ivo.raisr@oracle.com 7.06 %
21y.bulbul@hotmail.com 5.94 %
22ludovic.rousseau@free.fr 5.68 %
23"Denniston, Todd A CIV NAVSURFWARCENDIV Crane, JXVS"
5.51 %
24mvogt1@gmail.com 3.50 %
25wully@bluewin.ch 3.44 %
26mstjohns@comcast.net 3.44 %
27hemanth.sahara@gmail.com 2.95 %
28dwmw2@infradead.org 2.06 %
29godfreyhkchung@gmail.com 0.80 %
30nonomos@mail.com 0.24 %
 average 6.75 %

Graph showing number of messages written during hours of day:

msgs
1
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
3
|
12
|
11
|
12
|
8
|
9
|
13
|
10
|
13
|
6
|
8
|
3
|
5
|
6
|
3
|
2
|
hour
01234567891011121314151617181920212223

Warning: 1 message(s) not counted.


Graph showing number of messages written during days of month:

msgs
0
|
1
|
1
|
4
|
6
|
4
|
3
|
2
|
2
|
1
|
5
|
2
|
10
|
4
|
5
|
4
|
7
|
12
|
5
|
6
|
6
|
5
|
3
|
5
|
0
|
2
|
4
|
7
|
5
|
5
|
0
|
day
12345678910111213141516171819202122232425262728293031

Warning: 2 message(s) not counted.


Graph showing number of messages written during days of week:

msgs
19
|
18
|
17
|
30
|
20
|
7
|
16
|

MonTueWedThuFriSatSun

Warning: 1 message(s) not counted.


Maximal quoting:

Author : ludovic.rousseau@gmail.com
Subject : [Pcsclite-muscle] pcsc_stringify_error thread safety

Date : Wed, 18 Jan 2017 14:41:40 +0100

Quote ratio: 37.61% / 8049 bytes

Longest message:

Author : nonomos@mail.com
Subject : [Pcsclite-muscle] configure gives config.sub error
Date : Tue, 11 Apr 2017 10:49:09 +0200
Size : 201795 bytes

Most successful subject:

Subject : [Pcsclite-muscle] Gemalto (was Gemplus) GemPC Key SmartCard
No. of msgs: 12
Total size : 163507 bytes

Final summary:

Total number of messages: 128
Total number of different authors: 35
Total number of different subjects: 57
Total size of messages (w/o headers): 1915107 bytes
Average size of a message: 14961 bytes


Input file last updated: Mon Jan 1 17:34:39 2018
Generated by MailListStat v1.3