Aiding reproducibility in builds with MS Visual C++

<AdditionalOptions>%(AdditionalOptions) /d1trimfile:"$(SolutionDir)\"</AdditionalOptions>

In your .vcxproj file or a Directory.Build.props when passed to the compiler (cl.exe, ClCompile) this should trim the leading path used for __FILE__. The backslash is actually required here, because SolutionDir ends in a backslash itself, but we do not want to escape the double closing quote, i.e. the backslash in SolutionDir is essentially escaping the backslash we give, because otherwise the single backslash in the expanded version of the command line would wreak havoc.

GCC and Clang appear to have __FILE_NAME__. However, it should be noted that this expands only to the last component (i.e. past the last path separator). This may be desirable, but I find Microsoft’s idea a little more convincing in this case.

Additionally you could pass /Brepro to cl.exe and link.exe

Another good one is passing /pdbaltpath:%_PDB% to link.exe to cause it to leave out the full path to the .pdb file, i.e. only the file name itself will be recorded in the build artifact. Note, however, if you are copying around your resulting DLLs and executables, for example, and you don’t use a symbol store which you populate post-build, chances are that the debugger won’t find your debug symbols files. One way to get around this is to copy the .pdb files alongside the binaries or use a symbol store1, as is customary.

// Oliver

PS: here’s another blog article about the subject matter, leading to even further resources.
PPS: this comment on GitHub also provides some further details, including two other options: /experimental:deterministic (to warn about problematic code) and /d1nodatetime (which, according to the comment is implied by /Brepro).

  1. using the symstore tool []
Posted in C/C++, Programming, Software | Tagged | Leave a comment

Initialization of static variables (reminder)

Nice blog article which I ran across again recently: gynvael.coldwind.pl/?id=406

PS: probably also worth a look: Paged Out

Posted in C/C++, Uncategorized | Leave a comment

FIDO2 für Kreditkarte (Sparkasse). Aber nicht mit Linux!

Im letzten Jahr hatte ich eine Kreditkarte bei der Sparkasse beantragt — Mastercard war das einzige was im Angebot war, aber gut.

Also beantragt und direkt nach Erhalt einmal benutzt. Schon der zweite Versuch ging in die Hose, da aufgrund von Vorschriften eine Form von MFA1 zum Einsatz kommen müsse. Ich möge doch bitte die S-ID-Check App der Sparkasse auf meinem Androidgerät installieren. Gesagt getan. Aber huch, die App verweigerte den Dienst, denn mein Androidgerät ist aus Privatsphäre- und Sicherheitsgründen2 gerootet. Also schnell angefragt bei der Sparkassenberaterin. Ja, es gäbe da noch die Option auf die Nutzung von FIDO2. Ah, super … für mich der erste praktische Anwendungsfall privat, also schnell vom empfohlenen Sparkassen-Shop ein Feitian ePass Fido2 A4B bestellt.

Das war nach ein paar Tagen auch da. Jetzt wurde es schon erstmals bizarr. Bei meiner Sparkasse auf der Webseite gab es keinerlei Dokumentation zum Vorgehen, bei irgendeiner Sparkasse aus Friesland dann hingegen schon. Also hin zu www.online-zahlen-mit-fido.de und Registrierung gestartet.

Und das war es dann, was man als Linuxnutzer zu sehen bekam:

Registrierung abgebrochen

Das Freche daran: mein Browser unterstützt sehr wohl die Nutzung von FIDO2 von Linux aus3 und die Beschränkung ist wohl ganz einfach eine künstlich geschaffene der PLUSCARD Service-Gesellschaft für Kreditkarten-Processing mbH, bei der man die Registrierung vornehmen soll.

Auf Anfrage kam folgende erhellende Antwort:

Die wichtigste Information zuerst. Der FIDO Token ist in unserem Haus nur mit Windows 10 und macOS (Big Sur) und höher kompatibel.
Alle anderen Betriebssysteme sind von diesem Bezahlverfahren leider ausgeschlossen.

Leider steht da nicht: “Windows 10 und macOS (Big Sur) und besser“, sonst hätte man ja noch diskutieren können 😉

Zu Ihrer zweiten Frage, warum die App nicht auf einem gerooteten Handy genutzt werden kann.
Die Installation der App S-ID-Check kann generell nicht auf gerooteten Geräten durchgeführt werden. Grund hierfür sind die Vorgaben der Bundesanstalt für Finanzdienstleistungsaufsicht (BaFin). Diese besagen, dass verschiedene Sicherheitsvorkehrungen zu treffen sind, wenn der Einkauf als auch die Legitimation der Zahlung über das gleiche Gerät erfolgen.

Die Annahme ich wolle auf dem gleichen Endgerät auf dem ich diese S-ID-App einsetze auch Käufe vornehmen ist zumindest eine gewagte. Wäre mir bis dahin nicht in den Sinn gekommen, aber ist jenes Szenario was verhindert werden muß.

Und weiter:

In diesem Fall muss verhindert werden, dass das Original-Betriebssystem verändert wurde. Dies hat den Ausschluss von gerooteten Geräten zur Folge. Auch bei vergleichbaren Apps am Markt, mit welchen Zahlungen ausgelöst werden können oder auch bei Online-Banking Apps ist diese Konfiguration zu beobachten. Ein Rooting wird in der Regel immer ausgeschlossen.

Das stimmt wohl, auch bei meiner isländischen Bank habe ich bei deren App das Problem. Fazit scheint mir: Rooten == generell böse und unsicher.

Es stellte sich übrigens auch heraus, daß die FAQ der Firma in der Tat die Nutzung von FIDO4. Der Wortlaut aus der FAQ (bis zum Tag der Veröffentlichung dieses Beitrags):

FIDO ist mit Windows (ab Windows 10) und macOS (ab Big Sur) nutzbar.

FAQ: nur Windows und macOS

Habe dann einen alternativen Wortlaut vorgeschlagen 😉:

Nutzen Sie ein anderes Betriebssystem als Windows (ab Windows 10) oder macOS (ab Big Sur), verweigern wir Ihnen die Registrierung und Aktivierung Ihres FIDO2-Tokens, sowie dessen Nutzung.

Ebenfalls hatte ich noch geschrieben:

Lassen Sie mich gern wissen, sobald auch Ihre Firma die “Betriebssystem-Apartheid” abgeschafft hat, die ich aufgrund des Plattform-Charakters bei browserbasierten Technologien seit Jahren für Geschichte hielt.

Die Kreditkarte wurde dann nach einmaliger Nutzung seitens der Sparkasse rückabgewickelt. Nächster Versuch wird eventuell dieses Jahr eine Visa-Karte, da die offenbar als Ersatz für die maestro-Karten ab diesem Jahr ausgegeben werden sollen.

Ist schon ein starkes Stück, daß man aufgrund der Nutzung eines bestimmten Betriebssystems einfach ausgeschlossen wird.

// Oliver

  1. Multi-Faktor-Authentifizierung []
  2. Ja, Sicherheitsgründe, denn ohne Rooten kann man diverse fragwürdige Konstrukte die einem mitgeliefert werden nicht deaktivieren; ADB reicht einfach nicht für alles. []
  3. Es gibt auch diverse Webseiten auf denen man das direkt aus dem Browser heraus prüfen kann. []
  4. Gemeint ist dort immer FIDO2, obwohl die mißverständliche Nutzung von “FIDO” auch dazu führen könnte zu meinen es sei von FIDO U2F die Rede … []
Posted in DE, IT Security, Meinung | Tagged , | 3 Comments

Floating point precision … printf-VS2013-vs.-later-VS-version edition

As developers we probably all know that floating point precision can be an issue1. It can haunt us in various ways.

Generally when we talk about precision, though, we probably don’t have in mind printf as the first thing. This blog post is about a particular change from Visual Studio 2015, which caused some hassle — and how to work around it. It’s more about the formatting than actual precision, but the first thing that comes to mind here would be precision, which is why I chose it for the title.

It is the issue also presented in this forum thread and the relevant excerpt from the change announcement on the VS blog reads: Continue reading

  1. Since I like the writing style, let me recommend this article and this article by Bruce Dawson; you can find other awesome stuff on his blog, including references to useful tools and explanations of difficult to track down defects he has dealt with … []
Posted in C/C++, EN, Programming | Tagged , , | Leave a comment

Enabling RSA (with SHA-1) again in OpenSSH server

The sshd version that ships with Ubuntu 22.04 seems to have abandoned RSA authentication. Well, that’s not true. It’s about the hash algorithm used by the “old” protocol by the name ssh-rsa, which is deemed insecure by today’s standards. RSA is alive and kicking inside the protocols going by the names rsa-sha2–256 and rsa-sha2–512.

Either way, that caused an immediate issue with my favorite file manager on Windows: SpeedCommander1.

Anyway, the solution was to enable a protocol on the server side (in my case a VM) that was understood by the client, i.e. SpeedCommander. Thus I added in /etc/ssh/sshd_config:

PubkeyAcceptedKeyTypes=+ssh-rsa

… restarted sshd and was happily churning on.

// Oliver

PS: I have no qualms about the use case, because it’s a VM to which I locally connect. For other use cases I would probably resort to other solutions. But then: my main system at home runs Linux, not Windows 😉

  1. I know some people prefer TotalCommander — but I never was much into totalitarian software 😉 and it really couldn’t deal with Unicode and long paths for a very long time — or Far Manager. That’s okay. I won’t judge. Or maybe I will, but won’t tell you the judgment 😁 []
Posted in EN, Software | Tagged | Leave a comment

Bash training I gave some years ago

This is a Bash training I gave some years ago, which I had — however — prepared on my own time.

Some parts may be outdated. Others may need some touching up, but in general I think it can be valuable for others.

I license it under CC0.

Posted in Bash, EN | Tagged | Leave a comment

That trick I learned with the Visual Studio debugger

Alright, I’ll admit it it: I am in team WinDbg. Sure, I’ll happily use WinDbgX — the “Preview” version of the “new” WinDbg which has been in preview for ages now — but I always was a bit unhappy with the facilities that Visual Studio had to offer.

Lately I was helping debugging an issue in the Visual C/C++ runtime (“MSVCRT”) and we were wondering which exact Win32 status had been reported under the hood. Unfortunately by remapping the Win32 status codes to errno_t some information may get lost.

So I thought to myself: “Well, I know this one! The TEB1 holds the last Win32 status, which is what GetLastError() queries.” … so despite my disdain for the VS debugger, I thought I’d be able to guide someone else through using the pseudovariable $tib2 to look at TEB::LastErrorValue. Alas, when I tried it already failed at the first step: identifier “_TEB” is undefined. Oh my.

The immediate rescue came from someone else, who suggested that we should be able to set a watch with the value GetLastError() to get to the Win32 status code. Adding another as GetLastError(),hr even makes it human-readable, just like the modifier x will cause values to be shown in hex:

Watch window inside Visual Studio showing failed attempts

But the next time around I needed to know the last NT status code. And while that also resides in the TEB as TEB::LastStatusValue, it’s even more cumbersome to get to. But either way, GetLastError() wasn’t going to cut it.

So back to the drawing board. But not for long.

Although I also had initially tried qualifying the name of the module by prepending it separated with an exclamation point — (nt!_TEB*)$tib — just the way I knew from WinDbg, I only ever received: Module “nt” not found.. But that seems to be a condition different from identifier … is undefined. And then I had the epiphany. Probably the debug symbols containing _TEB and _PEB and friends where simply not loaded.

Watch window inside Visual Studio showing module not found error

And sure enough I noticed that I had picked — for performance reasons — “Load only specified modules” within VS. Telling it to load the symbols for ntdll.dll and kernel32.dll was my course of action:

Dialog: Symbols to load automatically with Visual Studio Options dialog in background

Furthermore it turned out that — contrary to what I was used from WinDbg3nt wasn’t a valid module name. So fair enough, I tried with ntdll.

And sure enough it worked!

Watch window inside Visual Studio showing the first successful attempt to cast $tib to ntdll!_TEB

… and as you can see, it can even expand the variable and peek into it.

Consequently the next step was natural:

  • Last Win32 status: ((ntdll!_TEB*)$tib)->>LastErrorValue,hr
  • Last NT status: ((ntdll!_TEB*)$tib)->>LastStatusValue,hr

Observe:

Watch window inside Visual Studio showing TEB::LastErrorValue and TEB::LastStatusValue

The nice thing is, since we can rely on the matching debug symbols, this should work reliably4.

If you wanted to be really “hardcore” you could use something like these to tap into the aforementioned structs without symbols:

  • *(int*)($tib+(sizeof(void*) == 8 ? 0x68 : 0x34)),hr
  • *(int*)($tib+(sizeof(void*) == 8 ? 0x1250 : 0x0bf4)),hr

Watch window inside Visual Studio showing TEB::LastErrorValue and TEB::LastStatusValue without loaded/available debug symbols

Hope this will prove useful to someone.

// Oliver

  1. Thread Environment Block []
  2. Thread Information Block: _NT_TIB []
  3. where nt can stand in as module name for either the current kernel or ntdll []
  4. … unlike the layout of those structs from Terminus Project which may or may not be correct on any given system []
Posted in C/C++, EN, Programming | Tagged , | Leave a comment

IDA and Hex-Rays decompiler keyboard shortcut cheat sheet

Find it on GitHub: assarbad/some-latex/releases/tag/v1.0-ida-cheat-sheet

LaTeX source can be found in the repository itself.

Posted in EN, Reversing | Tagged , | Leave a comment

Reminder to self: IDA load all sections

Just a reminder to myself. Edit cfg/pe.cfg inside the IDA installation folder to configure the PE loader to load all sections:

// Always load all sections of a PE file?
// If no, sections like .reloc and .rsrc are skipped

PE_LOAD_ALL_SECTIONS = YES

This will load the PE header as well as the resource section into the database.

Posted in EN, Reversing, Software | Tagged | Leave a comment

ASR rule “Block Win32 API calls from Office macros”

Microsoft says it’s fixed. It may be, but I think there’s more to it than meets the eye.

Colleagues of mine noticed that, aside from shortcuts disappearing, Defender also started acting up on TortoiseProc.exe from TortoiseSVN. Notably, checkouts would fail and files would be “caught” (and reported) by Defender. Not only that, but once the rule had been set to audit as an immediate workaround, the problem stopped.

That raised an eyebrow, I have to admit.

But let’s first take the facts we know apart a bit. The rule is named “Block Win32 API calls from Office macros1 — emphasis mine. Now wouldn’t this suggest that the rule is scoped to (Microsoft) Office only? To me it would. Continue reading

  1. GUID: 92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b []
Posted in Administration, EN, IT Security | Tagged , , | Leave a comment

dumbin.exe, editbin.exe, lib.exe …

They’re all just slim wrappers around the actual link.exe, not using a common DLL or so, but actually invoking:

  • dumpbin.exe simply invokes "link /dump" and failing that "link.exe link /dump"
  • editbin.exe simply invokes "link /edit" and failing that "link.exe link /edit"
  • lib.exe simply invokes "link /lib" and failing that "link.exe link /lib"

… respectively; all with the respective command line arguments, you passed to the tools, appended.

I’m currently looking into internals of cl.exe and link.exe and thought I’d share. On the other hand I probably could have gained that insight as well from Geoff Chappell’s website, rather than from IDA 😉 …

// Oliver

Posted in EN, Programming, Reversing | Tagged , | Leave a comment

What does adding masm targets do under the hood

If in Visual Studio when you right-click a C/C++-project in the Solution Explorer, you choose Build Customizations…, the following dialog will be presented:

If you check the item for masm, the following changes will be done to your .vcxproj file:

<!-- inside the ImportGroup labeled ExtensionSettings adds: -->
<ImportGroup Label="ExtensionSettings">
  <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
</ImportGroup>
<!-- inside the ImportGroup labeled ExtensionTargets adds: -->
<ImportGroup Label="ExtensionTargets">
  <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
</ImportGroup>

The items will then appear as:

<ItemGroup>
  <MASM Include="foobar.asm" />
</ItemGroup>

// Oliver

PS: Mostly meant as a reminder for myself.

Posted in C/C++, EN, Programming | Tagged , , | Leave a comment

Certum Open Source Code-Signing certificate

In the past I used a variety of code-signing CAs. But for a few years now I am using Certums affordable offer for Open Source developers.

Let’s assume you already have their latest hardware and merely want to renew or get a new certificate1. There was a swap to smartcards (and respective readers) in 2021, which allows for bigger key sizes on the card. So if you used the old clunky card reader for them, the new one looks slicker, offers more and is necessary to get a renewal or a new certificate from them. The offer comes in two flavors:

  1. Card reader plus code-signing certificate
  2. Just the certificate

Now the process of getting a certificate is a bit finicky, albeit no comparison to the utterly stupid treatment I received from Sectigo!

Here I am going to explain a little how it worked for me.

So let’s recall what code signing is and what it’s needed for. Code-signing is used to establish a trust chain between you (the developer or company) and the person receiving your software. The certificate authority (CA) — here Certum — is the trust anchor that comes usually preinstalled2 on the user’s system in a so-called trust store.

Now clearly there’s a gap here. Between you and the CA. And I’ll get to that in a moment.

But for now we have to get a little technical. The code-signing from the technical point of view works by you having a certificate and a secret key3 key, but the public key is no secret and you can tell anyone about it 😉. The secret key is usually also protected by a passphrase4 or PIN. With Certum the key pair is generated and stored on a smartcard. This little device looks just like one of those SIM cards (the biggest form factor of SIM cards) and comes right inside the card reader you purchase from them. Access to the card is controlled by a PIN and PUK you can change via their proCertum CardManager software5.

So how do we fill that gap between you and the CA? Two things:

  1. you send a Certificate Signing Request (CSR) to the CA in which you enter personal details identifying you along with information about your key pair (the public key), signed by you using the private key
  2. the CA duly checks the identity details against documents they will request from you

To send a CSR you first purchase the product and pay for it. After that you have a spare CSR, so to speak. Which you can only send — at least for the Open Source code-signing flavor — via a browser. And this is where it gets a bit involved and finicky.

Firefox did not work for me. So I used MS Edge, given in the past many CAs simply required Internet Explorer6. However, in order to get this to work you need to download something called the Certum Crypto Agent from Certum’s website. And that is a Java WebStart Applet (.jnlp file). And as we all know Java integration into the browser isn’t what it once was. Since all options more or less suck, I opted for OpenWebStart. You can install it using winget via winget install --id karakun.OpenWebStart. Easy. Of course you also need a Java Runtime Environment for which I used Eclipse Adoptium Temurin JRE, which can be installed via winget install --id EclipseAdoptium.Temurin.19.JRE. Hah! Now start the Certum Crypto Agent and make sure proCertum CardManager is running, too. The agent acts as an intermediary between the website (likely via web sockets or some such) and the CardManager.

So what do we have when we start?

  • Card reader (from Certum)
    • Smartcard (bundled with the reader)
  • proCertum CardManager
  • Certum Crypto Agent

You can then select the spare CSR from the list on the website and walk through the steps. For the key size I prefer to use 4096, but YMMV. This should kick off a key generation step on the smartcard via the agent and CardManager. Once done, the smartcard will hold the new key pair (secured by the card and your PIN) and Certum will have received your CSR, signed with the newly generated key pair.

Now comes the validation phase during which Certum will request documentation about your identity from you7.

Assuming all checked out — there can be a little back and forth –, you will hear back from Certum and your newly issued certificate will wait for you on their website. That certificate has been signed by Certum to affirm that the public key you mentioned in your CSR belongs to a key pair which you own.

Simply download the certificate and import it onto the card via the proCertum CardManager.

You’re done. You now have:

  • Card reader (from Certum)
    • Smartcard (bundled with the reader)
      • Key pair (private + public)
      • Imported certificate (signed by Certum)
  • proCertum CardManager
  • Certum Crypto Agent (only needed while sending CSR)

From this point on you can use signtool.exe or similar software to sign your code.

// Oliver

PS: keep reading if you want to know some of the more technical aspects, because time and time again people seem to confuse terminology.

What do you need to sign? The certificate? Yes, but that’s not enough. You need the certificate and the matching private key.

When you sign code for Windows, the signing happens by taking parts from the PE file and hashing those8. The result is a few bytes long and contains a cryptographic hash over the relevant parts of the PE file. That’s what is going to get signed.

And when you sign it, you use you private key — in case of the above method on the smart card and protected by an additional PIN, in the past often in a PFX file and protected by a passphrase.

But your signature with the private key can be verified based on your public key! And so while signing you practically enclose the certificate you received from the CA alongside the signature.

Now the certificate, as you may remember, contains your public key and some information about you. But the certificate is also signed by Certum. And that’s the missing link.

The user’s system will in all likelihood know about the Certum CA and so can check the signature on the enclosed certificate. And because the CA is meant to ensure that the identity of someone receiving such a certificate has been duly checked before it gets issued, this closes the gap between you and the CA.

Now whoever wants to check the signature will first formally check the signature against a computed hash of the PE file contents. If it checks out it will proceed to validate the enclosed certificate and verify that the public key of the signature matches the public key from the certificate. Then it can use the so-called trust store9 to establish a connection to a trusted CA. And if that succeeds your signature was successfully verified.

There are a lot more details that I could dwell on, but this small treatise should even give laypeople a grasp of what code-signing is all about and what’s involved.

  1. These instructions are in all likelihood also true for their offers which aren’t limited to Open Source signing. []
  2. … on account of the used operating system, such as Windows []
  3. … technically you have a key pair of public and private ((also secret key []
  4. … this was most common when people used PFX files which contained both the certificate and the key []
  5. As a side-note, I cannot recommend the Linux version of their software. I tried it and aside from providing only an unclean uninstallation, it also didn’t work. []
  6. … I know … I know 😉 []
  7. In my case they wanted my government ID which I had to present, along with a video capture of my face to match ID and face. Additionally they wanted a document showing my name with the address, e.g. a utility bill and last but not least the URL to the Open Source project which should list you in plain to make the connection. The last part is due to the offer being considerably cheaper than commercial code-signing certificates, so they want to make sure you’re not cheating their conditions. Also Extended Validation (EV) certificates usually require more documentation, that you have an incorporated company in whose name the certificate is issued and even a notary to affirm that you are you. []
  8. Sysinternals’ sigcheck calls it the PE hash, e.g. PESHA1 and PE256 []
  9. … which is where the system stores the knowledge about the CA certificates []
Posted in EN, IT Security, Software | Tagged , | Leave a comment

PowerShell

Within the last two years or so I have started to use more and more PowerShell scripting at work and for my private administration tasks on Windows.

The thing I find coolest about PowerShell is that you can tap into the .NET Framework and do weirdly satisfying stuff like this:

<#
Reading actual Windows version from KUSER_SHARED_DATA
xref: http://terminus.rewolf.pl/terminus/structures/ntdll/_KUSER_SHARED_DATA_combined.html
xref: https://msrc-blog.microsoft.com/2022/04/05/randomizing-the-kuser_shared_data-structure-on-windows/
#>
$WinVerMaj = [System.Runtime.InteropServices.Marshal]::ReadInt32((New-Object IntPtr(0x7ffe0000)), 0x026c)
$WinVerMin = [System.Runtime.InteropServices.Marshal]::ReadInt32((New-Object IntPtr(0x7ffe0000)), 0x0270)
$WinVerBld = [System.Runtime.InteropServices.Marshal]::ReadInt32((New-Object IntPtr(0x7ffe0000)), 0x0260)
Write-Output "Windows: $WinVerMaj.$WinVerMin.$WinVerBld"

I’ve done this from C/C++ before, and I’ve even had some encounters with System.Runtime.InteropServices during my first serious C# project, but this is just beautiful. As you may or may not know Windows can lie to you about the Windows version depending on the manifest and its contents or its absence. By consulting the respective fields of KUSER_SHARED_DATA we can simply read the actual version whenever needed … and now even from PowerShell.

Perhaps those more seasoned in the use of PowerShell know even more elegant ways to express the same, but to me the above is already quite satisfying.

// Oliver

Posted in Administration, EN, Programming | Tagged | Leave a comment

Die wohlstandsverwahrloseste Bundesregierung

Sarah Wagenknecht hatte unlängst eine bemerkenswerte und vielbeachtete aber auch viel kritisierte Rede im deutschen Bundestag gehalten.

Schon davor hatte eine gewisse Annalena Baerbock — ihres Zeichens oberste Undiplomatin der Bundesregierung — eine Antwort auf Englisch in einer Podiumsdiskussion von Forum 2000 in Prag gegeben, Zitat:

But if I give the promise to people in Ukraine “we stand with you, as long as you need us”, then I want to deliver. No matter what my German voters think but I want to deliver to the people of Ukraine.

Frei übersetzt von mir:

Aber wenn ich Menschen in der Ukraine das Versprechen gebe “wir stehen euch solange bei, wie ihr uns braucht”, will ich liefern. Egal was meine deutschen Wähler denken, aber ich will den Menschen der Ukraine liefern.

Nun, hier wurde auch Kritik geübt und jegliche1 Kritik von der Lückenpresse und deren multimedialen Kollegen direkt als Beeinflussungsversuch “des Kreml” abgetan. Als Lumpenpazifist und langjähriger Russen- und NATO/US-Versteher — jeweils noch in Ausbildung, weil ich zwar versuche die zu verstehen, es mir aber häufig nicht gelingt — möchte ich daher vom aktuell noch bestehenden RechtPrivileg2 auf die Äußerung meiner eigenen Meinung3 Gebrauch machen.

Die meisten Kritiker echauffierten sich über den ersten Teil des zweiten Satzes. Aber die Gesamtaussage ist bemerkenswert; mal ganz abgesehen von der absolut menschenverachtenden NATO-grünen Ideologie welche aus den Worten nur so trieft4. Erstens scheint ihr der Amtseid5, den sie gegenüber dem deutschen Volk und nicht etwa den Menschen in der Ukraine abgegeben hat, weniger wichtig zu sein als irgendwelche Versprechen die sie “den Ukrainern” gegeben hat. Wobei immer wichtig ist anzumerken, daß damit nur nationalistische Ukrainer gemeint sind oder zumindest jene die den nationalistischen ggü. loyal sind und nicht etwa jene Ostukrainer6 die — aufgrund der seitens der Putschregierung in 2014 geschaffenen Fakten7 — eine durchaus schon länger existierende Autonomiebewegung in der Ostukraine — dem industriellen Zugpferd des Landes — zu neuem Leben erweckten. Nein, diese Ukrainer sind spätestens mit der Ausrufung der Anti-Terror-Operation, durch die im Herbst 2014 gewählte Poroschenko-Regierung, keine Ukrainer mehr, geschweige denn Menschen. Es handelt sich ganz offenbar nicht nur in den Augen unserer Lückenpresse seit Jahren um Abschaum den man ignorieren kann, sondern offenbar hat auch unsere oberste NATO-grüne Undiplomatin das als “Fakt” verinnerlicht. Daß u.a. ihr Vorgänger und jetzige Bundesgrüßeule Frank-Walter Steinmeier zusammen mit dem französischen Amtskollegen in 2014/2015 die Minsk-Abkommen eingerührt hatte, wobei das zweite als UN-Sicherheitsratsresolution 2202 sogar völkerrechtlich bindend ist — und die Annalena kommt “ja eher aus’m Völkerrecht” — und sich weder der mit dem Anspruch von dessen Umsetzung angetretene Herr Selenskij noch die Garantiemächte Deutschland und Frankreich einen feuchten Kehricht um diese Abkommen scherten; ja diese auf NATO-Ebene seit Jahren reineweg hintertrieben, womit sowohl Schokoladenoligarch und Ex-Präsident der Ukraine Poroschenko als auch NATO-Generaltippse Stoltenberg unlängst prahlten, das wird geflissentlich verschwiegen.

Aber nehmen wir unsere oberste Undiplomatin mal beim Wort. Sie sprach ja von ihren deutschen Wählern, wie auch gern zu ihrer Verteidigung vorgebracht wurde. Ja hallo? Geht’s noch? Seit wann ist eine Bundesregierung, bzw. deren Amtsträger, allein jenen Wählern verpflichtet, die sie gewählt haben? Vielleicht sollte die Annalena statt Völkerrecht — sie meint wohl ohnehin eher die NATO-/US-gefärbte Lesart der “internationalen regelbasierten Ordnung” in der sowas wie der NATO-Angriff auf Jugoslawien voll in Ordnung geht, oder die Besetzung und das Abschöpfen der Gewinne syrischer Ölquellen, aber wehe andere nicht-wertewestliche Großmächte nehmen sich daran ein Beispiel — mal an ihrem Demokratieverständnis arbeiten. Wobei, ich befürchte das wäre nicht die einzige Baustelle bei diesem “besten” Aushängeschild der wohlstandsverwahrlosesten Bundesregierung seit Gründung der BRD.

// Oliver

  1. … auch gerechtfertigte … []
  2. Daß die sogenannten Grundrechte nur Privilegien sind, die entzogen werden können haben die letzten zweieinhalb Jahre hinreichend gezeigt. []
  3. Viele haben den Begriff “Meinungsfreiheit” ja leicht falsch interpretiert und sind bereits seit Jahren bar jeder eigenen Meinung unterwegs, haben den Prozeß der Meinungsbildung spätkapitalistisch-postmodern an diverse Preßorgane ausgelagert. []
  4. Waffenlieferungen in die Ukraine, welche den mittlerweile zum zwischenstaatlichen Krieg — zuvor innerstaatlichen, zwischenzeitlich seitens der ursprünglichen Kiewer Putschregierung als Anti-Terror-Operation beschönigten, Bürgerkrieg in der Ostukraine gegen die eigene Bevölkerung — mutierten, durch die NATO über Jahrzehnte vorbereiteten und provozierten, Konflikt zwischen Rußland und der Ukraine weiter anheizen helfen keiner der beiden Seiten. []
  5. Nunja, wie wie alle mittlerweile wissen ist die Verletzung des gegebenen Amtseids von Politikern, im Gegensatz zum Amtseid von niederen Beamten oder bspw. Richtern, nicht strafbewehrt und damit dieser ganze Amtseid nicht mehr als eine Floskel, auch wenn der Begriff ein ernstgemeintes Versprechen suggeriert. []
  6. … aber das kennen wir ja schon hinlänglich von Waffenlobbyspeichelleckern wie Sascha Lobo aus seinem “Lumpenpazifisten”-Traktat []
  7. Bspw. Abschaffung von Russisch in der Öffentlichkeit; ein Vergleich wäre hier wenn sich die deutschsprachigen Schweizer überlegten von heute auf morgen Romansch oder Französisch als Sprachen der Eidgenossenschaft abzuschaffen (was dort meinem Verständnis nach nicht ganz so einfach ist wie in der Ukraine mit dem Russischen). Oder auch das Massaker im Gewerkschaftshaus in Odessa im Mai 2014 bei dem per Zug aus Kiew und anderen Landesteilen angereiste Nazihundertschaften mal ein paar “Kartoffelkäfer” — deren entmenschlichender Begriff für russischsprachige Mitbürger! — “tilgen” durften. []
Posted in DE, Meinung, Wertewesten | Tagged , , | Leave a comment

Sarah Wagenknechts Bundestagsrede kürzlich

… schlug ein.

Während Frau Wagenknecht also dem im Grundgesetz (Artikel 38 GG) verankerten Prinzip, der Abgeordnete sei nur seinem Gewissen verpflichtet genüge tat, im Wortlaut:

Sie sind Vertreter des ganzen Volkes, an Aufträge und Weisungen nicht gebunden und nur ihrem Gewissen unterworfen.

… konnten sich diverse Mitglieder der Partei “Die Linke” und insbesondere deren Parteispitze überhaupt nicht schnell genug distanzieren. Das sei keine Parteilinie, das hätte die Fraktionsspitze zu verantworten usw.

Abgesehen davon, daß dies ein faszinierendes Verständnis der Rechte und Pflichten von Bundestagsabgeordneten offenbart, hatte die Rede mittlerweile noch weitere Folgen. So verließ Ulrich Schneider mit (negativer) Bezugnahme auf Wagenknechts Rede die Partei. Diverse “Größen” äußerten sich dann auch dazu, zumeist unterstützend, teils gegen Wagenknecht keilend1. Unser werter Herr Gesundheitsminister Prof. Karl Lauterbach entblödete sich dann auch nicht Ulrich Schneider zu empfehlen andere linke Parteien zu erwägen. Im Wortlaut:

Eine konsequente Haltung. Respekt. Für mich war Ulrich Schneider, auch bei gelegentlichen Meinungsverschiedenheiten, immer ein Sozialexperte mit hoher Integrität. Solche Leute sollten auch andere linke Parteien erwägen.

Prof. Karl Lauterbach am 2022-09-12

Welche linke Partei2 das sein könnte, bleibt wohl Herrn Lauterbachs Geheimnis, denn zumindest im Bundestag sind mir ausschließlich “Mitte-Parteien” und NSDAP-Nachfolgeparteien geläufig. Und “Die Linke” hockt allenfalls noch am linken Rand der Mitte — zumal sie auch in großen Teilen nicht mehr klassisch links ist. Aber klar, wenn alle nach rechts rücken, bleibt der linke Rand des Spektrums natürlich weiterhin linksaußen, auch wenn er sich von klassisch linken Positionen vielleicht längst meilenweit entfernt hat. Vielleicht meinte er ja auch Nischenparteien wie die MLPD? Und fragen will ich nicht, da unser Gesundheitsminister sicher voll im Streß ist. Im Streß restriktive Maßnahmen auszuarbeiten bzw. ausarbeiten zu lassen, die unter Bezugnahme auf Corona im kommenden “Wutwinter” zufällig genau dann in Stellung gebracht werden, wenn die Leute begreifen, daß man sich beim Demonstrieren auch warmhalten kann, wenn die Wohnung schon kalt bleiben muß oder man sich aufgrund Preissteigerung oder Arbeitsplatzverlust nichts mehr leisten kann.

Nach Ulrich Schneider trat dann ein — aus meiner Sicht — noch profilierteres Mitglied aus, nämlich Fabio De Masi. Er ließ sich nicht weiter zu den Gründen ein. Man könnte zwar spekulieren, aber das lasse ich mal. Vielleicht gibt es ja irgendwann doch noch eine Stellungnahme.

Dabei wäre es doch fast sinnvoller wenn Frau Wagenknecht genau wie ihr Mann die Partei verließe, in welcher echte linke Positionen nicht gefragt sind.

Allerdings ist dies leichter gesagt als getan, denn die Chance ohne Rückendeckung einer bereits etablierten Partei in den Bundestag zu kommen ist verschwindend gering. Wir verlören eine wichtige und kritische Stimme. Nicht zuletzt deshalb, weil unsere Parteien sich inzwischen — aus meiner Sicht verfassungswidrig — das Monopol der politischen Willensbildung gesichert haben, obwohl es im Artikel 21 GG gleich eingangs unter (1) heißt:

Die Parteien wirken bei der politischen Willensbildung des Volkes mit.

Setzt man die Zahl von Parteimitgliedern ins Verhältnis zur Gesamtbevölkerung, ergibt sich eine starke Schlagseite der Macht weg vom Souverän hin zu den Parteien. Betrachtet man dann nur die Aktiven in den Parteien, wird es nur umso schlimmer …

// Oliver

PS: übrigens schätze ich sowohl Ulrich Schneider wie auch Fabio De Masi für das was sie bisher geleistet haben (und hoffentlich weiter leisten), insofern ist mir deren Parteibuch/-karte herzlich egal.

  1. Ich bewundere Sarah Wagenknecht seit Jahren, weil sie trotz stetem Gegenwind und unfairen Praktiken, bspw. bei der Sendung “entweder butterweich oder unfair” (oder so ähnlich), ihre Position vertritt und weiter herausarbeitet und sich auch nicht zu doof ist Fehleinschätzungen einzugestehen. []
  2. … in der Mehrzahl kann man davon nun wirklich nicht reden! []
Posted in DE, Ich, der Zyniker, Meinung, Wertewesten | 3 Comments

Kaum denkt man es gehe nicht bescheuerter

… kommt ein grüner Minister daher.

// Oliver

Posted in DE | Tagged , | Leave a comment

Höhere Gewalt

Während sich unsere NATO-Grüne Bundesaußenschnepfe auf Bali empört, daß Lawrow sich ihr Gestammel nicht anhören wollte — war mit dem “das wird Rußland ruinieren” aus dem Februar nicht alles gesagt und die deutsche Spitzendiplomatie bereits voll ausgeschöpft? — rollt die Inflationswelle bereits jetzt über Deutschland.

Der NATO-Grüne Bundeswirtschaftsbückling stimmt auf Frieren für den Frieden, bzw. gegen Putin ein und mahnt Einsparungen an. Kohlekraftwerke sollen wiederbelebt werden, aber jetzt stellt sich raus, daß die Transportkapazitäten eventuell nicht vorhanden sind um kraftwerksnahe Reserven anzulegen. Da rächt sich, daß die Bundesregierung kein Amazon Prime Coal Abo abgeschlossen hat.

Offenbar sind die nach hinten losgegangenen Sanktionen höhere Gewalt, denn anders kann man sich nicht erklären daß, selbst jetzt wo kristallklar ist, daß die Sanktionen uns bei weitem mehr schaden als sie Rußland jemals schaden könnten, — begleitet von den Sturmgeschützen der NATO-Propaganda — unisono nach deren Fortführung gerufen wird. Die seit Jahren dysfunktionale repräsentative Demokratie beweist einmal mehr, daß Fehlentscheidungen nicht zurückgenommen werden, selbst wenn sie Schaden vom deutschen Volk abwenden könnten.

Selbst die sonst so lautstarke und mächtige Wirtschaftslobby übt sich allenfalls mit einzelnen Wortmeldungen in leiser Kritik am derzeitigen Kurs.

Aber die nächste SARS-CoV2-Mutante und der passende Lockdown wird mit Sicherheit zeitgenau auf das “Frieren für den Frieden” abgestimmt sein. Wenn es zu keiner rechtzeitigen Kehrtwende kommt und man lieber den rechtsnationalen Russenhassern in Polen unser bezahltes russisches Erdgas weiterschickt als deutsche Gasspeicher zu füllen — während Nord Stream 2 weiterhin nicht geöffnet wird — könnte es jedoch sein, daß es selbst mit Lockdown zu einem eher heißen Winter für unser Spitzenpersonal wird. Die Maslowsche — verdammt, schon wieder so ein Ru… … puh Glück gehabt … ukrainische Abstammung — die Maslowsche Bedürfnishierarchie jedenfalls, dürfte den meisten auch ohne Kenntnis des Begriffs intuitiv geläufig sein. Sobald wir am Fundament dieser Hierarchie ankommen, könnte sich der alle paar Jahre zum Wahlvieh degradierte Souverän in größerer Zahl entsinnen, daß Bewegung hilft um warm zu bleiben, während Wohnung und Duschwasser kalt bleiben.

Das müssen die interessanten Zeiten aus dem chinesischen Fluch sein.

// Oliver

Posted in DE, Ich, der Zyniker, Wertewesten | Tagged | Leave a comment

(N)Ostalgie pur für mich

Irgendwann rund um die Wende verbrachte ich als Kind mit meiner Familie das Jahresende auf Usedom in einem alten Ferienheim. Ich könnte heute nicht mehr sagen ob es tatsächlich vor oder nach der Wende war.

Jedenfalls gab es dort einen Spielautomaten in der – ich sag mal – “Empfangshalle” an dem ich ein Spiel spielen konnte. Ich weiß nicht mehr ob man Münzen brauchte, ich meine fast nicht.

So sah das dann aus:

Poly-Play DDR Spielekonsole

Besonders blieb mir dabei das oben ausgewählte “Hase und Wolf” in Erinnerung, welches so aussah. Ich muß sagen heutzutage macht das nicht mehr viel her und in meiner Erinnerung scheine ich so einige Pixel bei der Auflösung hinzugedichtet zu haben1 😁

Poly-Play DDR Spielekonsole

Als Hersteller ist angegeben 1986 VEB Polytechnik Karl-Marx-Stadt.

Irgendwie surreal, daß man heutzutage auch eine ganze Horde dieser Spielautomaten auf den meisten tragbaren Smartphones parallel emulieren könnte, ohne daß das Smartphone dabei ins Schwitzen käme.

Auch wenn das Spiel in meiner Erinnerung irgendwie prächtiger daherkam, ist es toll daß uns dank MAME solche Software aus der IT-Steinzeit erhalten bleibt.

// Oliver

PS: Da ich mich wirklich mehrfach pro Jahrzehnt an dieses Spiel erinnert habe, insbesondere vor dem Hintergrund, daß ich mittlerweile selbst programmieren kann, war ich total aus dem Häuschen, als ich es heute entdeckte.

  1. laut MAME 512×265 Pixel []
Posted in DE, Software | Leave a comment

Scheiße

Wenn

  • US-amerikanische Whistleblower in Rußland im Asyl sitzen
  • Australische Journalisten unter fadenscheidigen Gründen im Hochsicherheitsknast sitzen und der Auslieferung in God’s Own Country™ harren und wertewestliche Journalistenkollegen überwiegend schweigen
  • AfD-Mann Gauland eine vernünftige Rede hält
  • die Grünen sich endlich ein zweites Mal als NATO-Olivgrüne outen
  • einem Alice Schwarzer plötzlich sympathisch wird
  • … und in einer Debatte mit Marie-Agnes Strack-Zimmermann geradezu eloquent deren NATO-Propaganda bloßstellt1

… dann merkt man, daß im Wertewesten irgendwas nicht stimmt. Oder um es mit britischem Humor einer meiner Lieblings-Britcom-Duos auszudrücken: Are we the baddies?

  1. Siehe hier []
Posted in DE, Ich, der Zyniker, Wertewesten | 1 Comment