首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tcpdump筛选器表达式通过adb中断

问tcpdump筛选器表达式通过adb中断
EN

Unix & Linux用户
提问于 2015-01-25 01:24:25
回答 2查看 1.5K关注 0票数 0

我在我的Android平板电脑上安装了tcpdump,并且运行来自根adb shell的命令。我在tcpdump手册页示例工作,特别是这个:

若要将所有IPv4 HTTP数据包打印到端口80,即只打印包含数据的数据包,例如SYN和FIN数据包以及ACK专用数据包,请执行以下操作。

代码语言:javascript
复制
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

如果我在我的桌面(Ubuntu)上执行上面的命令,它就运行得很好。如果我尝试在我的Android设备上执行它,像这样:

代码语言:javascript
复制
adb shell tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

我知道这个错误:

代码语言:javascript
复制
/system/bin/sh: can't create 2)) != 0): Read-only file system
/system/bin/sh: here document missing
tcpdump: syntax error

以下命令在Android设备上运行良好:

代码语言:javascript
复制
tcpdump 'tcp port 80'

过滤器表达式似乎没有被正确地解析,或者什么的,但老实说,我不知道它到底是如何工作的,所以我不知道从哪里开始疑难解答。对于哪里出了问题或如何解决,有什么想法吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2015-01-25 10:22:13

引号导致传递命令adb三个参数:

  1. shell
  2. tcpdump
  3. tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)

然后它可能会尝试运行命令。

代码语言:javascript
复制
tcpdump tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)

没有引号(作为您输入的机器上的shell,命令删除引号)在Android机器上。

你也许可以

代码语言:javascript
复制
adb shell tcpdump "'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'"

这意味着将传递adb命令。

  1. shell
  2. tcpdump
  3. 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

以便它将尝试运行以下命令

代码语言:javascript
复制
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

在机器人机器上。

例如,ssh;命令也会出现同样的问题。

代码语言:javascript
复制
ssh localhost tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

获取错误

代码语言:javascript
复制
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `tcpdump tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
票数 4
EN

Unix & Linux用户

发布于 2015-01-25 01:53:51

我仍然不知道在哪里没有正确地解释命令,但是现在没有问题了,如果不是这样的话:

代码语言:javascript
复制
adb shell tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

首先打开shell,然后执行tcpdump:

代码语言:javascript
复制
adb shell
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/180916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档