piano imagemap test

piano H-1 C0 CIS0 > D0 DIS0 E0 F0 FIS0 G0 GIS0 A0 B0 H0 C1 CIS1 D1 DIS1 E1 F1 FIS1 G1 GIS1 A1 B1 H1 C2 CIS2 D2 DIS2 E2 F2

Labels

Wirtschaft (156) Pressefreiheit (151) Österreich (125) IT (110) code (70) Staatsschulden (37) EZB (27) Pensionssystem (16) Geopolitik (12)
Posts mit dem Label code werden angezeigt. Alle Posts anzeigen
Posts mit dem Label code werden angezeigt. Alle Posts anzeigen

2025-10-20

Die Anzahl der Anordnungen der Elemente einer endlichen Menge

Prolog

Wenn Studenten im Sommersemster 1992 in der Vorlesung Graphentheorie und Kombinatorik von Prof. Gerd Baron lauter wurden, nebenbei am Laptop für andere Übungen zu koodieren begannen oder sich zu unterhalten oder zu Essen begannen, dann wiederholte Professor Baron mit lauter Stimme:

Wir haben hier ein Universum und es geht um 
die Anzahl der Anordnungen der Elemente einer endlichen Menge.

We have a universe here and 
it's all about of the number of combinations of items in a finite set.

Professor Baron war für die Entstehung der Vorlesung + Übung Graphentheorie und Kombinatorik als zusätliches Fach zu Analysis, Algebra und linearer Algebra  für Informatiker mitentscheidend. Prof. Baron war der Meinung, dass Graphentheorie (inklusive gewichteter Pfade + Adjazenzmatrix Darstellung) für Informatiker wegen Verständnis von Routing Tabellen ip routing graph und Suche nach dem kürzestem Routing Pfad und Algorithmen wie dem traveling salesmen essentliell seien und Kombinatorik für Informatiker wegen oft vieler fast gleichwertiger Lösungsmöglichkeiten essentiell sei:


In den Jahren 2021-2023 [ CV ] implementierte ich nach der Idea von Georg Toth mit ihm gemeinsam SUPU (SUdocu PUzzle). Für das Feature "Game Automation", wo der Computer die Hälte des Spielbretts automatisch vorlegt und der Spieler nur noch die obere Hälfte selbst setzen muss. brauchte ich eine heuristischen einfachen, aber genügend performanten Algorithmus mit lauter unterschiedlichen Kombinationen pro Durchlauf für den Computer und ich erinnerte mich an Professor Baron.


Nach einem Treffen mit meinem alten Freund, dem Mathematik- und Physikprofessor Michael F. (der ebenfalls im Finanzsektor in der Londoner City tätig war), und unserem Gespräch über invertierbare Matrizen, wurde ich nachts mit einigen technischen Hilfsmittlen penetriert und äußerte meine Idee laut. Anstatt die Information jedoch nur Unbekannten (vielleicht russischen oder rechtsextremen Spionen) zukommen zu lassen, verfasste ich diesen Artikel, damit jeder, auch alle Partner in den USA, davon Kenntnis nimmt.

Einfachste Art AES nach oben zu skalieren:
Kombinieren mehrerer Blockciphers mit Permutation

Verschlüsselung: plain text ⟶ 3DES PBox → AES → 2-fish ⟶ cipher bytes
Entschlüsselung: cipher bytes ⟶ 2-fish → AES → 3DES SBox ⟶ plain text

Verschlüsselung: (zuletzt base64 mime kodieren oder uuencode für ASCII Cipher Text)
plain text ⟶ AES ⟶ 2-fish⟶ 3DES PBox (scrambled) ⟶ base64  cipher ascii

Entschlüsselung: (zuerst base64 oder uudecode und dann symmetrische Entschlüsselung)
cipher 
ascii⟶ base64  3DES  SBox(scrambled) → 2-fish→ AES ⟶ plain text

Man kann jetzt natürlich durch Enumerierung der einzelnen Symmetrischen Cipher Algorithmen eine Pipe skizzieren:
3DES = 0x1
AES = 0x2
2Fish = 0x4
Serpent = 0x8

Hexedezimal 0x148 für Verschlüsseln bedeuted 0x841 für Entschlüsseln.
plain ⟶ (3DES→
2FishSerpent) ⟶⟶ encrypted
encrypted ⟶ (Serpent→2Fish→3DES) ⟶ plain 

Beispiele für Kombinationen von mehreren symmetrischen Ciffrier-Algoríthmen:

Mathematisches Lemma (Funktionentheorie) lautet in etwa:

Angenommen, es ∃ ein-ein-deutige deterministische umkehrbare Funktionen, wo es zu jeder Funktion y=F(x,...) eine entsprechende Umkehrfunktion x =f(y,..) gibt =>, 
dann ∃ zur Funktionenkette y = F( G( H( I( J( K( L( M( N(x, ...))))))))) 
die Umkehrfunktion x = n( m( l( k( j( i( h( g( f(y,...))))))))).

Ansatz eines mathematischen Beweises

Man kann jede Abbildung von ascii8 → ascii8 
immer auch als Matrix vom R256 ➝ R256 betrachten.

8-fache umkehrbare blockweise ver-/ent-schlüsselnde  Funktionskette:

Probier einmal mein Online Webformular aus:
https://area23.at/net/Crypt/CoolCrypt.aspx

Github repository: github.com/heinrichelsigan/area23.at/


Ein einfacher Matrixverschlüsselungsalgorithmus von mir selbst:

Ich habe einen einfachen symmetrischen Matrixverschlüsselungsalgorithmus gefunden, der als einfache symmetrische Chiffre funktioniert mit NxN-Matrix-Transformation, nachdem ich diese Frage hier auf math.stackexchange.com/questions/4915786/  gestellt hatte.

Später entwickelte ich einen sehr einfachen Blockchiffre-Algorithmus namens ZenMatrix (um zu zeigen, dass ich selbst eine sehr einfache symmetrische Blockchiffre für die Ver- und Entschlüsselung schreiben kann)

R3 ➝ R3: v(3) x M(3,3) = v(3)

⎡ 1 ⎤    ⎡ 0 1 0 ⎤    ⎡ 2 ⎤ 
⎢ 2 ⎥ x  ⎢ 0 0 1 ⎥ =  ⎢ 3 ⎥  
⎣ 3 ⎦    ⎣ 1 0 0 ⎦    ⎣ 1 ⎦ 
Inverse Matrix für umgekehrte symmetrische Verschlüsselung wäre:
⎡ 2 ⎤    ⎡ 0 0 1 ⎤    ⎡ 1 ⎤ 
⎢ 3 ⎥ x  ⎢ 1 0 0 ⎥ =  ⎢ 2 ⎥  
⎣ 1 ⎦    ⎣ 0 1 0 ⎦    ⎣ 3 ⎦ 
ZenMatrix symetric chiffre encryption

Es stehen nun weitere symmetrische Verschlüsselungsalgorithmen zur Verfügung!

Zuerst wollte ich die symmetrische Verschlüsselungspipeline nur mit AES, Blowfish, 2-Fish, 3-DES und ZenMatrix realisieren. Dann stieß ich jedoch auf die Legion von Bouncy-Castle, die mehrere Verschlüsselungen in einer Open-Source-Bibliothek anbietet, die auch hier auf GitHub verfügbar ist: https://github.com/bcgit. Daraufhin habe ich Area23.At.Mono mit dem Bouncy-Castle-Wrapper für 3DES, 2FISH, 3FISH, AES, Rijndael (entspricht AES) und Serpent neu geschrieben.

Später fügte ich der symmetrischen Verschlüsselungspipeline die folgenden Algorithmen hinzu, da ich sie im Bouncy-Castle-Paket gesehen hatte: Camellia, Cast[56], Gost28147, Idea, RC[26], RC532, Seed, Skipjack, Tea, Tnepres und XTea.

PermAgainCrypt [WinForm Demo]

Ich schrieb eine einfache WinForm-Anwendung mit reduziertem Framework-Code, um die grundlegende SymmCipher-Pipe-Verschlüsselung zu verstehen. Sie ist hier auf GitHub zu finden: https://github.com/heinrichelsigan/PermAgainCrypt

https://github.com/heinrichelsigan/PermAgainCrypt

Wie viele Variationen sind möglich?

Bei zwei symmetrischen Verschlüsselungsalgorithmen
ohne Wiederverwendung wäre der Wert 2! =
2
bei Wiederverwendung (z. B. Blowfish => Blowfish =>) 2² = 4

Bei acht symmetrischen Verschlüsselungsalgorithmen ohne Wiederverwendung wäre der Wert 8! = 40,320, bei Wiederverwendung 8⁸ = 16,777,216.

In der oben beschriebenen symmetrischen Verschlüsselungspipeline mit nun 21 symmetrischen Verschlüsselungsalgorithmen wäre der Wert 2¹⁸ = 37,822,859,361,
da die Pipeline-Länge auf acht Stufen begrenzt ist.

Warum veröffentliche ich diesen Artikel?

Leider neige ich seit meiner Diagnose einer schizoaffektiven Störung im Jahr 2007 manchmal dazu, laut zu sprechen und habe oft Angst, abgehört zu werden. Selbst größere Unternehmen, bei denen ich angestellt war (ich habe ihnen seit 2007 von meinem Problem erzählt), meinten, ich hätte in diesem Fall nicht gegen die Vorschriften verstoßen, da ich davon ausgehe, dass wir hier nicht die DDR mit der Stasi haben und das laute Wiederholen von Betrugserkennungsregeln zu Hause kein Verbrechen ist. Einmal fühlte ich mich sehr unwohl und sprach laut meine Idee für ein besseres AES aus. Um zu vermeiden, dass nur einige Leute sie verstehen würden, schrieb ich einen einfachen Prototyp und schickte diesen Artikel dann an alte Freunde, die in US-Unternehmen arbeiten.

2025-10-02

x86_64 and aarch64 arm cpu bugs

bhi
cpu_meltdown
eibrs_pbrsb
itlb_multihit
its
l1tf
gather_data_sampling
ghostwrite
indirect_target_selection
itlb_multihit
mds
mmio_stale_data
reg_file_data_sampling
retbleed
rfds
spec_rstack_overflow
spec_store_bypass
spectre_v1
spectre_v2
spec_store_bypass
srbds
swapgs
tsx_async_abort
lscpu [ https://man7.org/linux/man-pages/man1/lscpu.1.html ]shows a little other information as
lscpu

cat /proc/cpuinfo

smaller arm aarch664 cpus are affected so far by fewer bugs as large Inter x86_64


2025-09-12

Exception handling in C#, Java, C++

C#

In C# Exception is root of all exceptions extends base class System.Exception : ISerializable¹ and differs basically between System.SystemException and System.ApplicationException.
Of course, that are a lot of Exception derived directly from System.Exception.


ExternalException, Win32Exception, WebException, IOException, SocketException and all exceptions thrown during os system operations extend SystemException or it's children.

Java

In Java Throwable (root of all errors & exceptions) extends base class object. Error and Exception both extend from Throwable.

Errors such StackOverflowError (endless recursion), OutOfMemoryError (endless allocation) and VirtualMachineError are thrown, when critical limits of java virtual machine exceeded.

In java some exceptions like IOException or SocketException are "checked at compile time". This does NOT mean, that javac compiler knows when IOException or SocketExcpetion will be thrown at program flow at runtime. Furthermore javac compiler knows if reading from or writing to a file needs catching an IOExceptiuon, because disk might be full or USB stick could be unplugged or fs mount point is now unmounted or remounter ro. When reading from or writing to a socket javac compiler knows, that you must catch a SocketException in case of a linux system init runlevel 1 or 2, unplugging USB network adapter or dog bites CAT5 or CAT7 network cable.

C++

In C++ there is no binary split at the root of "exception tree" as in C# (System Exception &
ApplicationException) or in Java (Error & Exception both extend from Throwable).

In C++ bad_cast, bad_alloc, bad_function_call, logic_error & runtime_error extend from exception.
Most common Exceptions in C++ extend from logic_error & runtime_error.b.


2025-08-09

Is there a way under windows to mount a in exe included disk image at runtime

[ Original question postetd at stackoverflow 
maybe you have an idea how that will work under Windows >= 7 or in any case >= 10

I want to generate an executable, where an disk image is added (linked at compile time) to the exe.

Under linux, it's possible to mount an image with a certain offset

  • mount

    mount -o loop,offset=$((1024 * 512 * 8)) image.raw /mnt

  • losetup

    losetup /dev/loop0 image.raw -o $((1024 * 512 * 8)) mount /dev/loop0 /mnt

  • I wrote a simple shell script, that demonstrates that with the efi boot partition added afterwards to a zero image with 8*512k blocks.

#!/usr/bin/bash
 
BLOCKSIZE=`echo '512  * 1024' | bc`
SEEK=8
OFFSET=$(echo "$BLOCKSIZE * $SEEK" | bc)
 
dd if=/dev/zero of=zero.img bs=512k count=8
cp zero.img offset_disk.img
dd if=/dev/nvme0n1p15 of=offset_disk.img bs=$BLOCKSIZE seek=$SEEK oflag=append
 
mkdir -p /mnt/efi
mount -o loop,offset=$OFFSET offset_disk.img /mnt/efi
du -h -s *.img ; df -h  | grep efi
 
sleep 1 ; umount /mnt/efi ; rm -f zero.img offset_disk.img
exit 0

Output of shell script -x (debug


The creation of the image file added to an executable would not be the problem, because I understand:

How to link a dll or dll embedded resource or image file to an executable with C++ linker

and also C# .Net crossgen2 to produce a big static exe, that needs no Framework anymore

The only problem I have, is how to mount disk / iso9660 image files with a certain offset.