NXP 提供的 LPCScrypt 工具支持 Linux macOS 和 Windows
https://www.nxp.com/design/microcontrollers-developer-resources/lpcscrypt-v2-1-2:LPCSCRYPT
官网给的 Linux 版本的 LPCScrypt.deb.bin 工具看名称是 Debian/Ubuntu 衍生版才能安装使用,
我 Arch 用户或其他 Linux 发行版用户想使用怎么办?
---- 开始骚操作了------
1. 注册 NXP 官网下载相应的 Linux 版本文件
2. 用文本编辑器打开看了下里面的内容
前半部分是 shell 脚本 从 499 行开始就是乱码了
第 437 行有这个提示:offset=`head -n 498 "$0" | wc -c | tr -d " "`
推测 NXP 是使用 gzexe 进行了压缩和简单的加密处理
3. 开始 bin 解密
tail -n +499 lpcscrypt-2.1.2_57.x86_64.deb.bin > lpcscrypt-2.1.2_57.x86_64.deb
得到一个 deb 包(不知道是不是正常的 deb 包,进行下一步验证)
4. 解压 deb 包
bsdtar -xf lpcscrypt-2.1.2_57.x86_64.deb
解压成功(狗头保命
5. 解压 data.tar.gz
mkdir -p build
tar -xf data.tar.gz -C build
得到 NXP 的编译后的二进制文件
ls usr/local/lpcscrypt-2.1.2_57/
bin docs eula images probe_firmware scripts
6. 这下就能进行 AUR 打包处理了
编译 PKGBUILD 打包脚本
# Maintainer: taotieren <admin@taotieren.com>
# Contributor:
pkgname="lpcscrypt-bin"
pkgver=2.1.2
pkgrel=1
pkgdesc="LPCScrypt is the recommended tool for programming the latest versions of CMSIS-DAP and J-Link firmware onto boards with Link2/LPC-Link2 debug probes."
arch=("x86_64")
makedepends=('imagemagick')
depends=('jlink-software-and-documentation')
optdepends=()
conflicts=()
url="https://www.nxp.com/design/microcontrollers-developer-resources/lpcscrypt-v2-1-2:LPCSCRYPT"
license=('Commercial' 'Apache-2.0' 'BSD-4-clause' 'BSD-3-clause' 'LGPLV2.1' 'GPLV2' 'Zlib')
options=(!strip)
_pkgver_ext=${pkgver}_57
_pkg_file_name=${pkgname%-bin}-${_pkgver_ext}.${arch}.deb.bin
_deb_file_name=${pkgname%-bin}-${_pkgver_ext}.${arch}.deb
_DOWNLOADS_DIR=`xdg-user-dir DOWNLOAD`
if [ ! -f ${PWD}/${_pkg_file_name} ]; then
if [ -f $_DOWNLOADS_DIR/${_pkg_file_name} ]; then
ln -sfn $_DOWNLOADS_DIR/${_pkg_file_name} ${PWD}
else
msg2 ""
msg2 "The package can be downloaded here: "
msg2 "Please remember to put a downloaded package ${_pkg_file_name} into the build directory ${PWD} or $_DOWNLOADS_DIR"
msg2 ""
fi
fi
source=("local://${_pkg_file_name}")
sha256sums=('379c63b788a72e64571af870d760ad6b3be32e4c863d29ca58276f750e416750')
noextract=(${_pkg_file_name})
prepare(){
cd "$srcdir"
tail -n +499 ${_pkg_file_name} > ${_deb_file_name}
mkdir -p build
bsdtar xf ${_deb_file_name} -C build
bsdtar xf build/${_deb_file_name} -C build
}
package() {
cd "$srcdir"
msg2 'Installing LPCScrypt'
tar xf "build/data.tar.gz" -C "${pkgdir}/"
mv "${pkgdir}/lib" "${pkgdir}/usr"
msg2 'Instalation of binary file'
install -Dm0755 /dev/stdin "${pkgdir}/usr/bin/${pkgname%-bin}" <<END
#!/bin/sh
/usr/local/lpcscrypt-2.1.2_57/bin/lpcscrypt "\$@"
END
msg2 'Instalation of license file'
install -dm0755 "${pkgdir}/usr/share/licenses/${pkgname%-bin}/"
cp -rv "${pkgdir}/usr/local/lpcscrypt-2.1.2_57/eula" "${pkgdir}/usr/share/licenses/${pkgname%-bin}/"
}
#
# makepkg --printsrcinfo > .SRCINFO
#
# vim: set ts=8 sw=8 tw=0 noet:
7. 上传到 AUR 仓库
https://aur.archlinux.org/packages/lpcscrypt-bin/
离线
这个不错,理论上应该按照这个方法所有发行版都能用?
是的,只要能按照这个解密流程将 deb 包提出出来再进行解压就行了,其他 linux 也可以参考这个流程
离线
由于论坛不支持 markdown 编辑器,完整的排版再这里:
离线