Muti page password solution / question [another USAA question]

Options
kbrock
kbrock
Community Member
edited December 2015 in 1Password in the Browser

I'm able to get USAA (multi page form) from a single saved login, but it requires a bit of hacking.

Please share if this helps anyone else, and if you have suggestions to make my workflow easier
Thanks.

  1. chrome://extensions - enable 1password in incognito mode.
  2. go to http://usaa.com/
  3. fill out form and save it
  4. stay on the pin page.
  5. open a new browser window in incognito mode
  6. go to http://usaa.com

open 1password and find usaa login (don't worry. none of these pins, usernames, and passwords are real)

  • username = "joe_smith"
  • password = "PasswordText"
  • autosubmit = <never> (for testing)
  • <expand web form details>
  • j_username = <text field>, "joe_smith", person icon
  • j_password = <password field>, "PasswordText", key icon
  1. <save> <edit>
  2. add web form with no label and move the key icon from j_password to <label>
  3. <save> <edit>
  4. correct the fields and keep save / edit until it looks right (something odd was happening for me)

so it now looks like:

  • username = "joe_smith"
  • password = "1111"
  • autosubmit = <never> (for testing)
  • <expand web form details>
  • j_username = <text field>, "joe_smith", person icon
  • j_password = <password field>, "PasswordText"
  • <label> = <password field>, "1111", key icon
  1. go to incognito (homepage form), click CMD-\ . the password should have 12 dots (one for each letter PasswordText)
  2. go into the normal browser (pin page) and click cmd-... the password has 4 dots (one for each number 111)

Seems to be working.

Issues:

  1. I would like to populate the 3rd web form field with the html name of "table:row1:pin1". But it doesn't quite work. I think internals of 1password may be using the : as a delimiter and it is screwing something up.
  2. I was hoping I could put the passwords up in the visible section / label / new field portion and link it to the web form. it wasn't working for me. Again, I wonder if the ":" in name of the web form's input is causing issues.

Best of luck and any input would be great


1Password Version: 5.4 (540046)
Extension Version: 4.4.3.90
OS Version: OS X 10.10.5
Sync Type: Dropbox
Referrer: forum-search:Muti page password question [another USAA question]

Comments

  • hawkmoth
    hawkmoth
    Community Member
    Options

    @kbrock - Interesting. My own solution has been to save separate records, one for the main login pages and a second for the PIN page. That also works, but it does seem a little inelegant.

    What does incognito mode have to do with the workings of your way of doing this?

  • littlebobbytables
    littlebobbytables
    1Password Alumni
    Options

    Hello @kbrock,

    After going through the steps to create the Login in this manner, does this Login item work if you quit Chrome, relaunch it and try to interact with the page normally i.e. not in an incognito window? The reason I ask is everything I know about our filling tells me this shouldn't work. We have two types of filling behaviour. One is called fill by HTML attribute and another is fill by designation. Fill by HTML attribute works by comparing a fingerprint of the page's fields to the web form details section. If the two match perfectly we fill all the fields as detailed in the web form details. If you manually add a field to the web form details this alters the fingerprint and should no longer be used. Instead it would default back to fill by designation where we use the information stored in the username and password fields at the top of the page and we make our best guess as to which field represents this data.

    When I create a brand new Login item for that page my web form details section has three fields, the j_username and j_password that you mention but also a third field titled SearchPhrase which you don't mention. I'm wondering if you're finding a way to repurpose this field due to fill by designation occurring on the second page but if you were that would mean your PIN is being filled into the search field of first the page.

    I'm intrigued so I will be curious to see what our chatting teaches me :smile:

  • kbrock
    kbrock
    Community Member
    edited December 2015
    Options

    Hello @littlebobbytables
    Thank you for all your details.

    Yes, until yesterday, I had 2 different 'logins' in 1password, one for each screen.

    My login is still working fine today after rebooting my machine and only going in via regular mode (not incognito mode).

    Today I tried creating another login and it does not work. It works like you suggest. It does look like changing the webform manually is resetting the form field fingerprints.

    Yesterday, I do remember saving the form. going back in and things being reset. it was in a very odd state. I was clicking save going out and back in over a dozen times. It was all sorts of wonky.

    I'm guessing the 2 different plugins had access to the same database and 'corrupted' the record some how. And by corrupted, it is a good thing in this case. It must have gotten into a state where the fingerprints were not being cleared from the form.

    What is the fingerprint? Is it different from the field displayed in 1password?
    I assumed the field in the ui is either the the web form's dom id or name (e.g.: <input name="*" id="*">) Are the hidden fingerprints not displayed? Can I populate with a dom xpath or something?

    Do you have a ruby/bash script I could run from the command line to inspect the actual fingerprint values in the database - if it is hidden?

    Thanks for your help.
    Guess I discovered a bug by getting it to work.

  • kbrock
    kbrock
    Community Member
    Options

    @hawkmoth
    sorry, incognito mode was probably not relevant.

    It was what I used to test this. So I didn't have to keep logging in and out of my bank. (Don't want them to suspend my account for bad activitiy)

    I'm guessing something odd was happening because I'm not able to reproduce.

  • littlebobbytables
    littlebobbytables
    1Password Alumni
    Options

    Hello @kbrock,

    You can look at the complete JSON of an item with the following steps. The area you're most interested is an array titled fields stored in a details dictionary.

    1. Open 1Password's preferences and switch to the Advanced tab.
    2. Enable the option Show Item > Copy JSON menu item.
    3. Select the item in question and either use the now available menu option Item > Copy JSON or use the keyboard shortcut ⌘J.
    4. Paste into your preferred text editor.

    I fully confess I'm very curious as to the JSON of this item but even if we were to communicate privately we would have to take very careful measures to ensure anything sensitive such as your username, password or PIN was completely removed as the JSON includes everything including an item's password history.

    Oh and yes you definitely don't want your bank suspending your account. I locked myself out of mine once some time ago and had to wait weeks for them to send the new details by post. That was really annoying.

  • kbrock
    kbrock
    Community Member
    Options

    @littlebobbytables thanks, this is great.

    Alas, it was not meant to last.
    I CMD-J out the json, and I duplicated the record.
    The login no longer works and now enters the PIN into my login page. (as you suggested it would) Wonder why it is no longer detecting the first form and jumped to the fallback behavior.

    I've used this to login to the website a dozen times over the past week or so. Especially as I was writing up the description and verifying the questions you asked.
    I had said that I "restarted my machine," but I only restarted Chrome.


    The json is what both you and I would had guessed. the html id and name were "Logon" and the action is the last portion of the form action url "j_security_check".

    This is maps to how I saw it behaving. The metadata for the form matched the logon, and the username/password fields were being populated from the web form data (not the username/password at the top).
    The pin number seemed to work via the auto detection/fallback method and populated from the password field at the top.


    1. Is there a json paste option?
    2. Is there a way for me to tweak the html form name/id values?
    3. Do both the id, name, and field type have to match for a form field to be populated or does it choose id first and fall back to name?
    4. How do the sections work?
    5. Are there more fields used for detection other than what is in the json export?
    6. What is the details/backupKeys field? A checksum of the fields?
    7. Is uuid a simple internal 1password id for the record, or is there something else to it?
    8. Is the html form name / id / action the "fingerprint" you were referring to? Again, do all have to match or are there precedence rules?

    Thanks for the insight. I have a few more ideas I'll test out.
    Keenan

    ASIDE: Could you add some table/tr/td styling to the css for this forum? the markdown supports tables but the css of it is missing, making them useless. Also the styling for the code tags sure seem large.

  • littlebobbytables
    littlebobbytables
    1Password Alumni
    Options

    Hi @kbrock,

    I wonder if we'll ever figure out why it worked the way it did. Obviously it would be great if my fears weren't true but one of the developers here has been working on my education of the extension and what I know so far didn't tally with your initial discovery. Anyway, on to your questions.

    1. When you ask about a JSON paste do you mean into 1Password? If you do then in 1Password for Mac, if there is a JSON in the clipboard you will find there is a new menu option available to you and it can be found at File > New Item from Clipboard. I think this is what you're asking for but if I'm wrong please let me know.
    2. Manually using knowledge of being able to copy a JSON and create a new item but my answer to 3. will probably void this.
    3. Both the HTML name and ID attributes have to match as part of the fingerprint comparison. If either doesn't then we fall back on filling by HTML designation (just attempt to fill using the values stored in the username and password fields, completely ignoring the web form details section).
    4. Custom sections are just as a convenience for the user, they don't get used in filling at all. I like to add custom sections for security questions or what random email address I used for this site. None if it alters how the Login item fills though.
    5. The entire item is described in the JSON so it is equivalent to the item. You may have noticed that the ID fields all have text that looks like opid=__20, this is something added to the field by our filling mechanism when it analysed the page. I use this as an example of how the item/JSON is an enclosed item. By doing so it should mean the items fills the same way on other devices.
    6. The backupKeys entry relates to attachments I believe. I would recommend not altering that.
    7. The UUID is indeed a simple internal ID to identify a unique item in your vault. It's what allows you to duplicate an item right down to the title but still have 1Password tell them apart. It's what the entire merge/synchronisation behaviour relies on.
    8. The HTML name and ID do both form part of this fingerprint that has to match the page we're filling. If that tuple matches for each field we fill by HTML attribute (use the web form details section).

    I shall pass on the request for table formatting as I can see how that would be useful. We currently outsource hosting the forums though so we can't directly alter that but the company seems to have always been receptive when we've contacted them :smile:

    I hope those answers helped. If you wish for me to expand on any particular point let me know.

  • kbrock
    kbrock
    Community Member
    edited December 2015
    Options

    @littlebobbytables

    Looked at the forums and I seem to have hit upon a couple of common themes.

    • 1Password v3 allowed me to add a field to a form and it would fill it in.
    • 1Password v4 is more cautious, and if there is anything amiss, it will abort, filling out only 2 fields.

    Is an alternative solution that meets both the goal of safety and flexibility?

    • Can you include the end user in this verification process?

    1password noticed that this web form changed. For your safety we have turned off autosubmit.
    If this looks to be working, please click <verify> to turn autosubmit back on. (alt: have the user go into 1Password and re-enable autosubmit)

    Is there a way to avoid telling the user to create a new login?

    just create a new login

    This sounds like 1Password made a mistake rather than is trying to protect the end user.

    • Could you allow a user to just update their current login instead of having to create another?
    • Could this update include the additional fields found?

    Is there a way to avoid telling the end user "You can't add your own fields. this is for your own protection."?

    Yea. um.

    • Could you not mark a form invalid if there are fields in the stored form that are not in the web page?

    Is there a way to make the matching data more visible?

    • Could you move the WebForm and the sections code?
    • Could you then be more lenient in the matching fields and forms?
    • Could you let the advanced user know the reason for entering invalid form mode?
    • Could you make all webform matching values visible and editible? (form id, field id)
    • Could you have only 1 field to match, match against id, xpath, name, then label? (you probably already wrote this code...)
    • Could you make the id field as similar as possible to something the user can determine in the browser?

    Is there a way to introduce multiple forms per login?

    • Could you allow the user to have multiple "webForm" for a single login entry? (like you have multiple sections...) probably move form fields under the webform section in the json.
    • Could you allow the user to have multiple "passwords" for a single login entry? (think username, password, pin. possibly mother's maiden name, first school, ...)

    Just one or two of these could strategically get rid of the rest. e.g.: More lenient matching could allow a user to enter all questions and answers into a single form.

    Sorry. that was a brainstorm.
    Great product

  • littlebobbytables
    littlebobbytables
    1Password Alumni
    Options

    Greetings @kbrock,

    I confess I never did see 1Password 3's filling in action. I was a user but I was awkward and was an Opera person. 1Password only gained support for Opera when they switched to using the Chromium code which is oddly the same time I moved browsers.

    I would agree that filling does seem to be more cautious now. This can be open to debate as I don't see it as a crucial security thing. Obviously we want to be careful that things are only filled when they should be. I wasn't part of the AgileBits team during 1Password 3 or the development of 1Password 4 so I'll have to ask around as to the reasons behind some of these decisions and how set in stone anything is.

    Currently updating a Login item only affects the password field. So if a page changes at all you're right, we often do recommend attempting to create a brand new Login item which will capture the new page. I personally filed the feature request to see us alter this to update all fields. Unless there is good reason that I'm missing I too think this would be an improvement. ref: OPM-2708

    Funnily enough I've been wondering about the idea of storing multiple pages due to the increase in TOTP. At the moment the trouble with TOTP is the first page will ask for a username and password and that's easy no matter what we do, in the vast majority of cases one will be a password field - nice and easy to spot. The TOTP field will, depending on how the site has set it up, either be a text input field or password input field, both of which are used for requesting a username and password. One way around that would be to store the page that asks for the TOTP so that like the original page we can then flag a certain field as being the TOTP field. This would requiring mucking with the format a bit and would not be backwards compatible at all, probably part of the reason why we've avoided it. There is also the question of complexity. We want to support power users but we also have to be careful that we don't make 1Password unfriendly for those not wishing to delve into the guts. I'm sure you would agree that can sometimes be a delicate tightrope to get right. Of course the goal is to always improve 1Password and accept where things could be better. That's one of the reasons I love the forums :smile:

    Some of your thoughts only make sense if we become more relaxed with regards to filling. I would expect incremental steps here, first we'd need to introduce this more relaxed filling behaviour and then your other ideas could be explored. We don't want to make things too general though as all sorts of weird behaviour could be observed.

    The other consideration is how often much of this would be required. I do believe being able to have 1Password update a web form details section would be very useful and quite possibly more intuitive for many than what we have now. The vast majority of sites though wouldn't benefit from much of this. I'm not trying to come across as being cold at all to the idea but part of the cruel reality is that all software companies have to justify much of what they do at various levels. Developer time is a finite resource and to has to be focussed where it can do the most good. We account for factors such as demand, impact and developer require to complete. I don't state any of this as a way of saying no, I just want to explain why it may not happen. Every idea is considered and some are repeatedly raised to ensure the developers understand our user's desire to see it happen :wink: I suspect though that we could spend lots of time doing all sorts of crazy stuff here for our power users but in the end most sites wouldn't have need for it.

    I love your zeal, but imagine somebody else coming along and reading this thread, somebody who can happily use a computer but sees it merely as a tool for certain tasks online and pays attention to it no more than needed. We all know a plethora of people like this. I know somebody who phrases it thusly "I pay you so I don't have to care or waste my time with that machine" :tongue: They'll read this thread and then likely follow hawkmoth's post.

    Lots to digest though and it will be interesting to see how we can improve on what we already have :smile:

    Please don't take anything here as a reason to not impart your thoughts, you and everybody like yourself who communicates with us in the forums helps to shape 1Password,

This discussion has been closed.