将 pcap 文件精简为对特定 NFS 文件的所有操作

将 pcap 文件精简为对特定 NFS 文件的所有操作

我有一个 80GB 的数据包捕获(libpcap),我想将其过滤为涉及特定 NFS 文件/文件句柄上的所有操作的所有内容。

我怎样才能做到这一点?

我知道我想要捕获的内容如下(以 tshark 显示格式):

nfs.name == ".o1_mf_1_1093__1366653401581181_.arc
nfs.fh.hash == 0x5c191ad8
nfs.fhandle == 3a:4f:47:4c:20:11:7b:48:7f:88:4f:16:94:90:a0:34:9a:fa:cf:71:e1:6a:95:fc:3e:3b:4e:6a:bb:9c:c6:c4:49:db:80:ca

但我不知道如何告诉 tshark 给我适用的请求/回复/等等。

我试过了:

tshark -r ginormous.pcap -w 1366653401581181.pcap \
    -R "nfs.fh.hash == 0x5c191ad8" \
    -o nfs.file_name_snooping:TRUE \
    -o nfs.file_full_name_snooping:TRUE \
    -o nfs.fhandle_find_both_reqrep:TRUE

尝试哄骗 tshark 进行完整 GUI 可以进行的侦查,但是无济于事。

答案1

使用 tshark -r nfs.pcap -R 'nfs.fh.hash == 0x5c191ad8',您可以获取所有请求或使用 fh 回复。对于更复杂的情况,我猜您需要编写一些代码。有一个很好的工具可以做到这一点http://git.linux-nfs.org/?p=mora/nfstest.git;a=summary

答案2

工作正在进行中:

tshark -r $BIGFILE -T fields -e rpc.xid -R "nfs.fh.hash == 0x5c191ad8" | \
   tshark -r $BIGFILE -R "$(\
       python -c 'import sys; xids = sys.stdin.readlines(); print("||".join(["rpc.xid=={0}".format(xid.strip()) for xid in xids]))'\
   )"

相关内容