@@ -164,7 +164,7 @@ function check_dependencies() {
164
164
log " INFO" " 更新包索引..."
165
165
apt update -y & > /dev/null || apt-get -o Dpkg::Options::=" --force-confdef" -o Dpkg::Options::=" --force-confnew" dist-upgrade -y & > /dev/null
166
166
167
- local required_packages=(" proot" " tar" " axel " " wget" " pv" )
167
+ local required_packages=(" proot" " tar" " aria2 " " wget" " pv" )
168
168
local missing_packages=()
169
169
170
170
# 检查缺失的包
@@ -203,10 +203,10 @@ function get_rootfs() {
203
203
204
204
log " INFO" " 开始下载 rootfs..."
205
205
ROOTFS_URL=" ${BASE_URL} /${IMAGE_NAME} "
206
- if ask " 是否使用多线程(axel )" " Y" ; then
207
- if command_exists axel ; then
208
- log " INFO" " 使用 axel 多线程下载: ${ROOTFS_URL} "
209
- axel -n 4 -a " ${ROOTFS_URL} " || error_exit " 下载失败"
206
+ if ask " 是否使用多线程(aria2 )" " Y" ; then
207
+ if command_exists aria2 ; then
208
+ log " INFO" " 使用 aria2 多线程下载: ${ROOTFS_URL} "
209
+ aria2c -x 16 -s 16 -k 1M " ${ROOTFS_URL} " || error_exit " 下载失败"
210
210
else
211
211
log " WARN" " 未发现axel使用wget下载: ${ROOTFS_URL} "
212
212
wget -c " ${ROOTFS_URL} " --progress=bar:force 2>&1 | while read -r line; do
@@ -234,33 +234,51 @@ function get_rootfs() {
234
234
}
235
235
236
236
function verify_sha() {
237
- log " INFO" " 开始下载rootfs验证文件..."
238
- wget -c " ${BASE_URL} /SHA256SUMS"
239
- if [ -f " SHA256SUMS" ]; then
240
- # 从SHA256SUMS中提取该文件的哈希值
241
- EXPECTED_HASH=$( grep " $IMAGE_NAME " SHA256SUMS | awk ' {print $1}' )
242
- # 计算实际哈希值
243
- log " INFO" " 计算 SHA-512 哈希值..."
237
+ log " INFO" " 开始下载 rootfs 验证文件..."
238
+ wget -q -c " ${BASE_URL} /SHA256SUMS" -O SHA256SUMS
239
+
240
+ if [ -f " SHA256SUMS" ]; then
241
+ FILE_NAME=$( basename " $IMAGE_NAME " )
242
+ log " INFO" " 提取文件名: $FILE_NAME "
243
+
244
+ # 构造匹配模式(移除日期)
245
+ # 例如:kali-nethunter-rootfs-minimal-arm64.tar.xz → kali-nethunter-*-rootfs-minimal-arm64.tar.xz
246
+ MATCH_PATTERN=$( echo " $FILE_NAME " | sed ' s/kali-nethunter-/kali-nethunter-[0-9.]*-/' )
247
+
248
+ # 提取哈希值(用 grep 正则匹配)
249
+ EXPECTED_HASH=$( grep -E " ${MATCH_PATTERN} $" SHA256SUMS | awk ' {print $1}' )
250
+
251
+ if [ -z " $EXPECTED_HASH " ]; then
252
+ error_exit " 无法从 SHA256SUMS 中找到对应的哈希值 (模式: $MATCH_PATTERN )"
253
+ fi
254
+
255
+ log " INFO" " 计算 SHA-256 哈希值..."
244
256
ACTUAL_HASH=$( sha256sum " $IMAGE_NAME " | awk ' {print $1}' )
257
+
258
+ printf " 预期: %s\n" " $EXPECTED_HASH "
259
+ printf " 真实: %s\n" " $ACTUAL_HASH "
260
+
245
261
if [ " $EXPECTED_HASH " = " $ACTUAL_HASH " ]; then
246
262
log " SUCCESS" " Rootfs SHA-256 哈希验证通过"
247
263
return 0
248
264
else
249
- rm -f " $IMAGE_NAME "
250
265
error_exit " Rootfs 文件已损坏或版本不匹配,请重新下载"
251
266
fi
252
267
else
253
- log " WARN" " 未找到验证文件, 跳过验证"
268
+ log " WARN" " 未找到验证文件, 跳过验证"
254
269
return 0
255
270
fi
256
271
}
257
272
273
+
274
+
258
275
function extract_rootfs() {
259
276
if [ -z " $KEEP_CHROOT " ]; then
260
277
log " INFO" " 开始解压 rootfs..."
261
278
262
279
# 显示解压进度
263
- pv " $IMAGE_NAME " | proot --link2symlink tar -xf - 2> /dev/null || {
280
+ pv " $IMAGE_NAME " | proot --link2symlink tar -xJf - \
281
+ --no-same-owner --no-same-permissions --exclude=' dev/*' || {
264
282
error_exit " 解压失败,请检查镜像文件是否完整"
265
283
}
266
284
@@ -352,12 +370,9 @@ function create_kex_launcher() {
352
370
cat > $KEX_LAUNCHER << - EOF
353
371
#!/bin/bash
354
372
355
- # 清理锁文件与 VNC 缓存
356
- rm -f $CHROOT /tmp/.X*-lock
357
- rm -rf $CHROOT /home/kali/.vnc/*
358
-
359
-
360
373
function start-kex() {
374
+ export FONTCONFIG_PATH=/etc/fonts
375
+ export FONTCONFIG_FILE=/etc/fonts/fonts.conf
361
376
if [ ! -f ~/.vnc/passwd ]; then
362
377
passwd-kex
363
378
fi
@@ -373,6 +388,8 @@ function start-kex() {
373
388
}
374
389
375
390
function stop-kex() {
391
+ rm -f /tmp/.X*-lock
392
+ rm -f /tmp/.X11-unix/X*
376
393
vncserver -kill :1 | sed s/"Xtigervnc"/"NetHunter KeX"/
377
394
vncserver -kill :2 | sed s/"Xtigervnc"/"NetHunter KeX"/
378
395
return $?
@@ -490,7 +507,7 @@ function update_sources_list() {
490
507
log " SUCCESS" " Kali 软件源已更新为清华镜像"
491
508
if [ " $wimg " = " nano" ] || [ " $wimg " = " minimal" ]; then
492
509
log " INFO" " 当前非完整版,正在安装kex服务"
493
- nh -r apt update && nh -r apt install -y tightvncserver kali-desktop-xfce
510
+ nh -r apt update && nh -r apt install -y tightvncserver kali-desktop-xfce tigervnc-standalone-server x11-utils x11-xserver-utils xfonts-base
494
511
fi
495
512
else
496
513
log " WARN" " 未找到 Kali sources.list 文件"
@@ -512,7 +529,7 @@ function print_banner() {
512
529
printf " ${blue} ## ##${reset} \n"
513
530
printf " ${blue} #### ############# NetHunter ####################${reset} \n"
514
531
printf " ${blue} #### ############ (网络猎人) ####################${reset} \n"
515
- printf " ${blue} 脚本优化: 东经雨 5.0 ${reset} \n"
532
+ printf " ${blue} 脚本优化: 东经雨 5.8 ${reset} \n"
516
533
printf " ${yellow} 技术支持: ChatGPT, Claude, DeepSeek${reset} \n"
517
534
printf " 使用则代表同意协议:\n"
518
535
printf " 作者已经脚本参与者不承担因脚本引发的任何法律问题,均由使用者自行承担\n\n"
0 commit comments