2011-01-23 53 views
49

我使用tcpdump通过执行以下命令获取HTTP数据:我可以使用tcpdump来获取HTTP请求,响应头和响应正文吗?

sudo tcpdump -A -s 1492 dst port 80 

上述命令的结果:

  1. 接头,我想请求和响应头。
  2. 无法读取的数据。
  3. 网址GET /modules/mod_news_pro_gk1/cache/stories.ilbalad.ajayeb.strange-tractor.jpg

我需要更清晰的结果,例如,可读请求>响应标题>响应正文等。 如何过滤我的结果?

+3

HTTP响应可能会被压缩或分块,并且获取其原始文本可能不会真正做到您需要的(“不可读数据”)。你可能需要更全面地解释你想做什么以及你的环境允许什么(例如你不能只使用Charles或Fiddler这样的HTTP代理)? – EricLaw 2011-01-23 22:50:13

+0

你是如何在Android操作系统上运行`tcpdump`的?你是否将该命令嵌入到应用程序中,或者在连接到Android手机的PC上运行它? – faizal 2014-07-25 07:13:37

+1

@faizal - 您应该将tcpdump二进制文件安装到设备中,然后您可以从设备本身运行它,请使用以下链接了解如何将tcpdump安装到Android设备中:http://gadgetcat.wordpress.com/2011/ 09/11/tcpdump-on-android/ – kimo 2014-07-25 21:33:07

回答

142

有用于HTTP GET & HTTP POST tcpdump的过滤器(或两者兼有加上邮件正文):

  • 运行man tcpdump | less -Ip examples查看一些示例

  • 下面是HTTP GET的tcpdump过滤器:

    sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420' 
    
  • 下面是HTTP POST一个tcpdump的过滤器:

    sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)' 
    
  • 监视器HTTP通信,包括请求和响应头和消息体(source):

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

对于有关TCP报头中的位扭曲的更多信息,请参阅:String-Matching Capture Filter Generator(链接对Sake Blok的解释)。

34

我建议使用Wireshark,它有一个“Follow TCP Stream”选项,可以很容易地看到特定TCP连接的完整请求和响应。如果您更喜欢使用命令行,则可以尝试tcpflow,这是一种专用于捕获和重建TCP流内容的工具。

其他选项将使用HTTP调试代理,如CharlesFiddler,如EricLaw所示。这些优点是对HTTP具有特定的支持,以便更轻松地处理各种编码以及其他功能,例如保存请求以重播它们或编辑请求。

您也可以使用像Firebug工具(火狐),Web Inspector(Safari浏览器,Chrome和其它基于WebKit的浏览器),或者Opera Dragonfly,所有这些都提供查看请求和响应头和身体(虽然有些能力他们中的大多数不允许你看到确切的字节流,而是浏览器如何解析请求)。

最后,你总是可以构建由手工请求,使用像远程登录,netcat,或socat连接到端口80和手动键入请求,或像htty的工具,以帮助轻松地构建一个请求,并检查响应。

6

这里是另一个选择:Chaosreader

所以我需要调试应用程序,其职位XML的第三方应用程序。我发现了一个很棒的perl脚本,它可以完成所有的辛苦工作 - 你只需要将它转换为一个tcpdump输出文件,并且它可以完成所有的操作并输出所有你需要的东西...

该脚本被称为chaosreader0.94。见http://www.darknet.org.uk/2007/11/chaosreader-trace-tcpudp-sessions-from-tcpdump/

它的工作就像一种享受,我做了以下内容:

tcpdump host www.blah.com -s 9000 -w outputfile; perl chaosreader0.94 outputfile