SpringField Colorado makes it easy to recognize the SpringCard smart reader you are using!

You know the scene in the movie where the support guys are desperately trying to help a customer configuring a very specific product, only to discover minutes after that the customer has a totally different product in hands? Since SpringCard offers a very wide range of products, and since most products look the same (well, there’s nothing that resembles more closely an OEM NFC/RFID device than another NFC/RFID device), we experience this frequently. Our customer’s technicians sometimes face the same situation, when they come to the field and don’t know whether a colleague has already upgraded a firmware, uploaded a new configuration, or not.

To ease the job of all support teams and maintenance technicians, we’ve introduced an exciting new feature in all the “smart readers” firmware (aka all /RDR and RFID Scanner products). Starting with FW version 1.69, the reader is able to communicate with an Android application (code-name “SpringField Colorado“) and sends its identifier, version, serial number… This application runs on Android 4.4 and later, provided that the smartphone supports NFC. It takes benefit of the NFC host-card emulation (HCE) mode.

en_badge_web_generic

SpringField Colorado, screenshot 1

This screenshot shows the data of a Prox’N’Roll. It runs the H663/RDR firmware, i.e. it is a Prox’N’Roll Rfid Scanner HSP (and not a PC/SC coupler which doesn’t send anything to the application).

SpringField Colorado, screenshot 2

This screenshot shows the data returned by a FunkyGate-IP NFC, i.e. a wall-mount reader running the E663/RDR firmware. The reader runs in the new HTTP client mode. Note that both the IP address (which has been assigned by DHCP) and the Info/Location field entered at configuration time are displayed.

The communication is protected by a mutual-authentication scheme. This means that only the genuine SpringField Colorado application is able to get some data from SpringCard’s smart reader. Also, if you want to keep all reader’s data a secret, you must disable SpringField Colorado in the product’s configuration. To do so, edit your configuration using a recent version of MultiConf; open the node “Security and Services” and select “Disabled” under entry “SpringField Colorado Service”.

en_badge_web_generic

Don’t forget to activate NFC on your smartphone to use this application!

HTTP client feature added to FunkyGate-IP NFC

SpringCard FunkyGate-IP NFC is a network-attached wall smart reader, targetting physical access control and adopted by modern office buildings, airports, sensitive areas. The FunkyGate-IP+POE NFC is the powered-by-the-network version.

In a classical access control architecture, the FunkyGate-IP NFC reader acts as a TCP/IP server, and the door controller or the access control central computer connects to every reader as a client. The communication uses a custom client/server protocol, designed for reliability, security and speed.

FunkyGate-IP NFC in a classical corporate access control architecture

The fact that the reader runs as a TCP server induces a constraint on the network configuration : the reader’s IP address must be a routable address. The controller (or central computer) must be able to reach each reader directly, without crossing a NAT or a tunnel that rewrites the addresses. This is perfectly OK in a corporate LAN or WAN, and works even very well through a VPN, but remains unsuitable for some situations where the readers and the controller are ‘separated’ by the public Internet.

To address the emerging business cases of ‘cloud-centric’ identification or access control solutions, SpringCard has added in FunkyGate-IP firmware the HttpClient operating mode.

FunkyGate-IP NFC cloud architecture (HTTP client)

 

This innovative feature makes it possible for the reader to reach a remote server, whatever is the network architecture between them, provided that the gateways are able to forward HTTP queries and responses. This also allows to interface the reader with any web-based application by the mean of a single API entry point using the HTTP POST verb. Security remains at a strong level; spoofing and replay attacks are thwarted by a simple yet efficient HMAC signature added to every message.

The HttpClient mode is available in SpringCard FunkyGate-IP starting with firmware version 1.70. If you have an early version, please upgrade your reader to the latest E663/RDR firmware according to this procedure.

To give a quick try to the HttpClient mode with our public server in the cloud, proceed as follow :

  1. configure your reader as a DHCP client, and plug it on a network where the DHCP server provides within the lease parameters both the address of the gateway going to the Internet, and the address of a valid DNS server
  2. configure your reader to operate in HttpClient mode, with the following options :

Name of remote server = rdr.springcard.com
Path to API entry point = iwm2/iwm2_post.php
Security key = 01020304050607080910111213141516

You’ll be using MultiConf software to do so.

 

MultiConf snapshot 1

MultiConf new project wizard: select RFID Scanners and Readers > FunkyGate NFC family > FunkyGate-IP NFC (TCP/IP over Ethernet)

 

MultiConf snapshot 2

Select Global configuration > Network configuration > HttpClient and click “Define configuration below” to enter the new settings

The following MultiConf project files provides the configuration you’ll need to configure the FunkyGate-IP NFC as an HttpClient to our sample web server application:

All other settings are preserved.

Hint: setting an explicit value into the Info/Location field could be useful to recognize your reader!

The configuration could be applied to the reader either by the mean of a Master Card (a Desfire card encoded by MultiConf using a Prox’N’Roll PC/SC coupler) or through the network. Use Network Devices Discovery Utilities (NDDU) to know what is the current IP address of your reader(s).

Once your reader is correctly configured -and connected to a network that is actually connected to the Internet through its default gateway-, open a web browser and go to http://rdr.springcard.com/iwm2/ and voila ! Everytime a card or tag is presented to the reader, its ID appears on the page. After 60 seconds of inactivity, the reader sends a keep-alive frame.

Snapshot of server page

Sample server application for FunkyGate-IP NFC configured as HTTP client

The sample application shows all the interesting data that come from the reader (the HMAC signature is checked but not displayed):

  • The Reader’s MAC address, which is also its unique serial number, assigned in factory by SpringCard,
  • The reason of the incoming message (Action field) which could be either startup (the reader has resetted), read (together with a Badge ID), tamper (everytime the state of a tamper has changed) or a periodic keepalive,
  • The Information field comes from the Info/Location that could be freely defined to recognize your reader (apart from looking for its MAC address),
  • The Tampers’ state field changes when the reader’s shell is open or the wall-mount magnet is lost,
  • The Sequence number and Counter fields are needed to outflank replay attacks: the sequence is incremented everytime the reader reboots, and the counter after every message. The host application may then discard easily any outdated message that may be injected by an attacker. Also it could tell whether some messages have been missed (and blame the network!).

The Timestamp field doesn’t come from the reader but is added by the server itself. Also the Reader’s IP is not the actual reader’s local IP address, but the public address of the NAT gateway between the reader and the public Internet.

If you want to develop your own HTTP server to connect the reader to your applications, refer to the FunkyGate-IP NFC Integration and Configuration Guide (chapter HttpClient).

Any server-side langage such as Node.JS, Ruby, Java (JSP), C# or VB.NET (ASP). At SpringCard’s we’re more familiar with PHP, so our demo web application is written in PHP. We’re using REDIS, a lightweight, memory only, NoSQL database, to forward the frames from the receiver script to the display script. You may download all the PHP files here: [funkygate-ip-http-client-demo-web-application-php] (.zip archive – works on Apache + PHP7, REDIS required, see readme.txt for details).

Note that our demo server sends a “beep” command to the reader following every “read” action. This means that once the reader is correctly configured and actually able to communicate to the server through the Internet, everytime you present a tag on the reader, you’ll hear two beeps (unless the beeps are disabled by a specific configuration):

  • 1st beep is generated by reader’s internal logic to tell the user that the card has been read,
  • 2nd beep comes from a command buzz=xxx provided in the server’s response.

The HttpClient also supports LEDs commands (see documentation for details).

e663-rdr-http-client-icon

SCardSniffer spies the exchanges between a PC/SC application and the card readers

SCardSniffer is a new tool used to spy the exchanges between Windows applications and the smart cards or NFC tags that are accessed through a PC/SC reader (or coupler).

SCardSniffer

SCardSniffer main window

On a Windows computer, all card-aware applications communicate with smart cards or NFC tags through the system’s PC/SC library, winscard.dll.

winscard.dll then communicates with the PC/SC service, which in turns communicates with the reader’s driver, and then, at last, the reader communicates with the card or the tag.

By placing a software “hook” on top of winscard.dll, SCardSniffer makes it possible to see all the function-calls made by the application, including the APDUs exchanged with the card or the tag within SCardTransmit.

As most other software provided by SpringCardSCardSniffer is totally free -provided you’re using it with a SpringCard device attached to your computer. Please refer to our portfolio of PC/SC products that are likely to be used with SCardSniffer.

WARNING

To be able to spy all applications that load winscard.dll, SCardSniffer installs a global DLL hook thanks to a so-called DLL Injection method that uses AppInit_DLLs registry entries (see https://en.wikipedia.org/wiki/DLL_injection for the technical background).

Some malware are known to use the same DLL Injection method, and therefore SCardSniffer is likely to be stopped by a suspicious anti-virus or anti-malware tool. If this is the case, please disable this tool while you’re using SCardSniffer (read DISCLAIMER below: you do this at your own risk). On some versions of Windows, AppInit_DLLs is disabled when secure boot is enabled. Please disable secure boot on the machine you intend to run SCardSniffer on (see https://support.microsoft.com/en-us/kb/2853424 for details).

DISCLAIMER

Using SCardSniffer may cause serious problems, particularly if another application or subsystem has already installed a global DLL hook. SpringCard cannot guarantee that problems resulting from the use of SCardSniffer can be solved without requiring you to reinstall your operating system. You are using SCardSniffer at your own risk. Be sure to create a system recovery point before.

Downloading and verifying

SCardSniffer is available at https://www.springcard.com/en/download/find/file/sn16312.

This is not a self-installation package but a ZIP archive. The ZIP archive must be extracted into a folder which does not contains any spaces in its name. Recommended folder is C:\SCardSniffer

AppInit_DLLs registry entry does not support file names with a white space in them. If you try to execute SCardSniffer from a folder with a space in its name, the application with be unable to install its hook, and therefore unable to spy anything.

SCardSniffer is made of 4 files:

  • scardsniffer64.dll is the hook for X64 systems,
  • scardsniffer32.dll is the hook for X86 systems or for processes running in WoW64,
  • SCardSniffer64.exe is the program for X64 systems,
  • SCardSniffer32.exe is the program for X86 systems.

The .exe require Microsoft NET run-time v4.0.

The 4 files are digitally signed by SpringCard. Please verify that the files are genuine after downloading.

A 5th file (Newtonsoft.Json.dll) is used to save/load the log in a file (see http://www.newtonsoft.com/json for license).

Using SCardSniffer

You must have administrative priviledge to run SCardSniffer. If this is not the case, Windows will prompt you to run the software under the identity of a system administrator.

Launch the SCardSniffer executable that matches your system architecture (SCardSniffer32.exe or SCardSniffer64.exe), then launch the application you want to spy.

For every call to a SCard… function from winscard.dll, SCardSniffer shows

  • The calling process (image name and process ID) and thread (thread ID),
  • The name of the SCard… function (SCardEstablishContext, SCardReleaseContextSCardGetStatusChange, SCardStatus, SCardConnect, SCardDisconnect, SCardTransmit, SCardControl and a few others…),
  • The input parameters,
  • The output parameters, and the return code,
  • The time spent in the function, and the time between a function call and the next one.

When a line is selected, more details appear in the bottom panel.

SpringCard SCardSniffer is a handy tool to debug and profile the application you are developing!

The recorded lines could be exported to a log file (using JSON format), and reloaded for analysis at a later time. The log file may also be transmitted to SpringCard’s support to help diagnose what’s going on between your application and the reader (or the card through the reader).

The program has been tested on Windows 7, 8.1 and Windows 10, both X64 and X86. Due to the sensistivity of the DLL injection system (hook), it is not possible to assert that it will run OK everywhere.

Limitation of 10 smart card readers with SCardListReaders

Many customers have noticed that the Windows’ PC/SC subsystem is not able to handle more than 10 readers (or slots in case of multi-slot readers). Actually, the SCardListReaders function -the system call to get the list of available PC/SC readers- is limited to 10 readers max. On old versions of Windows it was possible (although complex) to overcome this limitation by grouping the readers in “reader groups” and querying one group after the other. This is not possible anymore, starting with Windows 8.

Microsoft clearly states in KB #3144446:

Starting in Windows 8, the Windows platform supports a maximum of 10 smartcard readers. If more than 10 smartcard readers are available, APIs such as SCardListReaders return a maximum of 10. All other readers are ignored.

So, sorry, but there’s no way to use more than 10 PC/SC readers (or slots) on a Windows 8 or Windows 10 system. To make things clear, if you connect 2 SpringCard CSB HSP or 2 SpringCard CrazyWriter HSP with the +3 SIM/SAM expansion board, you already have reached the limit.

SpringCard NetPCSC for PCSC-Lite

Introduction

In 2016, SpringCard introduces a new family of network-attached NFC/RFID couplers, providing PC/SC functionnality on top of TCP/IP. The family is built from the SpringCard E663 module, the Ethernet-world counterpart of H663 (for USB world) and K663 (for serial world). The two first products of the family are the TwistyWriter-IP PC/SC, made for OEMs, and the FunkyGate-IP PC/SC, targetting access-control applications. The second one is also available as a FunkyGate-IP+POE PC/SC, where ‘POE’ stands for ‘power-over-Ethernet’, i.e. the device takes its power from the network cable.

To support all the devices based on the E663 module, SpringCard has developed from scratch a PC/SC driver for Windows (see this page). Continue Reading →

SpringCard PC/SC SDK VERSION 2016.03

The version 2016.03 of our PC/SC SDK is now available for download: pcsc-sdk_2016-03.zip.

You can use it with our products in the SpringCard CSB6 Family (CSB6, Prox’N’Roll PC/SC, EasyFinger and CrazyWriter), with our products in the H663 family (Prox’N’Roll HSP PC/SC, CrazyWriter HSP, TwistyWriter HSP, CSB HSP) and our NFC readers/encoders (H512, NFC’Roll).

This SDK is also available on GitHub.

This SDK contains a new version of MemoryCardTool, a new tool called “scriptorxv” and a serie of basic projects for beginners.

SpringCard NetPCSC for Windows

Introduction

In 2016, SpringCard introduces a new family of network-attached NFC/RFID couplers, providing PC/SC functionnality on top of TCP/IP. The family is built from the SpringCard E663 module, the Ethernet-world counterpart of H663 (for USB world) and K663 (for serial world). The two first products of the family are the TwistyWriter-IP PC/SC, made for OEMs, and the FunkyGate-IP PC/SC, targetting access-control applications. The second one is also available as a FunkyGate-IP+POE PC/SC, where ‘POE’ stands for ‘power-over-Ethernet’, i.e. the device takes its power from the network cable.

To support all the devices based on the E663 module, SpringCard has developed from scratch a PC/SC driver for Windows. Continue Reading →

PC/SC Driver updated, from Windows XP to Windows 10

We’ve published a new release of our certified driver for SpringCard PC/SC products.

This new version runs from Windows XP to Windows 10 in 32 and 64 bits.

To download the driver, please go to http://www.springcard.com/en/download/find/file/sd16055

The installer contains both x86 and x64 binaries and will automatically select the most suitable for your system.

This release targets all SpringCard USB CCID readers.

 

New SDK for SpringCard’s RDR products

The SDK for our RDR products has just been released. It concerns the following devices:

Complete programs are included : for example, a program that monitors a lits of readers, and talk to each one independantly (to set a buzzer, or a LED).

There are also more basic examples, like a command line application to retrieve the badge numbers, read on a specific reader.

The SDK provides both source code (in C, C# and java) and the compiled binaries.

It is available through a zip file, downloadable from our website. It can also be tracked and cloned from our Github repository.

Contact us for technical information or for commercial requests.

 

SpringCard PC/SC solution for Android has been released

SpringCard R&D team is proud to release a simple software solution to add support for SpringCard USB PC/SC Couplers to Android tablets (or smartphone).

nexus9-with-springcard-pcsc-reader

A Nexus 9 Android tablet, with a SpringCard Prox’N’Roll PC/SC reader on the USB port, and a Desfire contactless smartcard

The software is made of two parts:

googleplaystore

The SpringCard USB PC/SC Service’s page on Google Play store

This software suite is compliant with all SpringCard USB PC/SC Couplers, for instance SpringCard Prox’N’Roll PC/SC, Prox’N’Roll HSP PC/SC, TwistyWriter HSP, CrazyWriter HSP, CSB HSP… Note that the current version of the Service and Library allows to work only with the Coupler’s contactless slot. Don’t hesitate to contact us if you have an interest into addressing the smartcard / SAM slots of the Couplers.

To communicate with a USB PC/SC Coupler -which is basically a USB device, the Android tablet (or smartphone) must provide a USB Host stack. This should be the case of all tablets running Android 3.1 and higher. We recommend Nexus 7 and Nexus 9 tablets, running Android 5.0 or 5.1, which are the reference platforms we use to develop and test the solution. An adapter cable is required to connect the Coupler if your tablet doesn’t provide a full-size USB host connector.

usb-adapter-for-tablets-proxnroll

The USB adapter to use a SpringCard USB PC/SC smartcard reader with a tablet featuring only an USB on-the-go (OTG) mini type B female port

Tip: if you’re not sure whether your tablet supports USB Host or not, just install the Service and the Demo application from Google Play, and check that your SpringCard Coupler is correctly activated by your tablet’s system. Remember that the Coupler will be powered by the tablet’s battery. Some tablets could be powered (by their mains adapter) even when an USB device is present, but most don’t; choose your tablet accordingly if you’re designing a kiosk or public-use system that should be mains-powered 24/7).

Icon of the SpringCard PC/SC Service for Android

Icon of the SpringCard PC/SC Service for Android

To develop your own application using a SpringCard Coupler from Android, download the library (and the sample Demo application) from GitHub, and follow the Quick Start Guide (ref. SpringCard PMD15240) which is included in the GitHub project, or available directly here.

github

The SpringCard SDK for PC/SC on Android is an open-source project hosted on GitHub

We welcome your feedback!