package de.tudarmstadt.informatik.hostage.logging;
import java.io.Serializable;
import java.net.InetAddress;
/**
* This class defines the attributes of a record.
* A Record is a single message exchanged between the application and an attacker.
* The class has no own functionality except for getter and setter methods.
* To change the logging mechanism you have to to change the logger in {@link de.tudarmstadt.informatik.hostage.HoneyService} and
* {@link de.tudarmstadt.informatik.hostage.ui.ViewLog}
* @author Mihai Plasoianu
* @author Lars Pandikow
*/
public class Record implements Serializable {
private static final long serialVersionUID = 1L;
public static enum TYPE {
SEND, RECEIVE
};
private int id;
private long attack_id;
private String protocol;
private TYPE type;
private long timestamp;
private InetAddress localIP;
private int localPort;
private InetAddress remoteIP;
private int remotePort;
private String BSSID;
private String SSID;
private String packet;
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the attack_id
*/
public long getAttack_id() {
return attack_id;
}
/**
* @param attack_id the attack_id to set
*/
public void setAttack_id(long attack_id) {
this.attack_id = attack_id;
}
/**
* @return the protocol
*/
public String getProtocol() {
return protocol;
}
/**
* @param protocol the protocol to set
*/
public void setProtocol(String protocol) {
this.protocol = protocol;
}
/**
* @return the type
*/
public TYPE getType() {
return type;
}
/**
* @param type the type to set
*/
public void setType(TYPE type) {
this.type = type;
}
/**
* @return the timestamp
*/
public long getTimestamp() {
return timestamp;
}
/**
* @param timestamp the timestamp to set
*/
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
/**
* @return the localIP
*/
public InetAddress getLocalIP() {
return localIP;
}
/**
* @param localIP the localIP to set
*/
public void setLocalIP(InetAddress localIP) {
this.localIP = localIP;
}
/**
* @return the localPort
*/
public int getLocalPort() {
return localPort;
}
/**
* @param localPort the localPort to set
*/
public void setLocalPort(int localPort) {
this.localPort = localPort;
}
/**
* @return the remoteIP
*/
public InetAddress getRemoteIP() {
return remoteIP;
}
/**
* @param remoteIP the remoteIP to set
*/
public void setRemoteIP(InetAddress remoteIP) {
this.remoteIP = remoteIP;
}
/**
* @return the remotePort
*/
public int getRemotePort() {
return remotePort;
}
/**
* @param remotePort the remotePort to set
*/
public void setRemotePort(int remotePort) {
this.remotePort = remotePort;
}
/**
* @return the bSSID
*/
public String getBSSID() {
return BSSID;
}
/**
* @param bSSID the bSSID to set
*/
public void setBSSID(String bSSID) {
BSSID = bSSID;
}
/**
* @return the sSID
*/
public String getSSID() {
return SSID;
}
/**
* @param sSID the sSID to set
*/
public void setSSID(String sSID) {
SSID = sSID;
}
/**
* @return the packet
*/
public String getPacket() {
return packet;
}
/**
* @param packet the packet to set
*/
public void setPacket(String packet) {
this.packet = packet;
}
@Override
public String toString() {
return String.format("%d %s [%d,%s:%d,%s:%d,%s]", attack_id,
((type == TYPE.SEND) ? "SEND" : "RECEIVE"), timestamp,
localIP.getHostAddress(), localPort, remoteIP.getHostAddress(),
remotePort, packet);
}
/**
* Returns a string representation after a chosen format. Formats should be defined in /res/values/export_formats.xml to use with {@link de.tudarmstadt.informatik.hostage.ui.ViewLog#exportDatabase(android.view.View)}
* The Intger representation of the format is equal to its position in the format array.
* @param format Integer representation of the format.
* @return A string representation after chosen format.
*/
public String toString(int format){
// Choose String Format
switch (format){
case 1:
return String.format("{ \"sensor\":{\"type\": \"Honeypot\", \"name\": \"HOsTaGe\"}, \"type\": 0, \"src\":{\"ip\": \"%s\", \"port\": %d}, \"dst\":{\"ip\": \"%s\", \"port\": %d} }", localIP.getHostAddress(), localPort, remoteIP.getHostAddress(),
remotePort);
case 2:
return String.format("%d: %s in %s(%s) from [%s:%d] to [%s:%d]", attack_id, protocol, SSID, BSSID, remoteIP.getHostAddress(), remotePort, localIP.getHostAddress(), localPort);
default:
return toString();
}
}
}