Hex NFC 1.0.2 版发布:护照与 DESFire 功能升级

Hex NFC 的最新进展与未来计划,其中包括宣布即将推出这款应用的 Android 版。

Matthew Scott8 分钟阅读
一张封面图片,从左到右依次是护照内页、一枚微芯片和一张 NFC 贴纸。

从 App Store 免费下载 Hex NFC!永久免费、公开透明,而且没有第三方广告。

Hex NFC 发布已经大约三周了,成绩令人振奋。大家真的很喜欢它。在这么拥挤的市场里,就一款 NFC 应用而言,我们每天的下载量相当不错。

几位热心用户提供了非常有用的反馈,还用这款应用测试了许多不常见的 NFC 芯片,从而暴露出应用在几个方面的不足。

开发成本捐赠!

在继续说这件事之前,我想先感谢那位为开发成本捐了 5 澳元的用户。开发这款应用时,我把开发成本列出来,更多是为了表明我们确实为它下了真功夫,而不是靠 AI 氛围编程随手糊出来的速成品。当时我的未婚妻相当怀疑,她的意思大概是:“谁会为一款免费应用掏钱呢?”我承认,我自己心里也没底。正因如此,远在地球另一端竟有人这么欣赏我们的工作,愿意为它掏钱,不管多少,这对我们都是莫大的肯定。我们高兴得在家里手舞足蹈。所以,我和 Hex Pro 在此道一声大大的“谢谢”。

护照与通行证的环球之旅

有几位用户很想看看,扫描一些特别少见的旅行证件会出现什么结果。我有幸得知了他们的扫描结果,并从中找出了几处可以加进应用的改进。

解密过程

给还不了解的读者科普一下:电子护照(ISO/IEC 14443)使用一套加密机制,需要护照号码、出生日期和证件到期日期才能读取。这显然是为了解决一个问题:您在国外旅行时,随便哪个骗子都可能偷偷读走您护照上的身份信息。

Hex NFC 开发之初,只提供简单的文本和日期输入框。Hex Pro 的核心原则之一是用户隐私和消费者权益。我尽力确保我们只申请绝对必要的权限,并在数据分析和追踪上保持克制(例如,选择自托管的 Umami,而不是 Google Analytics)。出于这个原因,我起初没有让应用申请相机权限。但用户强烈要求加入相机扫描,好直接读取护照信息,让解密过程更轻松。于是我马上着手,尽快把它做了出来,现在我非常庆幸当初这么做了。它速度快,而且极其可靠,不妨拿您的护照扫一扫,亲自试试吧!

少见的证件

和我交流的几位用户拿出了一些特别有意思的证件。第一份是一本中国护照,第二份是来自台湾的“旅行证件”,据说它的技术和配置跟普通护照一模一样(说来也有意思)。接下来的几份则是用于往来澳门和香港的通行证。

那本中国护照扫描起来完全正常,毫无问题。那份来自台湾的旅行证件有一些小的数据偏移问题,导致某些字段的数据串到了别的字段里,不过很容易就修好了。

真正带来有趣结果的是第三类。说实话,这些通行证扫描时会被当成护照来读,结果吐出一堆天书似的乱码。不过这正好为我和我那位得力的编程智能体提供了绝佳的数据,让我们弄清楚该如何解析它们。

这让我一头钻了进去,越挖越深,研究起哪些国家的旅行证件不合标准。结果发现,大多数奇怪的例外都出在欧盟,也就是比利时、葡萄牙,可能还有西班牙:这些国家有些号码长达 12 个字符,而不是标准的 9 个。

DESFire 支持增强

1.0.0 版缺少的一项功能是 NDEF 应用设置和 NDEF 应用移除。没有这项功能,直接从制造商那里拿到的 DESFire 芯片上并没有安装应用的 Capability Container。说白了,它们不像 NTAG213 这类更常见的 NFC 芯片那样,已经格式化好可以直接使用。

现在,Hex NFC 支持 NDEF 应用设置,也支持移除。尤其是后者,既实用又少见。用这项功能,您可以把 DESFire 恢复为出厂默认状态,之后想怎么重新利用都可以。只要用 iPhone 碰一下您的 DESFire,进入“操作”,向下滚动到“危险操作”,然后点按“格式化”。在文档中了解更多。

本地化与文档改进

各语言的本地化全面改进,用词更加贴切,几处之前只有英文的地方也补上了翻译。目前,这款应用已提供 Hex Pro 支持的所有语言:

所有文档都已完整翻译,可以在网站上以上述所有语言阅读。所有图片和截图也包括在内(这可真是一项极其耗时的工作)。

接下来:1.0.3 版抢先看

鼓声响起,隆重揭晓!没错,Hex NFC 要登陆 Android 了。什么时候?即将推出™。我已经买了三台品牌和性能各不相同的 Android 设备,应该能覆盖相当多的机型。开发已经全面展开,其中一些重大改动也会影响 iOS 版的 1.0.3 版本。

从 Swift 到 Rust:一个仿真器的故事

最大的消息是,这些仿真器正在改用 Rust 重写,以便更好地支持跨平台开发。这些 NFC 仿真器用来模拟真实 NFC 芯片的行为,让 Hex NFC 的应用代码可以针对每一种受支持芯片的逻辑快速测试。它们先根据网上公开的数据手册开发,再经过严格的真实台架测试。后者让模拟出的芯片行为更贴近实际,确保 Hex NFC 能准确处理所有可能的情况。

仿真器全部转换为 Rust 之后,就能同时用来测试 iOS 和 Android 两边的应用代码,而这两边的底层实现会有很大差异。这样可以保证各平台的行为一致,也能降低日后修改引入回归问题的可能。

在迁移到 Rust 的同时,我还着手扩充仿真器的范围,加入 iOS 不支持但 Android 支持的芯片,并进一步充实和完善现有的仿真器。为此,我买了一批新标签用于测试,总计约 160 澳元。我已经更新了应用网站上的开发成本页面。恳请每一位认可这份工作的朋友捐款支持开发,也请在 App Store 给出 5 星评分并写条评价。

下足功夫,做出好作品

我们一直在全力以赴,为您带来我们所能做出的最高品质的软件。我很期待未来,也希望您在我们今后推出新应用时考虑一下我们,包括即将推出的 Sol 和 Nepali Companion,它们计划在本月内发布。