0

有没有办法记录发送到 NFC 标签的 tranceive 方法的二进制数据?https://developer.android.com/reference/android/nfc/tech/NfcV.html#transceive(byte[])

我正在尝试找到协议中最后几个缺失的部分,如果我能听到发送的数据会有所帮助。

4

1 回答 1

0

我猜是这样的:

  • 您想要监控从您已安装的应用程序发送的 APDU/字节。
  • 您已经搜索了有关该特定协议的信息,但一无所获。
  • 在 Logcat 中,不显示相关信息(默认情况下)。

抬头看收发源代码

 public byte[] transceive(byte[] data) throws IOException {
       return transceive(data, true);
    }

重定向到:

    byte[] transceive(byte[] data, boolean raw) throws IOException {
        checkConnected();

        try {
            TransceiveResult result = mTag.getTagService().transceive(mTag.getServiceHandle(),
                    data, raw);
            if (result == null) {
                throw new IOException("transceive failed");
            } else {
                return result.getResponseOrThrow();
            }
        } catch (RemoteException e) {
            Log.e(TAG, "NFC service dead", e);
            throw new IOException("NFC service died");
        }
   }

接下来是 TransceiveResult 类。

我最好的选择(如果你想走到最后)是重新编译一个 Android 源代码,打印出输入到byte[] transceive(byte[] data)函数的数据。祝你好运。

编辑:我碰巧意识到的另一个选择是使用 APDU 嗅探器,尽管我不知道这个选项有多合法。

于 2016-07-04T11:45:47.263 回答