加密解密

加密和解密

在linux下对文件和文件夹,脚本,以及passwd等进行加密解密还是比较重要的一个东西,所以需要学习一下。

加密解密的思路也并不是我所理解的加密就是给一个文件上了一把锁这种,其实只要是让之前可以直接可视化的东西不能直接看出来就算是加密了。

对脚本/文件的加密解密

gzexe

简单的就是gzexe,是gzip的一个扩展。可以用来对文本进行压缩来达到加密的目的。这个压缩文件可以直接运行,在运行时会自动执行解压缩的过程,运行结束后仍然为压缩状态。所以这对cpu来说有点消耗。

1
2
3
4
5
6
--- Desktop/test » gzexe 1.sh
1.sh: 11.6%
--- Desktop/test » ll
total 8.0K
-rwxr-xr-x 1 narcissus narcissus 1.1K Apr 15 15:20 1.sh
-rwxr-xr-x 1 narcissus narcissus 138 Apr 4 23:21 1.sh~

会生成两个文件:1.sh为压缩后的加密文件,可以直接运行。1.sh~为原文件。实际使用中可以只保留压缩后的文件即可,因为可以使用gzexe -d 1.sh对文件解压缩(解密),但是我的gzexe有一个bug,无法解密。

这种加密的方式挺适合脚本,因为源代码无法直接可视,但是又可以直接运行脚本(在运行脚本过程中,会自动解压缩)。

shc

Converts shell script to C source code, and then compiles it. Do NOT use this to encrypt your scripts as it is not meant to be used for that.
是一个用来将shell脚本转换为c语言以及经过gcc编译后的二进制工具。

1
2
# archllinux需要下载
yay -S shc
1
2
3
4
5
6
7
8
9
10
# 简单的使用
--- Desktop/test » ll
total 4.0K
-rwxr-xr-x 1 narcissus narcissus 138 Apr 15 15:33 2.sh
--- Desktop/test » shc -r -f 2.sh
--- Desktop/test » ll
total 40K
-rwxr-xr-x 1 narcissus narcissus 138 Apr 15 15:33 2.sh
-rwxrwxr-x 1 narcissus narcissus 15K Apr 15 16:56 2.sh.x
-rw-r--r-- 1 narcissus narcissus 18K Apr 15 16:56 2.sh.x.c

使用到了两个参数:

  • -r:使可移植性更好 Relax security. Make a redistributable binary
  • -f:指定需要转换的脚本 File name of the script to compile

生成了两个文件:

  • 2.sh.x:为经过gcc编译后的二进制文件,其实也可以通过ida等工具进行反编译
  • 2.sh.x.c:转换成c语言的版本,不可直接执行
1
2
3
# 使用-U参数让其反编译更难
# -U Make binary untraceable [no]
shc -r -U -f 2.sh
1
2
3
# 使用-o指定输出文件名
# -o %s output filename
shc -r -o autoline -f 2.sh

二进制文件可以直接执行

1
2
--- Desktop/test » ./autoline
============================================================================================================================================================

zip

zip比较特殊,既可以加密文件又可以加密文件夹

1
2
3
4
5
# 简单使用
--- Desktop/test » zip -e 2.zip 2.sh
Enter password:
Verify password:
adding: 2.sh (deflated 10%)

上面这种方式默认是对原文件进行了压缩,可以指定不压缩

1
--- Desktop/test » zip -e -0 2.zip 2.sh

对文件夹加密

1
2
3
4
5
6
7
8
9
10
11
12
# -r  -- recurse into directories
--- ~/Desktop » ll
drwxr-xr-x 2 narcissus narcissus 4.0K Apr 15 17:17 test

--- ~/Desktop » zip -re0 test.zip test
Enter password:
Verify password:
adding: test/ (stored 0%)
adding: test/autoline (stored 0%)
adding: test/2.sh.x.c (stored 0%)
adding: test/2.zip (stored 0%)
adding: test/2.sh (stored 0%)

使用这种方式加密的文件/文件夹在解压时需要输入密码进行解压。怎么说呢,我挺喜欢这个的,简单嘛。

对字符串加密/解密

可以使用base64/base32来加密解密

1
2
3
4
--- Desktop/test » echo 123 | base64
MTIzCg==
--- Desktop/test » echo MTIzCg== | base64 -d
123

其实加密解密还有两个特别厉害的工具集:gpg和openssl,由于这两个都太复杂了,涉及到的东西太多,所以这里不写了。以后再写。