ndef(nfc数据交换格式)解析器和验证器
ndef的Python项目详细描述
发布v0.1–2014年2月22日
ndef模块提供了根据nfc以ndef格式创建和解析消息和记录的方法。 论坛技术规范。其主要目的是提供原始ndef消息的全面验证。可能是 用于在将消息写入实际标记之前验证消息。
在PyPI上可用。
用法
有效信息
>>> import ndef >>> message_data = 'D1010F5402656E48656C6C6F20776F726C6421'.decode('hex') >>> message = ndef.NdefMessage(message_data) >>> record = message.records[0] >>> record.tnf 1 >>> record.type 'T' >>> record.id >>> record.payload '\x02enHello world!' >>>
无效消息
>>> import ndef >>> message_data = '9901050155610123456761'.decode('hex') >>> message = ndef.NdefMessage(message_data) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "ndef\ndef.py", line 274, in __init__ self.verify() File "ndef\ndef.py", line 278, in verify self._verify_begin_end() File "ndef\ndef.py", line 296, in _verify_begin_end raise InvalidNdefMessage("last record's ME flag is off") ndef.ndef.InvalidNdefMessage: last record's ME flag is off >>>
创建消息
>>> import ndef >>> text_record = (ndef.TNF_WELL_KNOWN, ndef.RTD_TEXT, 'id', 'hello world') >>> text_message = ndef.new_message(text_record) >>> text_raw_ndef = text_message.to_buffer() >>> text_raw_ndef.encode('hex') 'd9010b0254696468656c6c6f20776f726c64' >>>
备选方案
- nfcpy:规范的完整实现,包括实际的通信代码
- Python NDEF library and tools:针对安全研究
- pynfc:libnfc库的pythonic接口
许可证
Copyright (c) 2014 Amir Szekely This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution.