Exploring The Anatomy Of A Linux Kernel Exploit

A lot of talk and discussion happens anytime a hardware manufacturer releases a new line of faster, more powerful, or more efficient computers. It’s easy to see better and better specifications and assume that’s where all the progress is made. But without improved software and algorithms, often the full potential of the hardware can’t be realized. That’s the reason for the creation of io_uring, an improved system call interface in the Linux kernel. It’s also where [chompie] went to look for exploits.

The reason for looking here, in a part of the kernel [chompie] had only recently learned about, was twofold. First, because it’s a place where user space applications interact with the kernel, and second because it’s relatively new and that means more opportunities to find bugs. The exploit involves taking advantage of a complicated asynchronous buffer system, specifically at a location where the code confuses a memory location being used by the kernel with one which is supposed to be used for user space.

To actually get this to work as an exploit, though, a much more involved process is needed to make sure the manipulation of these memory addresses results in something actually useful, but it is eventually used to gain local privilege escalation. More about it can be found in this bug report as well. Thanks to the fact that Linux is open-source, this bug can quickly be fixed and the patch rolled out to prevent malicious attackers from exploiting it. Open-source software has plenty of other benefits besides being inherently more secure, though.

Retro-Inspired Computer Case Hosts Mechanical Keyboard

During the time in the 1980s when the personal computer was gaining steam as a household fixture, plenty of models shipped with the keyboard built in to the machine itself. This helped reduce costs, lower the physical footprint of the device, and arguably improved aesthetics. But as technology progressed, this type of design fell by the wayside as computers became more modular and configurable. That’s not to say there aren’t any benefits to building a computer like this, though. [jit] is here to show off this Amiga-inspired computer with its own modern built-in mechanical keyboard.

Like the Raspberry Pi 400 which is built into its own case, modern computers like this are extremely portable, relatively simple, and space-efficient. But [jit] did not like the uninspired design of the Pi so he was looking to make some improvements. Starting with the keyboard, it boasts a 60% size board with mechanical keys which are backlit by LEDs. Inside the machine is a Odroid XU4 which has a little bit more power (and is often easier to find) than a comparable Raspberry Pi. The case is 3D printed and includes ventilation and support for the addition of various cooling fans, I/O ports, status LEDs, and switches for the computer inside.

Additionally, some modification of the Odroid itself was needed in order to move the various switches to the case, and the build also includes a somewhat customized power supply internally as well. It’s a well-rounded build that captures the spirit of the old computer cases, but takes advantage of a lot of modern technology at the same time. If you want to go all-out with a build like this, though, take a look at this retro-inspired case (with keyboard included) that manages to get most of a Framework laptop inside.

Continue reading “Retro-Inspired Computer Case Hosts Mechanical Keyboard”

FPGA Plays Tic-Tac-Toe

As computers get more and more powerful and artificial intelligence algorithms improve, few games remain where the best humans can reliably beat their electronic counterparts. In chess this barrier was passed in 2005 with the last human win against a computer, and recently humans lost to computers at go. Simpler games like tic-tac-toe have been solved for all possible positions for a while now, so even a simple computer will always win or tie the game. But that doesn’t mean that there’s nothing left to learn about these games as [Hayden] demonstrates with this tic-tac-toe game built entirely on an FPGA.

[Hayden] is making this as part of a college course on digital design, so it really starts at first principles for working with FPGAs. It’s programmed in Verilog on a Basys 3 board, which also hosts the switches used as the game’s input and handles the VGA video output as well. The build uses state machines to keep track of the moves played on each of the squares, and another state machine to keep track of whether or not the current game has been won. If so, it highlights the winning moves in red, and stops taking further inputs until it is reset. Some more logic ties everything together along with a customized VGA driver to produce the entire gaming experience.

A game like tic-tac-toe is a great way to master the fundamentals of a system like this before moving on to more complex programs, especially on an FPGA platform that might handle a lot of the things we take for granted on more traditional computing systems, such as the video output. If you’re interested in taking more of a deep dive into the world of FPGAs, we published a primer about them a few years ago that will get you started.

Continue reading “FPGA Plays Tic-Tac-Toe”

A Chess AI In Only 4K Of Memory

The first computer to ever beat a reigning chess world champion didn’t do so until 1996 when a supercomputer built by IBM beat Garry Kasparov. But anyone who wasn’t a chess Grandmaster could have been getting beaten by chess programs as early as 1979 when Atari released one of the first ever commercially-available chess video games for the Atari 2600. The game was called Video Chess and despite some quirky gameplay it is quite impressive that it was able to run on the limited Atari hardware at all as [Oscar] demonstrates.

The first steps of getting under the hood of this program involved looking into the mapping of the pieces and the board positions in memory. After analyzing some more of the gameplay, [Oscar] discovered that the game does not use trees and nodes to make decisions, likely due to the memory limitations, but rather simulates the entire game and then analyzes it to determine the next step. When the game detects that there are not many pieces left on the board it can actually increase the amount of analysis it does in order to corner the opposing king, and has some unique algorithms in place to handle things like castling, finishing the game, and determining valid movements.

Originally it was thought that this engine couldn’t fit in the 4K of ROM or work within the 128 bytes of system memory, and that it was optimized for the system after first developing a game with some expanded capabilities. The game also has a reputation for making illegal moves in the higher difficulty settings although [Oscar] couldn’t reproduce these bugs. He also didn’t get into any of the tricks the game employed just to display all of the pieces on the screen. The AI in the Atari game was a feat for its time, but in the modern world the Stockfish open-source chess engine allows for a much more expanded gameplay experience.

Easy Modifications For Inexpensive Radios

Over the past decade or so, amateur radio operators have benefited from an influx of inexpensive radios based around a much simpler design than what was typically commercially available, bringing the price of handheld dual-band or GMRS radios to around $20. This makes the hobby much more accessible, but they have generated some controversy as they tend to not perform as well and can generate spurious emissions and other RF interference that a higher quality radio might not create. But one major benefit besides cost is that they’re great for tinkering around, as their simplified design is excellent for modifying. This experimental firmware upgrade changes a lot about this Quansheng model.

With the obligatory warning out of the way that modifying a radio may violate various laws or regulations of some localities, it looks like this modified firmware really expands the capabilities of the radio. The chip that is the basis of the radio, the BK4819, has a frequency range of 18-660 MHz and 840-1300 MHz but not all of these frequencies will be allowed with a standard firmware in order to comply with various regulations. However, there’s typically no technical reason that a radio can’t operate on any arbitrary frequency within this range, so opening up the firmware can add a lot of functionality to a radio that might not otherwise be capable.

Some of the other capabilities this modified firmware opens up is the ability to receive in various other modes, such as FM and AM within the range of allowable frequencies. To take a more deep dive on what this firmware allows be sure to check out the original GitHub project page as well, and if you’re curious as to why these inexpensive radios often run afoul of radio purists and regulators alike, take a look at some of the problems others have had in Europe.

Forgotten Chemical Photography

Much to the chagrin of Eastman Kodak, the world has moved on from chemical photography into the realm of digital, thanks to the ease of use and high quality of modern digital cameras. There are a few photographers here and there still using darkrooms and various chemical processes to develop film, and the most common of these use some type of chemistry based on silver to transfer images to paper. There are plenty of alternatives to silver, though, each with their unique style and benefits, like this rarely-used process that develops film using platinum.

This process, notable for its wide tonal range, delicate highlights, and rich blacks, produces only black and white photographs. But unlike its silver analog, it actually embeds the image into the paper itself rather than holding the image above the paper. This means that photographs developed in this manner are much more resilient and can last for much longer. There are some downsides to this method though, namely that it requires a large format camera and the negatives can’t be modified to produce various sized images in the same ways that other methods allow for. Still, the results of the method are striking for anyone who has seen one of these images in person.

As to why this method isn’t more common, [Matt Locke] describes a somewhat complicated history involving the use of platinum to create commercial fertilizers, which is an identical process to that of the creation of explosives, which were needed in great numbers at the same time this photographic method was gaining in popularity. While the amount of research and development that goes into creating weapons arguably generates some ancillary benefit for society, the effects of war can also serve to divert resources away from things like this.

Is This The World’s Largest Dot Matrix Printer?

[RyderCalmDown] was watching a road painting vehicle lay down fresh stripes on the road one day and started thinking about the mechanism that lets it paint stripes in such a precise way. Effectively the system that paints the interspersed lines acts as a dot matrix printer that can only print at a single frequency. With enough of these systems on the same vehicle, and a little bit more fine control of when the solenoids activate and deactivate, [RyderCalmDown] decided to build this device on the back of his truck which can paint words on a roadway as he drives by. (Video, embedded below.)

Of course, he’s not using actual paint for this one; that might be prohibitively expensive and likely violate a few laws. Instead he’s using a water-based system which only leaves temporary lettering on the pavement. To accomplish this he’s rigged up a series of solenoids attached to a hitch-mounted cargo rack. A pump delivers water to each of the solenoids, and a series of relays wired to a Raspberry Pi controls the precise timing needed to make sure the device can print readable letters in much the same way a dot matrix printer works. There’s an algorithm running that converts the inputted text to the pattern needed for the dot matrix, and after a little bit of troubleshooting it’s ready for print.

Even though the printer works fairly well, [RyderCalmDown] had a problem thinking of things to write out on the roadways using this system, but it’s an impressive build based around a unique idea nonetheless. Dot matrix printers, despite being mostly obsolete, have a somewhat vintage aesthetic that plenty of people still find desirable and recreate them in plenty of other ways as well, like this 3D printer that was modified to produce dot matrix artwork.

Continue reading “Is This The World’s Largest Dot Matrix Printer?”