Sometimes (expecially during CTFs) I need to display the result of a REALLY specific HTTP request that I made with cURL into Chromium.
The naive and boring way of doing this would be something like this:
curl -s https://avalz.it > /tmp/page.html
chromium /tmp/page.html
rm /tmp/page.html
For some reason, I got stubborn on not creating that temporary file, which led to the mess you can see below.
TL;DR
curl -s URL | base64 -w 0 | xargs -i chromium "data:text/html;base64,{}"
Breakdown
The biggest issue is that chromium can’t open files from stdin, but only from URLs passed as argument. The trick here consists in passing a url with the “data:” schema, appending the actual content it should display.
curl -s URL
: makes the actual request. The-s
switch will not display the annoying “elapsed time” stuff when output is redirected.base64 -w 0
: encodes stdin in Base64 and passes the result to stdout.-w 0
disables line wrapping after 76 cols, which stopsbase64
from inserting newline characters.xargs -i "something {}"
: it takes what is passed in stdin and places it where {} is.