Description
Translate the provided list of ASCII byte values into a readable string. No tricks here; it's just a direct conversion from hex to text.
Setup
Copy the sequence of 0x-prefixed values from the prompt.
Either use CyberChef → From Hex or echo the bytes into xxd -p -r to decode locally.
echo "0x70 0x69 0x63 0x6f 0x43 0x54 0x46 0x7b 0x34 0x35 0x63 0x31 0x31 0x5f 0x6e 0x30 0x5f 0x71 0x75 0x33 0x35 0x37 0x31 0x30 0x6e 0x35 0x5f 0x31 0x6c 0x6c 0x5f 0x74 0x33 0x31 0x31 0x5f 0x79 0x33 0x5f 0x6e 0x30 0x5f 0x6c 0x31 0x33 0x35 0x5f 0x34 0x34 0x35 0x64 0x34 0x31 0x38 0x30 0x7d" | xxd -p -rSolution
Want to try it yourself first?
The guided walkthrough reveals hints one step at a time.
Step 1
Pipe into xxdObservationI noticed the challenge provided a sequence of 0x-prefixed hex values, each corresponding to one ASCII character, which suggested using xxd -p -r to reverse plain hex bytes back into readable text in a single pipeline.xxd -p -r treats the input as plain hex bytes (-p) and reverses them to ASCII (-r). The decoded output is the flag.bashecho "0x70 0x69 0x63 0x6f 0x43 0x54 0x46 0x7b 0x34 0x35 0x63 0x31 0x31 0x5f 0x6e 0x30 0x5f 0x71 0x75 0x33 0x35 0x37 0x31 0x30 0x6e 0x35 0x5f 0x31 0x6c 0x6c 0x5f 0x74 0x33 0x31 0x31 0x5f 0x79 0x33 0x5f 0x6e 0x30 0x5f 0x6c 0x31 0x33 0x35 0x5f 0x34 0x34 0x35 0x64 0x34 0x31 0x38 0x30 0x7d" | xxd -p -rExpected output
picoCTF{45c11_n0_qu35710n5_1ll_t311_y3_n0_l135_...}What didn't work first
Tried: Use Python's bytes.fromhex() with the raw 0x-prefixed values: bytes.fromhex('0x70 0x69 0x63'.replace(' ', ''))
Python's bytes.fromhex() is strict and only accepts pairs of bare hex digits with no '0x' prefix and no spaces. Passing a string that includes '0x' or extra spaces raises a ValueError. Use a loop with int(v, 16).to_bytes(1, 'big') or strip the prefix first: bytes.fromhex(''.join(v[2:] for v in values)).
Tried: Decode the values as decimal ASCII codes instead of hex - treating 0x70 as the number 70 decimal
Interpreting 0x70 as decimal 70 gives the character 'F' instead of 'p', so every character in the output shifts to a wrong letter and the string never forms a recognizable flag. The 0x prefix is the explicit signal that each value is hexadecimal; decimal 112 and hex 0x70 both encode 'p', but decimal 70 encodes something else entirely.
Learn more
ASCII (American Standard Code for Information Interchange) is a character encoding standard that assigns a unique 7-bit integer to each printable character and control code. For example, the letter 'p' maps to decimal 112, which is
0x70in hexadecimal. Every character in the flag corresponds exactly to one of these values.The xxd tool is the standard Unix hex-dump utility. Running it with
-r -p(reverse, plain) reads whitespace-separated hex values and writes their byte equivalents - essentially undoing the hex encoding. You could accomplish the same thing in Python withbytes.fromhex(), in CyberChef with the "From Hex" recipe, or even manually using an ASCII table.Understanding the relationship between characters and their numeric representations is foundational to binary exploitation, cryptography, and network protocol analysis. Any time data is serialized or transmitted, it ultimately moves as numbers, and being able to convert fluently between representations (hex, decimal, binary, ASCII) is an essential skill for any security researcher.
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.
Alternate Solution
Use the Binary to Hex tool on this site to look up hex↔ASCII mappings interactively - paste the hex values and see the corresponding characters instantly without needing xxd or Python.
Flag
Reveal flag
picoCTF{45c11_n0_qu35710n5_1ll_t311_y3_n0_l135_445d...}
Any hex → ASCII conversion yields the same output; xxd is just a quick CLI option.