tshark 构造checksum错误的包
时间: 2023-05-15 19:06:50 浏览: 159
可以使用以下命令构造一个checksum错误的包:
tshark -r input.pcap -T fields -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport -e tcp.checksum -E separator=, | awk -F, '{print $1,$2,$3,$4,"0x1234"}' | xargs -L 1 tshark -r input.pcap -o tcp.check_checksum:FALSE -o tcp.check_checksum:TRUE -o tcp.check_checksum:FALSE -T fields -E separator=, -e frame.number -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport -e tcp.checksum
这个命令会从输入的 pcap 文件中读取数据包,然后构造一个checksum错误的包,并输出数据包的详细信息。
相关问题
python调用tshark抓包如何知道当前tshark抓了多少包
在Python中使用`pyshark`库抓取Wireshark数据时,`tshark`通常不会直接提供一个计数器告诉你已经捕获了多少包。你需要自己管理这个计数。你可以创建一个变量,在每次抓取新包之后自增。
以下是一个简单的例子:
```python
import pyshark
# 初始化包计数器
packet_count = 0
def capture_packets():
capture = pyshark.LiveCapture(interface='eth0') # 指定网络接口
for packet in capture.sniff_continuously(): # 监听并处理每条包
packet_count += 1
# 在这里处理你想做的操作,比如打印包信息
print(f"已捕获第 {packet_count} 条包...")
# 可以添加其他业务逻辑
capture_packets()
```
在这个示例中,`packet_count`就是你的包计数器。每当有新的包被捕获,就会增加1。如果你需要知道总共有多少包,可以在循环结束后添加相应的计数。
python利用subprocess调用tshark抓包如何知道当前tshark抓了多少包
在Python中,你可以使用`subprocess`模块运行`tshark`命令并捕获其输出来获取相关信息,包括正在抓取的包数。不过,`tshark`本身并不直接提供一个计数器来报告已抓取的包的数量。你需要通过其他方式间接获取这个信息。
一种常见的方式是在抓包命令中加入适当的选项,比如设置保存到文件,然后统计文件的大小或者行数作为近似抓包数量。例如,如果你使用的是Wireshark,可以先抓包并保存到一个文件:
```python
import subprocess
# 创建一个临时文件名
temp_file = "capture.pcapng"
# 使用subprocess.run来执行tshark命令并将输出保存到文件
tshark_cmd = f'tshark -i your_interface -w {temp_file}'
subprocess.run(tshark_cmd.split())
# 现在可以通过读取文件的大小或行数估算包数
with open(temp_file, 'rb') as file:
size_in_bytes = file.tell()
# 或者如果内容是文本,可以用行数代替
# lines = sum(1 for line in open(temp_file))
# 根据实际情况计算包数,如每条记录代表一个数据包
packets_count = size_in_bytes / (size_of_one_packet * 1024) # 如果每个包大约1 KB
print(f"估计抓取了大约{packets_count}个包。")
阅读全文