[20261002]验证sskgphpjw函数参与运算的字符串是否存在规律.txt
--//bpftrace脚本跟踪sskgphpjw函数,无意间发现参与字符串运算存在某个规律,很明显每次运算的ascii码在原来的基础上+1.
# bpftrace sskgphpjw.bt 0
Attached 2 probes
[16:22:49] sskgphpjw pid=5033 ptr=0x00007ffed434d0e0 len=43 str=book/u01/app/oracle/product/21.0.0/dbhome_1
[16:22:49] sskgphpjw pid=5033 return hash_value=0x5507207c 1426530428
[16:22:49] sskgphpjw pid=5033 ptr=0x00007ffed434d0e0 len=43 str=cppl0v120bqq0psbdmf0qspevdu032/1/10ecipnf`2
[16:22:49] sskgphpjw pid=5033 return hash_value=0x7e0edb60 2114902880
[16:22:49] sskgphpjw pid=5033 ptr=0x00007ffed434d0e0 len=43 str=dqqm1w231crr1qtceng1rtqfwev14302021fdjqoga3
[16:22:49] sskgphpjw pid=5033 return hash_value=0x99eaaedc 2582294236
[16:22:49] sskgphpjw pid=5033 ptr=0x00007ffed434d0e0 len=43 str=errn2x342dss2rudfoh2surgxfw25413132gekrphb4
[16:22:49] sskgphpjw pid=5033 return hash_value=0x32fcf5bc 855438780
book/u01/app/oracle/product/21.0.0/dbhome_1
cppl0v120bqq0psbdmf0qspevdu032/1/10ecipnf`2
dqqm1w231crr1qtceng1rtqfwev14302021fdjqoga3
errn2x342dss2rudfoh2surgxfw25413132gekrphb4
--//能否写一个bash shell脚本验证是否正确。仅仅带入book/u01/app/oracle/product/21.0.0/dbhome_1,输出如下
cppl0v120bqq0psbdmf0qspevdu032/1/10ecipnf`2
dqqm1w231crr1qtceng1rtqfwev14302021fdjqoga3
errn2x342dss2rudfoh2surgxfw25413132gekrphb4
--//我的测试:
$ echo -n book/u01/app/oracle/product/21.0.0/dbhome_1 | od -An -v -t u1 | awk '{for(j=1;j<=NF;j++) printf "%c", ($j+1)}';echo
cppl0v120bqq0psbdmf0qspevdu032/1/10ecipnf`2
$ echo -n book/u01/app/oracle/product/21.0.0/dbhome_1 | od -An -v -t u1 | awk '{for(j=1;j<=NF;j++) printf "%c", ($j+2)}';echo
dqqm1w231crr1qtceng1rtqfwev14302021fdjqoga3
$ echo -n book/u01/app/oracle/product/21.0.0/dbhome_1 | od -An -v -t u1 | awk '{for(j=1;j<=NF;j++) printf "%c", ($j+3)}';echo
errn2x342dss2rudfoh2surgxfw25413132gekrphb4
--//开始的写法要比前面复杂,想到了使用od,没考虑使用awk,直接参考了kimi的解答。
--//自己原始的写法如下:
$ echo -n book/u01/app/oracle/product/21.0.0/dbhome_1 | od -An -v -t u1 -w1 | xargs -IQ bash -c "echo 'obase=16; Q+3'|bc" | xxd -r -p; echo
errn2x342dss2rudfoh2surgxfw25413132gekrphb4
--//顺便贴出kimi的解答:
#!/bin/bash
# sskgphpjw 字符串规律验证: 每次运算每个字符 ASCII 码 +1
# 用法: ./sskgphpjw.sh "book/u01/app/oracle/product/21.0.0/dbhome_1" [迭代次数,默认3]
s="${1:-book/u01/app/oracle/product/21.0.0/dbhome_1}"
n="${2:-3}"
echo "输入: $s"
for ((i=1; i<=n; i++)); do
# od 输出每个字节的十进制值, awk 逐字节 +1 (mod 256) 后再转回字符
s=$(printf '%s' "$s" | od -An -v -tu1 | \
awk '{for(j=1;j<=NF;j++) printf "%c", ($j+1)%256}')
echo "第${i}次+1: $s"
done
$ . a1.sh
输入: book/u01/app/oracle/product/21.0.0/dbhome_1
第1次+1: cppl0v120bqq0psbdmf0qspevdu032/1/10ecipnf`2
第2次+1: dqqm1w231crr1qtceng1rtqfwev14302021fdjqoga3
第3次+1: errn2x342dss2rudfoh2surgxfw25413132gekrphb4
--//deepseek的解答:
#!/bin/bash
s="book/u01/app/oracle/product/21.0.0/dbhome_1"
for offset in 1 2 3; do
out=""
for ((i=0; i<${#s}; i++)); do
c="${s:$i:1}"
# 获取 ASCII 码,加 offset,再转回字符
printf -v code "%d" "'$c"
new=$((code + offset))
printf -v ch "\\x$(printf '%02x' $new)"
out+="$ch"
done
echo "$out"
done
$ . a2.sh
cppl0v120bqq0psbdmf0qspevdu032/1/10ecipnf`2
dqqm1w231crr1qtceng1rtqfwev14302021fdjqoga3
errn2x342dss2rudfoh2surgxfw25413132gekrphb4
--//printf -v code "%d" "'$c"写法非常特殊,注意$c前有1个单引号,表示转化成asc码。
--//对比前面的执行效率较低。
perl -e '
my $s = shift;
for my $o (1..3) {
my $r = $s;
$r =~ s/(.)/chr(ord($1)+$o)/ge;
print "$r\n";
}
' "book/u01/app/oracle/product/21.0.0/dbhome_1"
cppl0v120bqq0psbdmf0qspevdu032/1/10ecipnf`2
dqqm1w231crr1qtceng1rtqfwev14302021fdjqoga3
errn2x342dss2rudfoh2surgxfw25413132gekrphb4
python3 - <<'PY' "book/u01/app/oracle/product/21.0.0/dbhome_1"
import sys
s = sys.argv[1]
for o in (1, 2, 3):
print("".join(chr(ord(c) + o) for c in s))
PY
cppl0v120bqq0psbdmf0qspevdu032/1/10ecipnf`2
dqqm1w231crr1qtceng1rtqfwev14302021fdjqoga3
errn2x342dss2rudfoh2surgxfw25413132gekrphb4
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3184451/ ,如需转载,请注明出处,否则将追究法律责任。