我正在尝试从/ etc / shadow中为用户测试grep salt。
egrep -o "test:(.*$){1}" /etc/shadow --color
返回给我:
test:$6$zy513.E6$ae7nXcZnVFb0f2H.x9I7xXTwJLZJzQtTzsdfkOSnZ7KiFxR.slWFPogXcnwZdGI9AW1n9EhFtBmozfxPebXbB0:16882:0:99999:7:::
其实我想要以下,盐:
test:$6$zy513.E6$
有谁知道如何解决我的egrep
?我无法找到解决方案。
感谢。
答案 0 :(得分:1)
这个怎么样:
egrep -o 'test:(\$[^$]+){2}\$' /etc/shadow --color
答案 1 :(得分:0)
您可以像这样使用awk
:
awk -F: '{gsub(/\$[^$]+$/, "$",$2);print $1,$2}' OFS=: /etc/shadow
-F:
将字段分隔符设置为:
,这样可以轻松访问字段2中的密码部分($2
)。
gsub()
使用的正则表达式正在替换最后一美元之后的所有内容,直到字符串结束为止。
输出:
test:$6$zy513.E6$
顺便说一下,$6
部分不是盐,它是用于散列密码的散列算法类型,6
代表SHA-512
。盐是zy513.E6
查看Wikipedia了解详情。
更新
如果您只搜索某个用户,则在这种情况下test
将awk
命令更改为:
awk -F: '$1=="test" {gsub(/\$[^$]+$/, "$",$2);print $1,$2}' OFS=: /etc/shadow