【问题标题】:Get data from smart card using node-pcsclite使用 node-pcsclite 从智能卡获取数据
【发布时间】:2022-11-04 02:23:12
【问题描述】:

我正在尝试使用 node-pcsclite 库和“BIT4ID miniLector EVO”阅读器从智能卡中读取数据。

我怎样才能获得卡片内容?我是使用智能卡的新手,如果有人可以帮助我,我将不胜感激。

这是我使用的代码和我得到的。

var pcsc = require('pcsclite');

var pcsc = pcsc();
pcsc.on('reader', function(reader) {

    console.log('New reader detected', reader.name);

    reader.on('error', function(err) {
        console.log('Error(', this.name, '):', err.message);
    });

    reader.on('status', function(status) {
        console.log('Status(', this.name, '):', status);
        /* check what has changed */
        var changes = this.state ^ status.state;
        if (changes) {
            if ((changes & this.SCARD_STATE_EMPTY) && (status.state & this.SCARD_STATE_EMPTY)) {
                console.log("card removed");/* card removed */
                reader.disconnect(reader.SCARD_LEAVE_CARD, function(err) {
                    if (err) {
                        console.log(err);
                    } else {
                        console.log('Disconnected');
                    }
                });
            } else if ((changes & this.SCARD_STATE_PRESENT) && (status.state & this.SCARD_STATE_PRESENT)) {
                console.log("card inserted");/* card inserted */
                reader.connect({ share_mode : this.SCARD_SHARE_SHARED }, function(err, protocol) {
                    if (err) {
                        console.log(err);
                    } else {
                        console.log('Protocol(', reader.name, '):', protocol);
                        reader.transmit(Buffer.from([0x00, 0xB0, 0x00, 0x00, 0x20]), 40, protocol, function(err, data) {
                            if (err) {
                                console.log(err);
                            } else {
                                console.log('Data received', data);
                                // reader.close();
                                // pcsc.close();
                            }
                        });
                    }
                });
            }
        }
    });

    reader.on('end', function() {
        console.log('Reader',  this.name, 'removed');
    });
});

pcsc.on('error', function(err) {
    console.log('PCSC error', err.message);
});

【问题讨论】:

    标签: node.js smartcard smartcard-reader pcsc


    【解决方案1】:

    您在此处显示的程序假定卡上自动选择的文件中的 32 个字节可以简单地读取而没有任何复杂性。这是一个不切实际的简单场景,不能证明涉及智能卡的努力是合理的。

    不幸的是,智能卡是出了名的难学,因为在出​​错的情况下你得到的信息太少了。一个好的方法是找一个开源项目,从功能代码中学习,但这并不一定涵盖创建工作卡的过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      相关资源
      最近更新 更多