本文整理汇总了Java中org.pcap4j.packet.namednumber.ArpOperation类的典型用法代码示例。如果您正苦于以下问题:Java ArpOperation类的具体用法?Java ArpOperation怎么用?Java ArpOperation使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ArpOperation类属于org.pcap4j.packet.namednumber包,在下文中一共展示了ArpOperation类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: _getPacketBuilder4IPv4
import org.pcap4j.packet.namednumber.ArpOperation; //导入依赖的package包/类
private EthernetPacket.Builder _getPacketBuilder4IPv4(InetAddress remoteAddress, MacAddress localMacAddress, InetAddress
localIpAdress) {
ArpPacket.Builder arpBuilder = new ArpPacket.Builder();
arpBuilder
.hardwareType(ArpHardwareType.ETHERNET)
.protocolType(EtherType.IPV4)
.hardwareAddrLength((byte) MacAddress.SIZE_IN_BYTES)
.protocolAddrLength((byte) ByteArrays.INET4_ADDRESS_SIZE_IN_BYTES)
.srcHardwareAddr(localMacAddress)
.srcProtocolAddr(localIpAdress)
.dstHardwareAddr(MacAddress.ETHER_BROADCAST_ADDRESS)
.operation(ArpOperation.REQUEST)
.dstProtocolAddr(remoteAddress);
EthernetPacket.Builder etherBuilder = new EthernetPacket.Builder();
etherBuilder.dstAddr(MacAddress.ETHER_BROADCAST_ADDRESS)
.srcAddr(localMacAddress)
.type(EtherType.ARP)
.payloadBuilder(arpBuilder)
.paddingAtBuild(true);
return etherBuilder;
}
示例2: processArpPacket
import org.pcap4j.packet.namednumber.ArpOperation; //导入依赖的package包/类
public static void processArpPacket(Packet packet, PcapFileSummary pcapFileSummary) {
if (packet == null) {
return; // skip empty packets
}
log.trace("Converting to ARP packet");
try {
ArpPacket arpPacket = ArpPacket.newPacket(packet.getRawData(), 0, packet.length());
ArpPacket.ArpHeader arpHeader = arpPacket.getHeader();
ArpOperation arpOperation = arpHeader.getOperation();
InetAddress sourceIp = arpHeader.getSrcProtocolAddr();
MacAddress sourceMac = arpHeader.getSrcHardwareAddr();
if (arpOperation == ArpOperation.REQUEST) {
// only add / check the source addresses for an ARP request
//IpMacTrackerResult result = pcapFileSummary.ipMacTracker.query(sourceIp.getHostAddress(), sourceMac.toString());
}
} catch (IllegalRawDataException e) {
log.error("Exception occurred while processing a packet. Exception was: " + e);
}
}
示例3: shouldCapture
import org.pcap4j.packet.namednumber.ArpOperation; //导入依赖的package包/类
/**
* Checks if the given {@link Packet} should be captured.
*
* @param packet The packet to be checked
* @return Returns true, if the packet should be captured, otherwise false
*/
private boolean shouldCapture(final Packet packet) {
if (packet.contains(ArpPacket.class)) {
ArpPacket arpPacket = packet.get(ArpPacket.class);
if (arpPacket.getHeader().getOperation().equals(ArpOperation.REQUEST)) {
return true;
}
}
if (packet.contains(UdpPacket.class)) {
final UdpPacket udpPacket = packet.get(UdpPacket.class);
if (UdpPort.BOOTPS == udpPacket.getHeader().getDstPort()) {
return true;
}
}
return false;
}
示例4: arpTest
import org.pcap4j.packet.namednumber.ArpOperation; //导入依赖的package包/类
/**
* This is a specific test which is not related to standalone Java SDK
*/
@Test
@Ignore
public void arpTest() {
List<Port> ports = client.getPorts();
Port port = ports.get(0);
Port port1 = ports.get(1);
client.acquirePort(port.getIndex(), true);
client.acquirePort(port1.getIndex(), true);
client.serviceMode(port.getIndex(), true);
client.serviceMode(port1.getIndex(), true);
client.removeRxQueue(port.getIndex());
client.setRxQueue(port.getIndex(), 5);
EthernetPacket pkt = buildArpPkt();
client.sendPacket(port.getIndex(), pkt);
Predicate<EthernetPacket> arpReplyFilter = etherPkt -> {
if(etherPkt.contains(ArpPacket.class)) {
ArpPacket arp = (ArpPacket) etherPkt.getPayload();
if (ArpOperation.REPLY.equals(arp.getHeader().getOperation())) {
return true;
}
}
return false;
};
List<EthernetPacket> pkts = client.getRxQueue(port.getIndex(), arpReplyFilter);
client.removeRxQueue(port.getIndex());
client.serviceMode(port.getIndex(), false);
client.serviceMode(port1.getIndex(), false);
Assert.assertTrue(pkts.size() > 0);
}
示例5: buildArpPkt
import org.pcap4j.packet.namednumber.ArpOperation; //导入依赖的package包/类
private static EthernetPacket buildArpPkt() {
ArpPacket.Builder arpBuilder = new ArpPacket.Builder();
MacAddress srcMac = MacAddress.getByName("00:50:56:94:21:df");
try {
String strSrcIpAddress = "192.168.9.27";
String strDstIpAddress = "192.168.9.28";
arpBuilder
.hardwareType(ArpHardwareType.ETHERNET)
.protocolType(EtherType.IPV4)
.hardwareAddrLength((byte) MacAddress.SIZE_IN_BYTES)
.protocolAddrLength((byte) ByteArrays.INET4_ADDRESS_SIZE_IN_BYTES)
.operation(ArpOperation.REQUEST)
.srcHardwareAddr(srcMac)
.srcProtocolAddr(InetAddress.getByName(strSrcIpAddress))
.dstHardwareAddr(MacAddress.ETHER_BROADCAST_ADDRESS)
.dstProtocolAddr(InetAddress.getByName(strDstIpAddress));
} catch (UnknownHostException e) {
throw new IllegalArgumentException(e);
}
EthernetPacket.Builder etherBuilder = new EthernetPacket.Builder();
etherBuilder.dstAddr(MacAddress.ETHER_BROADCAST_ADDRESS)
.srcAddr(srcMac)
.type(EtherType.ARP)
.payloadBuilder(arpBuilder)
.paddingAtBuild(true);
return etherBuilder.build();
}
示例6: reply
import org.pcap4j.packet.namednumber.ArpOperation; //导入依赖的package包/类
public static void reply(Packet packet, Node node, NetworkInterface nif) {
ArpPacket arpPacket = packet.get(ArpPacket.class);
if (arpPacket == null) {
throw new IllegalArgumentException(packet.toString());
}
InetAddress srcIpAddr
= arpPacket.getHeader().getSrcProtocolAddr();
MacAddress srcMacAddr
= arpPacket.getHeader().getSrcHardwareAddr();
InetAddress dstIpAddr
= arpPacket.getHeader().getDstProtocolAddr();
ArpPacket.Builder arpBuilder = new ArpPacket.Builder();
arpBuilder.hardwareType(ArpHardwareType.ETHERNET)
.protocolType(EtherType.IPV4)
.hardwareAddrLength((byte)MacAddress.SIZE_IN_BYTES)
.protocolAddrLength((byte)ByteArrays.INET4_ADDRESS_SIZE_IN_BYTES)
.operation(ArpOperation.REPLY)
.srcHardwareAddr(nif.getMacAddress())
.srcProtocolAddr(dstIpAddr)
.dstHardwareAddr(srcMacAddr)
.dstProtocolAddr(srcIpAddr);
try {
node.sendL3Packet(arpBuilder.build(), nif);
} catch (SendPacketException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
示例7: sendRequest
import org.pcap4j.packet.namednumber.ArpOperation; //导入依赖的package包/类
public void sendRequest(
InetAddress targetIpAddr,
Node node,
NetworkInterface nif
) {
InetAddress srcIpAddr = null;
for (NifIpAddress addr: nif.getIpAddresses()) {
if (addr.getIpAddr() instanceof Inet4Address) {
srcIpAddr = addr.getIpAddr();
}
}
if (srcIpAddr == null) {
throw new IllegalArgumentException("No IPv4 address is found in " + nif);
}
MacAddress srcMacAddr = nif.getMacAddress();
ArpPacket.Builder arpBuilder = new ArpPacket.Builder();
arpBuilder.hardwareType(ArpHardwareType.ETHERNET)
.protocolType(EtherType.IPV4)
.hardwareAddrLength((byte)MacAddress.SIZE_IN_BYTES)
.protocolAddrLength((byte)ByteArrays.INET4_ADDRESS_SIZE_IN_BYTES)
.operation(ArpOperation.REQUEST)
.srcHardwareAddr(srcMacAddr)
.srcProtocolAddr(srcIpAddr)
.dstHardwareAddr(MacAddress.ETHER_BROADCAST_ADDRESS)
.dstProtocolAddr(targetIpAddr);
try {
node.sendL3Packet(arpBuilder.build(), nif);
} catch (SendPacketException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
示例8: handleArp
import org.pcap4j.packet.namednumber.ArpOperation; //导入依赖的package包/类
private void handleArp(Packet packet, NetworkInterface getter) {
ArpHeader ah = packet.get(ArpPacket.class).getHeader();
boolean toMe = false;
for (NifIpAddress nifIpAddr: getter.getIpAddresses()) {
if (nifIpAddr.getIpAddr().equals(ah.getDstProtocolAddr())) {
toMe = true;
break;
}
}
if (!toMe) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Dropped an ARP packet not to me: " + packet);
}
return;
}
ArpOperation op = ah.getOperation();
if (op.equals(ArpOperation.REQUEST)) {
ArpHelper.cache(packet, arpCache);
ArpHelper.reply(
packet,
Node.this,
getter
);
}
else if (op.equals(ArpOperation.REPLY)) {
ArpHelper.cache(packet, arpCache);
}
else {
LOGGER.warn(
"Dropped a packet with unknown ARP operation: " + packet
);
}
}