mount squashfs: Operation not permitted

Need recompile Linux kernel with squashfs support.

1
2
3
4
CONFIG_SQUASHFS
Location:
	-> File systems
		-> Miscellaneous filesystems (MISC_FILESYSTEMS [=y])

Or use user space cmd

1
squashfuse ./sysrcd.dat sysrcd_dir

SecureFX连接失败

连接linux主机A失败,返回

i Available Remote Kex Methods = curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
i Selected Kex Method =

连接linux主机B成功,返回

i Available Remote Kex Methods = curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
i Selected Kex Method = diffie-hellman-group14-sha1

原因是主机A中的OpenSSH升级了,可用以下命令确认

1
ssh -V

解决办法为,在/etc/ssh/sshd_config文件尾部加入

1
2
3
#Ciphers aes128-cbc
#MACs hmac-md5,hmac-sha1
KexAlgorithms diffie-hellman-group14-sha1

重启sshd

1
service sshd restart

refer to:
https://blog.csdn.net/lk_db/article/details/50964912

验证IPSec抗重放攻击

linux内核xfrm参数replay-window用于设定抗重放攻击效果。

replay-window为0表示不启用抗重放攻击,大于0时表示当前esp/ah包活动序列窗口大小,序号太旧的包因赶不上活动窗口而被丢弃或回复失败包。

在基于

StrongSwan PSK RSA


连通的环境下。

在C机器中编辑/etc/strongswan.d/charon.conf,更改replay-window值。
重启strongswan并启动连接后,可能通过命令

1
ip xfrm state

查看strongswan有没有将参数值设定到内核中。

在B机器中

1
apt install tcpreplay

在B机器中启动两个wireshark进程,分别抓包vmnet2和vmnet3。

当B和C中的strongswan都启动并连通后,在A中ping D的ip。

此时在B中抓vmnet3上的esp包,抓了几个后,点击对应wireshark窗口菜单

1
File/Exprt Specified Packet

将这些esp包保存为文件

1
/tmp/esp-b2c.pcapng

在A中停止ping D的ip。

在B的bash中执行

1
tcpreplay -i enp2s6 /tmp/esp-b2c.pcapng

其中enp2s6是网卡vmnet3对应的识别名。

可以看到,
当C中的replay-window参数设为0时,B中的vmnet2上抓不到模拟重放的icmp ping包。
当C中的replay-window参数不为0时,B中的vmnet2上会抓到模拟重放的icmp ping包,并且方向是10.2.0.10至10.1.0.10。
一旦重启B或C中的strongswan,使用旧的esp-b2c.pcapng文件重放时,不管C中的replay-window取何值,B中的vmnet2上都不会出现模拟重放包。

Strongswan中验证NATT

在基于

StrongSwan PSK RSA


连通的环境下。

四台虚拟机ABCD,三段Host Only虚拟网络vmnet2、vmnet3、vmnet4,DHCP都禁掉。

1
2
3
4
5
6
7
8
9
10
A
vmnet2: 10.1.0.10/24 gw 10.1.0.2
B
vmnet2: 10.1.0.2/24
vmnet3: 192.168.0.12/24  <--这里变了
C
vmnet3: 192.168.0.3/24
vmnet4: 10.2.0.2/24
D
vmnet4: 10.2.0.10/24 gw 10.2.0.2

在B的bash中执行

1
2
iptables -t nat -A POSTROUTING -s 192.168.0.12 -j SNAT --to-source 192.168.0.2
iptables -t nat -A PREROUTING -d 192.168.0.2 -j DNAT --to-destination 192.168.0.12

在B中用ifconfig命令查看vmnet3的hwaddr,比如为00:0c:29:5a:fc:8e。
在C的bash中执行

1
arp -s 192.168.0.2 00:0c:29:5a:fc:8e

修改B的ipsec.conf中指定conn下的left为192.168.0.12。
而仍将C的ipsec.conf中指定conn下的right设为192.168.0.2。

之后再重启BC中的strongswan并连接会看到第5条ISAKMP消息开始端口都走4500了。

医学英语备忘录

1
2
3
4
5
6
7
malleolus: 踝
tibia: 胫骨
tuberosity: 粗隆
fibula: 腓骨
phlegm: 粘液
bile: 胆汁
Etymology: 词源

gdb调试有管道的命令行

以pcre2调试为例

1
2
3
4
5
6
7
8
9
#!/bin/sh
 
cd `pwd`/installed/bin
 
mkfifo /tmp/pcre
echo "<h1>hello</h1>" > /tmp/pcre &
 
gdb ./pcre2grep -ex 'b main' -ex 'r -o "<.*>" < /tmp/pcre'
rm /tmp/pcre

refer to:
http://www.voidcn.com/article/p-migwptlv-bsq.html

西欧名字中的单词

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
van = von = de = of = from
la = le = les
Boer: 农民
Bakker: 面包师
Schoenmaker: 鞋匠
Hoedemaker: 制帽匠
Visser: 渔夫
Kuip: 篾匠
Bruier: 酿酒师
Bosman: 伐木工
Beek: 小溪
Dam: 坝
Dijk: 堤
Hoek: 角落
Berg: 小山包
Philip: 爱马者
Paul: 小个子
Patrick: 高贵的
Rex: 帝王
Richard/Ricky: 严厉的统治

refer to:
https://zhidao.baidu.com/question/111534700.html

gcc多个include目录的优先级

gcc默认include路径

1
2
`gcc -print-prog-name=cc1` -v
`g++ -print-prog-name=cc1` -v

优先级由大到小对应下表中的从上到下

1
2
3
4
5
命令行-I指定,前面的大于后面的
CPATH
CPLUS_INCLUDE_PATH	#只对c++文件起作用
C_INCLUDE_PATH		#只对c文件起作用,即C_INCLUDE_PATH和CPLUS_INCLUDE_PATH不会同时起作用
gcc默认include路径

refer to:
http://www.3scard.com/index.php?m=blog&f=view&id=42