From b2be6265866aaf1f444804bbdcde57de1516ac90 Mon Sep 17 00:00:00 2001 From: Irini Lygerou Date: Thu, 9 Jul 2020 14:29:21 +0300 Subject: [PATCH] Fixed loging in MQTT packets. --- .../informatik/hostage/MQTTListener.java | 2 +- .../persistence/DAO/AttackRecordDAO.java | 15 +++++++++- .../persistence/DAO/MessageRecordDAO.java | 2 +- .../protocol/mqttUtils/MQTTHandler.java | 28 ++++++++++--------- 4 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/main/java/de/tudarmstadt/informatik/hostage/MQTTListener.java b/src/main/java/de/tudarmstadt/informatik/hostage/MQTTListener.java index fe307e58..84f21dda 100644 --- a/src/main/java/de/tudarmstadt/informatik/hostage/MQTTListener.java +++ b/src/main/java/de/tudarmstadt/informatik/hostage/MQTTListener.java @@ -145,7 +145,7 @@ public void run() { if (ConnectionGuard.portscanInProgress()) return; - //isTopicPublished(); //The record wont get updated. + isTopicPublished(); //The record wont get updated. if(MQTTHandler.isAnAttackOngoing()) { startHandler(); conReg.newOpenConnection(); diff --git a/src/main/java/de/tudarmstadt/informatik/hostage/persistence/DAO/AttackRecordDAO.java b/src/main/java/de/tudarmstadt/informatik/hostage/persistence/DAO/AttackRecordDAO.java index dd2443c1..834ab291 100644 --- a/src/main/java/de/tudarmstadt/informatik/hostage/persistence/DAO/AttackRecordDAO.java +++ b/src/main/java/de/tudarmstadt/informatik/hostage/persistence/DAO/AttackRecordDAO.java @@ -364,6 +364,7 @@ private synchronized AttackRecord createAttackRecord(AttackRecord existingRecord record.setBssid(existingRecord.getBssid()); record.setSync_id(existingRecord.getSync_id()); record.setDevice(existingRecord.getDevice()); + return record; } @@ -529,7 +530,6 @@ public ArrayList addMessageRecordFields(ArrayList a } public ArrayList addNetworkFields(ArrayList attackRecords,ArrayList networkRecords){ - ArrayList updatedAttackRecords = new ArrayList<>(); NetworkRecord current = new NetworkRecord(); @@ -644,6 +644,19 @@ public synchronized ArrayList getAllRecords(){ } + public AttackRecord getMatchingAttackRecord(MessageRecord record){ + AttackRecordDao recordDao = this.daoSession.getAttackRecordDao(); + QueryBuilder qb = recordDao.queryBuilder(); + try { + qb.where(AttackRecordDao.Properties.Attack_id.eq(record.getAttack_id())); + return qb.list().get(0); + + }catch (Exception e){ + return new AttackRecord(); + } + + } + /** * Gets a single {@link Record} with the given attack id from the database. * diff --git a/src/main/java/de/tudarmstadt/informatik/hostage/persistence/DAO/MessageRecordDAO.java b/src/main/java/de/tudarmstadt/informatik/hostage/persistence/DAO/MessageRecordDAO.java index 9e3196f6..0a62abf2 100644 --- a/src/main/java/de/tudarmstadt/informatik/hostage/persistence/DAO/MessageRecordDAO.java +++ b/src/main/java/de/tudarmstadt/informatik/hostage/persistence/DAO/MessageRecordDAO.java @@ -56,7 +56,7 @@ public MessageRecord getLastedInsertedRecord(){ MessageRecord record = new MessageRecord(); List messageRecords = recordDao.queryBuilder() - .orderAsc(MessageRecordDao.Properties.Id) + .orderDesc(MessageRecordDao.Properties.Id) .limit(1) .list(); if(!messageRecords.isEmpty()){ diff --git a/src/main/java/de/tudarmstadt/informatik/hostage/protocol/mqttUtils/MQTTHandler.java b/src/main/java/de/tudarmstadt/informatik/hostage/protocol/mqttUtils/MQTTHandler.java index 32dc02c5..626d02b3 100644 --- a/src/main/java/de/tudarmstadt/informatik/hostage/protocol/mqttUtils/MQTTHandler.java +++ b/src/main/java/de/tudarmstadt/informatik/hostage/protocol/mqttUtils/MQTTHandler.java @@ -45,6 +45,8 @@ public class MQTTHandler { private static ArrayList interceptAcknowledgedMessages = new ArrayList<>(); private final static int brokerPort = 1883; + private static String packet = ""; + /** * Intercepts all the captured packets from the broker and adds the to the appropriate list. @@ -170,12 +172,13 @@ public static void isTopicPublished(){ if(isAnAttackerConnected){ if(!currentPublishMessages.isEmpty()) { DaoSession dbSession = HostageApplication.getInstances().getDaoSession(); - DAOHelper daoHelper = new DAOHelper(dbSession); MessageRecord record = daoHelper.getMessageRecordDAO().getLastedInsertedRecord(); - record.setPacket(getPublishedTopics()); - daoHelper.getMessageRecordDAO().updateRecord(record); - + AttackRecord attackRecord = daoHelper.getAttackRecordDAO().getMatchingAttackRecord(record); + if(attackRecord.getProtocol().equals("MQTT")) {//prevents to change packets content accidentally when two simultaneously attacks occur. + record.setPacket(getPublishedTopics()); + daoHelper.getMessageRecordDAO().updateRecord(record); + } currentPublishMessages.clear(); } } @@ -220,19 +223,18 @@ private static String getIPCurrentClient() { } private static String getPublishedTopics(){ - String packet = ""; - if(!currentPublishMessages.isEmpty()){ - InterceptPublishMessage message = currentPublishMessages.get(0); - if(message!=null) { - if (message.getClientID().equals(interceptConnectMessages.get(interceptConnectMessages.size()-1).getClientID())) { - - packet+="TopicName: "+message.getTopicName()+" "+ - "Message Clientid: "+message.getClientID()+ + for(InterceptPublishMessage message:currentPublishMessages) { + if (message != null && !message.getClientID().equals(SensorProfile.getClientID())) { + if (message.getClientID().equals(interceptConnectMessages.get(interceptConnectMessages.size() - 1).getClientID())) { + packet += "TopicName: " + message.getTopicName() + " " + + "Message Clientid: " + message.getClientID() + "/n"; + return packet; + } } - + } } return packet; }