Challenge LAB-0003

Same artifact, different Android versions

Spot the three kinds of layout change (encoding, place, shape), tell an empty read from a missing feature, and use the habits that stop a reader from hiding the difference.

Practitioner 30 to 45 minutesAndroid8 questions, 125 pointsAlways open, self-paced

The task

A reader built for one Android layout can return an empty table on another, with no error. Empty looks the same as a feature the person never used. You will work through the article's version switcher and its counts.

All challenge data is synthetic or comes from the Lab's published articles. No account is needed, nothing you type here leaves your browser except each answer you check, and the optional form if you send it.

What you need

Tools (all free)

  • A plain text editor
  • Python (to read the first bytes of a file)
  • A SQLite browser (optional, for the databases the article describes)

Any tool that reads text will do. You do not need the Lab's own software or an account.

Questions

Each answer is checked when you press Check answer, and you see the result straight away. A wrong answer costs nothing, and you may try again. A hint lowers the points you can earn for that question: 2, 3 and 5 points for hints 1, 2 and 3, and a correct answer always earns at least 1 point. Checking needs JavaScript; reading does not.

  1. Question 1 of 815 points

    In the article's sample, how many of the 58 settings files were Android Binary XML (ABX)?

    Need a hint?

    Three hints, in order. Each one lowers the points you can earn for this question.

    Hint 1 costs 2 points

    See the section When the right file gives the wrong answer.

    Hint 2 costs 3 points

    The standard XML parser rejected all of them.

    Hint 3 costs 5 points

    Five were plain XML, all from the one Android 10 phone.

  2. Question 2 of 815 points

    An ABX file starts with four bytes. Write them in hexadecimal, separated by spaces.

    Need a hint?

    Three hints, in order. Each one lowers the points you can earn for this question.

    Hint 1 costs 2 points

    See Same path, different encoding.

    Hint 2 costs 3 points

    The bytes spell three letters and a zero byte.

    Hint 3 costs 5 points

    The letters are A, B and X.

  3. Question 3 of 815 points

    From which Android version did the sample's settings files become ABX?

    Need a hint?

    Three hints, in order. Each one lowers the points you can earn for this question.

    Hint 1 costs 2 points

    See Figure 2.

    Hint 2 costs 3 points

    The one Android 10 phone used plain XML. There was no Android 11 phone in the sample.

    Hint 3 costs 5 points

    It is the first version after the gap.

  4. Question 4 of 815 points

    On how many of the 14 full file system extractions was the older credential-type key present in the lock settings store?

    Need a hint?

    Three hints, in order. Each one lowers the points you can earn for this question.

    Hint 1 costs 2 points

    See Same file, different place, the paragraph on names that move.

    Hint 2 costs 3 points

    It was on Android 10 and 13 images only.

    Hint 3 costs 5 points

    The key sp-handle was on all 14. This question asks about the older key.

  5. Question 5 of 815 points

    A reader looks for runtime-permissions.xml at its Android 10 path on an Android 14 extraction. What does it return?

    Need a hint?

    Three hints, in order. Each one lowers the points you can earn for this question.

    Hint 1 costs 2 points

    See Figure 3.

    Hint 2 costs 3 points

    The file moved to an apexdata folder from Android 12.

    Hint 3 costs 5 points

    The reader finds no file, and no error is raised.

  6. Question 6 of 820 points

    Select the habits the article recommends for a reader.

    Select all that apply.

    Need a hint?

    Three hints, in order. Each one lowers the points you can earn for this question.

    Hint 1 costs 2 points

    The section Reading by version lists six habits. Four of the options come from it.

    Hint 2 costs 3 points

    Two options are the very behaviours the article warns against.

    Hint 3 costs 5 points

    Recommended: format from the first bytes, names and paths per release, open a database with its log, match a time to a window.

  7. Question 7 of 815 points

    What percentage of the App Ops XML last-access times equalled a database time? Give the percentage as printed in the article.

    Need a hint?

    Three hints, in order. Each one lowers the points you can earn for this question.

    Hint 1 costs 2 points

    See Same record, different shape.

    Hint 2 costs 3 points

    The comparison was 1,717 of 3,180.

    Hint 3 costs 5 points

    Divide, then round to one decimal place. The article prints 54.0.

  8. Question 8 of 815 points

    On the four images in the media database example, what was the largest number of rows the fixed reader returned?

    Need a hint?

    Three hints, in order. Each one lowers the points you can earn for this question.

    Hint 1 costs 2 points

    The last paragraph of Same record, different shape has the numbers.

    Hint 2 costs 3 points

    The unfixed reader returned 0, 0, 0 and 3.

    Hint 3 costs 5 points

    The fixed reader returned four numbers; take the largest.

You have finished: what you should have learned

  • A layout mismatch comes in three kinds: encoding (same path, new bytes), place (the file moved) and shape (the same record means something different).
  • Report four states, not two: a value was read; the key is absent from a file that was read; the file is absent; the file could not be read. Add a fifth: this version was not tested.
  • No Android 11 and no Android 15 full file system were in the sample. Say so; it is part of the result.
  • A database row can be an aggregate. Match a time to a window, not to an equal value.

Completion note

Typed here only. It appears on the printed note and is not saved or sent anywhere.