需要从 tcpdump 输出中提取中间的十六进制部分
这是捕获的数据包的 tcpdump 十六进制输出。
使用的命令是..
$ tcpdump -X -s0 protochain <portno>
0x0000: 6000 0000 0080 3220 0000 0000 0000 0000 ................
0x0040: 0000 0000 0000 0001 0000 0000 0000 0000 ................
0x0090: 6174 6500 0000 0329 ........
这些...
可以是任何它们是与指定的十六进制字符相对应的各自的ascii字符。我需要提取中间的六角形部分。
我需要以下格式的输出。请给我一些关于这方面的建议。
6000 0000 0080 3220 0000 0000 0000 0000
0000 0000 0000 0001 0000 0000 0000 0000
6174 6500 0000 0329
我尝试了这个,但这似乎不正确..
cut -d ":" -f2 tmp_packet.txt | awk -F " " '{printf "%s %s %s %s %s %s %s %s
\n",$1,$2,$3,$4,$5,$6,$7,$8}' > packet.txt
也尝试了 cut -b
,但这给出了奇怪的输出。
如果可能的话建议使用 awk NR
和 NF
。我是 awk 的新手,所以对它们不太了解。
我尝试了这个并得到这些 ...
作为输出。
cut -d ":" -f2 tmp_packet.txt | awk -F " " '{printf "%s\n",$NF}' > packet.txt
输出:
................
................
........
有没有办法使用 awk 打印除最后一列之外的所有列(即打印除上述指定之外的所有列)。
Here is a tcpdump hex output of a captured packet.
Command used was ..
$ tcpdump -X -s0 protochain <portno>
0x0000: 6000 0000 0080 3220 0000 0000 0000 0000 ................
0x0040: 0000 0000 0000 0001 0000 0000 0000 0000 ................
0x0090: 6174 6500 0000 0329 ........
these ...
could be anything they are respective ascii charaters corresponding to the specified hex characters. I need to extract the middle hex portion.
I need output in the following format. Please suggest me something on this.
6000 0000 0080 3220 0000 0000 0000 0000
0000 0000 0000 0001 0000 0000 0000 0000
6174 6500 0000 0329
I tried this one but that seems incorrect ..
cut -d ":" -f2 tmp_packet.txt | awk -F " " '{printf "%s %s %s %s %s %s %s %s
\n",$1,$2,$3,$4,$5,$6,$7,$8}' > packet.txt
tried something with cut -b
also but that is giving weird output.
If possible suggest something with awk NR
and NF
. I am new to awk so do not know much about them.
I tried this and get those ...
as output.
cut -d ":" -f2 tmp_packet.txt | awk -F " " '{printf "%s\n",$NF}' > packet.txt
output :
................
................
........
Is there any way using awk to print all the columns except the last one (that is to print everything except the above specified).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
按空格剪切:
cut -d " " -f 3-10
Cut by spaces:
cut -d " " -f 3-10
您可以尝试使用 grep 作为:
查看
You can try using grep as:
See it
您的 AWK 解决方案 -
awk '{for(i=2;i<=9;i++) printf $i" ";printf "\n"}' 文件 | sed 's/\.*//g'
通过 AWK 打印的另一种方式 -
Your AWK Solution -
awk '{for(i=2;i<=9;i++) printf $i" ";printf "\n"}' file | sed 's/\.*//g'
Another way of printing via AWK -
这可能适合您:
或者如果您想删除尾随空格:
This might work for you:
or if you want to remove trailing spaces: