123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- package de.tudarmstadt.informatik.hostage.ui;
- import java.net.InetAddress;
- import java.net.UnknownHostException;
- 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.content.Context;
- import android.content.SharedPreferences;
- import android.os.Bundle;
- import android.view.Menu;
- import android.view.MenuItem;
- 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;
- import de.tudarmstadt.informatik.hostage.logging.Record.TYPE;
- /**
- * Creates a simple log view. Shows the Information for every attack. The format ist defined in {@link Record#toString(int)}.
- * @author Lars Pandikow
- *
- */
- public class ViewLogTable extends Activity{
- DatabaseHandler dbh;
-
- private ArrayList<String> selectedProtocols;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- this.selectedProtocols = new ArrayList<String>();
-
- for (String protocol : this.getResources().getStringArray( R.array.protocols)){
- this.selectedProtocols.add(protocol);
- }
-
- 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);
- this.addRecordToDB();
-
- populateListViewFromDB();
- registerListClickCallback();
- }
-
- private void addRecordToDB(){
- Record record = new Record();
- record.setBSSID("BSSID wwwww");
- record.setSSID("SSID wowy");
- record.setTimestamp(0);
- record.setProtocol("HTTP");
- try {
- InetAddress localIP = InetAddress.getByAddress("Digga",new byte[]{127, 0, 0, 1}); //.getByName("192.168.2.1");
- record.setLocalIP(localIP);
- record.setRemoteIP(InetAddress.getByAddress("Digga",new byte[]{127, 1, 1, 1}));
- record.setType(TYPE.SEND);
- } catch (UnknownHostException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- dbh.addRecord(record);
- }
- 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) {
- String protocol = val.getProtocol();
- if (this.selectedProtocols.contains(protocol)){
- 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
- String keys[] = new String[] { this.getString(R.string.RecordBSSID), this.getString(R.string.RecordSSID), this.getString(R.string.RecordProtocol), this.getString(R.string.RecordTimestamp)};
- int ids[] = new int[] {R.id.RecordTextFieldBSSID, R.id.RecordTextFieldSSID, R.id.RecordTextFieldProtocol, R.id.RecordTextFieldTimestamp };
-
- ListAdapter adapter = new SimpleAdapter(this, Items, R.layout.loglist_row, keys, ids);
- 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);
-
- 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)
- {
- super.onCreateOptionsMenu(menu);
-
- for (String protocol : this.getResources().getStringArray( R.array.protocols)){
- MenuItem item = menu.add(protocol);
- item.setCheckable(true);
- boolean isChecked = this.selectedProtocols.contains(item.getTitle());
- item.setChecked(isChecked);
- }
-
- // MenuInflater inflater = getMenuInflater();
- // inflater.inflate(R.menu.listview_detail_menu, menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item)
- {
- boolean isChecked = this.selectedProtocols.contains(item.getTitle());
- if (isChecked){
- this.selectedProtocols.remove(item.getTitle());
- } else {
- this.selectedProtocols.add(item.getTitle().toString());
- }
- item.setChecked(!isChecked);
-
- this.populateListViewFromDB();
-
- return super.onOptionsItemSelected(item);
- }
-
- private void saveInSharedPreferences(String key, boolean value){
- //--SAVE Data
- SharedPreferences preferences = this.getSharedPreferences();
- SharedPreferences.Editor editor = preferences.edit();
- editor.putBoolean(key, value);
- editor.commit();
- }
-
- private boolean getBooleanInSharedPreferences(String key){
- SharedPreferences preferences = this.getSharedPreferences();
- return preferences.getBoolean(key, true);
- }
-
- private SharedPreferences getSharedPreferences(){
- return this.getSharedPreferences("HostagePreferences", Context.MODE_PRIVATE);
- }
- }
|