我希望在我的运输DESFire卡内读取充电余额。有可能吗?怎么读?(在android上)

时间:2014-12-09 07:56:53

标签: android nfc mifare

我是RFID,NFC和DESfire卡的新手。我已经从desfire标签中读取了UID。 Bellow代码从defire标签中提供UID。

UID在text3中,但只有第7个字节。

 public void onNewIntent(Intent intent) {

            TextView text2 = (TextView) findViewById(R.id.textView2);
            TextView text1 = (TextView) findViewById(R.id.textView1);
            TextView text3 = (TextView) findViewById(R.id.textView3);

            String action = intent.getAction();

            if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
                    || NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)
                    || NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {

                Toast.makeText(this, "discovered", Toast.LENGTH_SHORT).show();

            } else {
                Toast.makeText(this, "Falied", Toast.LENGTH_SHORT).show();
            }

            byte[] tagResponse = null;
            byte[] tagResponse1 = null;
            byte[] tagResponse2 = null;

           Tag desfire = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

            isodep = IsoDep.get(desfire);

            try {
                isodep.connect();

            } catch (IOException e) {

                e.printStackTrace();

            }

           //byte[] test = new byte[] { (byte) 0xAA, (byte) 0x00 };
           byte[] test=new byte[]{(byte)0x60};
           byte[] test1=new byte[]{(byte)(0xAF)};
         //  byte[] test2=new byte[]{(byte)(90AF000000)};


            try {

                tagResponse = isodep.transceive(test);
                tagResponse1 = isodep.transceive(test1);
                tagResponse2 = isodep.transceive(test1);

                text1.setText(bytesToHex(tagResponse));
                text2.setText(bytesToHex(tagResponse1));
                text3.setText(bytesToHex(tagResponse2));

            } catch (IOException e) {

                e.printStackTrace();

            }
            try {
                isodep.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

我手中唯一可用于测试的标签是交通卡。我现在想要在我的运输卡内读取充电余额。它有可能吗?(我有一台支持nfc的平板电脑。)如果有可能我必须这样做吗?请给我一些问候或代码示例。我是DESFire阅读和写作的新人。

1 个答案:

答案 0 :(得分:0)

通常无法从交通卡中读取余额,因为它被保存在锁定的卡片区域中。 您需要知道用于读取(并可能更改)信息的扇区的密钥和编号。

您可以尝试使用https://play.google.com/store/apps/details?id=at.mroland.android.apps.nfctaginfo来识别该部门。但是,如果没有密钥,则无法读取存储的数据。