I'm just starting with the expansion and also finding it frustrating to use. But I had some comments on your thread and thought I'd share what I've figured out in the two days I've been messing with it.
I'm a security researcher and need to build a handheld, barry powered device to scan a client's employees badges to do an audit.
Me too! Specifically I do penetration testing of all sorts. I would think you'd want something with a bit more range for an engagement?
basically what i'm asking is how to control the rfid/nfc exp from inside a progra...any program: python node.js, etc.
First, you should forget there are any "tools" installed on the Omega for use with the expansion. And while the documentation is frustrating, it does tell us some useful information that would have taken us a few minutes to figure out or if you are me quite a few minutes to figure out:
The Expansion is based on the popular PN532 NFC Chip and communicates with the Omega via UART1.
- PN532 chip
- talks via UART1
nfc-scan-device uses libnfc reboot-3483-gd1bcad0
1 NFC device(s) found:
error libnfc.driver.pn532_uart Serial port already claimed: /dev/ttyS1
nfc-mfultralight: ERROR: Error opening NFC device
- their "tools" are using the libnfc driver
Ok so to get back answering your question, to control the expansion from inside a program you have two choices:
- Find a library in the language of your choice that uses the libnfc driver and tell it to talk to a pn532 chip on /dev/ttyS1.
- Find a library in the language of your choice that can talk to the pn532 on /dev/ttyS1 directly.
OK, I figured it out. Here's a test script I wrote real quick to have a proof of concept:
scan = os.system("nfc-list")
outfile = open("result.txt", "w")
Even ignoring the issues with the code I probably wouldn't want to use this in any real-world scenario. Did you by chance come up with something else? And honestly for something like what you are trying to do here you could just write a shell script and save yourself the overhead of the python interpreter.
However, if you do want to write something in python, find a library that lets you use one of the above two methods I mentioned and I think you'll be much happier with the expansion. I know I was.