我曾使用此命令成功将 .txt 文件转换为 .pcap 文件。然而,这些都是我从 www 获得的 .txt 文件,但当我尝试将其用于我在另一个程序上亲自创建的 .txt 文件时,它确实创建了 filename.pcap,但它是空的。
还有人有更好的选择吗?
此外,我非常感谢这里提供的代码帮助,如果有人可以让我参考与该主题相关的维基百科文章,为什么发生这种情况时,这确实会帮助我从上下文中了解事物的工作原理,而我认为代码虽然很有用,但对于 Linux 的工作原理,我却一无所知。所以我确信这会被视为重复的问题,但实际上我真的很想具体了解这种情况,而不是被引荐到另一个 apt 包。
非常感谢
sed 's/^[0-9:]*//' filename.txt | sed 's/^ //g' | sed 's/ .*$//g' | xxd -r -p > filename.pcap
更新编辑:
上述方法所适用的 txt 文件集合与我创建的 txt 文件集合之间唯一一致的区别是,我的 txt 文件集合仅由数字组成,每行一个数字,长度为 10 位,而其他 txt 文件集合包含键盘上的所有其他内容。
不知道这是否有帮助,是的,我还在文本编辑器中查看了一个 pcap 文件,只需将其扩展名更改为 txt,看来它们是用一种密码加密的,该密码使用了标准键盘上更多的字符,所以...是的,这是相当标准的,不确定我在那里期待什么。
答案1
你提到
上述方法所适用的 txt 文件集合与我创建的 txt 文件集合之间唯一一致的区别是,我的 txt 文件集合完全由数字组成,每行一个数字,长度为 10 位
假设“数字”指的是十进制数字序列,那么第一个sed
表达式
s/^[0-9:]*//
意义匹配零个或多个固定在行首的十进制数字或冒号字符,并将其替换为空(大概是为了从常规xxd
输出中删除默认字节偏移量)将删除所有内容,只留下一串空行。
答案2
我不知道 sed 或 xxd但我将尝试分别遵循这 4 个命令:
sed 's/^[0-9:]*//' filename.txt > step1.txt
sed 's/^ //g' step1.txt > step2.txt
sed 's/ .*$//g' step2.txt > step3.txt
xxd -r -p step3.txt > filename.pcap
按照每个步骤,我都会找到一个方便的sed
教程,并检查命令的输出是否与我认为的相符,从而在此过程中学到一些sed
知识xxd
。
您可能已经注意到,我从您最初使用的命令行中删除了“|”字符。“|”是管道,表示命令的输出将用作下一个命令的输入。命令输出不是通过管道传输数据,而是被塞入中间文件,然后用作下一个命令的输入。