Today we'll cover how to use the dbus interprocess communication (IPC) mechanism to integrate the Clementine music player into i3status. We'll write a small script in Python that determines Clementine's state using the dbus library, and then appends that state to the i3status bar. This tutorial is really a corollary to the Linux Environment Setup 0x05: Integrating mpd into i3status using i3bar post we wrote a few months back, and will make use of some of the same code. Save swapping mpd for Clementine, the final result will be nearly identical:
Operational security rule 1 - and probably 2, 3 and then some - is to say nothing. We divulge enough information as it is and there's no need to make it any easier for a would-be attacker or opportunist of fortune. For a variety of reasons, many of which are not directly a result of security-mindedness, we resist providing information to strangers. This is good. Neither should your computer. To that end, it's a good idea to have a screensaver/locker!
Last time we visited this topic, we made use of a large buffer to place our shellcode in the process' memory. This time, we don't have such a large buffer, and so won't be able to simply inject the code we want to execute via the program's input. Instead, we'll place our shellcode in an environment variable.
When working on the command line, it's often useful to be able to take the output of one command, and use it as the input to another. All command line work is really data manipulation (what work isn't?) and commands and programs are the means of manipulation. A particularly quick and practical way to control those means are pipelines! Geertz, if he'd been feeling particularly digital, might well have commented that we are creatures bobbing in floods of data we ourselves have produced.
One very common command line activity is process control. Linux, and other *nix operating systems come with a host of programs designed to assist with this, and when combined with features of Bash, and other Bash-like shells, the command line provides a comprehensive process control interface. In this tutorial, we'll cover some of the basics of process control from the command line. We'll use signals to interact with processes, and cover how to run processes in both the foreground, and background of a single terminal.