Skip to content

Commit

Permalink
Helper MQTT methos for listner+Fix previous commit ports on GUI
Browse files Browse the repository at this point in the history
  • Loading branch information
irinil committed Jun 25, 2020
1 parent 332b733 commit 0331bbc
Show file tree
Hide file tree
Showing 7 changed files with 177 additions and 68 deletions.
56 changes: 44 additions & 12 deletions src/main/java/de/tudarmstadt/informatik/hostage/Handler.java
Expand Up @@ -4,6 +4,7 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.List;
import java.util.UUID;

Expand All @@ -24,7 +25,9 @@
import de.tudarmstadt.informatik.hostage.nio.Reader;
import de.tudarmstadt.informatik.hostage.nio.Writer;
import de.tudarmstadt.informatik.hostage.protocol.GHOST;
import de.tudarmstadt.informatik.hostage.protocol.MQTT;
import de.tudarmstadt.informatik.hostage.protocol.Protocol;
import de.tudarmstadt.informatik.hostage.protocol.mqttUtils.MQTTHandler;
import de.tudarmstadt.informatik.hostage.sync.tracing.TracingSyncService;
import de.tudarmstadt.informatik.hostage.wrapper.Packet;

Expand Down Expand Up @@ -102,13 +105,9 @@ public Handler(Hostage service, Listener listener, Protocol protocol, Socket cli
}

public Handler(Hostage service, Listener listener, Protocol protocol){
this.service = service;
this.service = service;
this.listener = listener;
this.protocol = protocol;
if (protocol.toString().equals("GHOST")) {
((GHOST) protocol).setAttackerIP(client.getInetAddress());
((GHOST) protocol).setCurrentPort(listener.getPort());
}

this.thread = new Thread(this);
pref = PreferenceManager.getDefaultSharedPreferences(service);
Expand All @@ -124,7 +123,9 @@ public Handler(Hostage service, Listener listener, Protocol protocol){
internalIPAddress = connInfo.getInt(service.getString(R.string.connection_info_internal_ip), 0);

logged = false;
}
thread.start();

}

/**
* Determines if the interrupt flag of the thread is set.
Expand All @@ -142,8 +143,10 @@ public void kill() {
service.notifyUI(this.getClass().getName(),
new String[] { service.getString(R.string.broadcast_started), protocol.toString(), Integer.toString(listener.getPort()) });
thread.interrupt();

try {
client.close();
if(client != null)
client.close();
} catch (Exception e) {

}
Expand All @@ -166,18 +169,34 @@ public void kill() {
public void run() {
service.notifyUI(this.getClass().getName(),
new String[] { service.getString(R.string.broadcast_started), protocol.toString(), Integer.toString(listener.getPort()) });
// if(protocol.getPort() == 1883){
// try {
// handleMQTTPackets();
// } catch (UnknownHostException e) {
// e.printStackTrace();
// }
// kill();
// return;
// }

InputStream in;
OutputStream out;
try {
in = client.getInputStream();
out = client.getOutputStream();
talkToClient(in, out);
if(client!=null) {
in = client.getInputStream();
out = client.getOutputStream();
talkToClient(in, out);
}
} catch (Exception e) {
e.printStackTrace();
}
kill();
}

private void handleMQTTPackets() throws UnknownHostException {
logMQTTPackets();
}

/**
* Gets attack ID for the attack. Also increases the attack ID counter by
* one. Method is synchronized for thread safety.
Expand Down Expand Up @@ -219,8 +238,7 @@ private void setSoTimeout(Socket client) {
*/
public MessageRecord createMessageRecord(MessageRecord.TYPE type, String packet) {
MessageRecord record = new MessageRecord(true);
//record.setId(message_id++); // autoincrement
record.setAttack_id(attack_id);
record.setAttack_id(attack_id);
record.setType(type);
record.setTimestamp(System.currentTimeMillis());
if(packet != null && !packet.isEmpty())
Expand Down Expand Up @@ -287,6 +305,16 @@ public void log(MessageRecord.TYPE type, String packet){
}
}

public void log(MessageRecord.TYPE type) throws UnknownHostException {
if(!logged){
Logger.log(Hostage.getContext(), createNetworkRecord());
Logger.log(Hostage.getContext(), MQTTHandler.createAttackRecord(attack_id,externalIP,protocol,subnetMask,BSSID,internalIPAddress));
Logger.log(Hostage.getContext(),MQTTHandler.createMessageRecord(type,attack_id));
logged = true;
}
}



//just for debugging purpose
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
Expand Down Expand Up @@ -337,4 +365,8 @@ protected void talkToClient(InputStream in, OutputStream out) throws IOException
}
}
}

protected void logMQTTPackets() throws UnknownHostException {
log(MessageRecord.TYPE.RECEIVE);
}
}
32 changes: 9 additions & 23 deletions src/main/java/de/tudarmstadt/informatik/hostage/Hostage.java
Expand Up @@ -2,8 +2,10 @@

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
Expand All @@ -25,7 +27,6 @@
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.sqlite.SQLiteDatabase;
import android.net.ConnectivityManager;
import android.net.DhcpInfo;
import android.net.Uri;
Expand All @@ -47,16 +48,13 @@
import de.tudarmstadt.informatik.hostage.commons.HelperUtils;
import de.tudarmstadt.informatik.hostage.location.MyLocationManager;


import de.tudarmstadt.informatik.hostage.logging.DaoMaster;
import de.tudarmstadt.informatik.hostage.logging.DaoSession;
import de.tudarmstadt.informatik.hostage.persistence.DAO.AttackRecordDAO;
import de.tudarmstadt.informatik.hostage.protocol.Protocol;
import de.tudarmstadt.informatik.hostage.services.MultiStageAlarm;
import de.tudarmstadt.informatik.hostage.ui.activity.MainActivity;



import static de.tudarmstadt.informatik.hostage.commons.HelperUtils.getBSSID;


Expand All @@ -74,7 +72,6 @@ public class Hostage extends Service {

private HashMap<String, Boolean> mProtocolActiveAttacks;
MultiStageAlarm alarm = new MultiStageAlarm();
private Boolean multistage_service;
DaoSession dbSession;


Expand All @@ -85,7 +82,6 @@ public Hostage getService() {
}



/**
* Task to find out the external IP.
*
Expand Down Expand Up @@ -121,7 +117,6 @@ protected void onPostExecute(String result) {
}

private static Context context;
Listener listener;

/**
* Returns the application context.
Expand All @@ -135,8 +130,6 @@ public static Context getContext() {
private LinkedList<Protocol> implementedProtocols;
private ArrayList<Listener> listeners = new ArrayList<Listener>();

private NotificationCompat.Builder builder;

private SharedPreferences connectionInfo;

private Editor connectionInfoEditor;
Expand Down Expand Up @@ -218,6 +211,8 @@ public boolean hasRunningListeners() {
return false;
}



/**
* Determines if a protocol with the given name is running on its default
* port.
Expand Down Expand Up @@ -308,7 +303,6 @@ public void onCreate() {
}



@Override
public void onDestroy() {
cancelNotification();
Expand All @@ -323,15 +317,9 @@ public void onDestroy() {
public int onStartCommand(Intent intent, int flags, int startId) {
// We want this service to continue running until it is explicitly
// stopped, so return sticky.


/*SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
multistage_service=sp.getBoolean("pref_multistage",true);*/

startMultiStage();

return START_STICKY;

}

private void stopMultiStage() {
Expand Down Expand Up @@ -373,8 +361,7 @@ public boolean startListener(String protocolName, int port) {
if (listener.getProtocolName().equals(protocolName) && listener.getPort() == port) {
if (!listener.isRunning()) {
if (listener.start()) {
// Toast.makeText(getApplicationContext(), protocolName
// + " SERVICE STARTED!", Toast.LENGTH_SHORT).show();

return true;
}
Toast.makeText(getApplicationContext(), protocolName + " SERVICE COULD NOT BE STARTED!", Toast.LENGTH_SHORT).show();
Expand All @@ -386,8 +373,7 @@ public boolean startListener(String protocolName, int port) {
Listener listener = createListener(protocolName, port);
if (listener != null) {
if (listener.start()) {
// Toast.makeText(getApplicationContext(), protocolName +
// " SERVICE STARTED!", Toast.LENGTH_SHORT).show();

return true;
}
}
Expand Down Expand Up @@ -535,15 +521,15 @@ private void createNotification() {
return; // prevent NullPointerException
}

//HostageDBOpenHelper dbh = new HostageDBOpenHelper(this);
dbSession = HostageApplication.getInstances().getDaoSession();

AttackRecordDAO attackRecordDAO = new AttackRecordDAO(dbSession);
boolean activeHandlers = false;
boolean bssidSeen = false;
boolean listening = false;

for (Listener listener : listeners) {
Iterator<Listener> iterator = listeners.iterator();
while(iterator.hasNext()) {
Listener listener = iterator.next();
if (listener.isRunning())
listening = true;
if (listener.getHandlerCount() > 0) {
Expand Down

0 comments on commit 0331bbc

Please sign in to comment.