Listing 5 ACKheartBeat method
public boolean ACKheartBeat(int networkInterfaceID, \
String ipaddress, int srcPort, int dstPort)
{
/* set our return value to false */
boolean booleanret = false;
/* Lets obtain our MAC address and put it in an array of bytes
called myMac */
byte[] myMac = myMacAddress(networkInterfaceID);
/* Lets obtain our IP address and put it in an array of bytes
called myIPAdd */
byte[] myIPAdd = myIPAddress(networkInterfaceID);
/* Set device to the network interface specified by the
networkInterfaceID */
NetworkInterface device = devices[networkInterfaceID];
try {
/* Initialize our network device and open it for
sending/receiving */
JpcapCaptor captor=JpcapCaptor.openDevice \
(device,2000,false,5000);
String filter = "tcp dst port " + srcPort;
captor.setFilter(filter ,true);
/* convert the remote machines IP address to an array of
bytes called recAddr */
InetAddress[] recAddr0 = InetAddress.getAllByName(ipaddress);
byte[] recAddr = recAddr0[0].getAddress();
/* get the MAC address of the remote machine using the arp
method */
byte [] recMac=arp(InetAddress.getByAddress(recAddr), \
InetAddress.getByAddress(myIPAdd),networkInterfaceID);
/* initiate our sender instance of the network device */
JpcapSender sender=JpcapSender.openDevice(device);
/* Initialize a new instance of TCPPacket called p */
TCPPacket p=new TCPPacket(srcPort,dstPort,60,60,false,true, \
false,false,false,false,false,false,65535,0);
/* Set the IP version 4 parameters of the TCPPacket */
p.setIPv4Parameter(0,false,false,false,0,false,false,false, \
0,0,200,IPPacket.IPPROTO_TCP,InetAddress.getByAddress(myIPAdd), \
InetAddress.getByAddress(recAddr));
/* Set the data to send with the connection */
p.data="".getBytes();
/* Initiate the EthernetPacke ether that will transport the
TCP packet and start to build the packet */
EthernetPacket ether=new EthernetPacket();
ether.frametype=EthernetPacket.ETHERTYPE_IP;
//set the Ethernet Frame type to an IP request
ether.src_mac=myMac; // Set the source MAC address to
// our MAC address
ether.dst_mac=recMac; // Set the destination MAC address
// to the remote MAC add
p.datalink=ether; // Set the Data Link Layer of the
// IPpacket to the Ethernet packet
/* send out the TCP packet */
sender.sendPacket(p);
/* Captor the packets coming back based on the filter that
was set with the setFilter method */
TCPPacket returnPacket = (TCPPacket)captor.getPacket();
/* If the packet captor times out set the return value to false */
if (returnPacket == null)
booleanret=false;
else {
/* If we received a return packet from the remote machine
set the return value to true */
System.out.println("received from: " + returnPacket.src_ip);
System.out.println("RST: " + returnPacket.rst);
booleanret=true;
}
} catch (Exception e) {
System.out.println(e);
return(false);
}
return booleanret;
}
}
|