Linux使用杂记

本篇文章主要是整理了一下自己电脑桌面上的文件Linux常识.txt中的内容。这个文件已经在我桌面上很长时间了。从Windows到Deepin再到MacOS。这里面主要记载的是在日常生活中使用Linux时遇到的各种各样的问题以及解决方法(当然也有其他的内容)。

比如:你想用某个命令工具,但是不知道该使用哪个包名进行安装;运行某个命令后,产生了报错,该如何解决这个报错;或者一些比较常用的命令积累。主要的话就是这几部分内容。内容的话还是比较杂的。涉及的东西方面很多。

本文并不是希望你直接都照着做一遍,而是可以简答的过一遍,看一些自己感兴趣的部分即可,说不定你能在里面发现什么有趣的东西。其实本文最大的作用是在当使用搜索引擎查找某个问题的解决方法时,刚好点进这篇文章,然后找到了对应的解决方法。

这个文件对我而言的话,我一般是这样用的:当遇到常见的Linux问题时在这个文件中进行记录,当下次再遇到这个问题时,直接打开这个文件使用Ctrl + F进行关键字搜索就可找到对应的解决方法,十分的方便。我个人认为txt的打开速度十分的快,所以这也是我没用其他类型文件记录的原因。不过这么做的一个缺点就是没有插图,有些地方在别人看来描述的比较模糊。

需要说明的可能部分解决方法随着系统版本的更新已经不再使用,请酌情参考使用。

下面的话就是正文内容了。

1.查看软件包的依赖关系

1
sudo apt-cache depends 软件名

2.deepin添加kali更新源

1
2
3
4
5
6
7
8
9
vim /etc/apt/sources.list
添加==>
deb http://http.kali.org/kali kali-rolling main contrib non-free
deb-src http://http.kali.org/kali kali-rolling main contrib non-free
  
sudo apt update 
sudo apt upgrade 
解决公钥问题==>
sudo apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys 7D8D0BF6

3.安装arpspoof

1
sudo apt install dsniff

4.安装ipconfig

1
sudo apt install net-tools

5.nmap基础命令

nmap -sV  扫描常见1000个端口对应的服务
nmap -O   系统识别
namp -A   系统识别,端口扫描,应用程序版本号等探测

6.TTL值判断主机系统

1
2
Linux 1~64            
Windows 65~128

7.安装nc命令

1
sudo apt install netcat

8.Python调用系统函数

1
2
3
4
5
6
7
import os
import subprocess

os.system('ping -c 1 127.0.0.1')
arp=subprocess.check_output('arpspoof -i eth0 -t '+str(ip)+" "+str(ip1),shell=True)

#与第一段代码OS模块对比,你会发现subprocess语法比较复杂。但是你可以把命令执行内容存储到一个变量里面,并且你也可以把返回的内容写入到一个文件里面去。 

9.Python常识

1
2
python在打印txt文件时末尾如果会带有b' \r\n'
只要在后面加上.decode().strip()即可

10.Python str数值可以比较大小?

1
2
需强制将str字符串转换为其他类型
int(XXX)

11.Python常见基本数据类型

1
2
3
4
整数    int
浮点数  float  小数 
布尔    0或空为假   非空或非0为真
复数    例如2+3j   复数的标志是虚部以大写或小写j结尾  

12.Python连接msf的前提操作

1
2
#打开msf输入    
load msgrpc Pass=msf

13.命令安装的java位置

一般为: /usr/lib/jvm/jdk-11.0.2/

14.Ubuntu/Deepin/Kali卸载VMware

1
sudo vmware-installer --uninstall-product vmware-workstation

15.Ubuntu/Deepin/Kali解决VMWare-Tools安装失败问题

1
2
3
4
5
6
cd /usr/lib 
sudo ln -s libncursesw.so.6 libncursesw.so.5(先看一下当前目录下有没有libncursesw.so.6)

(PS:如果/usr/lib中没有libncursesw.so.6则按照下面的做)
cd /usr/lib 
sudo ln -s /lib/x86_64-linux-gnu/libncurses.so.6 ./libncursesw.so.5

16.pip安装包时使用国内源加速

#只需要使用-i参数指定国内源地址即可
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

17.git加速

1
2
3
4
vim /etc/hosts
添加:
151.101.72.249 github.global.ssl.fastly.net  
192.30.253.112 github.com

18.Linux挂载windows共享文件

1
2
3
4
5
6
7
sudo apt install nfs-common(nfs共享)
sudo apt install cifs-utils(win下的cifs共享)
sudo vim /etc/fstab 
//10.39.1.1/Deepin /home/mrx/Desktop/Win10/ cifs  user=mrx,pass="123456",file_mode=0777,dir_mode=0777 0 0 

临时挂载
sudo mount -t cifs -o username=mrx,password="123456",file_mode=0777,dir_mode=0777 //10.39.1.1/Deepin /home/mrx/Desktop/Win10/

19.iptables文件

1
vim /etc/sysconfig/iptables

20.Centos7安装python36及pip3

1
2
3
4
5
6
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安装
yum install python36
yum install python36-pip
pip3 install --upgrade pip

21.分解整数n

1
2
3
MRX@ThinkPad:~$ pip install factordb-pycli

MRX@ThinkPad:~$ factordb 6(要分解的数值)

22.Python常识

1
2
3
4
5
6
7
8
9
#开一个数n的r次方根
p=gmpy2.iroot(n,r)[0]

>>> import gmpy2
>>> n = 9
>>> r = 3
>>> p=gmpy2.iroot(n,r)[0]
>>> p
mpz(2)

23.解决ssh经常掉线问题

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
vim /etc/ssh/sshd_config
找到下面两行
#ClientAliveInterval 0
#ClientAliveCountMax 3
去掉注释,改成
ClientAliveInterval 30
ClientAliveCountMax 86400

这两行的意思分别是
(1)客户端每隔多少秒向服务发送一个心跳数据
(2)客户端多少秒没有相应,服务器自动断掉连接
重启sshd服务生效

24.进行md5计算

1
2
3
4
#对字符串进行md5计算
MRX@ThinkPad:~$ echo -n "xxx" | md5sum
#对文件进行md5计算
MRX@ThinkPad:~$ md5sum xxx.jpg

25.Python进行md5计算

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import hashlib

def get_md5(input_string):
    # 创建一个 md5 散列对象
    md5_hash = hashlib.md5()
    # 更新散列对象,需要将字符串转换为字节
    md5_hash.update(input_string.encode('utf-8'))
    # 获取十六进制表示的散列值
    hex_digest = md5_hash.hexdigest()
    return hex_digest
# 使用示例
input_data = "xxx"
md5_result = get_md5(input_data)
print(md5_result)

26.html空格

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
半方大的空白:
  

全方大的空白:
  

不断行的空白格:
  

键盘敲的一个空格:
 

27.将运行的进程转为稳定的后台服务

1
2
3
4
5
6
7
nohup hexo server -p 80 &
disown

#这里以运行hexo程序的命令"hexo server -p 80"为例,在前加上"nohup",在后加上"&",接着回车。
#回车后,当前运行的命令会挂到后台,这种情况下,断开ssh终端后,该命令会跟随消失了。
#我们可以接着执行下命令"disown",这样后台挂起的这个命令就被作为了服务进程稳定运行了,即使断开ssh终端,其也可以稳定运行。
#更多的解释可以去网上搜索相关的内容,或使用GPT获取详细解释。

28.切换gdb调试工具的pwndbg或peda插件

1
2
3
4
vim ~/.gdbinit

source /home/mrx/gef/gef.py
#source /home/mrx/peda/peda.py     #在不使用的前面进行井号注释

29.apt查找安装XX软件

1
sudo aptitude search xxx

30.Windows共享服务要开启的服务

1
2
3
4
5
(1)Function Discovery Resource Publication

(2)SSDP Discovery

(3)UPnP Device Host

31.Ubuntu防火墙ufw基本命令

1
2
3
4
ufw --help
ufw status 
ufw enable
ufw status verbose

32.zssh命令下传输文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
//前提:终端terminal中通过ssh连接到了远程服务器上

上传文件:   
rz         //接着按Ctrl+@ 
zssh>      //当前为本地目录  
zssh>pwd   //查看当前目录的路径 
zssh>ls    //查看当前目录下的文件
zssh>sz 123.txt  //上传当前目录下的123.txt到远程机器的当前目录  

下载文件:   
sz filename  //在远程机器上。启动sz, 准备发送文件  
             //接着按ctrl+@  
pwd  //查看当前目录的路径,cd 切换到合适的目录  
rz   //接收对应的文件   

33.Python共享当前路径下文件

1
2
3
4
#任何人访问你的 ip:8000 即可下载文件
python2 -m SimpleHTTPServer

python3 -m http.server

34.Centos7安装rar和unrar

1
2
3
4
5
6
7
wget https://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz
tar -zxvf rarlinux-x64-5.5.0.tar.gz
cd rar
cp -v rar unrar /usr/local/bin/

unrar解压文件(解压文件到当前目录)
unrar e xxx.rar 

35.linux写c程序并编译运行

 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
在 C 语言中,分步编译通常包括四个主要步骤:
预处理 (Preprocessing): 处理源代码文件中的预处理指令,如 #include 和 #define。
编译 (Compilation): 将预处理后的源代码转换成汇编语言。
汇编 (Assembly): 将汇编代码转换成机器代码,生成目标文件。
链接 (Linking): 将一个或多个目标文件与库文件链接在一起生成可执行文件。


第一步:预处理
gcc -E program.c -o program.i
#这个命令会生成预处理后的文件 program.i。

第二步:编译
gcc -S program.i -o program.s
#这个命令会编译预处理后的文件 program.i,生成汇编文件 program.s。

第三步:汇编
gcc -c program.s -o program.o
#这个命令会将汇编文件 program.s 转换成目标文件 program.o。

第四步:链接
gcc program.o -o program
#这个命令会将目标文件 program.o 链接成可执行文件 program。


#在实际操作中,你可以跳过生成汇编文件的步骤,直接从源码编译出目标文件(一步编译到位):
gcc -o program program.c

#或者直接下面的make命令也可以
make program

36.安装python对应版本的IPython

1
2
pip2 install Ipython
pip3 install Ipython

37.ubuntu指定文本编辑器

1
2
select-editor
#输入数字选择要使用的文本编辑器

38.proxychains终端代理

1
2
3
4
proxychains "要执行的命令"
例如:
proxychains curl www.google.com
proxychains apt update

39.解决vitual vscode与deepin的win+e快捷键冲突问题

1
xdg-mime default dde-file-manager.desktop inode/directory

40.deepin下安装8821ce无线网卡驱动

1
2
3
4
5
6
#下载:https://github.com/tomaspinho/rtl8821ce

sudo apt install module-assistant build-essential dkms
sudo m-a prepare
sudo ./dkms-install.sh
sudo modprobe 8821ce

41.安装蓝牙

1
2
sudo apt install bluetooth blueman
#重启电脑

42.自动运行conky实现桌面美化

1
点开软件conky,选择"齿轮"设置,选择"开机自启",设置"延迟5秒"

43.sheel脚本实现遍历字符串

1
2
3
4
foo=("a" "b" "c")
for i in ${foo[@]};do
echo $i
done

44.Python常识

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#二进制,八进制,十六进制表示方法

二进制以0b作为前缀0b1010
八进制以0o作为前缀0o173
十六进制以0x作为前缀0x1f

Python内置函数bin()oct()hex()分别用来将十进制数字转换成二进制八进制十六进制
Python内置函数int()函数可将其它进制的数据转换成十进制

bin(123)  oct(123)  hex(123)
int('1100',2)  int('17',8) int('2f',16)

45.Python常识

1
2
3
4
5
6
#ord()函数可以返回某个字符所对应的ASCII码       
ord('a')

#chr()函数可以返回某个十进制数所对应的ASCII码
#必须先转为整型数值,再用chr()函数转为字符串
chr(97)  

46.分离图片

1
MRX@ThinkPad:~$ foremost -v -i xxx.png

47.尝试提取图片等资源文件附加的内容

1
MRX@ThinkPad:~$ binwalk -e xxx.png

48.工具zsteg检测png,bmp的LSB隐写术

1
2
3
4
5
6
sudo apt install ruby
sudo apt install gem
sudo gem install zsteg

#提取LSB隐写所有可能的结果
zsteg -a xxx.png

49.7zip解压缩

1
2
#解压缩文件xxx.7z到当前目录
MRX@ThinkPad:~$ 7za x xxx.7z -r -o./

50.安装VNC viewer

1
2
3
4
5
#安装
sudo apt install xtightvncviewer

#使用
vncviewer 192.168.80.128

51.基于用户身份验证的wget

1
wget --http-user="zhangsan" --http-passwd="123456" http://www.a.com/download/start.flv

52.快速将16进制值转换ASCII码

1
2
3
4
#直接在终端中执行printf命令

➜  ~ printf "\x65\x6c\x66\x2e\x63\n"
elf.c

53.openssl rsa相关

1
2
3
4
5
#提取rsa公钥信息
openssl rsa -pubin -in /home/mrx/public.pem  -text -modulus

#根据私钥解密rsa密文
openssl rsautl -decrypt -inkey /home/mrx/pri.key -in /home/mrx/enc1 -out txt

54.查看系统类Unix基本信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
➜  ~ neofetch
                    'c.          mrx@MacBook-Pro.local
                 ,xNMM.          -------------------------
               .OMMMMo           OS: macOS 14.2.1 23C71 x86_64
               OMMM0,            Host: MacBookPro16,1
     .;loddo:' loolloddol;.      Kernel: 23.2.0
   cKMMMMMMMMMMNWMMMMMMMMMM0:    Uptime: 5 hours, 8 mins
 .KMMMMMMMMMMMMMMMMMMMMMMMWd.    Packages: 87 (brew)
 XMMMMMMMMMMMMMMMMMMMMMMMX.      Shell: zsh 5.9
;MMMMMMMMMMMMMMMMMMMMMMMM:       Resolution: 1792x1120@2x, 2560x1440@2x, 2560x1440@2x
:MMMMMMMMMMMMMMMMMMMMMMMM:       DE: Aqua
.MMMMMMMMMMMMMMMMMMMMMMMMX.      WM: Quartz Compositor
 kMMMMMMMMMMMMMMMMMMMMMMMMWd.    WM Theme: Purple (Dark)
 .XMMMMMMMMMMMMMMMMMMMMMMMMMMk   Terminal: iTerm2
  .XMMMMMMMMMMMMMMMMMMMMMMMMK.   Terminal Font: Monaco 15
    kMMMMMMMMMMMMMMMMMMMMMMd     CPU: Intel i9-9980HK (16) @ 2.40GHz
     ;KMMMMMMMWXXWMMMMMMMk.      GPU: Intel UHD Graphics 630, AMD Radeon Pro 5500M
       .cooc,.    .,coo:.        Memory: 28480MiB / 65536MiB

55.安装wine在linux运行windows程序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#开启32位支持
sudo dpkg --add-architecture i386

#导入Winehq存储库的GPG密钥
wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - 

#将WineHQ存储库添加到系统
sudo apt install software-properties-common
sudo apt-add-repository "deb http://dl.winehq.org/wine-builds/ubuntu/ $(lsb_release -cs) main"

#安装稳定分支
sudo apt update
sudo apt install --install-recommends winehq-stable

56.Python画图模块plt

1
pip install matplotlib

57.linux常识

应避免以字符 "-" 作为文件名的起始字符,因为一旦在shell中设置这种文件名,会被系统误认为命令行选项的开关。

58.记事本"替换"功能的快捷键

1
Ctrl+H

59.python安装cv2模块

1
2
pip2 install opencv-python
pip3 install opencv-python

60.dsa签名与验证

1
2
3
4
5
6
7
8
签名与验证:
openssl dgst -sha1 -sign dsa_private.pem -out sign.bin message.txt
openssl sha1 -verify dsa_public.pem -signature sign.bin message.txt

提取签名后的值(r,s):
openssl asn1parse -inform der -in packet4/sign4.bin 
提取dsa公钥信息:
openssl dsa -in dsa_public.pem -text -noout  -pubin 

61.解决man read 无法查看的问题

1
sudo apt install manpages-posix-dev

62.获取本机的公网ip地址

1
MRX@ThinkPad:~$ curl ip.gs

63.gdb断点的添加和删除

1
2
3
4
b *0x12345678

delete 数字
eg: delete 1

64.添加msf模块

1
2
3
4
5
cd /opt/metasploit-framework/embedded/framework/modules/exploits/

#把下载的.rb文件添加到指定的目录即可(目录结构自己看看就懂)

#打开msf,输入reload_all即可完成

65.Ubuntu/Deepin/Kali下搜狗输入法优化

1
2
3
4
5
(1)去搜狗输入法的官网下载ssf格式的皮肤文件
   对下载到的ssf文件打压缩包,点开XX.ssf.zip
   双击XX.ssf即可安装(不压缩直接安装很可能装不上)

(2)右击任务栏中的搜狗输入法图标,选择设置,取消"隐藏状态栏"和取消"全屏时隐藏状态栏",应用即可

66.64位的GCC 编译32位程序报错

1
2
3
4
5
6
7
8
/usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a 时跳过不兼容的 -lgcc
/usr/bin/ld: 找不到 -lgcc
/usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a 时跳过不兼容的 -lgcc
/usr/bin/ld: 找不到 -lgcc
collect2: error: ld returned 1 exit status

解决方法:
sudo apt install gcc-multilib g++-multilib module-assistant

67.解决python下nmap使用问题

1
2
3
4
5
AttributeError: module 'nmap' has no attribute 'PortScanner'

#重新安装nmap模块,或者一开始就安装正确的nmap
pip uninstall nmap
pip install python-nmap

68.安装v2ray服务端/客户端

1
2
3
4
5
6
7
8
9
#安装v2ray服务端
bash <(wget -qO- -o- https://git.io/v2ray.sh)

#安装linux v2ray客户端
bash <(curl -L -s https://install.direct/go.sh)
vim /etc/v2ray/config.json配置使用

#安装linux v2ray客户端
直接安装GUI版本的Clash-Windows即可

69.IRC签到

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
打开weechat软件
#创建服务器
/server add freenode8001 chat.freenode.net/8001
#进入服务器
/connect freenode8001
#给自己取个名字
/nick mrx
#进入聊天室
/join #0ctf2018
#退出
#一直/close即可
#最后/exit退出软件

70.vps tcp bbr加速

1
2
3
wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"
chmod +x tcp.sh
sudo bash tcp.sh

71.查看进程的pid号以及进程树

1
MRX@ThinkPad:~$ ps -auxf

72.linux下批量修改文件名

1
2
3
4
5
6
7
sudo apt install rename

#把 a b c 修改成 a.txt b.txt c.txt
rename 's/$/\.txt/' *

#把 a.txt b.txt c.txt 修改成 a.py b.py c.py
rename 's/\.txt/\.py/' *

73.云主机添加swap增大内存

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#free -h  查看是否有物理内存
              total        used        free      shared  buff/cache   available
Mem:           393M        304M         12M        668K         76M         77M
Swap:            0B          0B          0B

#创建块设备
dd if=/dev/zero of=/tmp/big_swap bs=1024 count=6000000

#将目的文件格式化为swap分区文件
mkswap /tmp/big_swap 

#激活swap,立即启用交换分区文件
swapon /tmp/big_swap

#修改配置文件,设置启动时挂载,添加一行:
vim /etc/fstab 
    /tmp/big_swap           swap                    swap    defaults        0 0

#验证结果

74.ssh使用私钥文件连接服务器

1
ssh -i id_rsa root@127.0.0.1

75.使用netcat(nc)进行沟通交流

1
2
3
4
5
服务端:  
nc -lvp 10000

客户端:  
nc 127.0.0.1 10000

76.安装开wifi热点的软件

1
sudo apt install hostapd

77.pwntools基本函数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
remote(host, port)remote 函数用于创建一个到指定主机和端口的 TCP 连接。它返回一个 remote 对象,您可以使用该对象与远程服务进行交云。

send(data)send 函数用于通过一个已经建立的连接发送数据。它不会自动添加换行符。

sendline(line)sendline 函数与 send 类似,但它会在发送的数据末尾自动添加一个换行符 (\n)
sendafter(delims, data)sendafter 函数等待直到接收到一定的分隔字符串 delims,然后发送数据 data。这个函数通常用于等待特定的提示符或输入请求。

recvn(n)recvn 函数接收并返回确切数量 n 个字节的数据。

recvline(keepends=True)recvline 函数接收并返回一个完整的行。行的结束通常是通过换行符 (\n) 来确定的。如果 keepends 为真,返回的数据将包括行结束符。

recvlines(numlines, keepends=False)recvlines 函数接收并返回指定数量 numlines 的行,每行作为列表中的一个元素。如果 keepends 为真,每行返回的数据将包括行结束符。

recvuntil(delims, drop=False)recvuntil 函数接收数据直到遇到分隔字符串 delims。如果 drop 为真,返回的数据将不包括分隔字符串 delims。

78.删除回收站因权限无法删除的文件

1
2
cd ~/.local/share/Trash/files
sudo rm -rf ./*

79.主机扫描

1
2
除了nmap,还可以使用netdiscover(arp扫描详细识别)
netdiscover -r 172.16.0.0/24

80.网站目录扫描

1
dirb www.baidu.com

81.运行ctf-wiki

1
docker run -d --name=ctf-wiki -p 4100:80 ctfwiki/ctf-wiki

82.CentOS7解决docker-compose报错问题

1
2
3
4
5
6
7
报错原因:
找不到 ssl_match_hostname
from backports.ssl_match_hostname import match_hostname
ImportError: No module named ssl_match_hostname
解决方法:
cd /usr/local/lib/python2.7/dist-packages
sudo cp -r backports /usr/local/lib/python2.7/dist-packages/docker/transport
1
2
3
4
报错原因:
ImportError: 'module' object has no attribute 'check_specifier'
解决方法:
pip install --upgrade setuptools==30.1.0
1
2
3
4
报错原因:
ERROR: Package 'more-itertools' requires a different Python: 2.7.5 not in '>=3.4'
解决方法:
pip install more-itertools==5.0.0
1
2
3
4
报错原因:
_posixsubprocess.c:16:20: 致命错误:Python.h:没有那个文件或目录 #include "Pyt
解决方法:
yum install python-devel

83.scp上传下载文件

1
2
3
4
上传一个文件:
MRX@ThinkPad:~$ scp ./123.txt -i pri.key -p 22 root@192.168.80.1:/root
下载一个目录:
MRX@ThinkPad:~$ scp -r -i pri.key -p 22 root@192.168.80.1 /var/www/html ./

84.解决ubuntu添加源报错

1
2
执行该命令时产生报错:add-apt-repository 'deb https://typora.io/linux ./'
解决:apt-get install software-properties-common

85.linux下安装powershell

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# Install system components
sudo apt-get update
sudo apt-get install -y curl gnupg apt-transport-https

# Import the public repository GPG keys
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

# Register the Microsoft Product feed
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/microsoft.list'

# Update the list of products
sudo apt-get update

# Install PowerShell
sudo apt-get install -y powershell

# Start PowerShell
pwsh

86.Linux系统状态监测程序htop

1
2
#相比top命令,htop显示更加直观、人性化
MRX@ThinkPad:~$ htop

87.通过SSL证书提取公钥的RSA因子信息

1
2
3
4
5
#根据ssl证书提取公钥证书
openssl x509 -outform PEM -in csdn.net -pubkey -noout > public_key.pem

#根据公钥信息提取rsa相关参数
openssl rsa -pubin -in public_key.pem  -text -modulus

88.在浏览器地址栏中访问文件

1
file:///etc/passwd

89.证书格式转换

1
2
3
4
5
#DER格式:使用该扩展名的证书采用二进制编码,当然,这些证书也可以使用 CER 或者 CRT 作为扩展名。
#PEM格式:使用该扩展名的证书采用 Base64 编码,文件的开始是一行 -----BEGIN。

openssl x509 -outform der -in certificate.pem -out certificate.der
openssl x509 -inform der -in certificate.cer -out certificate.pem

90.清除Chrome表单中烦人的历史自动填充数据

1
2
3
(1)键盘"↓"键选中chrome的表单填充数据
(2-1)"shift + Del"即可删除制定的内容(Windows)
(2-2)"Shift + fn + Del"即可删除制定的内容(MacOS)

91.Python反编译-uncompyle6

1
sudo pip install uncompyle6
1
MRX@ThinkPad:~$ uncompyle6 -o pcat.py pcat.pyc

92.链接库

Linux动态链接程序:告诉链接器需要使用.dll或.so这样的共享库 Linux静态链接程序:告诉链接器需要使用.a文件这样的静态库

了解可执行文件依赖哪些动态库? win下dumpbin命令 linux下ldd命令 macos下otool命令

93.在linux下查看所有系统调用的定义

1
MRX@ThinkPad:~$ cat /usr/include/asm/unistd.h 

94.反汇编二进制程序得到汇编代码

1
MRX@ThinkPad:~$ objdump -d ./xxx

95.Linux查看当前操作系统版本信息

1
2
3
MRX@ThinkPad:~$ cat /proc/version
Linux version 6.1.32-amd64-desktop-hwe (deepin23@deepin23-PC) (gcc (Deepin 11.2.0-deepin2+rb2) 11.2.0, GNU ld (GNU Binutils for Uos) 2.38) #23.01.00.20 SMP PREEMPT_DYNAMIC Mon Sep 11 14:16:03 CST 2023
MRX@ThinkPad:~$ 

96.在终端中运行代码

1
2
3
4
5
6
7
8
(1)在终端中运行shell代码:   
MRX@ThinkPad:~$ bash -c "echo 'hello world'"
(2)在终端中运行php代码:     
MRX@ThinkPad:~$ php -r "echo 'hello world';"
(3)在终端中运行python代码:  
MRX@ThinkPad:~$ python -c "print 123"
(4)在终端中运行php文件:     
MRX@ThinkPad:~$ php filename.php

97.查看系统时间

1
2
MRX@ThinkPad:~$ date -R
Sun, 21 Jan 2024 22:11:53 +0800
1
2
3
4
5
6
7
设置系统时间(仅限centos系)
MRX@ThinkPad:~$ tzselect
交互式确实完成后,最后命令行输入(仅一次)
MRX@ThinkPad:~$ TZ='Asia/Shanghai'; export TZ

建议将该命令写入到.bashrc
MRX@ThinkPad:~$ echo "TZ='Asia/Shanghai'; export TZ" >> .bashrc

98.安装ping命令

1
sudo apt-get install iputils-ping

99.使用vim快捷键快速清空文本文件内容

1
2
3
4
#先按gg到行首
#接着按dG即可

ggdG

100.docker分层优化

1
2
3
4
下载安装(v0.9.1为旧版,请自行修改url中的版本号为新版)wget https://github.com/wagoodman/dive/releases/download/v0.9.1/dive_0.9.1_linux_amd64.deb
执行命令:
dive 镜像名

101.MacOS下载各大视频网站的视频 如b站,youtube,优酷(vip),等

1
2
3
4
5
6
7
8
9
项目地址:https://github.com/qinwang/annie
brew install ffmpeg
brew install lux
使用:
lux -i https://www.bilibili.com/video/BV1FT4y1E7i7
#-i查看所以可下载的清晰度

lux -f 32-7 https://www.bilibili.com/video/BV1FT4y1E7i7  
#-f 指定清晰度(-i时会显示具体的清晰度对应的-f选项)

102.解决deepin的无线网卡网速慢

1
2
3
更改iwlwifi.conf配置
/etc/modprobe.d/iwlwifi.conf
11n_disable=8

103.Python常识

1
2
3
#去除列表中的空格和换行

list1 = [x.strip() for x in list1 if x.strip() != '']

104.查看elf程序的PLT表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
MRX@ThinkPad:~$ objdump -R 程序名
YNAMIC RELOCATION RECORDS
OFFSET   TYPE              VALUE 
08049ffc R_386_GLOB_DAT    __gmon_start__
0804a040 R_386_COPY        stdin@@GLIBC_2.0
0804a060 R_386_COPY        stdout@@GLIBC_2.0
0804a00c R_386_JUMP_SLOT   printf@GLIBC_2.0
0804a010 R_386_JUMP_SLOT   gets@GLIBC_2.0
0804a014 R_386_JUMP_SLOT   time@GLIBC_2.0
0804a018 R_386_JUMP_SLOT   puts@GLIBC_2.0
0804a01c R_386_JUMP_SLOT   system@GLIBC_2.0
0804a020 R_386_JUMP_SLOT   __gmon_start__
0804a024 R_386_JUMP_SLOT   srand@GLIBC_2.0
0804a028 R_386_JUMP_SLOT   __libc_start_main@GLIBC_2.0
0804a02c R_386_JUMP_SLOT   setvbuf@GLIBC_2.0
0804a030 R_386_JUMP_SLOT   rand@GLIBC_2.0
0804a034 R_386_JUMP_SLOT   __isoc99_scanf@GLIBC_2.7

105.docker容器监控

1
MRX@ThinkPad:~$ ctop

106.gdb调试使用deepin终端显示

1
2
3
#python代码设置
context.log_level = 'debug'
context.terminal = ['deepin-terminal', '-x', 'sh' ,'-c']

107.添加用户到用户组

1
sudo usermod -aG xxx(要加入的用户组名) mrx(用户名)   

108.深度终端如何永久关闭蜂鸣器

1
2
3
4
5
6
7
8
临时解决:
sudo rmmod pcspkr

永久解决:
sudo vim /etc/modprobe.d/nobeep.conf
blacklist pcspkr
blacklist snd_pcsp
重启即可

109.优化history命令的显示

1
2
3
4
5
6
7
8
9
vim .bashrc

HISTSIZE=1500
HISTFILESIZE=3000
HISTTIMEFORMAT="%Y-%m-%d-%H:%M:%S "
export HISTTIMEFORMAT

#HISTSIZE          ==> history命令输出的记录数
#HISTFILESIZE=3000 ==> .bash_history存放的最大记录条数

110.内存泄漏检测工具-valgrind

1
2
3
valgrind ./程序名
LEAK SUMMARY: 内存泄露汇总
HEAP SUMMARY: 堆泄露汇总

111.gcc编译时不开启任何保护

1
MRX@ThinkPad:~$ gcc -z execstack -z norelro

112.Dockerfile ubuntu换源

1
RUN sed -i "s/http:\/\/archive.ubuntu.com/http:\/\/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list

113.Python生成uuid

1
2
import uuid
str(uuid.uuid4())

114.本地简易的使pwn程序处于监听状态

1
2
3
4
MRX@ThinkPad:~$ socat tcp4-listen:2334,fork exec:./程序名

#访问测试
MRX@ThinkPad:~$ nc 127.0.0.1 2334

115.解决kvm虚拟机提示虚拟网络'default': NAT(不活跃)

1
2
MRX@ThinkPad:~$ virsh net-autostart default
MRX@ThinkPad:~$ virsh net-start default

116.设置CentOS防火墙firewall

1
2
3
4
#开放8080端口(前提是firewall处于运行状态)
[root@Linux-Server ~]# firewall-cmd --add-port=8080/tcp --permanent
#重新加载防火墙规则
[root@Linux-Server ~]# firewall-cmd --reload

117.配置firewalld-cmd

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic

添加开放的端口
firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

118.Python安装Z3模块

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
MRX@ThinkPad:~$ git clone https://github.com/Z3Prover/z3.git
MRX@ThinkPad:~$ cd z3

MRX@ThinkPad:~$ python scripts/mk_make.py --python
MRX@ThinkPad:~$ cd build
MRX@ThinkPad:~$ make
MRX@ThinkPad:~$ sudo make install

或者:
MRX@ThinkPad:~$ pip install z3-solver

119.ssh密钥登陆

客户端(生成公私钥):
ssh-keygen -t rsa

服务端;
#添加客户端生成的公钥信息
touch或vim ~/.ssh/authorized_keys

#设置文件权限
chmod 600 ~/.ssh/authorized_keys

120.linux不重启永久设置主机名

#先命令行中修改
hostname XXX

#再同步修改配置文件
vim /etc/hostname

121.网卡添加另外一个IP地址

1
2
3
4
#添加另外一个IP地址
MRX@ThinkPad:~$ ifconfig eth0 add 192.168.10.10
#添加另一个IP地址的网关
MRX@ThinkPad:~$ route add default gw 192.168.10.254 dev eth0:0

123.yum提示没有可用软件包epel-release

1
2
MRX@ThinkPad:~$ wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
MRX@ThinkPad:~$ rpm -vih epel-release-7-12.noarch.rpm

124.安装linux命令ss

1
sudo apt-get install iproute2

125.Ubuntu修改窗口样式

1
2
MRX@ThinkPad:~$ sudo apt install gnome-tweak-tool
MRX@ThinkPad:~$ gnome-tweaks

126.CentOS7部署LAMP

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
(1)yum -y install httpd
   systemctl start httpd
   systemctl enable httpd

(2)systemctl stop firewalld.service #关闭防火墙服务
   systemctl disable firewalld.service #禁用防火墙开机启动服务

(3)yum -y install php
   systemctl restart httpd

(4)yum -y install mariadb-server mariadb
   systemctl start mariadb
   systemctl enable mariadb
   mysql_secure_installation  #初始化数据库密码

(5)yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel  php-mysqli #安装php常用模块

(6)systemctl restart httpd

127.Centos8问题

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
(1)装完系统后始终出现设置用户界面,无法进入正常的桌面系统。
按CTRL+ALT+F3进入命令行,创建个新的用户和密码,重启即可。

(2)gnome桌面无法右击问题
cd /var/lib/AccountsService/users/
修改要登录的用户(比如root文件)
vim root
[User]下面新添加两行:
Language=
XSession=gnome
注销或重启即可生效。

128.Oracle Cloud防火墙问题

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Oracle Cloud甲骨文免费VPS在创建vps后如果需要搭建梯子,需要对防火墙进行设置。
(1)在子网中的安全列表中对入口规则和出口规则进行更改,对0.0.0.0/0及::/0的所有协议进行放行。
(2)做完第一步是对网络的防火墙打开了,但是vps搭建的梯子还是不能连接,需要对vpc机器的防火墙进行设置
#开放所有端口
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo ip6tables -P INPUT ACCEPT
sudo ip6tables -P FORWARD ACCEPT
sudo ip6tables -P OUTPUT ACCEPT
sudo iptables -F
sudo ip6tables -F

#Oracle自带的Ubuntu镜像默认设置了Iptable规则,关闭它
sudo apt-get purge netfilter-persistent
reboot

#强制删除
rm -rf /etc/iptables && reboot

129.获得Windows Shell的乱码问题

1
chcp 65001

130.Windows命令行下载文件命令

1
certutil -urlcache -split -f http://121.5.236.127/flag.txt

131.sed递归替换目录文件的指定字符串

1
MRX@ThinkPad:~$ sed -i "s/查找的字符串/替换后的字符串/g" `grep "查找的字符串" -rl 查找的目录`

132.Kali安装wine

1
2
3
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install wine

133.安装edb

1
sudo apt-get install edb-debugger

134.deepin安装docker

1
sudo apt-get install docker-ce

135.安装zsh和oh-my-zsh

 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
检查当前终端:
MRX@ThinkPad:~$ echo $SHELL 

Ubuntu:
apt install zsh -y
chsh -s /bin/zsh

Centos:
yum -y install zsh
chsh -s /bin/zsh

安装国内源的oh-my-zsh:
MRX@ThinkPad:~$ wget https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh

(1)找到以下部分
# Default settings
ZSH=${ZSH:-~/.oh-my-zsh}
REPO=${REPO:-ohmyzsh/ohmyzsh}
REMOTE=${REMOTE:-https://github.com/${REPO}.git}
BRANCH=${BRANCH:-master}
替换其中的REPO和REMOTE行:
REPO=${REPO:-mirrors/oh-my-zsh}
REMOTE=${REMOTE:-https://gitee.com/${REPO}.git}
(2)编辑后保存, 运行安装即可. (运行前先给install.sh权限)
(3)修改仓库地址
cd ~/.oh-my-zsh
git remote set-url origin https://gitee.com/mirrors/oh-my-zsh.git
git pull
(4)安装插件
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
vim ~/.zshrc
plugins=(git zsh-autosuggestions)
(5)有时候执行cd会卡,这让人难以忍受。原因是oh-my-zsh在获取git信息,可以将git信息隐藏:
git config --global oh-my-zsh.hide-status 1

136.解决docker构建镜像时报错

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#报错信息
free(): invalid pointer
SIGABRT: abort
PC=0x7f3ac52c1fb7 m=0 sigcode=18446744073709551610
signal arrived during cgo execution

#解决方法
MRX@ThinkPad:~$ wget https://github.com/docker/docker-credential-helpers/releases/download/v0.6.3/docker-credential-secretservice-v0.6.3-amd64.tar.gz
MRX@ThinkPad:~$ tar -xf docker-credential-secretservice-v0.6.3-amd64.tar.gz
MRX@ThinkPad:~$ chmod +x docker-credential-secretservice
MRX@ThinkPad:~$ mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice.bkp
MRX@ThinkPad:~$ mv docker-credential-secretservice /usr/bin/

137.WIN11切换右键风格

1
2
3
4
5
6
7
(1)切换到win10风格:
reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
执行后重启电脑生效

(2)切换到win11风格:
reg.exe delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f
执行后重启电脑生效

138.centos8命令行连接wifi

1
2
3
4
5
6
(1)首先必须安装该软件
yum install NetworkManager-wifi
(2)查卡wifi列表
nmcli dev wifi
(3)连接wifi
nmcli dev wifi connect Wifi名称 password Wifi密码

139.Centos8修改IP地址

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
(1)修改网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.195.129
NETMASK=255.255.255.0
GATEWAY=192.168.195.2
(2)先reload网络
nmcli c reload
(3)再重启网卡使配置生效
nmcli device reapply eno1

140.Python常识

1
2
3
from Crypto.Util.number import *  #python中该模块安装

pip install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple

141.Centos8开机启动脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
(1)自己写的脚本
start.sh
注意:自己写的bash脚本前三行一定如下:
#!/bin/bash
#chkconfig:  2345 81 96
#description: StartPlatform(可自定义)

(2)移动脚本位置
mv start.sh /etc/init.d/
chmod +x /etc/init.d/start.sh

(3)设置开机自启
chkconfig start.sh on

142.docker换国内源

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
sudo vim /etc/docker/daemon.json 
添加如下内容:
{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://ustc-edu-cn.mirror.aliyuncs.com",
    "https://ghcr.io",
    "https://mirror.baidubce.com"
  ]
}
重启docker:
service docker restart

143.Ubuntu更换源后报错

1
2
3
4
5
6
7
8
9
报错信息:
The certificate chain uses expired certificate.  Could not handshake: Error in the certificate verification. [IP: 101.6.15.130 443]

报错原因:
apt源使用了https URL的问题

解决方法1:直接修改url中的https为http
解决方法2:重装ca-certificates即可
sudo apt-get install --reinstall ca-certificates

144.Centos从命令行中可视化打开当前目录

1
2
3
4
nautilus 路径

示例:
nautilus ./

145.全新安装WSL2的Ubuntu18.04(有systemctl、gmpy2,有gdb)

 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
(0)小技巧:子系统刚装完后,提示输入要新创建的用户名,此时直接关闭安装窗口。再重新打开子系统,会发现始终为root用户了。
(1)安装步骤:https://docs.microsoft.com/zh-cn/windows/wsl/install-manual
(2)Linux子系统Ubuntu18.04初始化操作
apt update
apt install --reinstall ca-certificates

vim /etc/apt/sources.list 
#内容如下
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
#保存退出

apt update
apt upgrade
apt install gcc make gcc-multilib g++-multilib module-assistant make cmake curl git -y
apt install python python3 python-dev python3-dev python-pip python3-pip
apt install python-gmpy2 python3-gmpy2

pip2 install -U pip setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip3 install -U pip setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

永久设置pip国内源
mkdir ~/.pip
vim ~/.pip/pip.conf
修改/添加内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

pip2 install pathlib2 pwntools pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple  
pip3 install pwntools pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple

安装systemd命令(方便后期管理docker等服务)mkdir ~/github && cd ~/github && git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ~/github/ubuntu-wsl2-systemd-script/  && bash ubuntu-wsl2-systemd-script.sh

apt install daemonize
daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME

使用国内源安装docker:
curl -sSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
使用官方源安装docker:
curl -s https://get.docker.com/ | sh

docker换国内源
vim /etc/docker/daemon.json 
添加如下内容:
{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://ustc-edu-cn.mirror.aliyuncs.com",
    "https://ghcr.io",
    "https://mirror.baidubce.com"
  ]
}
重启docker:
service docker restart
#service enable restart

容器拉取测试:
docker pull nginx
docker run -itd -p 80:80 nginx
浏览器访问该Ubuntu容器的IP即可。

安装docker-compose:
#请先访问https://github.com/docker/compose/releases确定最新版本号,然后替换下面curl命令中的"2.7.0"。
curl -L https://github.com/docker/compose/releases/download/v2.7.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

安装gdb及插件pwndbg、peda和gef
apt install gdb gdb-multiarch git wget -y
mkdir ~/github
cd ~/github && git clone https://github.com/pwndbg/pwndbg
cd pwndbg && ./setup.sh

cd ~/github && git clone https://github.com/longld/peda.git 

bash -c "$(curl -fsSL https://gef.blah.cat/sh)"

vim ~/.gdbinit 添加新的注释行:
source ~/.gef-2b72f5d0d9f0f218a91cd1ca5148e45923b950d5.py
#source /root/github/peda/peda.py
#source /root/github/pwndbg/gdbinit.py

修复gef的缺失模块:
pip3 install keystone-engine ropper -i https://pypi.tuna.tsinghua.edu.cn/simple 

vim ~/.bashrc 进行如下修改:
#添加一行别名去除gdb的开始的一堆提示信息
alias gdb='gdb -q'      
alias gdb-multiarch="gdb-multiarch -q"

146.全新安装WSL2的Ubuntu 20/22.04,kali(有systemctl、gdb,无python2的gmpy2)(推荐)

 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
(0)小技巧:子系统刚装完后,提示输入要新创建的用户名,此时直接关闭安装窗口。再重新打开子系统,会发现始终为root用户了。
(1)安装步骤:https://docs.microsoft.com/zh-cn/windows/wsl/install-manual
(2)初始化操作
vim /etc/apt/sources.list 
#内容如下
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

apt update
apt upgrade
apt install gcc make gcc-multilib g++-multilib module-assistant make cmake curl git -y
apt install python2 python3 python2-dev python3-dev python3-pip -y

#(root用户或sudo执行相关python操作,否则软件无法加入环境变量)
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py && python2 get-pip.py && rm -rf get-pip.py 
pip2 install -U pip setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip3 install -U pip setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

永久设置pip国内源
mkdir ~/.pip
vim ~/.pip/pip.conf
修改/添加内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

pip2 install pathlib2 pwntools pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple  
pip3 install pwntools pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple


安装systemd命令(方便后期管理docker等服务)mkdir ~/github && cd ~/github && git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ~/github/ubuntu-wsl2-systemd-script/  && bash ubuntu-wsl2-systemd-script.sh

apt install daemonize
daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME

使用国内源安装docker:
curl -sSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
使用官方源安装docker:
curl -s https://get.docker.com/ | sh

docker换国内源
vim /etc/docker/daemon.json 
添加如下内容:
{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://ustc-edu-cn.mirror.aliyuncs.com",
    "https://ghcr.io",
    "https://mirror.baidubce.com"
  ]
}
重启docker:
service docker restart
#service enable restart

容器拉取测试:
docker pull nginx
docker run -itd -p 80:80 nginx
浏览器访问该Ubuntu容器的IP即可。

安装docker-compose:
#请先访问https://github.com/docker/compose/releases确定最新版本号,然后替换下面curl命令中的"2.20.2"。
curl -L https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version


#安装gdb及插件pwndbg、peda和gef
apt install gdb gdb-multiarch git wget -y
cd ~/github && git clone https://github.com/pwndbg/pwndbg
cd pwndbg && ./setup.sh

cd ~/github && git clone https://github.com/longld/peda.git 

cd ~/github && git clone https://github.com/hugsy/gef.git

vim ~/.gdbinit进行修改:
source /root/github/gef/gef.py
#source /root/github/peda/peda.py
#source /root/github/pwndbg/gdbinit.py

修复gef的缺失模块:
pip3 install keystone-engine ropper -i https://pypi.tuna.tsinghua.edu.cn/simple 

vim ~/.bashrc 进行如下修改:
#添加一行别名去除gdb的开始的一堆提示信息
alias gdb='gdb -q'      
alias gdb-multiarch="gdb-multiarch -q"

147.Centos8开启wifi热点

1
nmcli dev wifi hotspot ifname wlp0s20f3 ssid AIRPORT-YB password "xxxx..."

148.Kali安装armitage报错

1
2
3
4
5
6
7
8
9
Kali armitage运行报错提示:不支援 10 验证类型。请核对您已经组态pg_hba.conf文件包含客户端的P位址或网路区段,以及驱动程序所支援的验证架构模式已被支援。

原因:pg配置pg_hba.conf修改过,加密方式=由默认换成SHA-256,导致客户端驱动包版本太低,连接异常。

解决方法:配置文件修改回原始加密方式。
sudo vim /etc/postgresql/14/main/pg_hba.conf
将包含"scram-sha-256"的行中的"scram-sha-256"关键字全部改为"trust"
然后重启postgresql
/etc/init.d/postgresql restart 

149.kali下docker报错

1
2
3
4
5
报错信息:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json: dial unix /var/run/docker.sock: connect: permission denied docker code example

解决方法:
sudo chmod 666 /var/run/docker.sock

150.永久设置pip国内源

1
2
3
4
linux/macOS下,修改~/.pip/pip.conf(没有就创建一个) 
修改/添加内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

151.Ubuntu找不到tunctl命令

1
2
#需安装uml-utilities
sudo apt install uml-utilities

152.Ubuntu找不到brctl命令

1
2
#需安装bridge-utils
sudo apt install bridge-utils

153.MacOS安装Hugo博客系统

1
2
3
4
#安装
brew install hugo
#启动
hugo server -p 8000 -D

154.命令行查看公网出口IP地址

1
MRX@ThinkPad:~$ curl ipinfo.io

155.iptables开放ipv4和ipv6的端口

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
MRX@ThinkPad:~$ iptables -I INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
MRX@ThinkPad:~$ iptables -I OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
MRX@ThinkPad:~$ iptables -I INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
MRX@ThinkPad:~$ iptables -I OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

MRX@ThinkPad:~$ ip6tables -I INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
MRX@ThinkPad:~$ ip6tables -I OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
MRX@ThinkPad:~$ ip6tables -I INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
MRX@ThinkPad:~$ ip6tables -I OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

#iptables-save保存
MRX@ThinkPad:~$ iptables-save

156.Sublime中去除重复行

1
2
3
4
5
6
(1)首先排序
edit->sort lines
(2)ctrl+H,查找目标为:
^(.+)$[\r\n](^\1$[\r\n]{0, 1})+
(3)替换为:
\1\n

157.Ubuntu卸载nginx

1
2
#卸载nginx,包括删除配置文件。
sudo apt purge nginx nginx-common  

158.Ubuntu解决中文乱码

1
2
MRX@ThinkPad:~$ sudo apt-get install zhcon  #下载zhcon
MRX@ThinkPad:~$ zhcon --utf8  #设置UTF8编码

159.虚拟机内打开VSCode黑屏

1
在虚拟机设置界面,关闭3D加速,重启即可解决。

160.查看端口对应的进程号

1
lsof -i:端口号 

161.同步本地文件到Linux服务器

1
2
3
4
5
6
#rsync 其实就是"远程同步"(remote sync)的意思。与其他文件传输工具(如 FTP 或 scp)不同,rsync的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。

MRX@ThinkPad:~$ rsync -av ./* root@193.121.111.10:/root/www

#(1)-v: 表示输出细节信息
#(2)-a: -a参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新,所以-a比-r更有用。下面的用法才是常见的写法。

162.Hugo友链插件报错

1
2
3
4
5
6
7
#报错信息
WARN 2022/10/12 15:40:37 .Path when the page is backed by a file is deprecated and will be removed in a future release. We plan to use Path for a canonical source path and you probably want to check the source is a file. To get the current behaviour, you can use a construct similar to the one below:

#解决方法
hugo -D --panicOnWarning
#找到报错文件:..../layouts/_default/list.html:10
#将里面的".PATH"换为"."就行了

163.正则表达式常识

1
2
#匹配最少1位最多3位,开头的数字
^[0-9]{1,3}

164.Debian Dockerfile换国内源

1
2
3
4
#匹配最少1位最多3位,开头的数字
RUN sed -i "s/archive.ubuntu./mirrors.aliyun./g" /etc/apt/sources.list
RUN sed -i "s/deb.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list
RUN sed -i "s/security.debian.org/mirrors.aliyun.com\/debian-security/g" /etc/apt/sources.list

165.查看容器的启动命令

1
2
3
4
#在容器内部,其中进程ID为1的就是启动命令
ps -fe
#在容器外部,物理机上
docker inspect 容器ID

166.Centos7升级Docker

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
(1)升级前查看docker版本
docker version
(2)升级系统
yum update -y
(3)卸载旧版本docker的话
yum remove docker docker-common docker-selinux dockesr-engine  
(4)安装需要的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2   
(5)设置国内docker yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
(6)查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r   
(7)安装docker-ce版本(社区免费版)
yum install -y docker-ce
(8)启动docker
service docker start
(9)设置自启动docker
systemctl enable docker
(10)验证docker版本
docker version

167.中科大Ubuntu/Debian/arch镜像源生成器

1
https://mirrors.ustc.edu.cn/repogen/

168.腾讯云关闭53号端口占用

1
2
systemctl stop systemd-resolved
systemctl disable systemd-resolved

169.frps+frpc配置

 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
#1服务端配置(Linux-VPS)
1-1服务端配置ini文件:
vim frps.ini
[common]
bind_port = 8000
token = PYXSRWx1bZ

1-2服务端配置服务:
vim /lib/systemd/system/frps.service
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/root/frps/frps -c /root/frps/frps.ini

[Install]
WantedBy=multi-user.target

1-3服务端配置服务自启动
systemctl start frps
systemctl enable frps


#2客户端配置(Windows)
2-1客户端配置ini文件:
[common]
server_addr = 121.5.xx.xx(VPS地址)
server_port = 8000
token = PYXSRWx1bZ

[RDP] 
type=tcp     
local_ip=127.0.0.1
local_port=3389    
remote_port=3380 

2-2客户端编写bat脚本frpc.bat:
@echo off
:home
C:\Tools\frpc\frpc.exe -c C:\Tools\frpc\frpc.ini
goto home

2-3客户端服务端配置服务自启动(管理员cmd)sc create frpc binPath=C:\Tools\frpc\frpc.bat start= auto

2-4服务管理里面启动frpc服务

170.ssh走socks5代理

1
2
3
4
5
Linux:
ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:10808 %h %p" root@152.70.xx.xx

Windows:
ssh -o ProxyCommand="ncat.exe --proxy-type socks5 --proxy 127.0.0.1:10808 %h %p" root@152.70.xx.xx

171.通过端口找进程的详细信息(或者直接ss -nltp)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
(1)ss -nlt
(2)lsof -i:80000
(3)ps aux | grep "26168"
(4)ll /proc/26168
#通过ps及top命令查看进程信息时,只能查到"相对路径",查不到进程的详细信息,如"绝对路径"等。
#这时,我们需要通过以下的方法来查看进程的详细信息:

#Linux在启动一个进程时,系统会在"/proc"下创建一个以"PID"命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为"exe"的文件即记录了绝对路径,通过"ll"或"ls –l"命令即可查看。

#可以先通过"ps aux | grep process_name"找到对应进程的PID,再通过"ll /proc/PID"查到进程的绝对路径等信息。
查看到的信息:
cwd符号链接的是进程运行目录。
exe符号连接就是执行程序的绝对路径。
cmdline就是程序运行时输入的命令行命令。
environ记录了进程运行时的环境变量。
fd目录下是进程打开或使用的文件的符号连接。

172.Kali Gnome桌面使用root用户登录

1
2
3
4
5
6
(1)为root设置密码
sudo passwd root
(2)安装kali-root-login
sudo apt install kali-root-login
(3)退出当前账号就可以用root登录了
参考:https://www.kali.org/docs/general-use/enabling-root/

173.kali 2022安装pip2并升级pip2和pip3(同ubuntu20初始化)

1
2
3
4
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
python2 get-pip.py
pip2 install -U pip setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip3 install -U pip setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

174.kali使用root用户桌面环境下打开vscode

1
2
3
4
5
6
7
(1)官网下载deb安装包,手动安装好
(2)创建目录:mkdir /root/SandBox/VSCode
(3)编辑文件:vim /usr/share/applications/code.desktop
修改第5行的EXEC内容为:
Exec=/usr/share/code/code /root/SandBox/VSCode --no-sandbox --unity-launch %F
修改第27行的EXEC内容为:
Exec=/usr/share/code/code --no-sandbox --new-window %F

175.kali中vscode因为修改了用户密码出现报错提示

1
2
3
4
5
6
7
8
9
报错信息:
"Authentication required The password you use to log in to your computer no longer matches that of your login keyring."
解决方法:
(1)apt install seahorse
(2)Open the "seahorse" application on your computer.
(3)Find the login keyring entry and right-click on it.
(4)Choose "Change Password" and enter your current computer login password.
(5)Update the keyring password to match your computer login password.
(6)Save the changes and restart VS Code.

176.kali/ubuntu/deepin虚拟机安装vmware tools

1
sudo apt install open-vm-tools open-vm-tools-desktop

177.Ubuntu18/22 Desktop修改root登录

1
2
3
4
5
6
7
(1)编辑/etc/pam.d/gdm-password和/etc/pam.d/gdm-autologin
找到如下代码后在代码行前面加入#注释,代码为:
auth required pam_succeed_if.so user != root quiet_success
(2)修改/root/.profile文件,编辑代码如下:
sudo vim /root/.profile
注释掉或者删除行:mesg n 2> /dev/null || true
插入新行:tty -s && mesg n || true

178.Centos9桌面固定dock

1
2
3
4
5
6
7
8
9
(1)安装gnome-tweaks
dnf install gnome-tweak-tool
(2)安装扩展插件管理工具
dnf install gnome-extensions-app
(3)安装dash-to-dock
dnf install gnome-shell-extension-dash-to-dock
(4)注销重新登陆账户
(5)Applications中打开extensions软件
(6)设置dash-to-dock即可

179.grep遍历查找字符串

1
grep -rnR "要查找的内容" ./

180.vim查看json文件(格式化显示)

1
2
#按ESC后输入 
:%!python3 -m json.tool 

181.获取当前主机公网信息

1
https://ipinfo.io/json

182.go使用代理安装包

1
2
go env -w GOPROXY=https://goproxy.cn
go install xxx

183.kali安装volatility2

1
2
3
4
python2 -m pip install -U distorm3 yara pycrypto pillow openpyxl ujson pytz ipython capstone
sudo python2 -m pip install yara
sudo ln -s /usr/local/lib/python2.7/dist-packages/usr/lib/libyara.so /usr/lib/libyara.so
python2 -m pip install -U git+https://github.com/volatilityfoundation/volatility.git

184.gz文件解压缩

1
gunzip xxx.gz 

185.vps测速

1
curl bench.sh -L | bash

186.查看Linux命令执行进度的工具-progress

1
2
这是一个可以查看 cp、mv、dd、tar 等命令执行进度的 Linux 工具,它可以显示已处理数据的百分比、处理速度和预计完成时间,并提供了类似 top 的监控模式。
sudo apt install progress

暂时的话就是整理了这一些,越往前的命令越基础,那时我也是刚开始接触Linux,编程等等,往后的话遇到的东西也多了,问题也多了。这边文章依然是一个不确定结尾的文章,如果后面遇到的问题多,整理的多的话,可能还会继续更新该篇文章。

updatedupdated2024-01-222024-01-22