Browse Source

Merge branch 'master' of https://git.tk.informatik.tu-darmstadt.de/scm-ssi-student-hostagev2

Alexander Brakowski 10 years ago
parent
commit
2421b0a022

+ 5 - 5
res/values-de/strings.xml

@@ -9,7 +9,7 @@
     <string name="title_connection_info">Verbindungs Info</string>
     <string name="status">Status</string>
     <string name="paranoid">Paranoid Mode</string>
-    <string name="details">Verbindungs info</string>
+    <string name="details">Verbindungs Info</string>
     <string name="not_connected">Nicht verbunden</string>
     <string name="attack">&#160;Angriff</string>
     <string name="attacks">&#160;Angriffe</string>
@@ -28,7 +28,7 @@
 
     <string name="ssid">SSID:</string>
     <string name="bssid">BSSID:</string>
-    <string name="protocol">Protokol:</string>
+    <string name="protocol">Protokoll:</string>
     <string name="timestamp">Zeitstempel:</string>
     <string name="location">Ort:</string>
     <string name="internal_ip">Interne IP:</string>
@@ -66,7 +66,7 @@
 
     <string name="drawer_overview">Übersicht</string>
     <string name="drawer_threat_map">Threat Map</string>
-    <string name="drawer_records">Aufzeichnungen</string>
+    <string name="drawer_records">Aufzeichnung</string>
     <string name="drawer_services">Dienste</string>
     <string name="drawer_settings">Einstellungen</string>
     <string name="drawer_profile_manager">Profile</string>
@@ -102,7 +102,7 @@
     <string name="really_want_delete_profiel">Willst du dieses Profil wirklich löschen?</string>
     <string name="discard">Verwerfen</string>
     <string name="save">Speichern</string>
-    <string name="rec_protocol">Protokol</string>
+    <string name="rec_protocol">Protokoll</string>
     <string name="ESSID">ESSID</string>
     <string name="BSSID">BSSID</string>
     <string name="rec_sortby">Sortieren</string>
@@ -127,7 +127,7 @@
     <string name="stats_select_protocol">Wähle Protokol</string>
     <string name="stats_attacks_essid">Angriffe pro ESSID</string>
     <string name="stats_attacks_bssid">Angriffe pro BSSID</string>
-    <string name="stats_attacks_time">Angriffe pro Zeit</string>
+    <string name="stats_attacks_time">Angriffe pro Zeit (24h)</string>
     <string name="stats_attacks_date">Angriffe pro Datum</string>
     <string name="stats_uses_protocol">Nutzung pro Protokoll</string>
     <string name="stats_attacks_protocol">Angriffe pro Protokol</string>

+ 1 - 1
res/values/strings.xml

@@ -128,7 +128,7 @@
     <string name="stats_select_protocol">Select Protocol</string>
     <string name="stats_attacks_essid">Attacks per ESSID</string>
     <string name="stats_attacks_bssid">Attacks per BSSID</string>
-    <string name="stats_attacks_time">Attacks over time</string>
+    <string name="stats_attacks_time">Attacks over time (24h)</string>
     <string name="stats_attacks_date">Attacks over date</string>
     <string name="stats_uses_protocol">Uses per protocol</string>
     <string name="stats_attacks_protocol">Attacks per protocol</string>

+ 22 - 4
src/de/tudarmstadt/informatik/hostage/ui2/dialog/ChecklistDialog.java

@@ -14,7 +14,9 @@ import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
 
 //import android.content.Intent;
-
+/**
+ * Created by Julien on 16.02.14.
+ */
 @SuppressLint("ValidFragment")
 public class ChecklistDialog extends DialogFragment {
 	
@@ -27,7 +29,9 @@ public class ChecklistDialog extends DialogFragment {
     
     public String title;
 	
-	
+	/**
+     * The ChecklistDialogListener will be called if the user clicked a "cancel" or "ok" button.
+     * */
     @SuppressLint("ValidFragment")
 	public interface ChecklistDialogListener {
         public void onDialogPositiveClick(ChecklistDialog dialog);
@@ -37,11 +41,25 @@ public class ChecklistDialog extends DialogFragment {
     public String getTitle(){
     	return this.title;
     }
-    
+
+    /**
+     * Returns true if the checklist dialog is a multiple choice dialog.
+     * @return boolean isMultipleChoice
+     * */
     public boolean isMultipleChoice(){
     	return this.isMultipleChoice;
     }
-    
+
+    /*CONSTRUCTOR*/
+    /**
+     * The Constructor Method
+     * @param String title
+     * @param ArrayList<String> item titles list
+     * @param boolean[] an array of bools descriping the position of all the selected titles.
+     * @param boolean isMultipleChoice
+     * @param ChecklistDialogListener an user "event" listener
+     *
+     * */
     public ChecklistDialog(String title, ArrayList<String> itemTitles, boolean[] selected, boolean isMultipleChoice , ChecklistDialogListener listener){
     	mListener = listener;
     	this.mSelectedItems = new ArrayList<Integer>();

+ 9 - 9
src/de/tudarmstadt/informatik/hostage/ui2/dialog/DateTimeDialogFragment.java

@@ -17,13 +17,14 @@ import android.widget.DatePicker.OnDateChangedListener;
 import android.widget.TimePicker;
 import android.widget.TimePicker.OnTimeChangedListener;
 
-import java.text.SimpleDateFormat;
+import java.text.DateFormat;
 import java.util.Calendar;
-import java.util.Locale;
 
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
-
+/**
+ * Created by Julien on 16.02.14.
+ */
 @SuppressLint("ValidFragment")
 public class DateTimeDialogFragment extends DialogFragment implements OnDateChangedListener, OnTimeChangedListener {
     // Define constants for date-time picker.
@@ -82,17 +83,15 @@ public class DateTimeDialogFragment extends DialogFragment implements OnDateChan
     }
 
     private void setupRootView(View mView){
-        // Grab a Calendar instance
+
         mCalendar = Calendar.getInstance();
 
-        // Init date picker
         datePicker = (DatePicker) mView.findViewById(R.id.DatePicker);
         datePicker.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), this);
 
-        // Init time picker
+
         timePicker = (TimePicker) mView.findViewById(R.id.TimePicker);
 
-        // Set default Calendar and Time Style
         setIs24HourView(true);
         setCalendarViewShown(false);
 
@@ -231,8 +230,9 @@ public class DateTimeDialogFragment extends DialogFragment implements OnDateChan
     }
 
     public String getDateTime() {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
-        return sdf.format(mCalendar.getTime());
+        //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
+        DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(activity);
+        return dateFormat.format(mCalendar.getTime());
     }
 
     public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

+ 4 - 3
src/de/tudarmstadt/informatik/hostage/ui2/dialog/TimePickerFragment.java

@@ -1,7 +1,5 @@
 package de.tudarmstadt.informatik.hostage.ui2.dialog;
 
-import java.util.Calendar;
-
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.app.TimePickerDialog;
@@ -9,7 +7,11 @@ import android.os.Bundle;
 import android.text.format.DateFormat;
 import android.widget.TimePicker;
 
+import java.util.Calendar;
 
+/**
+ * Created by Julien on 16.02.14.
+ */
 public class TimePickerFragment extends DialogFragment implements
 		TimePickerDialog.OnTimeSetListener {
 
@@ -20,7 +22,6 @@ public class TimePickerFragment extends DialogFragment implements
 		int hour = c.get(Calendar.HOUR_OF_DAY);
 		int minute = c.get(Calendar.MINUTE);
 
-		// Create a new instance of TimePickerDialog and return it
 		return new TimePickerDialog(getActivity(), this, hour, minute,
 				DateFormat.is24HourFormat(getActivity()));
 	}

+ 52 - 32
src/de/tudarmstadt/informatik/hostage/ui2/fragment/RecordOverviewFragment.java

@@ -10,6 +10,7 @@ import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.os.Environment;
+import android.os.Message;
 import android.preference.PreferenceManager;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -39,7 +40,9 @@ import java.util.Random;
 
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.commons.HelperUtils;
+import de.tudarmstadt.informatik.hostage.logging.AttackRecord;
 import de.tudarmstadt.informatik.hostage.logging.MessageRecord;
+import de.tudarmstadt.informatik.hostage.logging.NetworkRecord;
 import de.tudarmstadt.informatik.hostage.logging.Record;
 import de.tudarmstadt.informatik.hostage.logging.formatter.TraCINgFormatter;
 import de.tudarmstadt.informatik.hostage.persistence.HostageDBOpenHelper;
@@ -1129,7 +1132,7 @@ public class RecordOverviewFragment extends UpNavigatibleFragment implements Che
 		final double ssidRadius = 0.1;
 		final double bssidRadius = 0.004;
 
-        int id = 0;
+        int attackId = 0;
 
         for (int numOfNetworks = 0; numOfNetworks < createNetworks; numOfNetworks++){
             String ssidName = "WiFi" + ((numOfNetworks) + 1);
@@ -1141,54 +1144,71 @@ public class RecordOverviewFragment extends UpNavigatibleFragment implements Che
 
             int numOfAttackPerNetwork = (Math.abs(random.nextInt()) % attacksPerNetwork) + 1;
 
+            NetworkRecord network = new NetworkRecord();
+            network.setBssid(bssidName);
+            network.setSsid(ssidName);
+
+            LatLng ssidLocation = new LatLng(tudarmstadtLoc.latitude - ssidRadius + 2.0 * ssidRadius * Math.random(), tudarmstadtLoc.longitude - ssidRadius + 2.0 * ssidRadius * Math.random());
+            double latitude = ssidLocation.latitude - bssidRadius + 2.0 * bssidRadius * Math.random();
+            double longitude = ssidLocation.longitude - bssidRadius + 2.0 * bssidRadius * Math.random();
+
+            long timestamp = cal.getTimeInMillis();
+            network.setTimestampLocation(timestamp);
+            network.setLongitude(longitude);
+            network.setLatitude(latitude);
+            network.setAccuracy(0.f);
+
+            dbh.updateNetworkInformation(network);
+
             // ATTACKS PER NETWORK
-            for (int attack = 0; attack < numOfAttackPerNetwork; attack++) {
-                LatLng ssidLocation = new LatLng(tudarmstadtLoc.latitude - ssidRadius + 2.0 * ssidRadius * Math.random(), tudarmstadtLoc.longitude - ssidRadius + 2.0 * ssidRadius * Math.random());
+            for (int attackNumber = 0; attackNumber < numOfAttackPerNetwork; attackNumber++) {
 
                 int numRecordsPerAttack = (Math.abs(random.nextInt()) % 5) + 1;
+                /*
+                * ADD A ATTACK*/
 
-                double latitude = ssidLocation.latitude - bssidRadius + 2.0 * bssidRadius * Math.random();
-                double longitude = ssidLocation.longitude - bssidRadius + 2.0 * bssidRadius * Math.random();
+                AttackRecord attack = new AttackRecord();
+                attack.setAttack_id(attackId);
 
+                attack.setBssid(bssidName);
 
-                // RECORDS PER ATTACK
-                for (int recC = id; recC < id + numRecordsPerAttack; recC++) {
-                    Record record = new Record();
-                    record.setId(recC);
-                    record.setAttack_id(id);
+                attack.setProtocol(protocolName);
+                attack.setLocalIP(bssidName);
 
-                    record.setSsid(ssidName);
-                    record.setBssid(bssidName);
 
-                    // GO BACK IN TIME
-                    record.setTimestamp(cal.getTimeInMillis()
-                            - ((recC * 60 * 60 * 24) * 1000) + (1000 * ((recC - id) + 1)));
+                dbh.addAttackRecord(attack);
 
-                    record.setProtocol(protocolName);
-                    record.setLocalIP(bssidName);
-                    record.setType(MessageRecord.TYPE.SEND);
+                // RECORDS PER ATTACK
+                for (int messageID = attackId; messageID < attackId + numRecordsPerAttack; messageID++) {
+                    MessageRecord message = new MessageRecord();
+                    message.setId(messageID);
+                    message.setAttack_id(attackId);
+
+                    // GO BACK IN TIME
+                    message.setTimestamp(cal.getTimeInMillis()
+                            - ((messageID * 60 * 60 * 24) * 1000) + (1000 * ((messageID - attackId) + 1)));
 
-                    record.setLatitude(latitude);
-                    record.setLongitude(longitude);
+                    message.setType(MessageRecord.TYPE.SEND);
+                    message.setPacket("");
 
-                    //dbh.addRecord(record);
+                    dbh.addMessageRecord(message);
                 }
 
-                id+=numRecordsPerAttack;
+                attackId+=numRecordsPerAttack;
             }
 
         }
 
-        int countAllLogs = dbh.getAllRecords().size();
-        int countRecords = dbh.getRecordCount();
-        int countAttacks = dbh.getAttackCount();
-
-        if ((countRecords == 0)) {
-            Record rec = dbh.getRecordOfAttackId(0);
-            Record rec2 = dbh.getRecord(0);
-
-            System.out.println("" + "Could not create logs!");
-        }
+//        int countAllLogs = dbh.getAllRecords().size();
+//        int countRecords = dbh.getRecordCount();
+//        int countAttacks = dbh.getAttackCount();
+//
+//        if ((countRecords == 0)) {
+//            Record rec = dbh.getRecordOfAttackId(0);
+//            Record rec2 = dbh.getRecord(0);
+//
+//            System.out.println("" + "Could not create logs!");
+//        }
 
     }
 

+ 20 - 16
src/de/tudarmstadt/informatik/hostage/ui2/fragment/StatisticsFragment.java

@@ -8,8 +8,6 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.graphics.Color;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -86,12 +84,12 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
     static final String CHART_TYPE_TITLE_PIE = MainActivity.getContext().getString(R.string.stats_pie_plot);
     static final String CHART_TYPE_TITLE_LINE = MainActivity.getContext().getString(R.string.stats_line_plot);
 
-    static final String DIALOG_PROTOCOLS_TITLE = MainActivity.getContext().getString(R.string.stats_select_protocol_data);
+    //static final String DIALOG_PROTOCOLS_TITLE = MainActivity.getContext().getString(R.string.stats_select_protocol_data);
     static final String DIALOG_NETWORK_TITLE = MainActivity.getContext().getString(R.string.stats_select_network_data);
     static final String DIALOG_ATTACK_TITLE = MainActivity.getContext().getString(R.string.stats_select_attack_data);
 
     static  final String COMPARE_TITLE_AttacksPerProtocol   = MainActivity.getContext().getString(R.string.stats_attacks_protocol);
-    static  final String COMPARE_TITLE_UsesPerProtocol      = MainActivity.getContext().getString(R.string.stats_uses_protocol);
+    //static  final String COMPARE_TITLE_UsesPerProtocol      = MainActivity.getContext().getString(R.string.stats_uses_protocol);
     static  final String COMPARE_TITLE_AttacksPerDate       = MainActivity.getContext().getString(R.string.stats_attacks_date);
     static  final String COMPARE_TITLE_AttacksPerTime       = MainActivity.getContext().getString(R.string.stats_attacks_time);
     static  final String COMPARE_TITLE_AttacksPerBSSID      = MainActivity.getContext().getString(R.string.stats_attacks_bssid);
@@ -110,6 +108,8 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
     private boolean wasBelowTimePicker;
 
     private LogFilter filter;
+
+    /*Maybe used in the future if the users doesn't need a filterbutton in every situation*/
     private boolean showFilterButton;
 
     private PieGraph pieGraph;
@@ -122,7 +122,6 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
     private Thread loader;
     private ProgressBar spinner;
 
-    private ArrayList<Integer> colorList;
     private ArrayList<PlotComparisonItem> currentData;
 
     private HostageDBOpenHelper dbh;
@@ -133,6 +132,11 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
     private String selectedCompareData = COMPARE_TITLE_AttacksPerProtocol;
 
 
+    /**The Charttype.
+     * PIE_CHART = 0
+     * BAR_CHART = 1
+     * LINE_CHART = 2
+     */
     public enum ChartType {
         PIE_CHART(0),
         BAR_CHART(1),
@@ -998,8 +1002,8 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
 
         int count = 0;
         for (PlotComparisonItem lineItem : this.currentData){
-            ArrayList<PlotComparisonItem> data = lineItem.getOtherData();
-            int index = 0;
+            ArrayList<PlotComparisonItem> data = lineItem.getChildItems();
+            //int index = 0;
             Line l = new Line();
             int lineColor = lineItem.getColor();
             l.setColor(lineColor);
@@ -1021,7 +1025,7 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
                     rangeMin_Y = pointItem.getValue2();
                     rangeMin_X = pointItem.getValue1();
                 }
-                index++;
+                //index++;
                 count++;
             }
             linegraph.addLine(l);
@@ -1077,7 +1081,6 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
         rangeMax_Y = rangeMin_Y + maxY;
         linegraph.setRangeY(rangeMin_Y, rangeMax_Y);
         linegraph.setLineToFill(0);
-        linegraph.invalidate();
     }
 
     /**
@@ -1102,7 +1105,6 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
         }
 
         barGraph.setBars(bars);
-        barGraph.invalidate();
     }
 
     /*
@@ -1365,7 +1367,7 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
 
             double itemValue = (((double)numbOfAttacks / (double)records.size())*100.);
             PlotComparisonItem item = new PlotComparisonItem(groupKey, this.getColor(index), (double) numbOfAttacks, itemValue);
-            item.setOtherData(singleLineItems);
+            item.setChildItems(singleLineItems);
             plotItems.add(item);
             index++;
         }
@@ -1491,7 +1493,7 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
                     }
                 }
                 PlotComparisonItem otherItem = new PlotComparisonItem(OTHER_CHART_TITLE, this.getOtherColor(), 0., valueOfOthers);
-                otherItem.setOtherData(others);
+                otherItem.setChildItems(others);
                 copy.add(otherItem);
 
                 Collections.sort(copy, new Comparator<PlotComparisonItem>() {
@@ -1652,7 +1654,7 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
 
         calendar.setTimeInMillis (timeInMillis);
         int hour    = calendar.get(Calendar.HOUR_OF_DAY);
-        int min     = calendar.get(Calendar.MINUTE);
+        //int min     = calendar.get(Calendar.MINUTE);
 
         return hour;
 
@@ -1670,7 +1672,7 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
 
     /**
     *  Returns the given hour as a formated string.
-     *
+     * Format: "HH:00"
     * */
     private String getHourAsTimeString(long hour) {
         return "" + hour + ":00";
@@ -1685,7 +1687,9 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
     private String getDateAsDayString(long timeStamp) {
         try {
             Date netDate = (new Date(timeStamp));
+            DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(this.getActivity());
             return dateFormat.format(netDate);
+            //return dateFormat.format(netDate);
         } catch (Exception ex) {
             return "xx";
         }
@@ -1720,10 +1724,10 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
             String sortKey = null;
             selectedData = new ArrayList<String>();
 
-            if (item.getOtherData() == null){
+            if (item.getChildItems() == null){
                 selectedData.add(item.getTitle());
             } else {
-                for (PlotComparisonItem other : item.getOtherData()){
+                for (PlotComparisonItem other : item.getChildItems()){
                     selectedData.add(other.getTitle());
                 }
             }

+ 6 - 5
src/de/tudarmstadt/informatik/hostage/ui2/model/PlotComparisonItem.java

@@ -14,8 +14,9 @@ public class PlotComparisonItem{
 
     private Integer color = 0;
 
-    private ArrayList<PlotComparisonItem> otherData;
+    private ArrayList<PlotComparisonItem> childItems;
 
+    /*CONSTRUCTOR*/
     public PlotComparisonItem(String title, Integer color , Double value1, Double value2){
         super();
         this.color = color;
@@ -24,11 +25,11 @@ public class PlotComparisonItem{
         this.value2 = value2;
     }
 
-    public ArrayList<PlotComparisonItem> getOtherData(){
-        return this.otherData;
+    public ArrayList<PlotComparisonItem> getChildItems(){
+        return this.childItems;
     }
-    public void setOtherData(ArrayList<PlotComparisonItem> other){
-        this.otherData = other;
+    public void setChildItems(ArrayList<PlotComparisonItem> other){
+        this.childItems = other;
     }
     public String getTitle(){
         return this.title;