Dienstag, 13. Januar 2026

Security - WhatWeb Open-Source-Webscanner: Webanwendungen analysieren identifizieren

WhatWeb ist ein Open-Source-Webscanner, der speziell dafür entwickelt wurde Webanwendungen zu analysieren und zu identifizieren. Ein ähnliches Vorgehen habe ich bereits unter Security - Nmap Netzwerkscanner und Kali Linux und Hacking - Netzwerkscanner, nmap, Reverse Shell und Password Cracking mit hashcat beschrieben.


Da eine Installation per Windows nicht direkt möglich ist, empfehle ich eine Installation per Windows-Subsystem für Linux (WSL) oder über Distrobox.

WhatWeb erkennt, welche Technologien eine Website nutzt z. B. Content-Management-Systeme (CMS) wie WordPress oder Joomla, Webserver (Apache, Nginx), Programmiersprachen (PHP, Python), Frameworks (React, Angular) und vieles mehr.

Durch Skripte und Automatisierung kann WhatWeb große Mengen an Websites scannen, um z. B. veraltete Software oder unsichere Konfigurationen zu finden.

Installation

git clone https://github.com/urbanadventurer/WhatWeb.git

Da WhatWeb in Ruby geschrieben ist, müssen jetzt noch die Abhängigkeiten installiert werden:
sudo apt install -y ruby ruby-dev ruby-bundler build-essential make libssl-dev zlib1g-dev libyaml-dev

Jetzt in den Ordner "./WhatWeb" wechseln und den Webscanner installieren:
sudo make install

Metadaten anzeigen in in eine XML-Datei schreiben
whatweb shemel.de --log-xml=results.xml

User-Agent hinzufügen
whatweb --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" https://shemel.de


Sonntag, 4. Januar 2026

Open-Source-KI: LLaMA von Meta ist nicht Open Source!

LLaMA wird von Meta unter einer modifizierten MIT-Lizenz veröffentlicht, die kommerzielle Nutzung erlaubt, aber mit starken Einschränkungen:

  • Kein uneingeschränkter Zugang: Der Quellcode ist verfügbar, aber der Zugriff auf die Modellgewichte ist nur nach Genehmigung durch Meta möglich.
  • Nutzungsbedingungen: Meta verbietet die Nutzung für bestimmte Anwendungen (z. B. militärische Zwecke, Hate Speech) und verlangt die Einhaltung ihrer Richtlinien.

Nach der Open Source Initiative (OSI) muss echte Open-Source-Software zum Beispiel die folgenden Kriterien erfüllen:

  • Freie Weitergabe: Jeder darf die Software weitergeben.
  • Quellcode verfügbar: Der Quellcode muss offen zugänglich sein.
  • Keine Diskriminierung: Keine Einschränkung von Personen, Gruppen oder Einsatzgebieten.

LLaMA ist nicht im klassischen Sinne Open Source, sondern ein eingeschränkt verfügbares Modell mit kontrolliertem Zugang. Meta nutzt hier den Begriff „Open Source“ hier eher im Marketing-Sinne.

Eine Alternative ist OLMo, ein Sprachmodell des Allen Institute for AI (Ai2). Es hebt sich durch radikale Transparenz und Offenheit von vielen anderen KI-Modellen ab. Oder auch Apertus als das erste große, vollständig offene und mehrsprachige Sprachmodell (LLM) aus der Schweiz.

Weitere Infos erhält man unter:
Open-Source-KI-Definition (OSAID)

 

Sonntag, 14. Dezember 2025

Steam Deck - Mit Hilfe von Distrobox Linux-Distribution (Ubuntu) in einem Container starten

SteamOS setzt als Immutable System auf ein schreibgeschütztes Root-Dateisystem, weshalb Discover nur Flatpak-Pakete anbietet, klassische Kommandozeilenprogramme sucht man hier vergeblich. Zwar sind Basistools vorinstalliert, doch zusätzliche Software lässt sich nicht einfach über pacman nachinstallieren. Wer weitere Tools benötigt, kann auf das vorinstallierte Distrobox zurückgreifen.


Bei Distrobox handelt es sich um einen Wrapper für Podman oder Docker, welche durch im Hintergrund genutzt werden. Mit wenig Aufwand lassen sich so Images von verschiedenen Linux Distribution (z. B. Ubuntu oder Debian) nutzen, über die sich wiederum weitere Anwendungen installieren lassen.

Hintergrund: Distrobox startet andere Linux-Distributionen in Containern, so kann man deren Paketverwaltung nutzen und sogar auf schreibgeschützten Systemen "sudo" Befehle ausführen. Die Container sind nahtlos ins Host-System integriert. Sie greifen auf das Home-Verzeichnis, Netzwerk und USB-Geräte zu, nutzen aber den Kernel des Hosts, somit handelt es sich nicht um virtuelle Maschinen!

Um z.B. Ubuntu zu installieren ist jetzt eigentlich nur noch der folgende Befehl notwendig: 
distrobox-create -n ubuntu -i docker.io/library/ubuntu:24.04

Es empfiehlt sich aber die folgenden Anleitung "Install Distrobox and Podman PERMANENT on Steam Deck >= 3.5" durchzuführen.

nano ~/.bashrc Add the following line if it’s not already there:
export PATH=/home/deck/.local/bin:$PATH

Install and configure Distrobox To install Distrobox in the defined $PATH, use one of the following commands depending on whether you need the latest version (--next) or not:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix $HOME/.local

After installing, create the file ~/.distroboxrc if it doesn't already exist. Open it with:
nano ~/.distroboxrc

Add the following lines to configure Distrobox:
# Ensure the graphical apps can talk to the Xwayland session
xhost +si:localuser:$USER >/dev/null
# Force the use of pulseaudio inside the container
export PIPEWIRE_RUNTIME_DIR=/dev/null
# Needed to ensure distrobox can find the podman binary we previously downloaded
export PATH=/home/deck/.local/bin:$PATH
export PATH=$PATH:/home/deck/.local/bin

Install and configure Podman To install Podman, download the latest version from the GitHub releases page:
curl -L -o /home/deck/Downloads/podman-launcher-amd64 https://github.com/89luca89/podman-launcher/releases/download/v0.0.5/podman-launcher-amd64

Next, move and rename the Podman binary with ROOT permissions to the $PATH:
mv /home/deck/Downloads/podman-launcher-amd64 /home/deck/.local/bin/podman

Then, make Podman executable:
chmod +x /home/deck/.local/bin/podman

Configure the deck user’s UID and GID mapping with the following commands:
sudo touch /etc/subuid /etc/subgid
sudo usermod --add-subuid 100000-165535 --add-subgid 100000-165535 deck 

Configure Distrobox Icon folder - (if you install distrobox with sudo) To ensure Distrobox can store its icons correctly, set the proper permissions on the /home/deck/.local/share/icons folder with:
chown deck:deck /home/deck/.local/share/icons

Verify installations After the installation steps, verify that both Distrobox and Podman are properly installed and configured. Use the following commands:
which distrobox which podman distrobox --version podman --version podman info

To create and test a ROOTLESS container, run:
distrobox create --image docker.io/library/ubuntu:24.04 --name ubuntu

For a ROOT container, use:
distrobox create --image docker.io/library/ubuntu:24.04 --name rubuntu --root


Jetzt lässt such Ubuntu mit dem folgenden Befehl starten: 
distrobox enter ubuntu

Jetzt lässt sich z.B. neofetch installieren:
sudo apt install neofetch 

Container starten / stoppen:
distrobox enter ubuntu
distrobox stop ubuntu


Einen Container löschen:
distrobox rm 

Welche Images zur Verfügung stehen:
distrobox create -C 

Liste der Container:
distrobox list

Container klonen:
distrobox create --clone ubuntu -n ubuntu-klon

Portweiterleitung einrichten:
distrobox create --unshare-netns -a "-p 8080:8000" -i ubuntu -n ubuntu-nonet
Mit "-p 8080:8000" landen alle Anfragen, die an Port 8080 des Host-Systems ankommen, direkt im Container an Port 8000.

Pakete bei distrobox create mithilfe von --additional-packages (-ap) direkt in den Container integrieren (z.B. neofetch und iproute2):
distrobox create -i debian:latest -n debian -ap "neofetch iproute2"

Container beim Erzeugen mit der Option --home einen beliebigen anderen Ordner als Heimatverzeichnis verwenden lassen:
distrobox create -i debian:latest -n debian --home ~/temp/debianhome

Anwendungen in das Startmenü des Host-Systems einbinden, mit --extra-flags kann Parameter hinzufügen:
distrobox-export
distrobox-export --app chromium



Dienstag, 4. November 2025

Steam Deck - Dymo LabelWriter 450 Treiber installieren und Etiketten drucken mit gLabels (Linux)

Ich selber besitze schon seit Jahren einen Dymo LabelWriter 450 um Adressetiketten oder auch Briefmarken zu drucken. Allerdings wird die Software von Dymo selber nur für Windows oder macOS angeboten. In diesem Beitrag beschreibe ich, wie auch eine Installation unter Linux (ArchLinux) beim Steam Deck funktioniert.


LabelWriter anschließen
Wird der LabelWriter per USB angeschlossen, so kann mit dem Kommando lsusb überprüfen ob er korrekt erkannt wurde.
Bus 001 Device 012: ID 0922:0020 Dymo-CoStar Corp. LabelWriter 450


CUPS installieren
Wird der LabelWriter korrekt erkannt, muss als nächstes die Druckersoftware CUPS (sudo pacman -S cups) installiert werden. Siehe hierzu auch meinen Beitrag Steam Deck - Install HP printer and scanner driver for ArchLinux (CUPS).
Ubuntu: sudo apt install cups cups-client printer-driver-dymo


DYMO-Druckertreiber installieren
Jetzt muss der DYMO-Druckertreiber installiert und gebaut werden.
git clone https://aur.archlinux.org/dymo-cups-drivers.git
cd ~/dymo-cups-drivers/
nano PKGBUILD
makepkg -si

Sollte der Fehler "==> FEHLER: Cannot find the fakeroot binary." erscheinen, muss noch das folgende Paket installiert werden: 
sudo pacman -S --needed base-devel

Sollte der Fehler "configure: error: C preprocessor "/lib/cpp" fails sanity check See `config.log' for more details ==> FEHLER: Ein Fehler geschah in build()." und in der in der "config.log" finden sich Fehler, wie z.B. 
/usr/include/bits/local_lim.h:38:10: fatal error: linux/limits.h: No such file or directory
/usr/include/sys/cdefs.h:31:3: error: #error "You need a ISO C or C++ conforming compiler to use the glibc headers"

Make und/oder GCC können die Header-Dateien auf Steam Deck nicht finden! SteamOS entfernt einige Header-Dateien, um Speicherplatz zu sparen. Um diese wiederherzustellen muss man folgendes tun:
sudo steamos-devmode enable
#sudo steamos-unminimize --dev


DYMO-Drucker einrichten
Die Adresse des Dymo LabelWriter muss ermittelt werden, damit man ihn unter CUPS einrichten kann:
lpinfo -v | grep DYMO
direct usb://DYMO/LabelWriter%20450?serial=11081117133724 

Mit Hilfe von "lpadmin" kann der Drucker jetzt angebunden werden. Hier mit dem  Linuxtreiber von DYMO, auch die RAW-Variante wäre möglich.
lpadmin -p dymo-label -v usb://DYMO/LabelWriter%20450?serial=11081117133724  -P /usr/share/cups/model/lw450.ppd
#lpadmin -p dymo-label-raw -v usb://DYMO/LabelWriter%20450?serial=11081117133724 -E -m raw


Mit dem Befehl "lpstat -v" kann überprüft werden, welche Drucker aktuell angebunden sind:

Die hinzugefügte Drucker-Instanz muss noch in CUPS aktiviert werden, bevor man sie verwenden kann:
cupsenable dymo-label #Warteschlange starten
cupsaccept dymo-label #Aufträge annehmen


Mit dem folgenden Befehl, lässt sich direkt über die Konsole ein schneller Testausdruck machen:
echo Dymo Druckertest! > testdruck.txt
lp -d dymo-label testdruck.txt


Etiketten drucken mit gLabels
Mit Hilfe von gLabels lassen sich Etiketten und Visitenkarten erstellen. 
Es gibt sogar passende Vorlagen für Dymo (Datei-> Neu, Marke -> Dymo, Seitenformat: beliebig) auswählen. Nun auf "Dymo 99012" Große Adressaufkleber klicken und die Auswahlmöglichkeiten bestätigen. 

Es können auch aufbereitete CSV-Datei in einem Textfeld importiert werden (Serienbrief-Funktion).


Dienstag, 14. Oktober 2025

Domain - Digitale Spurensuche mit dem Tool theHarvester

theHarvester ist ein OSINT-Tool, das automatisiert öffentlich verfügbare Informationen zu Domains aggregiert. Es nutzt über 40 Datenquellen (Suchmaschinen, DNS-Scanner und Metadaten-Dienste), um IPs, Subdomains, E-Mail-Adressen und mehr für eine initiale Angriffsflächenanalyse zu erfassen. Eine weitere Möglichkeit hatte ich vor einiger Zeit unter Security - Amass (Automated Attack Surface Mapping).


theHarvester ist über Kali Linux bereits vorinstalliert (siehe auch Windows-Subsystem für Linux (WSL) - Installation Kali Linux). Alternativ lässt sich theHarvester auch via Docker, pipx oder über den Python-Paketmanager uv aus dem lokalen Quellcode starten. Siehe auch https://github.com/laramies/theHarvester/wiki/Installation.

Unter Windows 11 kann man die Module mit dem Paketmanager winget installieren:
winget install uv Git.Git
git clone https://github.com/laramies/theHarvester
cd theHarvester


Steam Deck (Arch Linux) Installation:
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.local/bin/env
git clone https://github.com/laramies/theHarvester
cd theHarvester

Ausführen (-d 'shemel.de' Domain welche zu untersuchen ist, -b 'all' alle hinterlegten Quellen durchsuchen):
uv run theHarvester -d shemel.de -b all


Mit Hilfe von -f result, lassen sich alle Ergebnisse in eine result.xml und result.json schreiben.

Die Meldung "Missing API key for …" bedeutet, dass diese Dienste einen API-Schlüssel benötigen, für die in der Regel Gebühren anfallen. Den Schlüssel muss man in die Datei "api-keys.yaml" eintragen.

Freitag, 5. September 2025

QR-Code - Scan mit Risiko

Was früher nur in Werbung oder auf Verpackungen auftauchte, ist heute allgegenwärtig "QR-Codes". Wie man diese generieren kann habe ich unter Windows - QR Code generieren (Edge-Browser oder Word-Dokument) und Python - Generierung von QR-Code Bildern beschrieben.

Hinter dem praktischen Zugang zu Webseiten und Informationen lauert eine wachsende Gefahr. Cyberkriminelle nutzen manipulierte QR-Codes, um Nutzer auf täuschend echte Phishing-Seiten zu locken. Wer unbedacht scannt, riskiert, sensible Daten preiszugeben oder Opfer von Identitätsdiebstahl zu werden. Die perfide Masche: Die eingebetteten Links wirken harmlos, sind es aber oft nicht.

Mehr Sicherheit durch spezialisierte QR-Code-Apps

Die Standard-Kamera-Apps von Android und iOS zeigen beim Scannen eines QR-Codes meist nur die Zieladresse und das oft verkürzt oder unvollständig. So bleibt verborgen, wohin der Link tatsächlich führt. Mit raffiniert gestalteten URLs können Angreifer Nutzer gezielt täuschen. Abhilfe schaffen dedizierte QR-Code-Leser-Apps. Sie bieten mehr Transparenz, zeigen die vollständige URL und helfen dabei, verdächtige Links frühzeitig zu erkennen. 

Wer auf Nummer sicher gehen will, sollte beim nächsten Scan lieber zweimal hinschauen!

Montag, 25. August 2025

Agile Softwareentwicklung - Nützliche Tricks für den Git-Alltag

In den Beiträgen Agile Softwareentwicklung - Software im Team entwickeln hatte ich mich mit den allgemeinen Begriffen (Contributor, Maintainer, Pull Request / Merge Request, Commit und Issue) beschäft und GitHub Flow kurz erklärt.

In der c't 17/2025 gibt es einen guten Beitrag zum Thema "Git-Stolperfallen im Alltag". Siehe https://www.heise.de/select/ct/2025/17/2519512434440349082.

Dabei werden folgende nützliche Tricks für den Git-Alltag gegeben:

  • Wie kann ich verhindern, dass sensible Daten versehentlich in einem Commit landen?
    • Stelle sicher, dass Dateien mit sensiblen Informationen (z.B. .env, config.json) in der .gitignore Datei aufgeführt sind.
  • Wie finde ich heraus, welche Code-Zeile von welchem User kommt?
    • git blame <dateiname>
    • Für detaillierte Historie:
    • git log -L :functionName:<dateiname>
    • Für eine bestimmte Zeilenrange:
    • git log -L 10,20:<dateiname>
  • Wie behebe ich einen missratenen Commit vor dem Push? Ich vergesse häufig Dateien oder vertippe mich in der Commit-Nachricht. 
    • git commit --amend
  • In einem Projekt pflegen wir zahlreiche Branches und verlieren häufig den Überblick. Was können wir besser machen? 
    • Ein konsistentes Namensschema hilft sofort beim Erkennen des Zwecks eines Branches
    • feature/<ticket-id>-<beschreibung>
    • bugfix/<ticket-id>-<beschreibung>
    • hotfix/<beschreibung>
    • release/<version>
  • Ich habe ein Projekt gestartet, an dem nun weitere Leute mitwirken sollen. Wie sollten die Commits idealerweise aussehen, damit das Projekt wartbar bleibt?
    •  Ein guter Commit sollte kurz, präzise und aussagekräftig sein. Ideal ist ein zweigeteilter Aufbau:
    • Kurze Zusammenfassung (max. 50 Zeichen)
    • Optional: ausführlichere Beschreibung (max. 72 Zeichen/Zeile)
  • Ich habe zahlreiche unterschiedliche Änderungen an einer Datei vorgenommen, wie reiche ich diese in mehreren Commits ein? 
    • Datei nicht direkt committen, sondern Änderungen stagen
    • git add -p <dateiname>
  • Ein Git-Repository soll auf einen anderen Server verschoben werden. Wie geht das am einfachsten? 
    • Repository klonen und auf neuen Server pushen
    • git clone --bare <url-zum-alten-repo>
    • cd <repo-name>.git
    • git remote add new-origin <url-zum-neuen-repo>
    • git push --mirror new-origin