我正在使用tcpdump捕获http流量,并且对TCP慢启动和窗口大小增加感兴趣:
$ sudo tcpdump -i eth1 -w wget++.tcpdump tcp and port 80
Run Code Online (Sandbox Code Playgroud)
当我使用Wireshark查看转储文件时,窗口大小的进展看起来正常,即5840,5888,5888,8576,11264等...
但是当我查看转储文件时
$ tcpdump -r wget++.tcpdump -tnN | less
Run Code Online (Sandbox Code Playgroud)
我得到了似乎毫无意义的窗口大小(为简洁省略了IP地址):
: S 1069713761:1069713761(0) win 5840 <mss 1460,sackOK,timestamp 24220583 0,nop,wscale 7>
: S 1198053215:1198053215(0) ack 1069713762 win 5672 <mss 1430,sackOK,timestamp 2485833728 24220583,nop,wscale 6>
: . ack 1 win 46 <nop,nop,timestamp 24220604 2485833728>
: . 1:1419(1418) ack 1 win 46 <nop,nop,timestamp 24220604 2485833728>
: P 1419:2002(583) ack 1 win 46 <nop,nop,timestamp 24220604 2485833728>
: . ack 1419 win 133 <nop,nop,timestamp …Run Code Online (Sandbox Code Playgroud) 这是我的问题:
如果我连接到网络(所以我知道WPA/WPA2-PSK),我倒是希望能够解密我从网络中的其他设备拍摄的交通.(如果使用WEP,tcpdump会自动执行此操作).
据我所知,WPA为WiFi中的每个客户端使用类似会话密钥的东西 - 但我知道这是可能的 - 所以我想知道如何做到这一点.(如果tcpdump无法做到这一点,那么"手工"怎么做?)
谢谢你的帮助!
我有一个运行在端口8888(不,它不是http)和TCP之上的自定义协议。我已经捕获到PCAP文件中的数据包流。问题在于,现在我不能仅显示其数据部分。
我尝试使用以下命令:
tshark -r test.pcap -R 'tcp.port==8888 && tcp.len>0' -T fields -e "tcp.data"
Run Code Online (Sandbox Code Playgroud)
但它显示一个空字符串。tcp.data字段不是保存TCP数据包数据的字段吗?
如何仅显示所需数据?
我有一个简单的客户端服务器设置,似乎我从客户端发送的TCP数据包没有到达服务器.
通常一切正常,但是当我在客户端上启动50个线程以同时使用相同的小数据包(仅39个字节)"同时"命中服务器时,服务器无法接收所有字节的随机次数.更奇怪的是,它在如何接收它们方面非常一致......只收到5个字节.
我正在使用tcpdump和tcpflow捕获两端发生的事情(如果不熟悉tcp流,它会从TCP流中删除大量的TCP SYN/ACK/FIN/etc噪声,只显示发送的数据)任何方向).
在客户端,50个线程触发39字节数据包,它看起来很完美.具体来说,tcpflow(使用libpcap)向我展示了50个相同的数据传输:
07 B6 00 01 | 00 1E 00 00 | <etc>
Run Code Online (Sandbox Code Playgroud)
据我了解,libpcap/tcpdump从相当低的级别(低于TCP堆栈)获取数据,所以我认为这意味着数据发送正常,或者至少没有卡在内核缓冲区中.
但是,在查看服务器端时,一切都不完美.随机数失败,而且百分比很高.例如,在50个套接字连接中,30个工作正常,但是对于其中20个,我有一个协议失败,服务器socket.recv超时等待字节(协议指示确切的数据包长度).
它的失败方式非常一致.对于30/20的情况,30个插座完全接收传输的39个字节.其余20个ALL收到这个部分数据,之后我的socket.recv时间超出:
07 B6 00 01 | 00
Run Code Online (Sandbox Code Playgroud)
对于20个连接中的每一个,只有5个字节到达,并且它似乎处于内核级别,因为tcpdump仅显示5个字节到达.
怎么会发生这种情况?
这个5字节的边界不是100%重合.它是标头的第一部分,接下来是34字节的有效负载,但是没有到达.在客户端,它是这样分开的.
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.sendall(HEADER) # 5 bytes
sock.sendall(PAYLOAD) #34 bytes
Run Code Online (Sandbox Code Playgroud)
并且两个sock.sendall调用都在每个线程中成功完成,事实证明我的tcp日志记录显示所有50个运行完全发送39个字节"出门".
关于这个根本原因的任何想法?我错过了什么?
我刚刚接触过Raspberry Pi,并已将其设置为充当家庭网络中的DNS和DHCP服务器。这意味着所有网络请求在被释放之前都要经过它……这为我提供了一个绝佳的机会来使用tcpdump并查看我的网络中正在发生什么!
我在玩tcpdump参数来创建完美的网络间谍。这个想法是捕获HTTP GET请求。
这是我到目前为止所拥有的,并且非常好:
tcpdump -i eth0 'tcp[((tcp[12:1] & 0xf0)>> 2):4] = 0x47455420' -A
Run Code Online (Sandbox Code Playgroud)
-i eth0告诉它哪个接口来听-A意思是“打印此包的ASCII内容”每当我的网络上的任何东西发送GET请求时,这都会触发,这很棒。最后,我的问题是如何过滤出无聊的请求,例如图像,JavaScript,收藏夹图标等?
使用tcpdump甚至可以做到这一点,还是我需要转向更全面的工具(如tshark)?
谢谢你的帮助!
免责声明:目前我网络上唯一的人是我...这不是恶意的,这是技术难题!
我需要在我的Android设备上执行tcpdump跟踪.
我的设置:
将tcpdump文件推送到SD卡
adb push filepath/tcpdump /sdcard/tcpdump
Run Code Online (Sandbox Code Playgroud)
将文件复制到/ system/bin
为tcpdump文件授予root权限
adb shell
cd /system/bin
su
chmod 777 tcpdump
Run Code Online (Sandbox Code Playgroud)
运行tcpdump trace
tcpdump -vv -s 0 -w /sdcard/filename.pcap
Run Code Online (Sandbox Code Playgroud)
我已经设法在三星Galaxy S4上做到了 - 它工作正常.但是,它不适用于我的三星Galaxy Tab.在tcpdump命令后我收到错误:
tcpdump
soinfo_link_image(linker.cpp:1635): could not load library "libssl.so" needed by
"/system/bin/tcpdump"; caused by load_library(linker.cpp:761): not a valid ELF
executable: libssl.soCANNOT LINK EXECUTABLE
Run Code Online (Sandbox Code Playgroud)
两个设备都是root用户,并且它们具有相同的tcpdump配置.我 在/ system/lib /中有libssl.so
三星Galaxy S4
C:\Windows\System32>adb shell
shell@android:/ $ su
su
root@android:/ # cd system/bin
cd system/bin
root@android:/system/bin # tcpdump
tcpdump
tcpdump: …Run Code Online (Sandbox Code Playgroud) 我可以指定多于1个dstIP地址tcpdump吗?如果没有,如果我只想要两个特定目的地的流量,我该怎样才能很好地过滤信息?非常感谢你!
我需要嗅探特定Linux用户(UID)的流量。我正在用iptables / NFLOG(http://wiki.wireshark.org/CaptureSetup/NFLOG)很好地工作。
我的问题是NFLOG将pcap封装更改为“ NFLOG”(从“以太网”),并且某些工具(如tcpflow)无法再读取它。
我的问题是:是否可以将这样的pcap转换为“旧式” pcap文件?
我有一个Python脚本来捕获网络流量与tcpdump在subprocess:
p = subprocess.Popen(['tcpdump', '-I', '-i', 'en1',
'-w', 'cap.pcap'], stdout=subprocess.PIPE)
time.sleep(10)
p.kill()
Run Code Online (Sandbox Code Playgroud)
当此脚本完成工作时,我正在尝试.pcap在Wireshark中打开输出文件并得到以下错误:
“捕获文件似乎在数据包中间被剪切了。”
有什么解决方案可以适用于“正确”收盘tcpdump的subprocess?
首先,用QEMU Virtual Machine (Debian Sparc64 Etch 4.0),我已经能够成功地获得ssh并scp从游客的命令到主机(MacOS Hight Sierra OS 10.13.3).
我只想在来宾和主机之间传输文件.
为了得到它,我已经按照本教程:
1)我已安装 TUN/TAP drivers
2)像这样启动QEMU:
qemu-system-sparc -boot c -hda debian_etch.img -m 512M -net nic -net tap,script=no,downscript=no
Run Code Online (Sandbox Code Playgroud)
3)VM启动后,在MacOS主机上执行: ifconfig tap0 192.168.10.1
4)在Debian Etch主机上,进入/etc/network/interfaces:
auto eth0
iface eth0 inet static
address 192.168.10.2
netmask 255.255.255.0
gateway 192.168.10.1
Run Code Online (Sandbox Code Playgroud)
并做: /etc/init.d/networking restart
5)最后,请客人: $ scp -r dir user_host@192.168.10.1:~/
现在,我想和一位Debian Sparc64 Stretch 9.0客人做同样的事情.
似乎ifconfig不推荐使用最新版本的Debian.
无论如何,我尝试使用以下命令启动Sparc64映像:
qemu-system-sparc64 \
-drive …Run Code Online (Sandbox Code Playgroud) tcpdump ×10
linux ×4
networking ×3
tcp ×3
python ×2
wireshark ×2
adb ×1
android ×1
c ×1
encryption ×1
http-get ×1
iptables ×1
libssl ×1
macos ×1
python-2.7 ×1
qemu ×1
raspberry-pi ×1
security ×1
sockets ×1
ssh ×1
subprocess ×1
wireless ×1