Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
nfcreader-sdk
Advanced tools
项目根目录下执行命令安装插件SDK
npm install --save nfcreader-sdk
// 在Tarojs项目中的入口文件中进行SDK初始化 app.js
import { System } from 'nfcreader-sdk';
function APP({ children }){
useLaunch(() =>{
System.init('你的插件ID');
});
}
注意:SDK初始化必须在其他接口调用前进行,否则会造成接口异常
打包前需修改项目配置,config/index.js
一定要将publicPath修改为“./”,否则插件无法正常加载,切记!!!
一定要将publicPath修改为“./”,否则插件无法正常加载,切记!!!
一定要将publicPath修改为“./”,否则插件无法正常加载,切记!!!
const config = {
//...
h5: {
//...
publicPath: './',
//...
},
//...
}
项目需构建打包为 H5 应用
npm run build:h5
通过 NFC 读取 M1 标签扇区数据
参数为密钥对象数组
interface SectorKey {
/** 扇区索引编号,取值0-15 */
sector: number;
/** 扇区A密钥,6字节hex数值 */
keyA: string;
/** 扇区B密钥,6字节hex数值 */
keyB: string;
/** 扇区访问控制指令,4字节hex数值 */
keyC?: string;
};
返回Promise,当resolve时,对象属性如下
interface ReadDataResponse {
/** SDK执行标识符,true为执行成功;false为执行失败 */
status: boolean;
data: {
/** 扇区第0块数据,16字节hex数值 */
b0: string;
/** 扇区第1块数据,16字节hex数值 */
b1: string;
/** 扇区第2块数据,16字节hex数值 */
b2: string;
/** 扇区A密钥,6字节hex数值 */
keyA: string;
/** 扇区B密钥,6字节hex数值 */
keyB: string;
/** 扇区访问控制指令,4字节hex数值 */
keyC: string;
} | null;
/** SDK操作回执消息 */
msg: string;
}
通过 PN532 芯片读卡器读取 M1 标签扇区数据
参数和返回值类型见 M1.readSectorByNFC
调用宿主 UI 读取 M1 标签扇区数据(用户自行选择使用 NFC或者PN532操作)
参数和回调函数参数类型见 M1.readSectorByNFC
通过 NFC 向 M1 标签写入块数据
参数类型见函数签名及M1.readSectorByNFC
返回值为Promise,当resolve时,对象属性如下
/** SDK响应格式 */
interface SDKResponse {
/** SDK执行标识符,true为执行成功;false为执行失败 */
status: boolean;
/** SDK操作回执消息 */
msg: string;
}
通过 PN532 芯片读卡器向 M1 标签写入块数据
参数及返回值见 M1.writeBlockByNFC
通过 NFC 向 M1 标签写入扇区数据
参数类型见函数签名,写入数据对象属性如下
interface SectorData {
sector: number;
data: {
/** 扇区第0块数据,16字节hex数值 */
b0: string;
/** 扇区第1块数据,16字节hex数值 */
b1: string;
/** 扇区第2块数据,16字节hex数值 */
b2: string;
/** 扇区A密钥,6字节hex数值 */
keyA: string;
/** 扇区B密钥,6字节hex数值 */
keyB: string;
/** 扇区访问控制指令,4字节hex数值 */
keyC: string;
};
}
返回值为Promise,同 M1.writeBlockByNFC
通过 PN532 芯片读卡器向 M1 标签写入扇区数据
参数类型及返回值同 M1.writeSectorByNFC
调用宿主 UI 向 M1 标签写入扇区数据(用户自行选择使用 NFC 或者 PN532 操作)
参数及回调函数参数见上述其他接口
调用宿主 UI 选择用户保存的密钥文件数据
返回值为Promise,当 resolve 时,返回的对象属性如下
interface ReadKeyResponse {
/** SDK执行标识符,true为执行成功;false为执行失败 */
status: boolean;
data: {
/** 扇区索引编号,取值0-15 */
sector: number;
/** 扇区A密钥,6字节hex数值 */
keyA: string;
/** 扇区B密钥,6字节hex数值 */
keyB: string;
/** 扇区访问控制指令,4字节hex数值 */
keyC?: string;
};
/** SDK操作回执消息 */
msg: string;
}
调用宿主 UI 选择用户保存的 M1 标签文件数据
返回值对象属性见上述其他接口
初始化 SDK
参数及返回值见函数签名
连接 PN532 芯片读卡器
返回值为 Promise,当 resolve 时,返回对象属性如下:
interface ConnectPN532Response {
/** SDK执行标识符,true为执行成功;false为执行失败 */
status: boolean;
data: {
/** PN532是否连接标识符 */
isConnected: boolean;
};
/** SDK操作回执消息 */
msg: string;
}
获取 PN532 芯片读卡器状态
返回值为 Promise, 当 resolve 时, 返回对象属性如下:
interface PN532StatusResponse {
/** SDK执行标识符,true为执行成功;false为执行失败 */
status: boolean;
data: {
/** PN532是否连接标识符 */
isConnected: boolean;
/** PN532是否插入手机 */
isDevInsert: boolean;
};
/** SDK操作回执消息 */
msg: string;
}
获取插件使用用户的基础资料
返回值为 Promise, 当 resolve 时,返回对象属性如下:
interface UserinfoResponse {
/** SDK执行标识符,true为执行成功;false为执行失败 */
status: boolean;
data: {
/** 用户ID */
id: string;
/** 用户昵称 */
nickName: string;
/** 用户头像 */
avatar: string;
};
/** SDK操作回执消息 */
msg: string;
}
获取手机 NFC 开关状态
返回值为 Promise,当 resolve 时, 返回对象属性如下:
interface NFCStatusResponse {
/** SDK执行标识符,true为执行成功;false为执行失败 */
status: boolean;
data: {
/** NFC开关是否开发 */
isOpen: boolean;
};
/** SDK操作回执消息 */
msg: string;
}
打开手机 NFC 设置界面
复制文本到手机剪贴板
调用安卓原生 Toast 进行消息展示
参数见函数签名及下面所示
type ToastDuring = 'short' | 'long';
根据配置创建一个模态 Modal
confirmCallback 为确认按钮点击回调,位于 Modal 右下角;cancelCallback 为取消按钮点击回调,位于 Modal 左下角,配置项属性如下
interface ModalConfig {
/** 标题配置 */
title: {
/** 标题文字,最大长度6 */
text: string;
/** 标题背景色,rgba(0,0,0,0)/rgb(0,0,0)/#000000/black */
bgColor?: string;
/** 文字颜色,rgba(0,0,0,0)/rgb(0,0,0)/#000000/black */
fontColor?: string;
};
content: {
/** 弹窗内容 */
text: string;
/** 文字颜色,rgba(0,0,0,0)/rgb(0,0,0)/#000000/black */
fontColor?: string;
/** 文字对齐方式 */
textAlign?: 'left' | 'center' | 'right';
};
subContent?: {
/** 弹窗子内容 */
text: string;
/** 文字颜色,rgba(0,0,0,0)/rgb(0,0,0)/#000000/black */
fontColor?: string;
/** 文字对齐方式 */
textAlign?: 'left' | 'center' | 'right';
};
confirmBtn: {
/** 取消按钮文字,最大长度6 */
text: string;
/** 按钮背景色,rgba(0,0,0,0)/rgb(0,0,0)/#000000/black */
bgColor?: string;
/** 文字颜色,rgba(0,0,0,0)/rgb(0,0,0)/#000000/black */
fontColor?: string;
};
cancelBtn?: {
/** 确定按钮文字,最大长度6 */
text: string;
/** 按钮背景色,rgba(0,0,0,0)/rgb(0,0,0)/#000000/black */
bgColor?: string;
/** 文字颜色,rgba(0,0,0,0)/rgb(0,0,0)/#000000/black */
fontColor?: string;
};
};
返回值为 Modal 类型,对象属性如下:
interface Moda {
/** 显示弹窗 */
show(): void;
/** 隐藏弹窗 */
hide(): void;
}
添加 NFC/PN532 数据读写进度监听函数
事件名称属性及回调函数参数对象属性如下:
type EventName = 'nfcReadPercent' | 'nfcWritePercent' | 'pn532ReadPercent' | 'pn532WritePercent';
interface EventPercent {
/** 操作进度数值 */
value: number;
}
移除 NFC/PN532 数据读写进度监听函数
参数同 Event.addRWPercentListener
后续将逐步开放其他 NFC 协议的读写 SDK,如 NDEF 标签、CPU 标签等,敬请持续关注
FAQs
用于开发NFCReader应用上的功能扩展插件
The npm package nfcreader-sdk receives a total of 0 weekly downloads. As such, nfcreader-sdk popularity was classified as not popular.
We found that nfcreader-sdk demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.