java - DNS MX 重传 PCAP4J
问题描述
我需要使用 pcap4j 查找域中的所有邮件服务器
我用代码创建 MX DNS 数据包并发送它,但数据包要重新传输(wireshark img)
nslookup -type=mx vk.com 运行正常(cmd)
创建 Dns 数据包:
Random rnd=new Random();
DnsDomainName.Builder dnsName = new DnsDomainName.Builder();
dnsName.labels(Collections.singletonList("vk.com"));
DnsQuestion.Builder question = new DnsQuestion.Builder();
question.qName(dnsName.build()).qType(DnsResourceRecordType.MX).qClass(DnsClass.IN);
DnsPacket.Builder dns = new DnsPacket.Builder();
dns.response(false).
id((short) rnd.nextInt()).
opCode(DnsOpCode.QUERY).
truncated(false).
recursionDesired(true).
authenticData(false).
checkingDisabled(false).
rCode(DnsRCode.NO_ERROR).
qdCount((short)1).
anCount((short)0).
nsCount((short)0).
arCount((short)0).
questions(Collections.singletonList(question.build()));
UdpPacket.Builder udp = new UdpPacket.Builder();
udp.srcPort(new UdpPort((short) 53240, "start")).
dstPort(new UdpPort((short) 53, "end")).
length((short) 32).
checksum((short) rnd.nextInt()).
payloadBuilder(dns);
IpV4Packet.Builder ipv4 = new IpV4Packet.Builder();
ipv4.version(IpVersion.IPV4).
ihl((byte) 5).
tos(IpV4Rfc1349Tos.newInstance((byte) 0)).
reservedFlag(false).
moreFragmentFlag(false).
dontFragmentFlag(false).
fragmentOffset((short) 0).
ttl((byte) 128).
protocol(IpNumber.UDP).
totalLength((short)52).
payloadBuilder(udp).
srcAddr((Inet4Address) InetAddress.getByName("192.168.43.72")).
dstAddr((Inet4Address) InetAddress.getByName("192.168.43.1"));
EthernetPacket.Builder ether = new EthernetPacket.Builder();
ether.dstAddr(MacAddress.getByName("74:0a:e1:38:df:c7")).
srcAddr(MacAddress.getByName("c4:6e:1f:11:53:10")).
type(EtherType.IPV4).
payloadBuilder(ipv4).
paddingAtBuild(true);
Packet p = ether.build();
handle.sendPacket(p);
解决方案
推荐阅读
- mysql - 我添加了一个 MySQL 数据库,现在从单独的 H2 数据库中检索测试失败。注释掉 MySQL 配置使测试通过
- r - 创建具有范围的列
- swift - 有没有办法在不使用 AppleScript 的情况下“单击”macOS 首选项窗格中的按钮?
- javascript - 使用 JavaScript 替换和增加列表组件
- javascript - 用 LI 元素替换 Hashtag
- c# - 如何在 UWP C# 应用程序上在 Windows 10 Mobile 和 PC 之间进行剪贴板同步?
- csv - dataweave 2.0 csv 转换
- sql-server - 我在 SQL Server 数据库中有两个表 - 用户和假期
- node.js - AWS lambda api Postgres 不会插入
- python - pandas filter series with lists of strings as values