Re:

Image Screenshot_20240319_171639

Image Screenshot_20240319_171639

Image Screenshot_20240319_171639

Image Screenshot_20240319_183417

Image Screenshot_20240319_183434

Image Screenshot_20240319_183448

Image Screenshot_20240319_183456

Image Screenshot_20240319_183504

So, die Seite ist nun fertig

Und ich habe auch schon

https://www.davidvajda.de/david4">https://www.davidvajda.de/david4</URL>

bei den Bildern ersetzt. Ich zeige es im naechsten Beitrag wie.

\begin{verbatim}
# Mit diesem Bash Skript habe ich alle URL's aber nur bei den Bildern ersetzt

#!/bin/bash
sed 's/https://davidvajda.de/david4//https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4//g' davidvajda_dephpbb3.sql > a01.sql
sed 's/https://www.davidvajda.de/david4//https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4//g' a01.sql > a02.sql
sed 's/https://www.davidvajda.de/david3//https://www.ituenix.de/nextcloud/data/dave/files/Documents/david3//g' a02.sql > a03.sql
sed 's/https://davidvajda.de/david3//https://www.ituenix.de/nextcloud/data/dave/files/Documents/david3//g' a03.sql > a04.sql
sed 's/https://www.davidvajda.de/david2//https://www.ituenix.de/nextcloud/data/dave/files/Documents/david2//g' a04.sql > a05.sql
sed 's/https://davidvajda.de/david2//https://www.ituenix.de/nextcloud/data/dave/files/Documents/david2//g' a05.sql > a06.sql
sed 's/https://www.davidvajda.de/david//https://www.ituenix.de/nextcloud/data/dave/files/Documents/david//g' a06.sql > a07.sql
sed 's/https://davidvajda.de/david//https://www.ituenix.de/nextcloud/data/dave/files/Documents/david//g' a07.sql > a08.sql

Wie gesagt, ich verschwende nicht so viel Zeit in das Entwickeln von Homepages

Hier habe ich einen Funktionsplotter selbst gemacht

Wer da stoebert findet auch Compiler, die Programmiersprachen ganz gut koennen, aber nicht vollstaendig implementiert sind

Ich benutze, wie ich Linux benutze, meist fertige Tools, was Homepages betrifft. Ich interessiere mich fuer das Adminstrieren von Servern. Und Programmiersprachen setze ich gerne um. Der Funktionsplotter tut das. Da sind auch andere kleinere Mathematik Programme. Und ich mache jetzt MMX

Denn mein High Light ist ja jetzt Schaltungen bauen. Letzten Endes passt das gut zu Compilern.

Jetzt MMX.

Hier finden sich meine in PHP geschriebenen Programme, die ich selber schrieb

Also, gut ich bespreche das mal so -

wenn wir im Assembler Code

.586 angeben

ich teste gleich mal, ob das mit nasm geht, wird der Pentium-Befehlssatz aktiviert

Um zu testen ob das geht, muessen wir das niedrigste Bit testen. Was in eax ist

Also, mit cpuid koennen wir verschiedene Dinge Testen. Das tun wir ueber bits

Wenn ich

mov eax, 0000 0001h
cpuid

aufrufe.

Nein, ich muss mir zunaechst den CPUID Befehl genauer anschauen

Ok, einen Moment. Das hat aber mit MMX so weit erst Mal nichts zu tun. Ob ich den .586 Befehlssatz benutzen kann, verraet CPUID und dann ist MMX vorhanden

MMX geht dann so

movq mm0, SUMMAND1
movq mm1, SUMMAND2
paddusb mm0, mm1

Das heisst, einfach, dass SUMMAND1 so breit ist, dass 8 Byte rein passen, die aber einzeln addiert werden

OK, ich schaue mal.

OK, ich sehe, ich muss viele Register lernen. Dazu gehoeren

1.) Das Flag Register wurde stark erweitert 2.) Maschinenstatuswort MSW 3.) Kontroll-Register 4.) Debug-Register 5.) Modellspezifische Register

Also, jetzt erst Mal der CPUID Befehl

Also,

1.) Ich kann ohne den CPUID Befehl zu nehmen, also, noch keinen CPUID Befehl, kann ich testen, ob der ueberhaupt verfuegbar ist - das ist logisch - ob der ueberhaupt da ist - dazu verwende ich keinen CPUID Befehl, aber ich verwende Bit 21 des EFlag Registers 2.) Vorsicht nicht verwechseln, um den Pentium Befehlssatz zu aktivieren, verwende ich Bit 23. Das muss ich dann auch testen, ob ueberhaupt vorhanden

Vorsicht Bit 21 und Bit 23, das ist wie ssl und ssh. Der Unterschied zwischen ssl und ssh ist mir ja klar, blos, dass beide so aehnlich schluessel verwenden. Ich waere mal gespannt, ob es in C funktionen gibt, die Schluessel implementieren.

Natuerlich, keine Sorge, ich lasse bei meinem Programm nicht nach, ich schliesse nach wie vor das EEPROM an den Zilog Z80 an und lerne Zilog Z80 Befehlssatz und schreibe Harmlose x86 Programme. Und lerne das LCD. Aber trotzdem lerne ich noch was der CPUID macht und gucke schon mal, was man da so kann. Ich lerne schon im Vorraus. Ich frage nicht nach.

Gut, das probiere ich mal aus.

Mit OEffentlich geteilt Ich schreibe gleich mal ein Programm, was meine Prozessor Kennung ausgibt. Diese steht bei code 0, in ebx, ecx, edx.

Es hat funktioniert!!!

global      _start
section     .data
    outstr:     db  "____________", 0x00
    outstrlen:  equ \$-outstr
section     .text
    _start:
section     .568

    mov eax, 0x00
    cpuid

    mov edi, outstr

    mov [edi], ebx
    inc edi
    inc edi
    inc edi
    inc edi
    mov [edi], ecx
    inc edi
    inc edi
    inc edi
    inc edi
    mov [edi], edx

    mov edx, outstrlen
    mov ecx, outstr
    mov ebx, 1
    mov eax, 4
    int 0x80

    mov ebx, 0
    mov eax, 1
    int 0x80

david@laptop-peaq:~\$ nasm -f elf32 -g cpuid001.asm
david@laptop-peaq:~\$ ld -m elf_i386 -g cpuid001.o
david@laptop-peaq:~\$ ./a.out
GenuntelineI
david@laptop-peaq:~\$

Image Screenshot_20240319_192644

OK, alles klar - das ist eine etwas spezifische Extra Angelenheit, zu testen, ob der CPUID Befehl ueberhaupt da ist, auf jeder modernen Maschine waere er da.

Ich habe jetzt nicht getestet, ob er da ist - ich habe ihn einfach verwendet. Dann ist es ganz einfach

Ansonsten ist CPUID ganz einfach. Ich schreibe in EAX einen Wert - 0 steht der Herstellername als String angegeben

Das ist in der CPU fest verdrahtet

Und der Rest gibt irgendetwas wieder. Im EFlag-Register stehen Infos Bit 23 steht fuer MMX und so weiter. Oder in EAX steht drin, was das fuer eine CPU ist, genauer nicht als Name, sondern als Nummer.

Gut im naechsten Schritt probiere ich MMX aus. Dafuer habe ich mir was ausgedacht

Ich kann ja die Reihe

1+1+1+1+1

Berechnen

Dazu die Reihe

2+2+2+2+2

Dann die Reihe

3+3+3+3+3

Normalerweise muesste ich 8 mal fuer die gesamten Reihen rechnen. Ich probiere jetzt MMX aus

Dann muss ich das nur in Zahlen umrechnen, weil ich es sonst nicht darstellen kann, ich habe drei Moeglichkeiten

1.) Ich mache die Umrechnung fuer Darstellung selber 2.) Ich integriere das ganze in GCC 3.) Ich gebe es hexadezimal aus

Ich entscheide mich fuer letzteres.

Ich muss bei heutigen CPU's nicht mit CPUID testen, ob MMX vorhanden, ich gehe in meinem Falle mal davon aus. Fuer sinnvolle Apps, muss man das aber abfragen.

;; Also, ich habe herausgefunden, das geht so nicht, ich kann movq so nicht verwenden

global      _start
section     .data
    summand1   dq 0001020304050607h
    summand2   dq 0000000000000000h
    summe:      db '________'
    outstrlen:  equ \$-summe
section     .text
    _start:
section     .568

section .mmx
    movq        mm0, summand1
    movq        mm1, summand2

    paddusb mm0, mm1
    paddusb mm0, mm1
    paddusb mm0, mm1
    paddusb mm0, mm1
    paddusb mm0, mm1

    movq        summe, mm1

    mov edx, outstrlen
    mov ecx, summe
    mov ebx, 1
    mov eax, 4
    int 0x80

    mov ebx, 0
    mov eax, 1
    int 0x80

Ja, Entschuldigung, ich leite keine Daten weiter, die nicht zumindest von mir stammen. dass ich den CPUID Befehl heraus gesucht habe, genauso wie MMX - ich finde das gehoert (1.) zu meinen Thema - ich realisiere ja gerade den MIPS32 auf FPGA in VHDL und mache den Z80 an das LCD - das ist was anderes (2.) Ich benutze Linux nur - ich gebe da nichts weiter. Ich benutze das nachher in meiner Homepage, damit die tut (3.) Wenn ueberhaupt dann sind das Dinge aus dem eigenen Kopf, die ich mir wahrscheinlich selber ausdachte - wie zum Beispiel

bei meinen SQL Funktionen - die Idee mit De Morgan und der Menge.

Das Programm zu cpuid habe ich uebrigens selbst geschrieben und ist nicht abgeschrieben, da weit das geht, die Befehle habe nicht erfunden.

Aber das mit Strings habe ich so selbst gemacht.

Image Screenshot_20240319_200753

Erst Mal Rueckmeldung

1.) So schwer ist das mit gpg und pgp nicht zu verstehen - zertifkaten und Co - ich weiss das schon, aber ich brauche noch ein bisschen Ordnung 2.) CPUID und MMX ist schnell zu verstehen

Zu (2.) Ich habe mir CPUID genau angeschaut. Das erste ist, wir haben eine Funktionsnummer - ueblicherweise 0x00, 0x01, aber auch 0x02, 0x03. Die schreiben wir in EAX und fuehren den CPUID Befehl aus

Das ist nicht schwer zu verstehen. Bei 0x00 erhalten wir die Ausgabe wie vorher. Einen String, den der Hersteller liefert.

Die Bits bei 0x01 in EDX kann man alle verstehen

Zum Beispiel: Wenn man Computersysteme I/II gerlernt hat, kann man mit dem Cache umgehen. Das bedeutet - Es gibt

1.) Write Through - Durchschreibeverfahren - ich fahre durch die Stadt durch in die naechste - diesen Satz habe ich erfunden 2.) Umschreibeverfahren: Ich fahre um die Stadt herum in die Naechste 3.) Write Back - Rueckschreibeverfahren: Ich fahre an der Stadtgrenze der ersten Stadt zurueck und nicht in die naechste

Wenn man das verstanden hat, und wie der Cache geht, versteht man einige Bits ganz einfach. Diese gehoeren uebrigens glaube ich gerade nicht zu dem CPUID - sondern zu den Flags

Wir koennen zwischen Write Through und Write Back umschalten

Das Paging habe ich mal mit Assembler ausprobiert

Genau wie Register EAX und EBX heissen, heissen Register CR0 bis CR5. oder 4. Das sind einfach Control Register

Ich habe Paging mal programmiert, es war einfach

Ich kann es noch mal machen

Gut, mit CPUID koennen wir so Sachen ausfuehren, wie ob er 4 MByte Pages unterstuetz - oder auch PAE - Physical Address Extension - das bedeutet auf einer Maschine mit 32 Bit, koennen wir Addressen ueber 4 GByte RAM ansprechen.

Oder - es gibt fuer die CPU zwei Bits zur Termischen UEberwachung. Zwei Bits, die die Termische UEberwachung und steuerung erlauben, so etwas koennen wir damit machen

Ob MMX vorhanden ist, signalisiert Bit 23

Gut, das ist nicht schwer

MMX habe ich auch verstanden

Es gibt halt die Register MM0, bis MM7

Und der Witz ist - dass es Mathematische Befehle gibt

die heissen zum Beispiel PADD - oder POR, PAND

Vor dem Befehl steht ein P

dann gibt es Befehle zum Packen und Entpacken

Zum Packen beginnen sie mit PACK zum Entpacken mit PUPCK...

Was komisch aussieht ist es nicht. P voran

UPCK steht fuer UNPACK

Dann gibt es Befehle zum Bewegen

MOVQ und so weiter

Kein Problem

1.) Jetzt zu den Schluesseln

Wir muessen halt wissen, das weiss ich schon, was ich jetzt schreibe weiss ich schon - und ich kann es auch anwenden. ich habe ein Problem mit Schluesseln, wo die bei Linux gespeichert werden. Also, mit der Sache selbst habe ich kein Problem

Aber die Schluessel werden bei Linux irgendwo in /home/david/....

gespeichert. Sind diese Schluessel auch austauschbar

Kann ich etwa den Schluessel von SSH in SSL irgendwie verwenden. Das ist meine Frage

Also, erstens: Zur verschluesselung

Einen Text kann ich so verschluesseln

abc

Ich addiere ein a

Dann habe ich

bcd

Gut, ich kann weiter gehen und mit

xyz verschluesseln

Das ist ein normales Verschluesselungsverfahren. Diese Verschluesselungsverahren heissen synchron. Zum Entschluesseln wird derselbe Schluessel verwendet, wie zum Verschluesseln

Von

bcd

ziehe ich a ab

Ein Asynchrones Verschluesselungsverfahren geht anders

Ich verwende nicht den Schluessel zum Entschluesseln, wie ich ihn zum Verschluesseln verwendete

Dahinter steckt ein Algorithmus, der auf sehr viel Mathematik beruht. Es ist moeglich ihn praktisch mit sehr kleinen Primzahlen aus zu probieren. die braucht es. Exemplarisch als UEbung

Dabei kann man allerdings den Gedankengang hinter der Mathematik noch nicht automatisch nach vollziehen, auf den ersten Blick. In der Realitaet verwenden wir grosse Primzahlen

Jedenfalls haben wir

1.) Einen Schluessel zum Verschluesseln 2.) Einen Schluessel zum Entschluesseln

1.) Einen oeffentlichen Schluessel 2.) Einen privaten

Vorsicht. Wir haben noch etwas

1.) Sender 2.) Empfaenger.

Die Sache funktioniert nur in eine Richtung. Bei einem Synchronen Schluesselverfahren, muessen sowohl Sender als auch Empfaenger den Schluessel besitzen und es ist ganz egal wer ihn generiert hat

Der witz, beim Asynchronen

1.) Erstellen tut den Schluessel, der Empfaenger, nicht der Sender 2.) Dieser Schluessel ist oeffentlich 3.) Der Sender verschluesselt die Nachricht mit dem oeffentlichen schluessel 4.) Der Empfaenger entschluesselt die Nachricht mit dem privaten

Damit muessen privater und oeffentlicher Schluessel zusammen gehoeren. Sie wurden zusammen generiert

Dabei hat der Empfaenger den Schluessel frei gegeben und der Sender benutzt ihn, um die Nachricht zu verschluesseln. Diesse kann jetzt nicht mehr geknackt werden, mit dem Schluessel, der oeffentlich war und zum Verschluesseln

Der Empfaenger entschluesselt die Nachricht mit dem Privaten

a) So, bei einer Homepatge ist es so

1.) es gibt SSL 2.) Eine Website wird nicht etwa so verschluesselt dass der Inhalt der Homepage verschluesselt wird. Also nicht das HTML. Das waere komisch. Jeder kann auf die Homepage, warum verschluesseln? 3.) Aber der Nutzer gibt Daten ein. Zum Beispiel bei der Bank. Wenn er diese unverschluesselt ueber das Netz uebertraegt koennen sie mitgelesen werden

Nicht etwa, die Homepage der Bank wird verschluesselt ,damit sie keiner sieht, sondern, das was der Nutzer an IBAN's und Passwoertern eingibt

Dazu gibt es einen oeffentlichen Schluessel

Den hat die Homepage. Geht man auf die Homepage. Ruft der Browser den Schluessel ab. Damit verschluesselt der User seine eingegeben Daten. Diese werde zur Homepage uebertragen

Was der User hat ist der oeffentliche Schluessel und damit verschluesselt er automatisch im Browser die eingegeben Daten, nicht anders herum. Die Bank empfaengt die Daten. Und mit ihrem Privaten Schluessel wird es entschluesselt.

Jetzt zu SSL

Im Gegensatz zu SSH - wo eigentlich nicht jeder in das System rein kommt - SSL entspricht HTTPS - SSH - entspricht der Shell, ueber das Netzwerk

braucht es Zertifikate. Denn eine Homepage kann etwas vortaeuschen. Sie kann die Verschluesselung vortaeuschen

Hier muss ich genauer gucken. Also gibt es Zertifikate

Das Problem ist - wer erstellt die Zertifkate

Dafuer gibt es eine CA - typisch amerikanisches Wort - CA - Certificate Authority - Zertifizierungsstelle

Wir haben

1.) Privaten Schluessel 2.) oeffentlichen Schluessel 3.) Zertifikat

Damit das Zertifkat ausgestellt werden kann, braucht es eine CA

Damit haben wir von der CA aber mehr, als nur den Schluessel

1.) Schluessel 2.) Zertifikat

Die CA ist dazu da, Zertifikate zu erstellen. Aber die Schluessel muessen auch her. Zum Schluessel wird ein Zertifkat erstellt.

Gut, wir haben oeffentlichen und nicht oeffentlichen Schluessel

Privat und OEffentlich

Alles, was so funktioniert, heisst PGP - Pritty Good Privacy.

Das sind aber unterschiedliche dinge, ob ich

1.) SSL 2.) SSH 3.) GPG

verwende. GPG ist PGP - ein Programm, was unabhaengig einer Anwendung - SSH und HTTPS sind Anwendungen, verwendet werden kann, um zum Beispiel Texte zu verschluesseln.

Wenn ich ihnen eine E-Mail schicke und sie bieten mir einen oeffentlichen Schluessel an, kann ich die Mail nehmen und den Inhalt verschluesselt schicken. Das mache ich nicht mit der Mail an sich

der Mail Header bleibt erhalten. Das hat damit nichts zu tun. Ich verschluessele irgendeinen Inhalt und versende ihn so

HTTPS ist eine Anwendung, die braucht Zertifiakte, weil jeder jederzeit auf eine Homepage zu greifen kann. Dabei aber sensible Daten von irgendwo her uebertragen werden

Deswegen braucht es bei SSL - Zertifikate und CA

Das braucht es bei SSH gar nicht. Und bei GPG auch nicht

Mit GPG mache ich es selber. Mit SSH verwende ich auch schluessel, die ich austausche

Ich habe mir aber noch keine Gedanken gemacht, ob ich die Schluessel unter den Programmen austauschen kann. und ich habe mir keine Gedanken gemacht, welches Programm SSH zur Generierung von Schluesseln verwendet, ein eigenes? Gleich mal nachschauen.

ssh-keygen -t rsa -b 4096

Ja, ich habe nachgeschaut. und da steht es. Es ist etwas verwirrend und ich muss sagen, ich habe mir eben nicht viel Zeit genommen

Hier steht:

ssh-keygen

Also ssh - keygen. Und den Unterschied muss man beachten. Es erleichtert mich

Da steht aber ssh-keygen. Es ist also ein Programm von ssh, was die Schluessel generiert. SSH selber. Nicht ein allgemeines Programm zur Erstellung von Schluesseln. Da habe ich nicht lange genug hingeschaut

Der Witz ist naemlich

ssh-keygen -t rsa -b 4096

Wenn man sich das anschaut

ssh-keygen -t rsa -b 4096

sieht er vielen Befehlen zur Schluesselgenerierung aehnlich. RSA das muss man sich merken, ist einfach ein Algorithmus zur Verschluesselung. Es ist halt einer. Man koennte ihn selber nachprogrammieren. Aber mit dem 4096 und RSA sieht es aus, wie jedes beliebige Programm zur Verschluesselung

das hat mich durcheinander gebracht. Und - es gibt aber Dinge, die ich noch nicht gut weiss

Etwa, was ist ein Fingerprint

ich kann mit gpg umgehen und ich habe es oefter getestet

Jetzt kam die Pruefung, ich musste alle Zeit investieren. Ich habe mit gpg geuebt und es hat gut funktioniert

Ich habe damit geuebt, es hat funktioniert. Ich musste aufhoeren

Ich reihe es ein, zu den UEbungen mit

bash /etc/init.d gpg

aber auch

lvm

ich richte jeden Tag LVM auf zwei USB-Sticks ein

Und festplatten Verschluesselung mit Luks uebe ich auch an denen.

Die Seite mit zertbot und zertifikaten als SSL und HTTPS sicher zu machen, wie ich bei

ist uebrigens kein Problem. Ich kann eigene Zertifkate erstellen und eine CA. Allerdings nicht aus dem Kopf, das ist ein Unterschied. Aber fuer die Homepage verwendet man keine eigenen Zertifkate, sonst, gilt die Homepage trotzdem als unsicher. Zertifkate muessen anerkannt sein, ausser bei einem selber, sonst gelten sie als unsicher

HTTPS einrichten, mit den