编码加密核验类命令

2022-09-28 19:48:55 浏览数 (1)

[TOC]

0x00 快速入门
0x01 加密编码
base64 命令

描述:使用 Base64 编码/解码文件或标准输入输出,数据以 RFC 3548 规定的 Base64 字母格式进行编码。 解码时输入数据(加密流)可能包含一些非有效 Base64 字符的新行字符。

代码语言:javascript复制
#用法:
base64 [选项]... [文件]

#Options:
-d, --decode          #解码数据
-i, --ignore-garbag   #解码时忽略非字母字符
-w, --wrap=字符数     #在指定的字符数后自动换行, 0 为禁用自动换行(`默认为76字符`)
--ignore-garbage      #选项来恢复加密流中任何非 base64 字符。
#如果没有指定文件,或者文件为"-",则从标准输入读取。

实际案例:

代码语言:javascript复制
#示例1.加密和解密
echo test|base64    #加密
dGVzdAo=
echo dGVzdAo= |base64 -d    #解密 

#示例2.批量解密base64:加密也一样
#!/bin/bash
for i in $(cat 1.txt)
do
        echo $i | base64 -d 1>>de.txt 2>/dev/null
        echo -e "" >>de.txt
done

#实例3.不换行显示转换后的数据
cat 20200524113201-index.html.log|base64 -w 0
# MTJhMTMKPiB2YXIgbWcj0iY3F6ayI7DQo2MDVjNjA2CjwgPC9zY3JpcHQ DQotLS0KPiA8L3NjcmlwdD4KXCBObyBuZXdsaW5lI0IGVuZCBvZiBmaWxlCg==

WeiyiGeek.批量解密base64

md5sum 命令

描述:可以用于对文件进行校验和得到文件的MD5值; 参数语法:

代码语言:javascript复制
md5sum [选项] [文件]  #可以接受多个文件或通配符
-c #核验数据完整性

实际案例:

代码语言:javascript复制
#示例1.获取一个目录中的所有文件md5值
$md5sum *
ee38a408f20702ccc05fb39a04ee251c  RPM-GPG-KEY-weiyigeek
1139929d8855ced585631c0e3fe8ad8d  aaa.jpg
1139929d8855ced585631c0e3fe8ad8d  compare_varnish.jpg


#示例2.接受多个文件或通配符
md5sum file1 file2 file3
[checksum1]   file1
[checksum2]   file2
[checksum3]   file3


#示例3.-c选项可以用生成的md5文件核实数据的完整性,如:
$ md5sum a.txt > a.md5
$ md5sum –c a.md5
a.txt: OK
uuidgen

描述:uuid码全称是通用唯一识别码(universally uniqie Identifier,UUID),而uuidgen命令则是linux中生成和获取uuid的工具,HP和RedHat上可以使用uuidgen来生成,solaris上命令makeuuid

实际案例:

代码语言:javascript复制
#示例1.Linux生成uuid随机数(可以作为随机密码)
$uuidgen
07d07031-eb0f-4691-8606-befb46645433

#示例2.获取网卡的uuid信息
$uuidgen eth1
07d07031-eb0f-4691-8606-befb46645433
sha1sum 命令

描述:进行文件的sha1值校验以及文件的完整性核验,除了这个sha1sum还有其他的核验方式只是校验长度不同sha256sum ,sha384sum, ha512sum; SHA1与md5类似是另一种常用的校验和算法,它从给定的输入文件中生成一个长度为40个字符的十六进制

语法案例:

代码语言:javascript复制
sha1sum [选项|文件]
-c #校验完整性
-b #以二进制模式读取文件
--ignore-missing #don't fail or report status for missing files
--quiet #don't print OK for each successfully verified file
--status #don't output anything, status code shows success
--strict  #exit non-zero for improperly formatted checksum lines
-w, --warn #warn about improperly formatted checksum lines

实际案例:

代码语言:javascript复制
#基础使用案例
sha1sum *
8d469ba5f661a779ed6d73537f3c2dfcaba46d8b  check.sh
cd3eccb06410c7b3d6cd01f7d1f0d0bbefe446d3  test.txt

#首先将命令产生的消息摘要保存在.sha1文件中再将test.txt和test.sha1放在同一个目录中,使用-c命令行选项验证文件的完整性。
ha1sum test.txt > test.sha1
cd3eccb06410c7b3d6cd01f7d1f0d0bbefe446d3  test.txt
sha1sum -c demo.sha1
demo.txt: OK


#默认情况下,sha1sum命令以文本模式读取文件,也可以强制该工具以二进制模式读取
sha1sum -b [filename]

进制转储
od 命令 - 非纯文本文件显示

描述:在查阅非文本文件时候采用od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现输出文件内容,。

基础语法:

代码语言:javascript复制
od [-abcdfhilovx][-A <字码基数>][-j <字符数目>][-N <字符数目>][-s <字符串字符数>][-t <输出格式>][-w <每列字符数>][--help][--version][文件...]

#参数
-t [类型] : 后面接各种类型"类型(TYPE)"的输出例如:
  a : 利用默认的字符来输出
  c :利用ASCII字符来输出
  d [size] : 利用十进制(decimal)来输出数据,每个整数占用size bytes;
  f [size] : 利用浮点数(float)来输出数据,每个数占用size bytes;
  o [size] : 利用八进制(octal)来输出数据,每个数占用size bytes;
  x [size] : 利用十六进制(Hexadecimal)来输出数据,每个数占用size bytes;
-a  此参数的效果和同时指定"-ta"参数相同使用默认字符来输出。
-A   <字码基数| [doxn]>  选择要以何种基数计算字码。
-b  此参数的效果和同时指定"-toC"参数相同。
-c  此参数的效果和同时指定"-tC"参数相同。
-d  此参数的效果和同时指定"-tu2"参数相同。
-f  此参数的效果和同时指定"-tfF"参数相同。
-o  此参数的效果和同时指定"-to2"参数相同。
-x  此参数的效果和同时指定"-h"参数相同。
-h  此参数的效果和同时指定"-tx2"参数相同。
-i  此参数的效果和同时指定"-td2"参数相同。
-j<字符数目>或--skip-bytes=<字符数目>  略过设置的字符数目。
-l  此参数的效果和同时指定"-td4"参数相同。
-N<字符数目>或--read-bytes=<字符数目>  到设置的字符数目为止。
-s<字符串字符数>或--strings=<字符串字符数>  只显示符合指定的字符数目的字符串。
-t<输出格式>或--format=<输出格式>  设置输出格式。
-v或--output-duplicates  输出时不省略重复的数据。
-w<每列字符数>或--width=<每列字符数>  设置每列的最大字符数。

基础示例:

代码语言:javascript复制
# 示例1.创建 tmp 文件简单演示使用将字符转换成八进制
> echo -e "abc dn12  3" > tmp 
> cat $_
# abc d
# 12  3
> od -b tmp
> 0000000 141 142 143 040 144 012 061 062 040 040 063 012
> 0000014

# 示例2使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节:
> od -c tmp
#  0000000   a   b   c       d  n   1   2           3  n
#  0000014
❯ od -t c /usr/bin/passwd | more
# 0000000 177   E   L   F 002 001 001                  
# 0000020 003     >   001         @   O            

# 示例3.使用ASCII码进行输出,注意其中包括转义字符
$ od -A d  -c tmp
0000000   a   b   c       d  n   1   2           3  n
0000012
$ od -A x  -c tmp
000000   a   b   c       d  n   1   2           3  n
00000c
$ od -A n  -c tmp
  a   b   c       d  n   1   2           3  n

# 示例4.例如$IFS系统分隔符变量,直接输出无任何效果,我们可以通过od -b 以8进制形式转储
echo "$IFS" | od -b
# Octal:"040"是空格(32),"011"是Tab(9),"012"是换行符"n"(10) 
0000000 040 011 012 012


# 示例5.使用进制与ascii进行对比
# Octal VS Ascii
> od  -t oCc /etc/issue  # 以八进制的列出值与ASCII对应表
0000000 125 142 165 156 164 165 040 062 060 056 060 064 040 114 124 123
          U   b   u   n   t   u       2   0   .   0   4       L   T   S
0000020 040 134 156 040 134 154 012 127 151 156 144 157 167 163 040 127
                 n          l  n   W   i   n   d   o   w   s       W
0000040 123 114 012 012
          S   L  n  n

> od  -t dCc /etc/issue  # 以十进制的列出值与ASCII对应表
0000000   85   98  117  110  116  117   32   50   48   46   48   52   32   76   84   83
           U    b    u    n    t    u         2    0    .    0    4         L    T    S
0000020   32   92  110   32   92  108   10   87  105  110  100  111  119  115   32   87
                    n             l   n    W    i    n    d    o    w    s         W
0000040   83   76   10   10
           S    L   n   n

> od  -t xCc /etc/issue  # 以十六进制的列出值与ASCII对应表 
0000000  55  62  75  6e  74  75  20  32  30  2e  30  34  20  4c  54  53
          U   b   u   n   t   u       2   0   .   0   4       L   T   S
0000020  20  5c  6e  20  5c  6c  0a  57  69  6e  64  6f  77  73  20  57
                 n          l  n   W   i   n   d   o   w   s       W
0000040  53  4c  0a  0a
          S   L  n  n
xxd 命令

描述:用于使用二进制或十六进制格式显示文件内容,可以将指定文件或标准输入以十六进制转储,也可以把十六进制转储转换成原来的二进制形式,与winhex由很大的相似;

命令格式:

代码语言:javascript复制
#如果没有指定输入文件, 则采用标准输入
xxd -h[elp]
xxd [options] [infile | [outfile]]
xxd -r[evert] [options] [infile [outfile]]

#参数
-b: 以2进制格式进行输出
-c: 每行输出多少个字节
-g: 几个字节组成一组
-i:将文件内容输出成 c的一个数组格式 
-l : 输出几个字节后结束,显示几个字节的数据 
-p:以一个整块输出所有的hex, 不使用空格进行分割
-s [ ][-]seek : 从第几个字符开始
-u : 输出采用大写
-r: 反转操作,将16进制专程2进制

实际案例:

代码语言:javascript复制
#示例1.简单案例与winhex相似显示偏移位置和Hex 与 字符文本
xxd src.c
xxd -g4 src.c  #每四个字节一组
xxd -p src.c    #输出所有的hex不使用空格进行分割,也不显示偏移
xxd -i src.c   #输入C语言数组格式每一个下标存放一个十六进制
xxd -l 18 src.c 

#示例2.以2进制格式显示每行输出8字节(8*8 = 64个二进制)
xxd -b -c8  src.c

WeiyiGeek.xxd命令示例

代码语言:javascript复制
#示例3.显示从倒数15字节到末尾的十六进制内容并采用大写显示
xxd -s -15 -u src.c


#示例4.将十六进行转换成文本数据,将文本数据转换成十六进制
echo '0000029: 3574 68' | xxd -r
echo "hello" |xxd -g1  #显示字符串 hello 的16进制数据:
echo -e "x68x65x6cx6cx6f"


#示例5.在vim中也可以把文件转换为16进制来显示:
:%!xxd
#返回正常显示:
:%!xxd -r

WeiyiGeek.xdd示例2

0 人点赞