Browser Fingerprinting And Why VPNs Won’t Make You Anonymous

Amidst the glossy marketing for VPN services, it can be tempting to believe that the moment you flick on the VPN connection you can browse the internet with full privacy. Unfortunately this is quite far from the truth, as interacting with internet services like websites leaves a significant fingerprint. In a study by [RTINGS.com] this  browser fingerprinting was investigated in detail, showing just how easy it is to uniquely identify a visitor across the 83 laptops used in the study.

As summarized in the related video (also embedded below), the start of the study involved the Am I Unique? website which provides you with an overview of your browser fingerprint. With over 4.5 million fingerprints in their database as of writing, even using Edge on Windows 10 marks you as unique, which is telling.

In the study multiple VPN services were used, each of which resulted in exactly the same fingerprint hash. This is based on properties retrieved from the browser, via JavaScript and other capabilities exposed by the browser, including WebGL and HTML5 Canvas.

Continue reading “Browser Fingerprinting And Why VPNs Won’t Make You Anonymous”

Writing Type-Safe Generics In C

The fun part about a programming language like C is that although the language doesn’t directly support many features including object-oriented programming and generics, there’s nothing that’s keeping you from implementing said features in C. This extends to something like type-safe generics in C, as [Raph] demonstrates in a blog post.

After running through the various ways that generics are also being implemented using methods including basic preprocessor macros and void pointers, the demonstrated method is introduced. While not necessarily a new one, the advantage with this method is that it is type-safe. Much like C++ templates, these generics are evaluated at compile time, with the preprocessor handling both the type checking and filling in of the right template snippets.

While somewhat verbose, it can be condensed into a single header file, doesn’t rely on the void type or pointers and can be deduplicated by the linker, preventing bloat. If generics is what you are looking for in your C project, this might be a conceivable solution.

Reverse Engineering The Miele Diagnostic Interface

The infrared transceiver installed on the washing machine. (Credit: Severin)
The infrared transceiver installed on the washing machine. (Credit: Severin)

Since modern household appliances now have an MCU inside, they often have a diagnostic interface and — sometimes — more. Case in point: Miele washing machines, like the one that [Severin] recently fixed, leading to the firmware becoming unhappy and refusing to work. This fortunately turned out to be recoverable by clearing the MCU’s fault memory, but if you’re unlucky, you will have to recalibrate the machine, which requires very special and proprietary software.

Naturally, this led [Severin] down the path of investigating how exactly the Miele Diagnostic Utility (MDU) and the Program Correction (PC) interface communicate. Interestingly, the PC interface uses an infrared LED/receiver combination that’s often combined with a status LED, as indicated by a ‘PC’ symbol. This interface uses the well-known IrDA standard, but [Severin] still had to track down the serial protocol.

Continue reading “Reverse Engineering The Miele Diagnostic Interface”

Using Multiple Quadcopters To Efficiently Lift Loads Together

Much like calling over a buddy or two to help with moving a large piece of furniture and pivot it up a narrow flight of stairs, so too can quadcopters increase their carrying capacity through the power of friendship and cooperation. However, unless you want to do a lot of yelling at your mates about when to pivot and lift, you’d better make sure that your coordination is up to snuff. The same is true with quadcopters, where creating an efficient coordination algorithm for sharing a load is far from easy and usually leads to fairly slow and clumsy maneuvering.

Simplified overview of the motion planner by Sihao Sun et al.
Simplified overview of the motion planner by Sihao Sun et al.

Recently. researchers at the Technical University of Delft came up with what appears to be a quite efficient algorithm for this purpose. In the demonstration video below, it’s easy to see how the quadcopters make short work of even convoluted obstacles while keeping themselves and their mates from getting tangled.

The research by [Sihao Sun] et al. appears in Science Robotics (preprint), in which they detail their trajectory-based framework and its kinodynamic motion planner. In short, this planner considers the whole-body dynamics of the load, the cables, and the quadcopters. An onboard controller for each quadcopter is responsible for translating the higher-level commands into specific changes to its rotor speeds and orientation.

Along with tests of its robustness to various environmental factors, such as wind, the researchers experimented with how many simultaneous quadcopters could work together with their available computing capacity. The answer, so far, is nine units, though they think that the implementation can be further optimized.

Of course, sometimes you just want to watch synchronized drones.

Continue reading “Using Multiple Quadcopters To Efficiently Lift Loads Together”

Using The Pyroelectric Effect To Identify Broken MLCC Capacitors

Vintage computer hardware can fail in a variety of fascinating ways, with [Bits und Bolts] dealing with an interesting failure mode, in the form of degraded MLCC capacitors on Voodoo 2 graphics cards. These little marvels of miniaturized surface-mount technology enable the placement of ceramic capacitors with very little space required, but as they degrade over time or due to physical damage, they can cause big issues in a circuit.

In the case of the two Voodoo 2 GPUs that [Bits und Bolts] was trying to fix, the clue that something was wrong was graphical glitches, which seemed to be related to something dragging down the 5V rail. Using the standard ‘inject voltage and see what gets hot’ method, he discovered a couple of dead MLCCs and replaced them. But something was still dragging the rail down. Unfortunately, whatever it was wasn’t enough to heat up the part in question, and no sane person wants to desolder hundreds or even thousands of MLCCs on a PCB and see whether it makes a difference.

Ultimately, the pyroelectric effect was used to hunt down the culprit, saving countless hours of work. This is a property of certain naturally electrically polarized crystals, in which the material generates a voltage when heated or cooled. Materials like that used in MLCCs, for example.

Continue reading “Using The Pyroelectric Effect To Identify Broken MLCC Capacitors”

Building A Drivable, Life-Size 3D-Printed LEGO Technic Buggy

The 8845 LEGO Technic Dune Buggy original. (Credit: Matt Denton)
The 8845 LEGO Technic Dune Buggy original. (Credit: Matt Denton)

It’s part of the great circle of life that toys and scale models that provide a reflection of macro-sized objects like vehicles and buildings will eventually be scaled up again to life-sized proportions. Case in point the LEGO Technic dune buggy that [Matt Denton] recently printed at effectively human scale, while also making it actually drivable.

The basis for this project is the 8845 Dune Buggy which was released in 1981. Unlike the modern 42101 version, it’s more straightforward and also seems more amenable to actually sitting in despite featuring more pieces for a total of 174 pieces.  Naturally, [Matt] didn’t simply go for a naïve build of the 8845 buggy, but made a few changes. First is the scale that’s 10.42 times larger than the LEGO original, based around the use of 50 mm bearings. The model was also modified to be a single-seater, with the steering wheel placed in the center.

With some structural and ergonomic tweaks in place, the resulting CAD model was printed out mostly in PLA with a 1 mm nozzle and 10% infill using a belt FDM printer to help with the sheer size of the parts. After that it was mostly a LEGO kit assembly on a ludicrous scale that resembles a cross between building a LEGO kit and assembling Ikea flatpack furniture.

At merely the cost of most of his sanity, [Matt] finally got the whole kit together, still leaving a few suspension issues to resolve, as it turns out that so much plastic actually weighs a lot, at 102 kg. With that and other issues resolved, the final touch was to add an electric motor to the whole kit using a belt-driven system on the rear axle and bringing every LEGO minifig’s dreams to life.

After a few test drives, some issues did pop up, including durability concerns and not a lot of performance, but overall it performs much better than you’d expect from a kid’s toy.

Continue reading “Building A Drivable, Life-Size 3D-Printed LEGO Technic Buggy”

Android Developer Verification Starts As Google Partially Retreats On Measures

In a recent blog post Google announced that the early access phase of its Android Developer Verification program has commenced, as previously announced. In addition to this new announcement Google also claims to be taking note of the feedback it has been receiving, in particular pertaining to non-commercial developers for whom these new measures are incredibly inconvenient. Yet most notable is the ’empowering experienced users’ section, where Google admits that to developers and ‘power users’ the intensive handholding isn’t required and it’ll develop an ‘advanced flow’ where unverified apps can still be installed without jumping through (adb) hoops. Continue reading “Android Developer Verification Starts As Google Partially Retreats On Measures”