Linux Fu: Pimp Your Pipes

One of the best things about working at the Linux (or similar OS) command line is the use of pipes. In simple terms, a pipe takes the output of one command and sends it to the input of another command. You can do a lot with a pipe, but sometimes it is hard to work out the right order for a set of pipes. A common trick is to attack it incrementally. That is, do one command and get it working with the right options and inputs. Then add another command until that works. Keep adding commands and tweaking until you get the final results.

That’s fine, but [akavel] wanted better and used Go to create “up” — an interactive viewer for pipelines.

Pipe Philosophy

Pipes can do a lot. They match in with the original Unix philosophy of making each tool do one thing really well. Pipe is really good at allowing Linux commands to talk to each other. If you want to learn all about pipes, have a look at the Linux Info project’s guide. They even talk about why MSDOS pipes were not really pipes at all. (One thing that write up doesn’t touch on is the named pipe. Do a “man fifo” if you want to learn more for now and perhaps that will be the subject of a future Linux Fu.)

This program — called up — continuously runs and reruns your pipeline as you make changes to the pipe. This way, every change you make is instantly reflected in the output. Here’s the video, here’s a quick video which shows off the interactive nature of up.

Installing

The GitHub page assumes you know how to install a go program. I tried doing a build but I didn’t have a few dependencies. Turns out the easy way to do it was to run this line:

go get -u github.com/akavel/up

This put the executable in ~/go/bin — which isn’t on my path. You can, of course, copy or link it to some directory that’s on your path or add that directory to your path. You could also set an alias, for example. Or, like I did in the video, just specify it every time.

Perfect?

This seems like a neat simple tool. What could be better? Well, I was a little sad that you can’t use emacs or vi edit keys on the pipeline, at least not as far as I could tell. This is exactly the kind of thing where you want to back up into the middle and change something. You can use the arrow keys, though, so that’s something. I also wished the scrollable window had a search feature like less.

Otherwise, though, there’s not much to dislike about the little tool. If writing a pipeline is like using a C compiler, up makes it more like writing an interactive Basic program.

Shakespeare In A Zip In A RAR, Hidden In An Image On Twitter

Steganography involves hiding data in something else — for example, encoding data in a picture. [David Buchanan] used polyglot files not to hide data, but to send a large amount of data in a single Twitter post. We don’t think it quite qualifies as steganography because the image has a giant red UNZIP ME printed across it. But without it, you might not think to run a JPG image through your unzip program. If you did, though, you’d wind up with a bunch of RAR files that you could unrar and get the complete works of the Immortal Bard in a single Tweet. You can also find the source code — where else — on Twitter as another image.

What’s a polyglot file? Jpeg images have an ICC (International Color Consortium) section that defines color profiles. While Twitter strips a lot of things out of images, it doesn’t take out the ICC section. However, the ICC section can contain almost anything that fits in 64 kB up to a limit of 16 MB total.

The ZIP format is also very flexible. The pointer to the central directory is at the end of the file. Since that pointer can point anywhere, it is trivial to create a zip file with extraneous data just about anywhere in the file.

Continue reading “Shakespeare In A Zip In A RAR, Hidden In An Image On Twitter”

Bill’s 100 Year-Old Smart Home

[Bill]  purchased a house in Central Florida, and like any good hacker, he started renovating, pulling Ethernet cables, and automating things. Lucky for us, he decided to write up his experiences and lessons learned. He found a few problems along the way, like old renovations that compromised the structure of the pool house. After getting the structural problems sorted, he started installing Insteon smart switches. If automated lighting is of interest, and you don’t want to wire up relays yourself, Insteon might be the way to go.

He linked the buildings together with a wireless bridge, and then worked out how to automatically reset the PoE switch when the wireless bridge hangs, automating that recovery process. For your viewing pleasure, he even has one of the security cameras streaming 24/7 online.

His blog looks like a good resource to keep an eye on, and we wouldn’t be surprised to have more of his work show up here on Hackaday. For more home automation goodness, check out some of our previous articles on the subject.

BitBench Helps Parse Binary Data

Maybe its a capture file from a network dump. Maybe it’s from an Arduino. Maybe it is a random file off the Internet. But there will be a time when you have a file full of seemingly meaningless numbers and you need to impose order. We usually resort to a printout and highlighter, but BitBench seems like a better option. That link will take you to the code, but if you want to play with a live instance, the author has one loaded with example data.

If you look at the live example, there’s an area up top with a lot of raw hex data. The area below that shows a format string. By default that’s:

hh ID:hh b CH3d TEMP_C:12d HUM:d CRC:8h | 8h 16h 16h

From the page, here’s the description of the format:

Use “h” for hex (default 4 bits), “b” for binary (default 1 bit), “d” for decimal (default 8 bits).
Use optional bit length prefix numbers. Use “~” to invert bits, use “^” to reverse LSB/MSB. Other characters are output as-is.

So in the example string, hh is an 8-bit hex number. ID: is just a label, followed by another 8-bit number.  Then the bottom displays the data formatted as you wish and gives you a way to pad the fields with extra bits and see the results. You can also invert or shift all the bits.

Continue reading “BitBench Helps Parse Binary Data”

Suspense Courtesy Of Arduino, Mess Of Wires

The ticking clock on the bomb is a Hollywood trope that simply refuses to die. Adding to the stress levels of the bomb squad and creating great suspense for the watcher, it’s always interesting to wonder why the average bomb maker is so courteous as to supply this information to law enforcement. Regardless, if you’d like to build a dramatic prop and are mature enough to do so responsibly, [Giorgio] has the guide you need.

The build is a straightforward one, relying on an Arduino to run the show. This is hooked up to a classic 7-segment LED display, upon which the countdown is displayed. For extra flair, an MP3 player is fitted to play the Mission Impossible theme. It all adds to the tension as you wipe the sweat from your brow, trying to decide if you’re cutting the right wire.

It’s a build that would be an excellent prop for a film production or a fun game at a holiday party. However, it’s also a build that could easily be mistaken for the real thing by those less technically inclined. Even the most innocuous homebrew projects have caused problems for innocent hackers in the past. Fake bombs can be incredibly dangerous, just like the real thing, so it’s important to be careful.

We’ve seen other takes on this kind of build before, too. As always, build responsibly.

Add Nest Functionality To Your Thermostat For $5

The Nest Thermostat revolutionized the way that people control the climate in their homes. It has features more features than even the best programmable thermostats. But, all of the premium features also come at a premium price. On the other hand, for only $5, a little coding, and the realization that thermostats are glorified switches, you can easily have your own thermostat that can do everything a Nest can do.

[Mat’s] solution uses a Sonoff WiFi switch that he ties directly into the thermostat’s control wiring. That’s really the easy part, since most thermostats have a ground or common wire, a signal wire, and a power wire. The real interesting work for this build is in setting up the WiFi interface and doing the backend programming. [Mat’s] thermostat is controlled by software written in Node-RED. It can even interface with Alexa. Thanks to the open source software, it’s easy to add any features you might want.

[Mat] goes through a lot of detail on the project site on how his implementation works, as far as interfacing all of the devices and the timing and some of the coding problems he solved. If you’ve been thinking about a Nest but are turned off by the price, this is a great way to get something similar — provided you’re willing to put in a little extra work. This might also be the perfect point to fall down the home automation rabbit hole, so be careful!

Continue reading “Add Nest Functionality To Your Thermostat For $5”

Soviet-Era 7-Segment Display, Built Like A Tank

In a way, all 7-segment displays are alike; at least from the outside looking in. On the inside it can be quite another story, and that’s certainly the case with the construction of this Soviet-era 7-segment numerical display. From the outside it may look a bit sturdier than usual, but it’s still instantly recognizable for what it is. On the inside is an unusual mixture of incandescent bulbs and plastic light guides.

The black-coated blocks of plastic on the left (shown from the rear) act as light guides. The holes are for nesting the incandescent bulbs. Note the puzzle-like arrangement of the uniquely shaped pieces.

The rear of the display is a PCB with a vaguely hexagonal pattern of low-voltage incandescent bulbs, and each bulb mates to one segment of the display. The display segments themselves are solid blocks of plastic, one for each bulb, and each a separate piece. These are painted black, with the only paint-free areas being a thin segment at the top for the display, and a hole in the back for the mating bulb.

The result is that each plastic piece acts as a light guide, ensuring that a lit bulb on the PCB results in one of the seven thin segments on the face being lit as well. An interesting thing is that the black paint is the only thing preventing unwanted light from showing out the front, or leaking from one segment to another; usually some kind of baffle is used for this purpose in displays from this era.

More curiously, each plastic segment is a unique shape apparently unrelated to its function. We think this was probably done to ensure foolproof assembly; it forms a puzzle that can only fit together one way. The result is a compact and remarkably sturdy unit that shows how older and rugged tech isn’t necessarily bulky. Another example of small display tech from the Soviet era is this tiny 7-segment display of a completely different manufacture, which was usually used with an integrated bubble lens to magnify the minuscule display.