Setting up Steam Guard Mobile Authenticator

We're going to be running a modified version of Android (LineageOS, formerly known as CyanogenMod) as a virtual machine in VirtualBox. Then we'll transfer the MFA setup over to ArchiSteamFarm so we can have instant trades and benefit from its Steam Trade Matcher feature.

Install VirtualBox

This is well outside the scope of what we're talking about here; if you need help with this, check out the VirtualBox documentation.

Download LineageOS installer

Go to http://www.android-x86.org/download and get the latest version of CM-x86 (“CM” is short for “CyanogenMod”, which was the former name of LineageOS). You specifically want LineageOS instead of stock Android because it doesn't require you to sign up for a Google account (you still _can_ if you want, but stock Android _forces_ you to). As of this writing, the newest download was CM-x86 14.1 so that's what I used, but any version should work; all that matters is that it runs the Steam app.

Install LineageOS

TLDR: Standard VirtualBox install process using the recommended 2G RAM and 8G disk, and changing the audio controller to “Intel HD Audio”.

I pulled up the instructions at http://www.android-x86.org/documents/virtualboxhowto but ultimately there wasn't anything unusual about the setup. I haven't spent any real time looking at resource usage to figure out what the optimal amount of RAM and hard disk allocations would be, but here's the output from my current install (brand new except for following these steps):

android_x86_64:/ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           999M  4.4M  995M   1% /
/dev/loop1      1.3G  1.3G   66M  96% /system
/dev/block/sda1 7.7G  1.8G  5.9G  24% /data
tmpfs           999M  420K  999M   1% /dev
tmpfs           999M     0  999M   0% /mnt
none            999M     0  999M   0% /cache
tmpfs           999M     0  999M   0% /storage
/data/media     7.7G  1.8G  5.9G  24% /storage/emulated
tmpfs           999M     0  999M   0% /storage/self

android_x86_64:/ $ free -h
                total        used        free      shared     buffers
Mem:             1.9G        1.8G         59M         41M        108M
-/+ buffers/cache:           1.7G        167M
Swap:               0           0           0

Based on the above, I'd say anecdotally that their recommendation of 2048 MB of RAM is just right, but leaving the virtual disk size as 8.00 GB is a bit of a waste for our purposes; if you look at the output of mount you can see that the only real filesystems (setting aside stuff like tmpfs, configfs, etc.) are /system and /data which are ext4:

android_x86_64:/ $ df -h -t ext4
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop1      1.3G  1.3G   66M  96% /system
/dev/block/sda1 7.7G  1.8G  5.9G  24% /data

So, we're looking at a total disk usage of about 3.1 GiB (for what it's worth, this is after installing the Steam APK).

Having said that, if you're planning on using this install as a general-purpose Android environment for other things, or if you just don't want to think/worry about optimizing and you can spare the extra disk space.

Other than that, the only tweak I made based on the instructions was to change the audio controller to “Intel HD Audio”. I didn't try with the default setting; that might have worked as well. This really only matters if you care about hearing the Steam app's alert notification sounds.

Set up LineageOS and Steam

Download the Steam APK: https://support.steampowered.com/kb_article.php?ref=4440-RTUI-9218 Direct download link as of this writing: http://media.steampowered.com/apps/steam-android/steam-2.3.1.apk

Settings > Personal > Security > Unknown sources

Open the file manager and move the APK from the Downloads folder to the Documents folder (the OS won't let you install an APK from the Downloads folder); double-click the APK to install it.

Set up Mobile Authenticator

Hamburger > Steam Guard

Disposable/anonymous SMS receiving services:

Should probably pick a number in the same country as your Steam account, but who knows if it matters…

Extract data for ArchiSteamFarm

Put on your hyper-diligence hats, 'cause this is where slow and steady wins the race. If you've got a way to actually transfer files in and out of your Android environment (using adb, for example), great…but if not, get ready for some eye-bleeding re-typing. Hit Alt-F1 to go to the virtual console where a root shell is waiting for you; you can use the GUI terminal app if you like, but its font is crap for character differentiation (zero vs uppercase O, one vs lowercase l vs uppercase I, etc.).

Here's one trick to test your interpretation. Using a shell function seems silly, but the way the shell is set up in that virtual console, it's a visual disaster if you're working in a directory with a long path or typing anything long on the command line. Normally you'd take the time to fix it, but we're only gonna be doing this one thing at the command line.

# ts() { grep --color=always "${1}" /data/data/com.valvesoftware.android.steam.community/files/Steamguard-xxxxxxx; }
# ts 'test-string-goes-here'

The idea is that you can type what you think the password is, and if grep finds it in the file and it shows up red in the output, you know you've got it right.

# cat /data/data/com.valvesoftware.android.steam.community/shared_prefs/steam.uuid.xml
# for file in /data/data/com.valvesoftware.android.steam.community/files/Steamguard-*; do echo "===== ${file} ====="; cat ${file}; echo; done

The contents of steam.uuid.xml should look like this (treat this uuidKey value as you would your password):

steam.uuid.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="uuidKey">android:aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee</string>
</map>

The contents of the Steamguard-* files should look like this:

Steamguard-STEAMID
{"steamid":"00000000000000000","shared_secret":"XXXXXXXXXXXXXXXXXXXXXXXXXXX=","serial_number":"0000000000000000000","revocation_code":"XXXXXX","uri":"otpauth:\/\/totp\/Steam:XXXX?secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&issuer=Steam","server_time":"0000000000","account_name":"XXXXX","token_gid":"xxxxxxxxxxxxxxxx","identity_secret":"XXXXXXXXXXXXXXXXXXXXXXXXXXX=","secret_1":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=","status":1,"steamguard_scheme":"2"}

If you've copied it correctly, it should pass JSON validation; for instance, jq < Steamguard-STEAMID should produce output like this:

Steamguard-STEAMID
{
  "steamid": "00000000000000000",
  "shared_secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXX=",
  "serial_number": "0000000000000000000",
  "revocation_code": "XXXXXX",
  "uri": "otpauth://totp/Steam:XXXX?secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&issuer=Steam",
  "server_time": "0000000000",
  "account_name": "XXXXX",
  "token_gid": "xxxxxxxxxxxxxxxx",
  "identity_secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXX=",
  "secret_1": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=",
  "status": 1,
  "steamguard_scheme": "2"
}

https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Two-factor-authentication

steam.txt · Last modified: 2019/01/10 00:22 by dlicious
 
Except where otherwise noted, content on this wiki is licensed under the following license: GNU Free Documentation License 1.3
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Run by Debian Driven by DokuWiki