Run adb shell getprop ro.build.fingerprint on any modern Android and you get
back something like this:
samsung/dm3qxxx/dm3q:14/UP1A.231005.007/S911BXXS5BXG2:user/release-keys
Set at the factory, baked into the system partition, read by everything from your bank app to the Play Store to whichever ad network is bidding on the current impression. Nearly every "is this phone real?" check starts by parsing this string.
The 6-field structure
Per AOSP, it's always:
$<brand>/<product>/<device>:<release>/<id>/<incremental>:<type>/<tags>
Six fields separated by /, with a stray : stuffed into fields 3
and 5. Each is set independently and encodes a different thing.
Field 1: brand
Resolves from ro.product.brand. For a real Samsung Galaxy, it's always
lowercase samsung. Capitalization mismatches — Samsung,
SAMSUNG, or the classic SAMUNG — are the single most reliable
counterfeit tell. Look up the expected brand string for any verified device in our
brand database.
Field 2: product
Internal product codename. In the example, dm3qxxx is Samsung's codename for
the Galaxy S23 Ultra international variant. Each SKU gets its own: dm1qxxx
for S23, dm2qxxx for S23+, dm3qxxx for S23 Ultra. Region matters
too — dm3qins is the India build.
Hard to fake, because the codename has to line up with the kernel's device-tree binding. Flash an S23 ROM onto an S22 board and this field will fight the actual hardware during early boot until something crashes.
Field 3: device:release
Two fields joined by a colon. dm3q:14 means device codename dm3q
on Android 14. The device codename is usually a shortened form of the product
code — it identifies the hardware platform the kernel was built for. The release is the
user-facing version number.
Mismatches here are diagnostic. Device codename generic = emulator. Release
version that never shipped officially on this hardware = custom ROM.
Field 4: id
The internal build ID from the OEM's build system. Samsung uses UP1A.231005.007 —
UP is Android 14's platform codename ("Upside-down cake"), 1A is the platform release, 231005
is the build date (2023-10-05), 007 is the incremental. Pixel does the same shape with
different letters: AP2A.240605.005 for Android 14 on Pixel.
This is the single best field for "is this firmware current?" — diff it against the latest official release for the model.
Field 5: incremental:type
Two fields joined by a colon. S911BXXS5BXG2:user unpacks as:
S911BXXS5BXG2— Samsung's incremental.S911Bis the model prefix,XXis region,S5is firmware revision,BXG2encodes the build date.user— build type. On any production phone this isuser. Seeuserdebugorengand you're looking at a dev device or a custom ROM.
Field 6: tags
Almost always release-keys on a production device. The other value you'll
see is test-keys, meaning the build was signed with AOSP test keys instead of
the OEM's release keys.
This is the most useful single field for spotting custom ROMs. Ends in
test-keys → the phone is rooted, on a custom ROM, or both. A lot of banking
apps flat-out refuse to launch against it.
What's safe to parse, what isn't
Build.FINGERPRINT lives in the system partition, read by the framework, exposed read-only to apps. Mostly. Magisk's DenyList hooks the property read and can serve one fingerprint to Settings and a different one to your bank app. That's exactly why banks stopped trusting the string on its own and started stacking Play Integrity, StrongBox attestation, and hardware-backed key attestation on top.
For your own purposes — checking a second-hand phone before paying — Build.FINGERPRINT is still one of the highest-signal fields you have. A seller can't pre-hook it, and structural anomalies stand out once you know the shape.
The 30-second sanity check
Pull the string and walk through:
- Brand lowercase? ✓
- Product codename matches the claimed model — check the device database.
- Device codename plausible for the hardware. ✓
- Release version actually shipped on this model. ✓
- Build ID matches the OEM's known format. ✓
- Build type is
user, notuserdebug. ✓ - Tags is
release-keys, nottest-keys. ✓
Seven boxes. Anything fails and the phone's been modified — you want to know how before you hand over the money.