Erstellen Sie eine einfache Keylogger Android-Anwendung: Zugänglichkeit von Forschung für die Virtuelle Tastatur
Habe ich versucht zu finden einige Ressourcen, um zu bauen ein Keylogger Android-Anwendung für Eingabehilfe-Forschungs-Projekt auf der Android-Plattform (APILevel 17).
Die Schnittstelle der Anwendung wäre eine einfache "EditText" Feld, wobei die Nutzer-Typen über die virtuelle onscreen-Tastatur [Nach Wahl der gewünschten Tastatur von der Eingabe-Einstellungen].
Mein Ziel ist es, erstellen Sie eine Keylog-Datenbank für meine Anwendung (mit eine SQLite-DB, weil ich bin vertraut mit, aber eine einfache csv-Datei, die DB würde auch gut funktionieren! 🙂 ) die sieht wie folgt aus:
(Abbildung)
Damit ich mich anmelden müssen, jeder Charakter auf einen neuen Eintrag, sobald er eingegeben wurde, zusammen mit dem Zeitstempel.
Ich habe versucht, das expriment mit den "TextWatcher" Klasse
EditText KeyLogEditText = (EditText) findViewById(R.id.editTextforKeyLog);
TextWatcher KeyLogTextWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3)
{ }
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3)
{ }
@Override
public void afterTextChanged(Editable arg0) {
//TODO Log the characters in the SQLite DB with a timeStamp etc.
//Here I call my database each time and insert an entry in the database table.
//I am yet to figure out how to find the latest-typed-character by user in the EditText
}
Meine Fragen sind:
- Ist das der Richtige Weg der Umsetzung?
- Bekomme ich Genau EIN Zeichen, das eingegeben wird, zusammen mit der Zeit und stecken Sie es in die SQLite-DB, die kann ich später abrufen und analysieren??
- Oder Würde die onKeyUp Methode sinnvoller sein? [Ich habe nicht verwendet, versucht, die Methode noch nicht, Also wäre es toll, wenn jemand könnte mich zu mit diesem zu bauen ein keylogger, wenn das ist einfacher!]
*Vielen Dank im Voraus, wer kann mir helfen in keiner Weise!
Adit*
InformationsquelleAutor Adit Gupta | 2012-12-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jetzt Ihre TextWatcher ist nicht gebunden an EditText
Sollten Sie verwenden
addTextChangedListener(TextWatcher yourWatcher)
auf Ihre EditText.Hier ist mein Beispiel:
In Ihrem code sollte wie folgt sein :
Jeder Methode enthalten, die in dieser Watcher ist triggerd durch Eingabe der einzelnen Zeichen von der Tastatur.
Da bekommen Sie posistion nach der Eingabe können Sie easly bekommen Zeichen, die eingegeben wurde
Daten zu speichern, die Sie erwähnt, SharedPreferences wird schneller sein als DB. (Viele schreibt DB) Wenn Ihr Ziel ist, mindestens api 11 können Sie einfach StringSet Editor.putStringSet wenn Ihr Ziel ist niedriger, es ist auch möglich, einige Beispiele : http://androidcodemonkey.blogspot.com/2011/07/store-and-get-object-in-android-shared.html
.
ad.1 ich'have aktualisiert meine Antwort so, jetzt in afterTextChanged Methode letzten Zeichen abgerufen werden. Bitte führen Sie, und überprüfen Sie in den Protokollen. ad.2 SharedPreferences funcitions vereinfachte Datenbank, mit großem Verknüpfung. Für shure, die Sie Lesen sollten, etwas mehr über diese in Sotrage Optionen-Abschnitt developer.android.com/guide/topics/data/data-storage.html. Diese Daten bestehen nach jedem commit, die Sie machen. Daten können abgerufen, im gewünschten moment. Daten können retrived in einer Aktivität oder Service. Einige sehr einfache Beispiel android-er.blogspot.com/2011/01/...
Okay , ich finnalyy Zeit hat, um dieses zu vervollständigen!
Ich würde vorschlagen, batch-Daten, so dass Sie nicht so viele db-Aufrufe
InformationsquelleAutor MP23