|
@@ -1,12 +1,23 @@
|
|
package de.tudarmstadt.informatik.hostage.ui;
|
|
package de.tudarmstadt.informatik.hostage.ui;
|
|
|
|
|
|
-import de.tudarmstadt.informatik.hostage.format.LogViewFormatter;
|
|
|
|
-import de.tudarmstadt.informatik.hostage.logging.DatabaseHandler;
|
|
|
|
-import de.tudarmstadt.informatik.hostage.logging.Record;
|
|
|
|
|
|
+import java.text.DateFormat;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+
|
|
|
|
+import android.annotation.SuppressLint;
|
|
import android.app.Activity;
|
|
import android.app.Activity;
|
|
import android.os.Bundle;
|
|
import android.os.Bundle;
|
|
-import android.widget.ScrollView;
|
|
|
|
-import android.widget.TextView;
|
|
|
|
|
|
+import android.view.View;
|
|
|
|
+import android.widget.AdapterView;
|
|
|
|
+import android.widget.ListAdapter;
|
|
|
|
+import android.widget.ListView;
|
|
|
|
+import android.widget.SimpleAdapter;
|
|
|
|
+import android.widget.Toast;
|
|
|
|
+import de.tudarmstadt.informatik.hostage.R;
|
|
|
|
+import de.tudarmstadt.informatik.hostage.logging.DatabaseHandler;
|
|
|
|
+import de.tudarmstadt.informatik.hostage.logging.Record;
|
|
|
|
|
|
/**
|
|
/**
|
|
* Creates a simple log view. Shows the Information for every attack. The format ist defined in {@link Record#toString(int)}.
|
|
* Creates a simple log view. Shows the Information for every attack. The format ist defined in {@link Record#toString(int)}.
|
|
@@ -14,23 +25,151 @@ import android.widget.TextView;
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
public class ViewLogTable extends Activity{
|
|
public class ViewLogTable extends Activity{
|
|
|
|
+ DatabaseHandler dbh;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
super.onCreate(savedInstanceState);
|
|
- DatabaseHandler dbh = new DatabaseHandler(getBaseContext());
|
|
|
|
- StringBuffer log = new StringBuffer();
|
|
|
|
- //Create a log entry for every attack in the Database
|
|
|
|
- for(Record record: dbh.getAllReceivedRecordsOfEachAttack()) {
|
|
|
|
- log.append(record.toString(0));
|
|
|
|
- }
|
|
|
|
|
|
+ dbh = new DatabaseHandler(getBaseContext());
|
|
|
|
+ setContentView(R.layout.activity_loglist);
|
|
|
|
+// StringBuffer log = new StringBuffer();
|
|
|
|
+// //Create a log entry for every attack in the Database
|
|
|
|
+// for(Record record: dbh.getAllReceivedRecordsOfEachAttack()) {
|
|
|
|
+// log.append(record.toString(0));
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// ScrollView scroll = new ScrollView(this);
|
|
|
|
+// TextView text = new TextView(getApplicationContext());
|
|
|
|
+// text.setText(log);
|
|
|
|
+// text.setTextAppearance(this, android.R.style.TextAppearance_Medium);
|
|
|
|
+// scroll.addView(text);
|
|
|
|
+
|
|
|
|
+ populateListViewFromDB();
|
|
|
|
+ registerListClickCallback();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private void populateListViewFromDB() {
|
|
|
|
+
|
|
|
|
+ ListView mylist = (ListView) findViewById(R.id.loglistview);
|
|
|
|
+
|
|
|
|
+ ArrayList<HashMap<String, String>> Items = new ArrayList<HashMap<String, String>>();
|
|
|
|
+
|
|
|
|
+ ArrayList<Record> data = dbh.getAllRecords();
|
|
|
|
+
|
|
|
|
+ for (Record val : data) {
|
|
|
|
+ HashMap<String, String> map = new HashMap<String, String>();
|
|
|
|
+ map.put(this.getString(R.string.RecordBSSID), val.getBSSID() );
|
|
|
|
+ map.put(this.getString(R.string.RecordSSID), val.getSSID());
|
|
|
|
+ map.put(this.getString(R.string.RecordProtocol), val.getProtocol());
|
|
|
|
+ map.put(this.getString(R.string.RecordTimestamp), this.getDateAsString(val.getTimestamp()));
|
|
|
|
+ Items.add(map);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Adding Items to ListView
|
|
|
|
+ ListAdapter adapter = new SimpleAdapter(this, Items,
|
|
|
|
+ R.layout.loglist_row,new String[] { this.getString(R.string.RecordBSSID), this.getString(R.string.RecordSSID), this.getString(R.string.RecordProtocol), this.getString(R.string.RecordTimestamp) },
|
|
|
|
+ new int[] {R.id.RecordTextFieldBSSID, R.id.RecordTextFieldSSID, R.id.RecordTextFieldProtocol, R.id.RecordTextFieldTimestamp });
|
|
|
|
+
|
|
|
|
+ mylist.setAdapter(adapter);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @SuppressLint("SimpleDateFormat")
|
|
|
|
+ private String getDateAsString(long timeStamp){
|
|
|
|
+
|
|
|
|
+ try{
|
|
|
|
+ DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
|
|
|
+ Date netDate = (new Date(timeStamp));
|
|
|
|
+ return sdf.format(netDate);
|
|
|
|
+ }
|
|
|
|
+ catch(Exception ex){
|
|
|
|
+ return "xx";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private void registerListClickCallback() {
|
|
|
|
+ ListView mylist = (ListView) findViewById(R.id.loglistview);
|
|
|
|
|
|
- ScrollView scroll = new ScrollView(this);
|
|
|
|
- TextView text = new TextView(getApplicationContext());
|
|
|
|
- text.setText(log);
|
|
|
|
- text.setTextAppearance(this, android.R.style.TextAppearance_Medium);
|
|
|
|
- scroll.addView(text);
|
|
|
|
- setContentView(scroll);
|
|
|
|
|
|
+ mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
|
+ public void onItemClick(AdapterView<?> parent, View viewClicked, int position,
|
|
|
|
+ long idInDB) {
|
|
|
|
+ DatabaseHandler dbh = new DatabaseHandler(getBaseContext());
|
|
|
|
+ Record rec = dbh.getRecord((int) idInDB);
|
|
|
|
+ String message = createInformationStringFromRecord(rec);
|
|
|
|
+ Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private String createInformationStringFromRecord(Record rec){
|
|
|
|
+ String message = "id: " + rec.getId() + "\n" +
|
|
|
|
+ "attack_id: " + rec.getAttack_id() +"\n" +
|
|
|
|
+ "protocol: " + rec.getProtocol() +"\n" +
|
|
|
|
+ "type: " + rec.getType() + "\n" +
|
|
|
|
+ "externalIP: " + rec.getExternalIP() +"\n" +
|
|
|
|
+ "localIP: " + rec.getLocalIP() +"\n" +
|
|
|
|
+ "local port: " + rec.getLocalPort() +"\n" +
|
|
|
|
+ "remoteIP: " + rec.getRemoteIP() +"\n" +
|
|
|
|
+ "BSSID: " + rec.getBSSID() + "\n" +
|
|
|
|
+ "SSID: " + rec.getSSID() +"\n" +
|
|
|
|
+ "latitude: " + rec.getLatitude() +"\n" +
|
|
|
|
+ "longitude: " + rec.getLongitude() + "\n" +
|
|
|
|
+ "accuracy: " + rec.getAccuracy() +"\n" +
|
|
|
|
+ "packet: " + rec.getPacket() + "\n" +
|
|
|
|
+ getDateAsString(rec.getTimestamp()) +
|
|
|
|
+ "";
|
|
|
|
+ return message;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @SuppressLint("SimpleDateFormat")
|
|
|
|
+ private String getDateAsString(long timeStamp){
|
|
|
|
+
|
|
|
|
+ try{
|
|
|
|
+ DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
|
|
|
+ Date netDate = (new Date(timeStamp));
|
|
|
|
+ return sdf.format(netDate);
|
|
|
|
+ }
|
|
|
|
+ catch(Exception ex){
|
|
|
|
+ return "xx";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// @Override
|
|
|
|
+// public boolean onCreateOptionsMenu(Menu menu)
|
|
|
|
+// {
|
|
|
|
+// MenuInflater inflater = getMenuInflater();
|
|
|
|
+// inflater.inflate(R.menu.main_menu, menu);
|
|
|
|
+// return true;
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// @Override
|
|
|
|
+// public boolean onOptionsItemSelected(MenuItem item)
|
|
|
|
+// {
|
|
|
|
+// switch (item.getItemId())
|
|
|
|
+// {
|
|
|
|
+// case R.id.home:
|
|
|
|
+// ListviewActivity.this.finish();
|
|
|
|
+// return true;
|
|
|
|
+// case R.id.about:
|
|
|
|
+// Toast.makeText(getApplicationContext(), "This is collection and is created by amdel corporation",
|
|
|
|
+// Toast.LENGTH_LONG).show();
|
|
|
|
+// return true;
|
|
|
|
+// case R.id.exit:
|
|
|
|
+// finish();
|
|
|
|
+// System.exit(0);
|
|
|
|
+// return true;
|
|
|
|
+// default:
|
|
|
|
+// return super.onOptionsItemSelected(item);
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
|
|
}
|
|
}
|