Kunzisoft / KeePassDX

Lightweight vault and password manager for Android, KeePassDX allows editing encrypted data in a single file in KeePass format and fill in the forms in a secure way.
https://www.keepassdx.com/
GNU General Public License v3.0
4.7k stars 276 forks source link

No AutoFill in Reddit app #1572

Closed Offerel closed 1 year ago

Offerel commented 1 year ago

Describe the bug I have tried to insert credentials into the reddit app, but there seems to be no AutoFill available.

To Reproduce Steps to reproduce the behavior:

  1. Install official reddit app
  2. Open app
  3. Click on already existing user
  4. No AutoFill suggestions

Expected behavior With Keepass2Android using the same database, AutoFill is suggested at the same.

KeePass Database

Android:

Additional context Add any other context about the problem here.

J-Jamet commented 1 year ago

It's not possible to force an app that doesn't want autofill to have it. Contact the Reddit team to change this behavior on their app.

Offerel commented 1 year ago

Normally I try to not compare both, but with Kp2A I can make use of AutoFill with the Reddit app. Do you know if they use some other thing?

It's not only this app, there are other apps with the same behavior. I used it only as prominent example.

J-Jamet commented 1 year ago

Ho OK it's weird. I'll test it with KeePass2Android.

Edit : I've just tested with KeePass2Android's autofill and I can't see anything on multiple devices.

Offerel commented 1 year ago

Sorry, I must have missed the closing notification. Hmm weird. In my case it looks like this. One screenshot is with enabled integration into the keyboard and one without.

Screenshot_20231021_084709_Reddit

Screenshot_20231021_084554_Reddit

This are my settings: Screenshot_20231021_082838_Keepass2Android Screenshot_20231021_082852_Keepass2Android

If you need english screens or a remote session to test thing's, please let me know. I'm always open to help where I can.

Offerel commented 1 year ago

I don't know if the root cause is the same, but I have found the following with the app "Eternity for Lemmy". If I try to add a new account with KeePassDX set to AutoFill, it only trigger the AutoFill for the password field. If i focus the username, no AutoFill comes in. Not as pop-up, nor as Keyboard integration. If I however focus the password field, my Lemmy account is integrated into Gboard Keyboard. If I use the entry, the password is filled in, after that it changes the focus to the 2fa field and enters the username. I have downloaded Eternity from F-Droid, but you can find it also on the playstore or on GitHub

Update: I have found the same behavior when i try to login to my own WebApp SyncMarks. It's a back-end to synchronize Bookmarks across browsers (Chrome, Firefox, Edge). Other Login Forms on Forums and so on are working without any issue.

J-Jamet commented 1 year ago

Okay, now I get it. I tested the Reddit application with the registration form and no login, which are very similar. I've just corrected the other issue, and I have no problems filling in the form with KeePassDX.

J-Jamet commented 1 year ago

Fixed in 4.0.3

alexknop commented 1 year ago

I am still not getting a prompt on the Reddit app nor the SharkClean app. I am getting prompts when using Keepass2Android. However I did get a prompt for my Sonos, Apple Music and ProtonMail apps, so I know that KeePassDX is working across some apps on my device.

J-Jamet commented 1 year ago

reddit_autofill

The form field recognition algorithm works for an old version of Reddit, ~I can't do anything more from KeePassDX.~

alexknop commented 1 year ago

My Login screen looks slightly different. Couldn't get a direct screenshot cause my device was blocking it for security reasons. IMG_0875

It may be because I'm running Android 13 and they have a different style applied than other OS versions. However if it is the app itself showing this style, I am running the Reddit app version 2023.43.0, hopefully you are too. And lastly, if its a difference in the keyboards and in-line suggestions, I am running Google Keyboard version 13.5.04

J-Jamet commented 1 year ago

Indeed, I just saw that I did not have an up-to-date version of Reddit, after updating the autofill is not displayed. I don't know if this is a bug, or that Reddit knowingly prevented autofill. Android 13 is not the cause

alexknop commented 1 year ago

It is working for Keepass2Android, but I am not sure if that app has gotten creative and drawn outside of the lines of textbook Autofill in order to get it to work. I would also test with SharkClean...not that it's a popular app like Reddit or that it is a personal request, but because it could give you a second example which could help cover more bases for other apps too.

alexknop commented 1 year ago

SharkClean... I wonder if the issue is the Username/Email and Password words are "embedded" in the fields themselves versus being above/outside of them. Reddit app is similar. Screenshot_2023-11-06-13-15-01-486

J-Jamet commented 1 year ago

OK, so I debugged and I found very surprising behavior in the logs. The algorithm detects hundreds of password fields for the Reddit application while it detects only one in the other forms in which it works. As the KeePassDX algorithm only stores the first password field to optimize parsing memory, this view seems to no longer be present at the end of the parse. But always storing the last recovered password view solves the problem. I imagine there is a verification system that destroys and rebuilds field views on the fly. So I will apply the fix based on the principle that the last parsed view is the correct one.

J-Jamet commented 1 year ago

I've been struggling to find the right middles for the right recognition, but it works as well as I can otherwise it takes away recognition on other types of forms. You can try version 4.0.4.

alexknop commented 1 year ago

I'm finding that if I press the Username field first it doesn't suggest a login from Keepass, but if I then press the Password field it does. Similarly, I can press the Password field first and it won't suggest a login, but then I can press the Username field and it will suggest one.

J-Jamet commented 1 year ago

So that means the algorithm is working. Typically I don't know why hundreds of views are parsed in this app, there must be a refresh in the form. I've done a lot of testing and I can't do any better without messing up the other form fillers.