npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-red-contrib-apdu2pcsc

v1.0.7

Published

A simple node for node-red to send apdu to rfid and smartcards

Downloads

15

Readme

apdu2pcsc

npm

A simple node for node-red to send apdu to rfid and smartcards

Installation

To make it work on my RaspberryPi 3 with Raspbian Jessie version: November 2016 I've done the following steps. Not all might be nessasary.

prep the apt

sudo apt update
sudo apt full-upgrade

Get the current version of node.js

sudo curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt install nodejs
Detailed information: http://thisdavej.com/beginners-guide-to-installing-node-js-on-a-raspberry-pi/

Reinstall node-red

sudo npm i -g [email protected]
hash -r
sudo npm cache clean
sudo npm install -g --unsafe-perm node-red
cd ~/.node-red
npm outdated
Detailed information: http://nodered.org/docs/hardware/raspberrypi	

Instal the PCSC C-libraries

sudo apt-get install libtool
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install flex
sudo apt-get install automake
cd /usr/src
sudo apt-get install libudev-dev
sudo git clone git://anonscm.debian.org/pcsclite/PCSC.git
cd PCSC
sudo ./bootstrap
sudo ./configure
sudo make
sudo make install
Detailed information: http://pcsclite.alioth.debian.org/pcsclite.html 

Instal the CCID C-libraries

cd /usr/src
sudo git clone --recursive git://anonscm.debian.org/pcsclite/CCID.git
cd CCID
sudo ./bootstrap
sudo ./configure
sudo make
sudo make install
sudo cp src/92_pcscd_ccid.rules /etc/udev/rules.d
Detailed information: https://pcsclite.alioth.debian.org/ccid.html 

Test the pcsc & ccid installation

sudo killall pcscd -9
sudo LIBCCID_ifdLogLevel=0x000F pcscd --foreground --debug --apdu --color

If things are working, your CCID compatible smartcard reader should be connected. And smartcard insertion or NFC card detection should trigger some debug logentries. Here is a complete list of supported/shouldwork/notworking list of smartcard readers: http://pcsclite.alioth.debian.org/ccid/section.html

install pcsclite nodejs wrapper

sudo apt-get install libpcsclite1 libpcsclite-dev
cd ~\.node-red
sudo npm install buffertools
sudo npm install pcsclite
Detailed information: https://www.npmjs.com/package/@pokusew/pcsclite  

Restore the "node-red-start" and "node-red-stop" commands

sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/nodered.service -O /lib/systemd/system>>/nodered.service
sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/node-red-start -O /usr/bin/node-red-start
sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/node-red-stop -O /usr/bin/node-red-stop
sudo chmod +x /usr/bin/node-red-st*
sudo systemctl daemon-reload

Finaly the apdu2pcsc node-red node to send and receive apdus can be installed

cd ~\node-red
sudo npm install node-red-contrib-apdu2pcsc

Node-Red example

A sample node-red wiring to detect the austrian maestro bank card:

[{"id":"c89fbc96.78b9f","type":"debug","z":"22ba873c.1cd0a8","name":"","active":true,"console":"false","complete":"false","x":506.5,"y":209.33334350585938,"wires":[]},{"id":"4fd940ec.28b05","type":"function","z":"22ba873c.1cd0a8","name":"Austrian maestro detection","func":"if(msg.payload == 'card inserted')\n{\n    msg.payload = '00A40000023F0000';\n    return msg;\n}\nelse if(msg.payload.indexOf('00A40000023F0000') >= 0 &&\n   msg.payload.substr(msg.payload.length - 4, 4) == '9000')\n{\n    msg.payload = '00A404000E315041592E5359532E444446303100';\n    return msg;\n}\nelse if(msg.payload.indexOf('00A404000E315041592E5359532E444446303100') >= 0 &&\n   msg.payload.substr(msg.payload.length - 4, 4) == '9000')\n{\n    msg.payload = '00A4040007A000000004306000'\n    return msg;\n}\nelse if(msg.payload.indexOf('00A4040007A000000004306000') >= 0 &&\n   msg.payload.substr(msg.payload.length - 4, 4) == '9000')\n{\n    msg.payload = 'maestro detected'\n    return msg;\n}\nelse if(msg.payload == 'card removed')\n{\n}\nelse\n{\n    msg.payload = 'none maestro';\n    return msg;\n}\n\n","outputs":1,"noerr":0,"x":192.50001525878906,"y":305.33331298828125,"wires":[["399239ee.3de70e","ecc1190e.28617"]]},{"id":"399239ee.3de70e","type":"function","z":"22ba873c.1cd0a8","name":"trigger on detection","func":"if(msg.payload == 'maestro detected')\n{\n    msg.payload = 1;\n    return msg;\n}\n","outputs":1,"noerr":0,"x":321.5,"y":436.6666259765625,"wires":[["d993acc0.361cf","26ee80a0.3d9b28"]]},{"id":"d993acc0.361cf","type":"trigger","z":"22ba873c.1cd0a8","op1":"0","op2":"1","op1type":"str","op2type":"str","duration":"250","extend":false,"units":"ms","reset":"","name":"","x":312.5,"y":517.6666259765625,"wires":[["9646093e.bbd13"]]},{"id":"9646093e.bbd13","type":"rpi-gpio out","z":"22ba873c.1cd0a8","name":"","pin":"33","set":true,"level":"1","out":"out","x":323.5,"y":584.6666259765625,"wires":[]},{"id":"1cd2f586.d540ca","type":"rpi-gpio out","z":"22ba873c.1cd0a8","name":"","pin":"15","set":true,"level":"0","out":"out","x":967.5,"y":429.6666564941406,"wires":[]},{"id":"26ee80a0.3d9b28","type":"trigger","z":"22ba873c.1cd0a8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"100","extend":false,"units":"ms","reset":"","name":"","x":799.3333740234375,"y":431.3333435058594,"wires":[["1cd2f586.d540ca"]]},{"id":"ecc1190e.28617","type":"function","z":"22ba873c.1cd0a8","name":"trigger on none maestro","func":"if(msg.payload == 'none maestro')\n{\n    msg.payload = 1;\n    return msg;\n}\n","outputs":1,"noerr":0,"x":549.3333129882812,"y":305.3333435058594,"wires":[["26ee80a0.3d9b28","b523f1d1.bc32d"]]},{"id":"b523f1d1.bc32d","type":"delay","z":"22ba873c.1cd0a8","name":"","pauseType":"delay","timeout":"250","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":789.5000762939453,"y":307.33335876464844,"wires":[["26ee80a0.3d9b28","9193cd82.427bd8"]]},{"id":"9193cd82.427bd8","type":"delay","z":"22ba873c.1cd0a8","name":"","pauseType":"delay","timeout":"250","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1032.3333740234375,"y":307.3333435058594,"wires":[["26ee80a0.3d9b28"]]},{"id":"b5cc3d7a.1b354","type":"inject","z":"22ba873c.1cd0a8","name":"","topic":"","payload":"00A40000023F0000","payloadType":"str","repeat":"","crontab":"","once":false,"x":144.5,"y":89,"wires":[["51d67592.8d7c3c"]]},{"id":"51d67592.8d7c3c","type":"Apdu2Pcsc","z":"22ba873c.1cd0a8","name":"","x":179.50001525878906,"y":207.00001525878906,"wires":[["4fd940ec.28b05","c89fbc96.78b9f"]]}]

On pin 33 a door opener is connected, which is trigged by an impulse. On pin 15 a beeper is connected to give the user some feedback. beeps 1x if the smartcard is identified successfully as maestro bank card. Beeps 3x if any other card is detected)

Maestro AID:

00A4040007A000000004306000

EMV application directory of EMV AIDs available on the smartcard

00A404000E315041592E5359532E444446303100

To simply detect is it is anykind of a EMVCo compatible credit or debit card for international use, you could also simple select the EMV application directory.

Here is a complete list of national and international EMV-AIDs: https://www.eftlab.co.uk/index.php/site-map/knowledge-base/211-emv-aid-rid-pix