描述
<h1 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8; text-align: center;">免责声明</h1>
<p>1. PocketTrustee(以下简称本项目)是由社区支持的开源项目,没有任何个人或集体可以为其安全性提供长期保障;</p>
<p>2. 本项目仅供学习、交流使用,严禁将PocketTrustee用于任何需要安全保障的领域;</p>
<p>3. 由于使用本项目造成的财产损失,社区开发者不承担任何责任;</p>
<p>4. 本项目硬件部分以CC BY 4.0协议发放,软件部分以Apache-2.0协议发放,社区开发者不对本项目任何部分的可靠性负责,社区开发者不对衍生项目负责;</p>
<p>5. 本项目所使用的开源库不在“本项目软件”的范围内,因此不受Apache-2.0协议约束,不随同本项目分发,关于这些库的开源协议,请查看库文件夹下的LICENSE文件;</p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">1、项目功能介绍</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">请输入内容…</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">注:主题不限,可以是解决生活/工作中的某个问题、为某个人群/场景设计的方案、毕业设计/课程设计/DIY项目/纯属炫酷项目等。主要讲一下自己通过什么手段解决了什么问题。</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">2、项目属性</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">项目为首次公开,公开前由本人独立开发,并为首次参与“立创电子设计大赛”</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">3、开源协议</h3>
<hr class="horizontal-splitline normal-bold-2">
<p>项目硬件部分以CC BY 4.0协议发放,软件部分以Apache-2.0协议发放;</p>
<p>你可以在Github上找到本项目的软件部分,并为其贡献代码;</p>
<p>本项目所使用的开源库不在“本项目软件”的范围内,因此不受Apache-2.0协议约束,不随同本项目分发,关于这些库的开源协议,请查看库文件夹下的LICENSE文件;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4、硬件部分</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">PocketTrustee的硬件部分可以分为高频射频部分、低频射频部分、数字部分,硬件框图如下:</p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/RzjGiSjBPNCwxszNYeHuOO1vCYn8BctcRc0BtBzB.png" alt="硬件框图" width="835" height="545">4.1、高频射频部分实现</h4>
<p>IC卡工作在13.56Mhz高频段,相比于ID卡可以传输更多信息。IC卡的分类非常多,最常见的是Mifare 1卡(简称M1卡),部分扇区加密的M1卡也称半加密卡,全部扇区加密的卡即全加密卡;</p>
<p>M1卡可以通过漏洞攻击破解,一些厂家在M1卡的基础上改进,出现了无漏洞卡、滚动码卡、CPU卡等,这些卡通常无法被模拟(使用手机NFC模拟时提示卡片被加密,仅能模拟卡号);</p>
<p>PocketTrustee考虑到此问题,集成了IC卡模拟和物理卡槽;</p>
<p> </p>
<p>IC卡模拟通过PN532芯片实现,虽然PN532是一款比较老的芯片,但是这款经典的芯片支持许多IC卡工具(如MifareOneTool),配合PocketTrustee的透传模式,可以将PocketTrustee作为一个全功能读卡器使用,用于编辑其他卡片;此外PN532支持非加密IC卡模拟功能,支持NDEF协议,可以传递Wi-Fi,URI,个人名片等多种信息;</p>
<p> </p>
<p>IC卡物理卡槽是PocketTrustee全能的关键,等同于为IC卡更换工作环境;</p>
<p>稚晖君大佬曾设计过一款多功能NFC卡片Link-Card,采用物理开关切换;PocketTrustee选择使用模拟开关,并将物理卡槽设计为SD卡形状,可以很方便地插拔而无需拆开设备外壳,便于添加/去除卡片,算是对Link-Card的一种改进(在这里感谢Link-Card项目为本项目提供了部分设计灵感(≧∀≦))</p>
<p> </p>
<p>/*此图插图一张*/</p>
<p> </p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.2、低频射频部分实现</h4>
<p>ID卡工作于125Khz低频,仅能传递ID卡号信息,ID卡号以Manchester编码载波于125Khz信号上;</p>
<p>PocketTrustee选择纯模拟电路实现信号提取,BL1551是一个低功耗模拟开关,用于激励线圈,随后的4.7nF用于谐振,这样我们就能得到载有Manchester编码的信号;</p>
<p>/* 图 */</p>
<p>该信号通过检波二极管,两阶RC滤波,最后LF_IN会得到这样的信号输入:</p>
<p>/* 图 */</p>
<p>此时,STM32L443的COMP(低功耗比较器)就起到关键作用了,通过与0v电平进行比较,我们就能捕获到Manchester编码的上升下降沿,最后进行软件处理即可,实现原理较为简单;</p>
<p>LF_RSSI和LF_MOD是ID卡模拟时用到的功能,其中RSSI即信号强度,用于检测是否有读卡器接近,避免不必要的功耗;LF_MOD是负载,用于产生载波;</p>
<p>为了防止第三方可复制卡片,部分ID卡门禁读头会尝试先写入卡片,再读取卡片,以此检测用户是否使用了复制卡,也被称为防火墙,PocketTrustee的ID卡模拟只会简单纯粹地输出ID卡号信息,并不会响应写入信号,因此不会被防火墙识破;</p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.3、数字部分实现</h4>
<p>这部分介绍比较简单,主控选用STM32L443,一款超低功耗MCU,最大的特点是具有硬件AES加密,用户的密码经过加密后存储于外部NAND Flash;</p>
<p>PocketTrustee使用了两颗LDO作为电源,其中TPS7A2033为主要电源,处于常开状态;而TPS7A0333专为指纹模块供电,并且可控关闭;这两款LDO均为超低IQ(静态电流) LDO,关断状态下静态电流仅有3nA;</p>
<p>是否存在指纹模块被替换以破解认证机制的可能?答案是不会的,PocketTrustee选用的ZW0919支持口令认证和非对称加密,更换指纹模块将无法识别;</p>
<p>值得注意的是,得益于超低功耗设计,PocketTrustee的电池也可以选用锂离子超级电容(型号为LIC0825Q3R8107),若使用超级电容,则可以增大充电电流,并且循环寿命将是普通锂电池的数十倍;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">5、软件部分</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">PocketTrustee的软件也很有意思,在这颗256KB Flash 64KB SRAM的MCU上,可能是无限的!让我们慢慢道来;</p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.1、软件特性概述</h4>
<p>PocketTrustee固件工作不依靠RTOS,并针对性写了一套GUI(我们稍后详细介绍);</p>
<p>PocketTrustee选择的工具链是CMake+ARM-GCC+Ninja,主要程序选择C++编写,全开源工具链也不失为本项目的一大特点;</p>
<p>PocketTrustee的软件长期更新,你可以在Github获取最新的固件;</p>
<p>PocketTrustee有一些安全性设计,使得我无法直接提供烧录文件,你必须根据你使用的芯片的特性修改源代码,编译出独属于你的PocketTrustee设备的固件,这部分我们稍后介绍;</p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.2、GUI</h4>
<p>虽然PocketTrustee是一个数字钥匙,开发重心应该是安全功能,但我却在GUI的设计上头疼了很久;</p>
<p>大部分的GUI库,即使是轻量级GUI库,都是为彩屏设计,集成了大量控件,对于单色屏(尤其是刷新率极低的墨水屏)非常不友好,并且源码占用大量flash;</p>
<p>因此我为PocketTrustee写了一个极简GUI,专为墨水屏设计,仅由一个cpp文件和一个头文件组成,且自由度极高(本身不带有任何控件,均由回调函数实现);</p>
<p>这个GUI占用了9.4K的静态内存(双缓冲,每一个缓存4736字节),不使用动态内存,目前在PocketTrustee上表现良好;</p>
<p>STM32L443的SRAM分为SRAM1(48KB)和SRAM2(16KB),PocketTrustee将SRAM2用于显存和FS缓存,而堆栈和全局变量存储在SRAM1中;</p>
<p><img src="//image.lceda.cn/pullimage/yJgpb1PgmqfcsQwJiRnauTUwKr3vxs8ZB8W2oszJ.png" width="1066" height="796"></p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.3、AES密钥保护</h4>
<p>不考虑AES算法被爆破,只要我们能安全存储AES密钥,那么其他数据就能被安全存储;依靠L系列MCU超低功耗的特性,PocketTrustee选择MCU永不断电,并且将AES密钥存储在SRAM中;</p>
<p>这种操作带来的好处是,常规方法将难以提取出密钥,保证了安全性,但同时意味着一旦MCU复位,数据将全部丢失;</p>
<p>考虑到有可能因为电量耗尽而复位的情况,PocketTrustee提供了数据备份功能,可以通过上位机工具恢复数据;</p>
<p>保存在SRAM中的密钥还受到MPU的保护,同时Flash具有读保护和Firewall保护,从设备中窃取密钥技术难度大;</p>
<p><img src="//image.lceda.cn/pullimage/rUp4KxI6Q4Hi4IMODl2ioUinSnlw3KImE2PVb8yN.png" width="1001" height="722"></p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.4、Manchester解码</h4>
<p>ID卡号通过Manchester编码载波于125Khz信号上,要读出卡号,就需要Manchester解码;</p>
<p>STM32的COMP会在每一个上升下降沿触发中断,通过HAL_COMP_GetOutputLevel可以得到此时的LF_IN电平;</p>
<p>LPTIM提供一个4us的时基,配合COMP,很容易读出数据;</p>
<p><img src="//image.lceda.cn/pullimage/60Fbde7TeSNdnlwJQNC3UgQYpeoQcgx4g7Q9Gfck.png" width="784" height="844"></p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.5、USB-Device</h4>
<p>PocketTrustee的USB协议栈是CherryUSB,这是一个国创开源的USB协议栈,详细信息请见<a href="https://github.com/cherry-embedded/CherryUSB" target="_blank">Github - CherryUSB</a></p>
<p>我们主要使用到CDC和HID class,分别用于与上位机通讯和模拟键盘输入;</p>
<p>使用CDC与上位机通信有一个优势,即不需要安装驱动,兼容性更好;</p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.6、外部Flash与LittleFS</h4>
<p>GUI所使用的资源,以及用户数据全部存储与外部Flash,并使用LittleFS进行管理;</p>
<p>LittleFS是arm开源的文件系统,支持掉电保护(虽然我们用不上)和擦写均衡;</p>
<p>PocketTrustee的文件加密在前端进行,这意味着加密文件的信息是开放的,但只能读出被加密内容,这种设计避免了不必要的加密,同时确保数据安全;</p>
<p><img src="//image.lceda.cn/pullimage/Boz3zBgnzeRuaU6sQmBzr5sV4w0NsCido3RuRrhr.png" width="864" height="278"></p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.7、如何编译,刷写固件</h4>
<p>为了便于评委评估项目,附件区提供了拍摄演示视频时所使用的固件的源代码;</p>
<p><strong>如果你打算复刻PocketTrustee,请前往Github下载最新版本源码进行编译,并参照Github上的编译指南,而不是使用这里的过时版本;</strong></p>
<p>对于安全设备,使用最新固件非常重要,请一定注意,以下编译方法仅适用于附件区提供的源码;</p>
<ol>
<li>下载工具链<br>前往ST官网下载<a href="https://www.st.com/en/development-tools/stm32cubeclt.html" target="_blank">STM32 CubeCLT</a>并安装,如果你已经预先安装了CMake,ARM-GCC和ninja则可以跳过此步;</li>
<li>下载刷写工具(可选)<br>前往ST官网下载<a href="https://www.st.com/en/development-tools/stm32cubeprog.html" target="_blank">STM32 CubeProgrammer</a>,实际上Cube CLT集成了CLI版本的CubeProgrammer,如果你愿意,也可以选择使用CLI版本的CubeProgrammer;</li>
<li>调整源码并编译<br>从Github上克隆最新源码,打开<br>打开终端并转到项目目录下,逐行执行以下命令<br><code>cmake --preset "Release"<br></code><code>cd ./build/Release<br>ninja</code><br>在build/Release文件夹下的PocketTrustee.elf即为编译产物</li>
<li>烧录固件<br>使用Cube Prog将固件上传到设备上;</li>
<li>使用上位机初始化<br>使用USB连接设备到电脑,然后使用上位机工具初始化设备;</li>
</ol>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.8、PocketTrusteeCLI与PocketTrusteeController</h4>
<p>PocketTrusteeCLI是用于管理PocketTrustee的命令行工具,使用Python编写,你可以在Github上找到PocketTrusteeCLI的源码;</p>
<p>使用CLI工具可以初始化设备,添加/删除/编辑卡片和密码,管理TOTP,以及名片WiFi信息等</p>
<p>PocketTrusteeController是一个基于WinUI 3的图形化PocketTrustee管理软件,目前正在开发;相比于CLI工具,图形化工具更加精美,易于上手;</p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">4.9、SuperDebug</h4>
<p>SuperDebug是用于调试PocketTrustee的FS的工具,使用Python编写;SuperDebug可以直接访问外部Flash,便于修改资源文件进行调试;</p>
<p><strong>如果你不知道SuperDebug是用来干什么的,说明你不需要开启它;</strong></p>
<p>为了开启SuperDebug,你需要在编译时添加宏,并且将默认的初始化文件修改为Debug版,随后在菜单中即可找到SuperDebug选项;</p>
<p>SuperDebug的上位机操作指南请见tools/lfs_debugger目录下的README文件;</p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">6、BOM清单</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">元器件BOM表请见附件区BOM.xlsx,这里仅补充其他配件的参考购买方式;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">墨水屏选用了佳显公司的GDEY029T94,296x128分辨率,4灰度,在淘宝上有佳显的自营店,目前39元可以拿下;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">指纹模块是海凌科公司的ZW0919,球形无灯指纹模块,淘宝上也有自营店,目前15元可以拿下;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">电池可以选择大容量的锂离子聚合物电池,也可以选择超级电容(型号为LIC0825Q3R8107),如果你选择超级电容,那么可以适当增加充电电流(降低Isel电阻的值);</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">外壳直接在嘉立创3D打印,树脂材质和尼龙材质均可,总共不到20元;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">NFC天线和低频天线可以自行选购,需要注意的是记得根据线圈电感修改谐振电容大小;我自己选用的是漆包线线圈,NFC线圈尺寸为30x35mm,低频线圈为32mm圆形线圈(电感345uH),在淘宝上很容易找到定制商家,这里不贴链接;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">7、大赛LOGO验证</h3>
<hr class="horizontal-splitline normal-bold-2">
<p style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">8、演示您的项目并录制成视频上传</h3>
<hr class="horizontal-splitline normal-bold-2">
<p style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。</span></p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">9、复刻指南</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="text-decoration: line-through;">哪个工科男不想拥有一块PocketTrustee,</span>让我手把手教你复刻!</p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">9.1、打板,打印外壳</h4>
<p>下载附件区的Gerber制版文件或者自行导出进行打样,推荐使用沉金工艺;<span style="text-decoration: line-through;">(每月可以白嫖嘉立创的4层沉金)</span></p>
<p>下载附件区的外壳文件(两个),然后进行打印,推荐嘉立创的LEDO 6060树脂(精度高,光滑,但手感差)或1172 Pro尼龙(精度低,粗糙,但手感较好);</p>
<p><span style="text-decoration: line-through;">打板和3D打印在嘉立创都可以白嫖,我们默认这步不要钱;</span></p>
<h4 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">9.2、采购元器件,焊接</h4>
<p>建议PCB打样时也开钢网,有钢网后续焊接会方便很多;</p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">10、开源精神:共享,贡献</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">PocketTrustee的源码目前由我本人维护,长期更新,<span style="text-decoration: line-through;">请大家在Github上给我一个Star</span>,留意后续更新;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">如果你发现了源码中的Bug,或者有功能新点子,可以通过Issue反馈给我,我看到后会及时处理;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">如果不会使用Github,也可以加入我们的Issue&Ideas群,在这里反馈问题或新点子;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">为Repo贡献可直接PR,我会在评估代码后拉取PR;</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
评论(1)