duzhuo's-blog

学无止境

2024.09.26

  1. 熊德 大败 PA天怒串起来了
  2. 熊德 大败 酱油风行对线抢刀不勾兵不推塔
  3. 熊德 输 我是菜逼带错命石了
  4. 熊德 输 节奏不对
  5. 熊德 宰猪 拆塔老快了

2024.09.27

  1. 炼金 被火枪保享福 gg
  2. 熊德 畜生宙斯还在玩魔晶分身斧 敌法无输出
  3. 熊德 4v5打了40min两个盾拆掉高地

设置方法

  • root用户
1
2
echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
  • 其他有sudo权限的用户
1
2
echo exit 101 | sudo tee /usr/sbin/policy-rc.d
sudo chmod +x /usr/sbin/policy-rc.d
  • 以安装vsftpd为例
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
44
45
46
47
48
49
50
root@myLaptop:~# echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
root@myLaptop:~# apt install vsftpd

将要安装:
vsftpd

摘要:
升级:0,安装:1,卸载:0,不升级:9
下载大小:142 kB
所需的空间:352 kB / 131 GB 可用

获取:1 https://mirrors.tuna.tsinghua.edu.cn/debian sid/main amd64 vsftpd amd64 3.0.3-13.1 [142 kB]
已下载 142 kB,耗时 0秒 (289 kB/s)
正在预设定软件包 ...
正在选中未选择的软件包 vsftpd。
(正在读取数据库 ... 系统当前共安装有 799342 个文件和目录。)
准备解压 .../vsftpd_3.0.3-13.1_amd64.deb ...
正在解压 vsftpd (3.0.3-13.1) ...
正在设置 vsftpd (3.0.3-13.1) ...
Created symlink '/etc/systemd/system/multi-user.target.wants/vsftpd.service''
/usr/lib/systemd/system/vsftpd.service'.
/usr/lib/tmpfiles.d/vsftpd.conf:1: Line references path below legacy directory /
var/run/, updating /var/run/vsftpd/empty → /run/vsftpd/empty; please update the
tmpfiles.d/ drop-in file accordingly.
invoke-rc.d: policy-rc.d denied execution of start.
正在处理用于 man-db (2.13.0-1) 的触发器 ...
Scanning processes...
Scanning candidates...
Scanning processor microcode...
Scanning linux images...

Running kernel seems to be up-to-date.

The processor microcode seems to be up-to-date.

Restarting services...
Service restarts being deferred:
systemctl restart sddm.service

No containers need to be restarted.

User sessions running outdated binaries:
duzhuo @ session #3: cinnamon-launch[6978]

No VM guests are running outdated hypervisor (qemu) binaries on this host.
root@myLaptop:~# systemctl status vsftpd
○ vsftpd.service - vsftpd FTP server
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; preset: e>
Active: inactive (dead)

相关阅读

~jpetazzo/Use policy-rc.d to prevent services from starting automatically

debian-policy/starting-system-services

阅读全文 »

数据库中加密存储密码和验证密码的步骤

以下内容来自ChatGLM

存储密码

  1. 生成盐(Salt)
    • 为每个用户生成一个随机盐。
  2. 密码与盐结合
    • 将用户密码与盐值结合。
  3. 加密
    • 使用上述算法对结合后的密码进行加密。
  4. 存储
    • 将加密后的密码(哈希值)和盐存储在数据库中。

验证密码

  1. 从数据库中取出盐和哈希值

    • 在用户尝试登录时,系统需要从数据库中检索与该用户账户关联的盐值和之前存储的哈希密码。
  2. 使用相同的算法和盐对用户输入的密码进行加密

    • 将用户输入的密码与从数据库中取出的盐值结合,然后使用相同的加密算法对结合后的密码进行加密。
  3. 比较加密后的值与数据库中的哈希值是否相同

    • 将新计算出的哈希值与数据库中存储的哈希值进行比较。如果两者匹配,说明用户输入的密码正确;如果不匹配,说明密码错误。

关于盐:

内容来自 https://www.cnblogs.com/xjnotxj/p/12716981.html

  • 盐不能太短
  • 盐不能重复使用(否则一破解,所有的都遭殃)
  • 盐随机变化(例如,虽用户名不重复,但用户名不能拿来当盐)

TypeScript 代码实现

阅读全文 »

前两天尝试写一个给jellyfin服务器添加演员信息的程序,读issue和参考别人的代码的时候发现很多验证的步骤比较过时,故自己写一点留档参考。

swagger api文档 http://localhost:8096/api-docs/swagger

在请求头添加验证 https://gist.github.com/nielsvanvelzen/ea047d9028f676185832e51ffaf12a6f

服务端创建api密钥 http://localhost:8096/web/#/dashboard/keys

userId获取 http://localhost:8096/web/#/dashboard/users 点击你想获得userId的用户并在url的query部分查看

例如 http://192.168.2.202:8096/web/#/dashboard/users/profile?userId=99e7058d92d34f74bd369728f432a0e2

代码参考

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
import requests
import json

jellyfin_apiKey = "3287930a2ab9422eaa6e1dc4a5f23c24"
jellyfin_host = "http://192.168.2.202:8096"
jellyfin_userId = "99e7058d92d34f74bd369728f432a0e2"

jellyfin_headers = {
'accept': '*/*',
"Authorization": f'MediaBrowser Token="{jellyfin_apiKey}"',
"Content-Type": "application/json",
}

# 获取全部演员信息,返回json
response = requests.get(f'{jellyfin_host}/Persons?userId={jellyfin_userId}',headers=jellyfin_headers)
dict = response.json()
print(dict)

# 获取单个演员信息
actor_name = '波多野結衣'
response = requests.get(f'{jellyfin_host}/Persons/{actor_name}?userId={jellyfin_userId}',headers=jellyfin_headers)
dict = response.json()
print(dict)
# 修改演员Overview并提交
actor_id = dict["Id"]
# Overview支持html标签
dict["Overview"] = """1988年5月24日生まれ<br>
身長<b>163cm</b><br>
<b>B88cm</b><br>
<b>W59cm</b><br>
<b>H85cm</b><br>
ブラ <b>Eカップ</b>"""
response = requests.post(f'{jellyfin_host}/Items/{actor_id}?userId={jellyfin_userId}', headers=jellyfin_headers,json=dict)
# 成功返回204
print(response.status_code)

喜报 openssh远程代码执行漏洞CVE-2024-6387 Debian发行版已经全部修补

Screenshot_20240704_081856.png

注意: 有些使用DD重装脚本安装的Debian bookworm 没有开启 bookworm-security源,需要手动开启。

前言

Ubuntu发行版的终端广告(Bug #1950692)和snap(Mint Blog中的观点)一直是令人诟病的内容,也是我切换到Debian的原因。

但是,今天还是要注册一下Ubuntu Pro,毕竟还有一些以前安装的机器在运行着已经EOL的Ubuntu版本,需要安装一些安全补丁。

pic

操作

打开Ubuntu Pro的网站 https://ubuntu.com/pro

点击Get Ubuntu Pro now并选择Myself,点击Register登录帐号确认。

获取Token,复制下面的命令。

Screenshot_20240702_201037-1.png

这里以**Ubuntu 18.04 LTS (Bionic Beaver)**为例:

阅读全文 »

在查看Python代码中,经常会看到类似这样的代码:

1
2
3
4
5
6
# module.py
def example() -> None:
print("This is an example.")

if __name__ == '__main__':
example()

这里直接运行文件可以获得输出内容:

1
2
$ python3 module.py
This is an example.

现在我们在另一个文件中将module.py作为模块导入并运行:

1
2
3
4
# main.py
from module import example

example()
1
2
$ python3 main.py
This is an example.

我们修改module.py文件,在测试中我们经常会这么写:

1
2
3
4
5
# module.py
def example() -> None:
print("This is an example.")

example()

分别运行module.py main.py

阅读全文 »
0%