Construire un simple Keylogger Android Application: l'Accessibilité de la recherche pour le clavier Virtuel
J'ai essayé de trouver quelques ressources afin de construire un Keylogger Android application pour une accessibilité du projet de recherche sur la plateforme Android (APILevel 17).
L'Interface de l'application serait un simple "EditText" champ dans lequel l'utilisateur types à l'aide de la virtuel clavier à l'écran [Après la sélection du clavier à partir des Paramètres d'Entrée].
Je cherche à créer un Keylog base de données pour mon application (avec un DB SQLite parce que je suis familier avec qui, mais un simple fichier csv DB serait bien aussi! 🙂 ) qui se présente comme suit:
(Illustration)
J'ai donc besoin de vous connecter chaque personnage sur une nouvelle entrée dès qu'il est tapé, ainsi que le timestamp.
J'ai essayé de l'expriment avec le "TextWatcher" Classe
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
}
Mes Questions sont:
- Est-ce la bonne manière de mettre en Œuvre cette?
- Puis-je obtenir Exactement UN caractère qui est tapé avec le temps et l'insérer dans la DB SQLite qui je puisse ensuite obtenir et analyser l'??
- Ou l' onKeyUp Méthode plus utile? [Je n'ai pas utilisé essayé encore de moyen, de Sorte qu'il serait génial si quelqu'un pouvait me diriger vers l'utiliser pour construire un keylogger si c'est plus simple!]
*Merci d'Avance à tous ceux qui peuvent m'aider d'une quelconque façon!
Adit*
OriginalL'auteur Adit Gupta | 2012-12-23
Vous devez vous connecter pour publier un commentaire.
Votre TextWatcher n'est pas lié à EditText
Vous devez utiliser
addTextChangedListener(TextWatcher yourWatcher)
sur votre EditText.Voici mon exemple:
Dans votre code, il devrait être comme ceci :
Chaque méthode incluse dans cet Observateur est triggerd par l'entrée de chaque signe du clavier.
Puisque vous obtenez posistion après l'entrée, vous pouvez facilement obtenir de caractère qui a été entré
Pour stocker des données que vous avez mentionné, SharedPreferences sera plus rapide que DB. (Plusieurs écritures pour DB) Si votre cible est d'au moins api 11, vous pouvez simplement utiliser StringSet De l'éditeur.putStringSet si votre cible est inférieure, il est également possible, par exemple : http://androidcodemonkey.blogspot.com/2011/07/store-and-get-object-in-android-shared.html
.
ad.1 je équipements s'ont mis à jour ma réponse alors maintenant, dans afterTextChanged méthode de dernier signe est extrait. S'il vous plaît exécuter et vérifier dans les journaux. ad.2 SharedPreferences funcitions en tant que base de données simplifiée, avec un grand raccourci. Pour shure vous devriez lire un peu plus à ce sujet dans Sotrage les Options de la section developer.android.com/guide/topics/data/data-storage.html. Ces données persistent après chaque commit que vous faites. Les données peuvent être récupérées au moment voulu. Les données peuvent être récupéré à une Activité ou d'un Service. Quelques exemple très simple android-er.blogspot.com/2011/01/...
Ok , je finnalyy eu le temps de remplir ce!
Je dirais lot les données de sorte que vous ne faites pas si nombreux appels db
OriginalL'auteur MP23