【问题标题】:Remove unnecessary characters from tcpdump output从 tcpdump 输出中删除不必要的字符
【发布时间】:2018-11-17 09:06:54
【问题描述】:

我正在使用此命令监视本地 (macOS) HTTP 流量:

sudo tcpdump -A -s 0 'tcp port 4444 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -i lo0

我会变魔术,但也会输出不必要的字符:

{"message":"body"}
14:29:07.725362 IP localhost.64258 > localhost.krb524: Flags [P.],seq 1004:1579, ack 469, win 11768, options [nop,nop,TS val 1448865401 ecr 1448865398], length 575 E..s..@.@..............\...^Z.>...-..h.....
V[.yV[.vPOST /v2/8387efc52b0b6b14e83bcd1d1951bdb2 HTTP/1.1
Content-Type: application/json; charset=utf-8

应该是:

{"message":"body"}

POST /v2/8387efc52b0b6b14e83bcd1d1951bdb2 HTTP/1.1
Content-Type: application/json; charset=utf-8

【问题讨论】:

    标签: linux bash shell tcp tcpdump


    【解决方案1】:

    假设您显示的输入:

    {"message":"body"}
    14:29:07.725362 IP localhost.64258 > localhost.krb524: Flags [P.],seq 1004:1579, ack 469, win 11768, options [nop,nop,TS val 1448865401 ecr 1448865398], length 575 E..s..@.@..............\...^Z.>...-..h.....
    V[.yV[.vPOST /v2/8387efc52b0b6b14e83bcd1d1951bdb2 HTTP/1.1
    Content-Type: application/json; charset=utf-8
    

    这行 sed :

    sed -e 's#^\(.*\)\(\(\(GET\|POST\|PUT\|DELETE\|OPTIONS\)\) /.*$\)#\2#g' input.txt | grep -E '({|Content-Type|GET|POST|PUT|DELETE|OPTIONS)'
    

    会输出这个:

    {"message":"body"}
    POST /v2/8387efc52b0b6b14e83bcd1d1951bdb2 HTTP/1.1
    Content-Type: application/json; charset=utf-8
    

    这是你需要的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 2014-03-31
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多