Skip to main content

Mr-Worldwide picoCTF 2019 Solution

Decode a message where each piece of data maps to a location, and the locations spell out the flag.

Published: April 2, 2026Updated: August 13, 2026

Description

A musician who calls himself Mr. Worldwide has hidden a flag using GPS coordinates. Each coordinate maps to a city - the first letters spell the flag.

Download the file containing the coordinates.

bash
wget <url>/message.txt

Solution

Want to try it yourself first?

The guided walkthrough reveals hints one step at a time.

Walk me through it
  1. Step 1Read the coordinate list
    Observation
    The description mentions coordinates and the setup downloads message.txt. The first move is simply opening the file to see how many coordinate pairs there are and what format they use.
    Open the file. It contains a list of GPS coordinates (latitude, longitude pairs). Each coordinate points to a specific location on Earth.
    bash
    cat message.txt
    What didn't work first

    Tried: Treat the raw coordinate numbers as an encoding directly (e.g. convert decimal degrees to ASCII).

    Latitude and longitude values like 35.6895 and 139.6917 are floating-point degree values, not character codes. Treating them as ASCII or base-10 integers produces garbage output. The coordinates are inputs to a reverse-geocoding lookup, not a numeric cipher.

    Tried: Search for a pattern in the decimal parts of each coordinate, assuming the flag is hidden in the fractional digits.

    The fractional parts of the coordinates are real GPS precision values, not encoded data. There is no hidden pattern in the decimals themselves. The flag encoding operates entirely at the level of city names derived from reverse geocoding.

    Learn more

    GPS coordinates use the WGS84 datum. Latitude ranges from -90 (South Pole) to +90 (North Pole). Longitude ranges from -180 to +180, with 0 at the Prime Meridian through Greenwich, England. Positive longitude is East, negative is West.

  2. Step 2Geocode each coordinate to a city name
    Observation
    The title references Mr. Worldwide, and the description says the first letters of the city names spell the flag. So each coordinate needs reverse-geocoding to recover the city it belongs to.
    For each coordinate pair, use Google Maps (paste coordinates into the search bar) or a geocoding API to find the nearest city. Note the first letter of each city name.
    python
    python3 << 'EOF'
    # Using geopy for reverse geocoding
    from geopy.geocoders import Nominatim
    geolocator = Nominatim(user_agent="picoctf")
    
    coords = [
        # (lat, lon),
        # paste coordinates here
    ]
    
    for lat, lon in coords:
        location = geolocator.reverse(f"{lat}, {lon}")
        print(location.address)
    EOF
    What didn't work first

    Tried: Use the street or neighborhood name from the geocoder result instead of the city name.

    Nominatim returns a full address string that may start with a street, suburb, or district, so the first letter of that string is the wrong character. The challenge wants the major city name, so read the city or town field from the parsed address components, not the raw string.

    Tried: Run the geopy script against only the first coordinate to test it, then assume the rest will work the same way.

    Nominatim rate-limits requests and returns slightly different shapes depending on the coordinate. A point in a rural area may resolve to a country or administrative region rather than a city. Check each coordinate and verify the city name individually before taking its first letter.

    Learn more

    Reverse geocoding converts coordinates to a human-readable address. The Nominatim service (powered by OpenStreetMap) is free for low-volume use. Google Maps Geocoding API is more accurate but requires an API key.

    For this challenge, the important part is the city name, not the full address. Focus on the major city closest to each coordinate.

  3. Step 3Take first letters to spell the flag
    Observation
    The description states outright that the first letters of the city names spell the flag. That acrostic step is the last thing needed to assemble the picoCTF{...} answer.
    Collect the first letter of each city name in order. These letters form the flag content. Wrap the result in picoCTF{...}.
    Learn more

    This encoding technique is called an acrostic - using the first letter of each word or item to spell a hidden message. It has been used in literature, art, and espionage for centuries.

Interactive tools
  • Base64 & Base32 DecoderDecode Base64 and Base32 strings with auto-detection. Multi-layer mode unwraps nested encodings automatically.
  • Recipe ChainStack decoders into a pipeline: Base64, hex, ROT, XOR, Morse, URL, Atbash, Vigenère, and more. Magic mode auto-discovers the chain. Bookmark the URL to save it.
  • Number Base ConverterConvert numbers between binary, octal, decimal, and hexadecimal instantly. Enter any value and see all four bases update in real time.

Flag

Reveal flag

picoCTF{KODIAK_ALASKA}

Geocode each coordinate to a city and take the first letter of each city name - they spell out the flag.

Key takeaway

Acrostic encoding hides a message in the initial letters of a sequence, whether words, lines, or in this case place names. It has run through poetry, propaganda, and steganography for centuries because it is undetectable unless you know to look. In security work the same first-letter and positional encodings turn up in challenges built on song lyrics, book ciphers, and structured data like DNS records or certificate fields. The real skill being tested is noticing that a list of apparently unrelated items may carry a second meaning in its structure.

Related reading

Useful tools for Cryptography

Where to go next