Linux 需要帮助了解strtonum的不同输出吗

Linux 需要帮助了解strtonum的不同输出吗,linux,awk,command-line,octal,Linux,Awk,Command Line,Octal,所以我正在尝试进入CTFs,我正在做的第一个是2019年picoCTF。我使用了gawk和strtonum()来解决其中一个问题。基本上,我必须看看这个输出: 49734 231 160 49735 235 151 49736 230 143 49737 310 157 87663 12 103 162650 364 124 175231 153 106 175232 261 173 211986 230 164 211987 222 150 211988 1

所以我正在尝试进入CTFs,我正在做的第一个是2019年picoCTF。我使用了
gawk
strtonum()
来解决其中一个问题。基本上,我必须看看这个输出:

  49734 231 160
  49735 235 151
  49736 230 143
  49737 310 157
  87663  12 103
 162650 364 124
 175231 153 106
 175232 261 173
 211986 230 164
 211987 222 150
 211988  15  63
 211989 330 171
 284427 122 162
 292340 174  63
 292341 371 137
 331830 216 141
 331831 365  65
 426632 346 137
 439903 360 144
 515770 112  61
 515771 252 146
 583608 341 146
 640996 310  63
 688795  77 162
 688796 107  63
 702943  23 156
 751424 243 164
 754731  61 137
 754732 113  64
 754733 274 163
 754734 304 137
 796226  43 142
 871159 256 165
 871160   6  67
 871161 316  67
 871162 346  63
 927506 347 162
 927507 212 137
 927508 122  64
 994666 376 156
 994667  43 144
 994668 377 137
1068577 234 152
1068578 344  63
1068579 203  61
1068580 222  61
1068581 162 171
1101444   5 137
1101445 173 141
1101446   7 163
1101447 300 154
1171017  53 153
1171018 147 152
1171019 356 146
1241182  51 144
1241183 224 163
1241184 200 141
1241185 106 154
1272572 217 153
1272573 156 146
1337150   4 163
1410459 345 154
1410460 340 153
1460208   5 146
1510914 237 154
1567157 322 153
1567158 100 152
1567159  42 144
1567160 220 163
1567161 205 146
1581925 315 144
1581926 244 163
1581927 215 172
1581928 147 155
1581929 257 172
1677065 176  61
1677066 341  60
1764510 357  65
1764511 210  64
1764512  31  70
1766742  13 175
它来自命令
cmp-l kitters.jpg cattos.jpg
,并解码第三列中字符串的八进制ASCII编码

为了完成任务,我使用了以下命令:

cmp -l kitters.jpg cattos.jpg | gawk '{printf "%c", strtonum(0$3)}' && echo
cmp -l kitters.jpg cattos.jpg | gawk '{printf "%c", strtonum($3)}' && echo
给出所需输出的标志:

picoCTF{th3yr3_a5_d1ff3r3nt_4s_bu773r_4nd_j311y_aslkjfdsalkfslkflkjdsfdszmz10548}
但是,在找到此解决方案之前,我尝试了以下命令:

cmp -l kitters.jpg cattos.jpg | gawk '{printf "%c", strtonum(0$3)}' && echo
cmp -l kitters.jpg cattos.jpg | gawk '{printf "%c", strtonum($3)}' && echo
这与另一个命令完全相同,只是在
$3
之前没有
0
。它给出了以下结论:

g|j­¤?«¢?A=?¢?¤@£¥CC?¢@?==«£££££¬=<A@F¯

g|j·«、A=?、CC、@=«p>《手册》对strtonum的描述如下:

strtonum(str)

检查
str
,并返回其数值如果
str
以前导的
0
开头,则处理它 作为八进制数
。如果
str
以前导的
0x
0x
开头,则将其视为十六进制 号码否则,假设它是十进制数

因此,正如您在下面看到的,
160
0160
是不同的数字;都有文件记录

$ gawk 'BEGIN { print strtonum("160"), strtonum("0160") }'
160 112

本手册对strtonum的描述如下:

strtonum(str)

检查
str
,并返回其数值如果
str
以前导的
0
开头,则处理它 作为八进制数
。如果
str
以前导的
0x
0x
开头,则将其视为十六进制 号码否则,假设它是十进制数

因此,正如您在下面看到的,
160
0160
是不同的数字;都有文件记录

$ gawk 'BEGIN { print strtonum("160"), strtonum("0160") }'
160 112

数据太多;-)(但我没有否决投票)。请在发布更多Qs之前阅读。很高兴你得到了下面的解决方案。不要忘记接受有助于/回答您的问题的答案。祝您好运。仅仅因为您必须查看此输出并不意味着我们必须查看!拿出一个最简单的例子来说明你的问题,你会有更多的人花时间阅读它来帮助你。太多的数据;-)(但我没有否决投票)。请在发布更多Qs之前阅读。很高兴你得到了下面的解决方案。不要忘记接受有助于/回答您的问题的答案。祝您好运。仅仅因为您必须查看此输出并不意味着我们必须查看!拿出一个简单的例子来说明你的问题,你会有更多的人花时间来阅读它来帮助你。对不起,我应该仔细看看
gawk
手册页。非常感谢你的帮助!对不起,我应该仔细看看
gawk
手册页。非常感谢你的帮助!