RSSAmplifier

Blog

rink.nu

Recent content on rink.nu

rink.nuRSS feed ↗14 posts

Latest posts

On my migration from GitHub to Codeberg

I think my first introduction to Codeberg was about 1.5 years ago, when it was mentioned by a CCC talk. If I remember correctly, the presenter was mainly concerned with Microsoft ’s acquisiting and involvement of GitHub . Having used GitHub since 2015, before it became part of Microsoft, I did not see an immediate need to act: it suited my purposes just fine and I did not feel that strongly…

First steps in Zig (0.15.2)

Introduction A few weeks ago, I was replaying an old ‘90-ies adventure game and… I got stuck. I decided to look up online hints, and remembered the https://www.uhs-hints.com website (back in the early 2000s, this used to be a very relevant resource). Unfortunately, the game I was playing didn’t have the hints available online.

Installing NetWare 3.12 in QEMU

Why? This is a let’s turn my notes into a post writing. I like to pick up NetWare-related reverse engineering endeavors every now and then, and most of these involve having a NetWare 3.12 server available somewhere. In current day and age, that means a VM or emulator. I like to use QEMU, so I’ll be using that.

[Contributed] How to: get root on a Foscam FI9831W (2017)

Note: this is a contributed post by Jens Heine binbash@gmx.net – please reach out to him if there any questions or comments! And a big “thank you” from me (Rink) for your contribution! This firmware modification is mainly inspired from another HOWTO from Rink’s blog where he hacked a FI9853EP . First get access to a TTY console on the mainboard of the cam. There are 4 contacts in…

Implementing a std::function<>-like wrapper in C&#43;&#43;, part 3: using a static storage buffer

Previously, we&rsquo;ve made our version of std::move_only_function<> generic so that it can be used to store any function signature, regardless of the number of parameters or return type. The implementation we&rsquo;ve ended up with is the following: cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 template < typename…

Implementing a std::function<>-like wrapper in C&#43;&#43;, part 2: generalizing the return type and arguments

Introduction Previously, we&rsquo;ve seen a way to implement our own version of std::move_only_function<> . The implementation we ended up with is as follows:

Implementing a std::function<>-like wrapper in C&#43;&#43;, part 1: type erasing

Introduction Recently, a chat with a friend peeked my interested: how would you store an arbitrary function and call it, similar to std::function<> . It turned out a plain C function pointer would suffice for this specific use-case, but I got triggered: let&rsquo;s implement a generic, move-only function wrapper in C++!

Hacking into a Foscam FI9853EP camera, part 2

In my last post , I examined how to get U-Boot access and obtain the flash data from a Foscam FI9853EP camera. Whereas this data is very useful for offline analysis, I wanted to get a root shell so I can poke around in the system and run commands manually. Extracting the root filesystem Last time, we extracted a file called kernel.mtd , which contains an U-Boot uImage with the kernel itself. There…

Hacking into a Foscam FI9853EP camera, part 1

I have a Foscam FI9853EP, which was introduced in 2014 and has long since been obsoleted. One of the things that stands out, is that all firmware is encrypted: sh 1 2 $ file FosIPC_B_patch_ver2.x.2.31_3_20190718_150013.bin FosIPC_B_patch_ver2.x.2.31_3_20190718_150013.bin: openssl enc ' d data with salted password 1 2 $ file FosIPC_B_patch_ver2.x.2.31_3_20190718_150013.bin…

Behind the magic of magic_enum

Recently, a coworker pointed me towards a C++17 library to convert enumeration values to strings and vice versa. The library called (magic_enum)[https://github.com/Neargye/magic_enum] and it indeed feels like magic. I was immediately curious: how did they pull this off? The code I am presenting here can be seen as a massively down-scaled version of magic_enum : the approach taken is exactly the…

On NetWare 3.x password hashing

Way back when, I was involved in trying to obtain passwords for a Novell NetWare 3.12 server. I won&rsquo;t go into details here, suffice to say that the topic has always interested me – sufficiently to return to it 30-ish years later and write down an algorithm description. The research presented here is based on my independent disassembly of the embedded server.nlm in NetWare 3.12. I have…

Reverse Engineering the Netware 386 Filesystem

I decided to take a look into the NetWare 386 filesystem, which was used in NetWare 3.x and 4.x and perhaps later versions as well. This post serves to give a high-level background on the design and layout. Tools to analyze and extract content from such a filesystem can be found at https://github.com/zhmu/nwfs386 If you have any corrections, additional information or questions, please reach out to…

Creating a binutils/gcc toolchain for your OS

I wanted to update the binutils/gcc-based compiler toolchain of my Dogfood operating system. This entry describes some concepts and the changes that needed to be made in order to add this target to binutils 2.39 and gcc 12.2.0. Configuration targets Most of the GNU autotools work with configuration targets, which have the form <cpu>-<vendor>-<os> , where <os> can be <system> or <kernel>-<system> .…

(untitled)

Hello world! Hi, I&rsquo;m Rink and I like to tinker with technology in my spare time. Feel free to check out my Codeberg repositories where I publish most of my work these days.