Seiten

Donnerstag, 31. Dezember 2020

E-Mail - Archivierung mit MailStore Home

Mit MailStore Home ist es möglich schnell und komfortable seine privaten E-Mails aus nahezu allen E-Mail-Quellen kostenlos zu archivieren und zu durchsuchen.


Downoad unter https://www.mailstore.com/de/produkte/mailstore-home/, anschließend kann die Installation als normales Programm oder auch als "portable Version" erfolgen.


Danach kann man bestehende Profile vom Rechner importieren (in meinem Fall MS Outlook) oder aber auch direkt vom Mailserver die Nachrichten abholen, sofern die Zugangsdaten hinterlegt werden.


Jetzt kann die Archivierung gestartet werden. Es können beliebig viele Profile angelegt und übertragen werden.

 

Natürlich ist es auch möglich mit der Exportfunktionen E-Mails aus dem Archiv wiederherzustellen oder eine Migration von E-Mail Postfächern durchzuführen.

Montag, 28. Dezember 2020

Intel 386 DX/33 - Microsoft MS-DOS 6.22 Installation (DELL 333D)

Schon länger liegt ein DELL 386er (Dreisechsundachtziger) bei mir im Keller und durch das Coronavirus bietete sich die Zeit im Lockdown an, endlich mal die aktuelle MS-DOS Version (6.22) zu installieren.


Download und Diskettenerstellung

Der Download von MS-DOS (Hinweis: die original Disketten sind in meinem Besitz, von meinem ersten PC ein 486 DX2/66) in verschiedenen Versionen ist hier möglich: https://winworldpc.com/product/ms-dos/622 .


Die Erstellung der Installations Disketten (3,5″ ≈ 1,4 MB) ist mit Hilfe von

und einem USB-Diskettenlaufwerk möglich. Auch eine Installation von CD-Rom wäre mit der der Boot-Diskette von WinFuture (hier ist direkt ein CD-ROM Device Driver mit dabei) möglich .

Hinweis: Unter Windows 10 gibt es das folgende Problem "USB (A:\) floppy drive won't refresh it's contents when switching floppies in Windows", daher am Besten mit einem Windows XP, 7 Rechner oder unter Linux die Disketten erstellen. Wenn man nicht immer wieder den Rechner neustarten will.

Booten und Installation 

Nach dem eine Startdiskette (MS-DOS 6.22 Disk1 oder Boot-Diskette von WinFuture) erstellt wurde, startet die Installation automatisch oder es muss die SETUP.EXE ausgeführt werden.



Defekter Bootsektor

Den Fehler kennt vermutlich jeder aus den DOS-Zeiten. Zum Beispiel mit der Meldung "Betriebssystem fehlt".

Oft genügt es, von der Startdiskette zu booten und den MBR (Masterbootrekord) neu zu schreiben. Dies geht mit dem folgenden Befehl: 

fdisk /mbr

Eine neue Partitionstabelle oder auch ein neuer MBR kann auch mit dem Tool TestDisk geschrieben werden, welches nur ca. 1 MB groß ist


DELL 333D - 33 MHz

Siehe auch MBR (Masterbootrekord) - CHS (cylinder/head/sector) Adressierung.

 



Intel 80386 Prozessor und Coprozessor 80387

Für den Intel 80386 Prozessor wurden unterschiedliche Versionen von Coprozessoren vertrieben.
Original Intel 80387DX (nicht i387) Coprozessor für 386 und 286
Hinweis: "Die Produktion des i386EX als Embedded-Version des i386SX wurde erst im Jahr 2007 eingestellt." Siehe auch https://de.wikipedia.org/wiki/Intel_80386.


Freitag, 25. Dezember 2020

Windows-Subsystem für Linux (WSL) - Installation WSL 2

In dem Artikel Windows-Subsystem für Linux (WSL) - Installation habe ich wie beschrieben, wie man das WSL installieren kann. In diesem kurzem Update beschreibe ich die Installation/Update auf WSL 2.


"WSL2 features a Linux kernel running inside Windows 10 and is built on the core technology of Hyper-V to provide better Linux application support and improved file performance."

Installierte Linux-Distributionen anzeigen

wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         1

WSL2 Linux kernel update package herunterladen

Hinweis: "Virtual Machine Platform" muss aktiviert sein (PC muss danach neugestartet werden):
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

 

Überführen der WSL-Version in WSL 2:
wsl --set-version <distribution name> <versionNumber>

Nach Abschluss der Installation sollte WSL 2 als Standardversion festgelegt werden:
wsl --set-default-version 2

 

Donnerstag, 24. Dezember 2020

Apache HTTP Server - Basis Wissen (Module mod_info, mod_status, mod_remoteip)

Als Erweiterung zum Artikel Apache HTTP Server - vHost Konfiguration bietet sich ein Blick in die offizielle Apache Dokumentation für die Module mod_info, mod_status und mod_remoteip an.

Apache Module mod_info

Bietet einen umfassenden Überblick über die Serverkonfiguration, https://httpd.apache.org/docs/2.4/mod/mod_info.html.

Achtung: Sobald mod_info auf den Server geladen ist, ist seine Funktion in allen Konfigurationsdateien verfügbar, einschließlich Dateien pro Verzeichnis (z. B. .htaccess). Dies kann sicherheitsrelevante Auswirkungen auf die Webseiten haben. Daher am Besten den Zugriff auf den "localhost" beschränken, bzw. nur für bestimmte IP-Adressen freigeben.

<Location "/server-info">
    SetHandler server-info
    # Allow access from server itself
    Require ip 127.0.0.1

    # Additionally, allow access from local workstation
    Require ip 192.168.1.111
</Location>


Apache Module mod_status

Bietet Informationen zur Serveraktivität und -leistung, https://httpd.apache.org/docs/2.4/mod/mod_status.html.

Achtung: Auch hier ist zu beachten, dass beim Laden des Moduls mod_status der Server die Funktion in allen Konfigurationsdateien verfügbar ist, einschließlich der Dateien pro Verzeichnis (z. B. .htaccess). Dies kann auch hier sicherheitsrelevante Auswirkungen auf die Webseite haben! Daher am Besten den Zugriff auf den "localhost" beschränken, bzw. nur für bestimmte IP-Adressen freigeben.

<Location "/server-status">
    SetHandler server-status
    # Allow access from server itself
    Require ip 127.0.0.1

    # Additionally, allow access from local workstation
    Require ip 192.168.1.11
</Location>

Apache Module mod_remoteip

Das Module Remote IP https://httpd.apache.org/docs/2.4/mod/mod_remoteip.html ersetzt die ursprüngliche Client-IP-Adresse durch die IP-Adresse des useragent, die von einem Proxy oder einem Load Balancer über die Anforderungsheader angezeigt wird. So kann man dennoch auf die IP-Adresse des Besuchers reagieren.


Apache Serversignatur

Anpassung unter: /etc/apache2/conf-available/security.conf

ServerSignature
Bestimmt ob die Serversignatur angezeigt wird.
ServerSignature On | Off

ServerTokens
Bestimmt die Art der Serversignatur, wobei Full die meisten und Prod die wenigsten Informationen ausgibt.
ServerTokens Full | OS | Minimal | Minor | Major | Prod


Mittwoch, 23. Dezember 2020

Deutscher Pressevertrieb - PDF Dateien mit Hilfe von PowerShell Script sichern

Die DPV bietet viele verschiedene Android Apps um sein digitales Abo auf dem Smartphone/Tablet lesen zu können. Leider gibt es keine direkte Möglichkeit ein komplettes PDF herunterzuladen. Mit Hilfe einem PowerShell Script und dem Beitrag Linux - PDF Dokumente zusammenfügen / Merge PDF files ist dies dennoch möglich.


Das nachfolgende Beispiel wurde mit der App von "Schöner Wohnen" erfolgreich getestet!

Der Download innerhalb der App wird im Speicher des Smartphones unter dem folgenden Ordner abgelegt:

  • storage/696E-E61B/Android/data/com.audiencemedia.app2928/files/content/2bfdd49d-d113-4b18-b9ab-e84abbc94789/3abcca1a-0f52-4f7b-86c7-06dea1a9f24a/2

 

Diesen Ordner am Besten mit TotalCommander suchen und auf den PC kopieren (zum Beispiel per WebDav Share).

Jetzt kann das folgende PowerShell Script verwendet werden: https://www.shemel.de/download/powershell/GetPdfFromDigitalEpaper.ps1
Hinweis: Der Paramter zum Donwload Ordner muss natürlich ggf. angepasst werden.

Zum Abschluss im Ordner "..\3abcca1a-0f52-4f7b-86c7-06dea1a9f24a\2\pdf" den Befehl pdfunite *.pdf 01-2021.pdf , aus dem Beitrag https://sebastianhemel.blogspot.com/2020/09/linux-pdf-dokumente-zusammenfugen-merge.html ausführen!

# (c) 2020 - Sebastian Hemel, www.shemel.de
# Get One PDF File from "SCHÖNER WOHNEN Digital E-Paper" - https://play.google.com/store/apps/details?id=com.audiencemedia.app2928
######################################################################################################################################################
# Note: You can find the download folder in the app directory
# storage/696E-E61B/Android/data/com.audiencemedia.app2928/files/content/2bfdd49d-d113-4b18-b9ab-e84abbc94789/3abcca1a-0f52-4f7b-86c7-06dea1a9f24a/2
######################################################################################################################################################

# Loop through files in a directory using PowerShell
$pathToFiles = 'D:\Downloads\Schöner Wohnen 01-2021\3abcca1a-0f52-4f7b-86c7-06dea1a9f24a\2\'
$copyPath = $pathToFiles + 'pdf\'
$scriptPath   = '.\*'
$pattern1 = "page-" # only get files like page-02_2eb264de-f649-4c11-8bee-eeef504aaf48.stxml
$fileNames = Get-ChildItem -Path $scriptPath -Recurse -Include *.stxml

# generate folder for pdfs
New-Item -Name „pdf“ -ItemType Directory -Path $pathToFiles

foreach ($file in $fileNames) {

    if ($file.name -match $pattern1){
        $filesInDirectory = $file.Basename + $file.Extension
        Write-Output $filesInDirectory

        [xml]$xml = Get-Content $pathToFiles$filesInDirectory
        #Write-Output $xml.stage.scene.pdf | Where-Object {$_.contentURL} | Select-Object id
        #Adding leading zeros to a file name
        $newFilename1 = "{0:d3}$($_.extension)" -f [int]$fileNames.IndexOf($file)
        $counter = 0
        
        #copy PDF-files and rename it
        # page-02_2eb264de-f649-4c11-8bee-eeef504aaf48.stxml
        # ==> 5009b369-ff27-4136-9cad-7424be6b0c8b.pdf ==> ./pdf/000-1.pdf
        # ==> d90b35dc-ce19-4e78-b944-87d9503f4850.pdf ==> ./pdf/000-2.pdf
        $xml.stage.scene.pdf | Where-Object {$_.contentURL} | Select-Object id | ForEach-Object {
            $fileName = $_.id
            $fileName = $pathToFiles + $fileName
            Write-Output 'Copy: '$fileName
            Copy-Item $fileName $copyPath$newFilename1'-'$((++$counter))'.pdf'
        }
    }
}


Montag, 7. Dezember 2020

Synology NAS - Migration bzw. Daten umziehen auf ein neues NAS

In dem folgenden Beitrag erkläre ich, wie man von einem Synology DS216SE seine Daten bzw. Festplatten auf ein Synology DS220+ NAS migrieren kann. Im Artikel Synology NAS - Speicherplatz erweitern, hatte ich bereits vor einiger Zeit beschreiben, was zu tun ist, wenn man größere Festplatten verwenden möchte.

Backup durchführen

Zur eigenen Sicherheit sollte ein Backup der Daten gemacht, auch wenn es sehr unwahrscheinlich ist, dass nach der Migration etwas nicht mehr funktioniert!
Hier bietet sich die Möglichkeit alle Daten auf eine externe angeschlossene Festplatte zu kopieren, eine Datensicherungsaufgabe zu erstellen oder ein Cloud Sync durchzuführen.

Synology Systemkonfiguration sichern

Die Systemkonfiguration kann man unter

  • Systemsteuerung > Aktualisieren & Wiederherst. > Sicherung der Konfiguration und Klick auf "Konfiguration sichern"

lokal speichern.

Siehe hierzu auch die Anleitung Migration zwischen Synology NAS (DSM 6.0 und höher)

Synology Migrationsvorgang vorbereiten

  1. Die aktuellste Firmware sollte installiert sein. Prüfen unter "Systemsteuerung > Aktualisieren & Wiederherst.".
  2. Systemkonfiguration sichern, wie oben beschrieben.
  3. Prüfen, ob die Migration vom Alten- zum Neuen-Modell überhaupt möglich ist. Siehe auch 2.1 Festplattenmigration
  4. Synology NAS herunterfahren und vom Strom nehmen.
  5. Festplatten aus dem Gehäuse nehmen und in das neue NAS einbauen.

Jetzt kann das neue Synology NAS gestartet werden. Jetzt warten, bis das gepiepst hat. Anschließend kann der Migrationsvorgang gestartet werden.

Synology Migrationsvorgang starten

Das neue NAS sollte man jetzt unter der Eingabe von find.synology.com im Browser finden. Alternativ kann man auch den Synology Assistant verwenden oder die richtige IP-Adresse in der Fritz!Box suchen.
  1. Es sollte nun unter "Migrieren" angezeigt werden. Ausführen mit einem Klick auf den Button.
  2. Auswählen von "Migration: Meine Daten und die meisten Einstellungen und Daten behalten"
  3. Jetzt den Assistenten bis zum Ende durchgehen.
    • Hinweis: Die Migration der Daten dauert ca. 15 - 20min.
  4. Systemkonfiguration wieder einspielen (optional), siehe Punkt oben. Hinweis: Wird nur im Notfall benötigt.


Raspberry Pi - Docker Compose installieren

Docker Compose ist ein Tool zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern. 

Hinweis: Docker muss zuvor installiert sein. Siehe auch Raspberry Pi - Docker installieren.

Compose verwendet eine YAML-Datei, um die Dienste der Anwendung zu konfigurieren. Anschließend kann man alle Dienste in der erstellten Konfiguration starten. Siehe hierzu auch https://docs.docker.com/compose/.

Die akutelle Compose-Version erhält man wie z.B. auch für Ubuntu über den Python-Paketmanager Pip.

Installation von Pip für Python 3:
sudo apt-get install python3-pip

Installation von Docker Compose:
sudo pip3 install docker-compose


Sonntag, 6. Dezember 2020

Raspberry Pi - Docker installieren (ARM - Exit Code 139)

Die Installation von Docker ist relativ einfach, benötigt wird nur ein Raspberry Pi mit bereits installiertem Raspberry Pi OS und einem SSH-Zugang. Mit Hilfe der Docker Software kann man verschiedenste Anwendungen in einer Containervirtualisierung starten.

Installation von Docker

Die Installation ist mit dem folgenden Befehl per curl möglich. Siehe hierzu auch https://github.com/docker/docker-install.

curl -fsSL https://get.docker.com -o get-docker.sh

Hinweis: Docker wird in der Regel auf x64-Systemen ausgeführt, dies bedeutet es müssen spezielle ARM-Images verwendet werden. Normale Images sind daher nicht kompatibel. Siehe auch mein Hinweis unten!

Docker-Installation Überprüfen

Ermittlung der Version, Informationen abrufen:
sudo docker version
sudo docker info


Hello-World-Image herunterladen und starten:
sudo docker run hello-world # No output on Pi (ARM)
sudo docker run hypriot/armhf-hello-world 

Anzeigen der heruntergeladen Docker-Images:
sudo docker image ls

Anzeigen der aktuellen Docker-Prozesse:
sudo docker ps -a
sudo docker container ls

Logfile des Containers anzeigen
sudo docker logs 7dd670ad4109

Docker Container Exit Codes (Exit Code 139: SIGSEGV)

Beim Starten des oben genannten Hello-World-Image, gab es das Problem das keine Ausgabe des Image erfolgte. Der Grund war, dass hier ein nicht kompatibles Image für ARM verwendet wurde.

Alle Container auflisten, die beendet wurden:
sudo docker ps --filter "status=exited"

Docker Container / Images löschen

# Delete all containers
sudo docker rm $(sudo docker ps -a -q)
# Delete all images
sudo docker rmi $(sudo docker images -q)

Samstag, 5. Dezember 2020

Raspberry Pi - Temperatursensor DS18B20 - Update I

Kurzes Update für den Artikel Raspberry Pi - Temperatursensor DS18B20. Jetzt gibt es ein Python Script, welches direkt die ID des Sensors herausfindet.

Mit dem Script temperatur.py ist es nicht mehr notwendig die ID (/sys/bus/w1/devices/xx-xxxxxxxxxxxx/w1_slave) des Sensors manuell anzupassen.

Download: wget https://www.shemel.de/download/raspberry/temperatur.py

Freitag, 4. Dezember 2020

E-Mail - Posteingang mit der richtigen Strategie bearbeiten (Inbox Zero Methode)

Bereits vor einigen Jahren habe ich in den Artikeln Gehen Sie effizient mit E-Mails um! und Schlüssel zur Produktivität? Konzentrieren Sie sich auf eine Aufgabe! beschrieben, wie man effektiv mit dem Kommunikationsmittel E-Mail umgeht. In diesem Beitrag möchte ich nochmals darauf eingehen, wie man mit der richtigen Strategie den Posteingang bearbeiten kann.


E-Mails regelmäßig bearbeiten, aber nicht ständig

Es bietet sich an E‐Mails nur z.B. viermal am Tag zu lesen. Hierfür sollte man sich feste Abholzeiten und einen Antwortzeitraum festlegen. Dies geht natürlich nur, wenn man keinen direkten Kundenkontakt hat und alle Anfragen per E-Mail ankommen.
In allen anderen Situationen bieten sich wie bereits oben beschrieben feste Abhol- und Antwortzeiträume z.B. stündlich oder auch nur täglich an. Nur so ist es möglich produktiv arbeiten zu können.

Wichtig: Die definierten Zeiträume sollte man fest im Kalender blocken, um die E-Mails abarbeiten und damit verbundene Aufgaben erledigen zu können.


Merlin Manns Inbox Zero Methode

Zum Erledigen der E-Mail-Flut bietet sich die Strategie Merlin Manns Inbox Zero Methode an.

Immer wenn man sein E-Mail Programm öffnet, muss eine der 4 folgenden Aktionen durchgeführt werden (reines checken von E-Mails ist somit nicht mehr möglich):

  1. E-Mail für mich relevant? Nein => löschen, weiterleiten, delegieren.
    • Ja, dann weiter mit Punkt 2.
  2. Ist etwas zu unternehmen mit der Nachricht (z.B. Info Mails)? Nein => Ablage (archivieren).
    • Ja, dann weiter mit Punkt 3.
  3. Ist der Zeitaufwand dafür kleiner als 3 Minute? Ja => Sofort erledigen / beantworten.
    • Nein, dann weiter mit Punkt 4.
  4. E-Mail kennzeichnen oder einen Termin setzen um sie bearbeiten zu können!

Nutzen Sie das Parkinsonsche Gesetz, verkürzen Sie Ihre Arbeitszeit, damit Sie Aufgaben auf das Wesentliche beschränken können!


Sonntag, 22. November 2020

Android - Smartphone VNC Fernwartung ohne Root-Rechte

Mit Hilfe von alpha vnc lite funktioniert die Fernwartung eines Android Smartphone auch OHNE ROOT Rechte. 


Hierfür muss nur die folgende App aus dem Play Store installiert werden:

Anschließend muss der "remote control" für alpha vnc lite noch bestätigt werden:

 

 

Nach Start des alpha vnc lite "Server" ist jetzt ein Zugriff mit jedem beliebigen VNC-Client möglich, dafür lässt sich z.B. der VNC Connect - Remote Desktop VNC Viewer (RealVNC) verwenden.


Dienstag, 17. November 2020

Linux - Search backward through the history (history completion)

Mit dem Befehl "history-search-backward" ist es möglich innerhalb der history nach Eingabe der ersten Zeichen mit PgUp-Taste alle Zeilen zu finden, welche genauso begonnen haben.

Die wichtigsten Befehle hier sind die letzten beiden, um den Verlauf schrittweise zu durchsuchen.

"\e[B": history-search-forward
"\e[A": history-search-backward

Diese Zeilen müssen in der sudo nano /etc/inputrc Datei platziert/einkommentiert werden, dem Startskript für das von der Bash verwendeten Readline-Dienstprogramm.

Seiehe auch https://www.gnu.org/software/bash/manual/html_node/Commands-For-History.html .


Dienstag, 3. November 2020

Linux - Die gesamten Handbuchseiten (man pages) durchsuchen

Manchmal muss man bestimmte Wörter in allen Handbuchseiten (manual pages) nachschlagen. Hierbei hilft der Befehl "man -k <beispiel>".

"man" ist der wohl häufigste Weg, um an Informationen über Befehle des jeweiligen Programm zu bekommen.


Eine nützliche Funktion ist "man -k <beispiel>", um alle man-Seiten zu durchsuchen. Das ist sehr praktisch, wenn man den genauen Befhel nicht kennt.


Montag, 2. November 2020

WordPress - Brute-Force Angriffe mit XML-RPC und REST-API

Das freie Content-Management-System WordPress ist weit verbreitet und oft werden nach einer Erstinstallation keine neuen Releases bzw. Security Updates mehr eingespielt. Hierdurch ergeben sich über die XML-RPC Schnittstelle in Verbindung mit der REST-API Möglichkeiten für eine Brute-Force-Attacke.


1. Schritt: REST-API Wordpress User herausfinden


2. Brute-Force-Angriff über die XML-RPC Schnittstelle

  • Über die xmlrpc.php lassen sich Anfragen zur Authentifizierung per Webservice mit Benutzernamen und das Passwort senden.
  • Benötigt man diese Schnittstelle nicht, sollte man die xmlrpc.php deaktivieren. Mit Hilfe des WordPress XML-RPC Validation Service kann man überprüfen, ob der Service aktiv ist.
  • Bei GitHub finden sich viele xmlrpc-bruteforcer, mit nur wenigen Schritten, lassen sich so mit Hilfe von einem Python-Script Brute-Force-Angriffe starten.

 

Samstag, 24. Oktober 2020

Windows - Gelöschte Dateien und Partitionen von Festplatten wiederherstellen

Eine Datenrettung von alten Festplatten oder auch das Wiederherstellen von Partitionen lässt sich mit Hilfe der folgenden Tools durchführen.

TestDisk => https://www.cgsecurity.org

"TestDisk is powerful free data recovery software! It was primarily designed to help recover lost partitions and/or make non-booting disks bootable again when these symptoms are caused by faulty software: certain types of viruses or human error (such as accidentally deleting a Partition Table). Partition table recovery using TestDisk is really easy."

Recuva => https://www.ccleaner.com/recuva

"Accidentally deleted an important file? Lost files after a computer crash? No problem - Recuva recovers files from your Windows computer, recycle bin, digital camera card, or MP3 player!"

Microsoft diskpart => https://docs.microsoft.com/de-de/windows-server/administration/windows-commands/diskpart

Alle Datenträger auf dem Computer anzeigen:

  • list disk

Datenträger "richtig" löschen

  • list disk
  • select disk 1  (z.B.)
  • clean all
  • Hinweis: "clean all" gibt an, dass alle Sektoren auf dem Datenträger genullt und alle auf dem Datenträger enthaltenen Daten vollständig gelöscht werden.

Partition formatieren

  • list volume
  • select volume 3  (z.B.)
  • format fs=ntfs label="Windows" quick

 

Mittwoch, 21. Oktober 2020

NET USE - Netzwerkfreigabe einem Laufwerksbuchstaben zuordnen

Unter Linux gibt es den "mount" zum Einbinden von Laufwerken, unter Windows geht dies mit "net use". Nachfolgend einige Beispiele.

Ein Netzwerkpfad mit den nächsten freien Laufwerksbuchstaben einbinden:

net use * \\Server\Pfad\Ordner

Den Netzwerkpfad das Laufwerk U zuweisen, und Verbindung wieder herstellen:

net use /persistent:yes u: \\Server\Pfad\Ordner 

Hinweis /persistent:yes|no gibt an, ob die Verbindung beim nächsten Anmelden wieder hergestellt werden soll.

Zum Löschen einer Verbindung:

net use u: /delete


Freitag, 9. Oktober 2020

Linux - Statische Kopie einer Webseite anlegen mit wget

Bereits in anderen Artikeln habe ich auf die Verwendungsmöglichkeiten von wget hingewiesen. Siehe z.B. Rund um Linux - Einige nützliche Befehle für die Shell II (Download mit wget und seq), Webservice Abfrage per Konsole mit wget und Erreichbarkeit von Webseiten oder Servern mit wget überpfüfen inkl. E-Mail Versand. Mit wget lassen sich sehr gut statische Kopien von Websites erstellen.


Ein einfaches wget [url] ist leider nicht ausreichend, da u.a. verschiedene Ressourcen pauschal nicht mitgeladen werden. 

Damit dies vollumfänglich funktioniert, sind die folgenden Parameter notwendig (siehe auch http://www.gnu.org/software/wget/manual/wget.html):

wget -p -nh -H -k -E -w 1 -r -l 1 [URL]

Siehe auch c't 21/2020 S. 154 Praxis Websites kopieren.

‘-p’ => ‘--page-requisites’
This option causes Wget to download all the files that are necessary to properly display a given HTML page. This includes such things as inlined images, sounds, and referenced stylesheets.

‘-nH’ => ‘--no-host-directories’
Disable generation of host-prefixed directories. By default, invoking Wget with ‘-r http://fly.srk.fer.hr/’ will create a structure of directories beginning with fly.srk.fer.hr/. This option disables such behavior.

‘-H’ => ‘--span-hosts’
Enable spanning across hosts when doing recursive retrieving (see Spanning Hosts).

‘-k’ => ‘--convert-links’
After the download is complete, convert the links in the document to make them suitable for local viewing

‘-E’ => ‘--adjust-extension’

If a file of type ‘application/xhtml+xml’ or ‘text/html’ is downloaded and the URL does not end with the regexp ‘\.[Hh][Tt][Mm][Ll]?’, this option will cause the suffix ‘.html’ to be appended to the local filename.

‘-w seconds’ => ‘--wait=seconds’
Wait the specified number of seconds between the retrievals. Use of this option is recommended, as it lightens the server load by making the requests less frequent.

‘-r’ => ‘--recursive’
Turn on recursive retrieving. See Recursive Download, for more details. The default maximum depth is 5.

‘-l depth’ => ‘--level=depth’
Specify recursion maximum depth level depth (see Recursive Download).


Allgemein nützliche Informationen zu wget finden sich auch hier: Frequently Asked Questions About GNU Wget.

Donnerstag, 24. September 2020

Linux - Anzeigen des TIMESTAMP in der history mit Hilfe von HISTTIMEFORMAT

Ruft man die history (Verlauf über die Befehlszeile) auf, werden normalerweise die Befehle mit #ID und der Befehl selber angezeigt. Es kann aber vorteilhaft sein, den Zeitstempel zusammen mit dem Befehl anzuzeigen.


Umgebungsvariable HISTTIMEFORMAT

HISTTIMEFORMAT in der ~/.bashrc mit dem folgenden Inhalt setzen:

HISTTIMEFORMAT="%F %T "

Hinweis: Der Zeitstempel kann nicht rückwirkend gesetzt, er wirkt sich nur auf die neu hinzugefügten Befehle aus!

 

Sonntag, 13. September 2020

Linux - PDF Dokumente zusammenfügen / Merge PDF files

Mit Hilfe von poppler-utils ist es möglich per Kommandozeile PDF Dokumente in andere Formate umzuwandeln zu manipulieren oder auch zusammenfügen.

Installation (wenn Paket noch nicht vorhanden):
sudo apt-get install poppler-utils

Mit dem Befehl pdfunite ist das das Zusammenfügen von PDF Dateien per Kommandozeile ein Kinderspiel:
pdfunite Datei1.pdf Datei2.pdf AusgabeDatei.pdf

Alle PDF Dateien in einem Verzeichnis zusammenfügen (alphabetisch sortiert):
pdfunite *.pdf all.pdf

Weitere nützliche Tools:

  • pdftotext - Entnahme von Text
  • pdftoppm - Umwandlung von PDF nach PPM/PNG/JPEG
  • pdfimages - Entnahme von Bildern

Detailierte Infos zur Verwendung unter https://wiki.ubuntuusers.de/poppler-utils/.

Hinweis: Auch unter Windows ist eine Verwendung zum Beispiel mit Hilfe des Windows-Subsystem für Linux (WSL) möglich.

Freitag, 11. September 2020

Windows-Subsystem für Linux (WSL) - Installation

Mit Hilfe des Windows-Subsystem für Linux (WSL) können die enthaltenen Anwendungen des Ubuntu Images nativ unter Windows ausgeführt werden.

Update 25.12.2020: Windows-Subsystem für Linux (WSL) - Installation WSL 2 

Update 09.01.2022: Windows Subsystem für Linux (WSL) - Version 1.0 veröffentlicht

Damit eine Installation erfolgen kann, muss zuvor das optionale Feature „Windows-Subsystem für Linux“ aktiviert werden. 

Dies geht am schnellsten über den folgenden PowerShell (als Administrator ausführen) Befehl:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Alternativ geht dies auch per GUI:

Start Menu öffnen und nach "OptionalFeatures" suchen:

"Windows Subsystem für Linux" auswählen => "OK" klicken

Danach muss der PC neugestartet werden!


Anschließend können per Microsoft Store die folgenden Versionen installiert werden.

Hierfür kann man einfach nach "Ubuntu" suchen oder die nachfolgenden Links aufrufen:

Ubuntu 16.04 LTS: https://www.microsoft.com/de-de/p/ubuntu-1604/9pjn388hp8c9
Ubuntu 18.04 LTS: https://www.microsoft.com/de-de/p/ubuntu-1804/9n9tngvndl3q
Ubuntu 20.04 LTS: https://www.microsoft.com/de-de/p/ubuntu-2004/9n6svws3rx71

Weitere Informationen gibt es im Ubuntu Wiki: https://wiki.ubuntu.com/WSL


Montag, 7. September 2020

Linux - Netzwerkverbindung bzw. Erreichbarkeit von Ports testen

Mit der Hilfe von netcat lassen sich TCP/UDP Verbindungen bzw. Erreichbarkeit von Ports unter Linux testen.

Netcat ist in der Regel bereits vorinstalliert, kann ansonsten per netcat-openbsd installiert werden.

Netcat hat zwei Modi

  • Server: nc -l lokalport (nc -l 1234)

Netcat lauscht auf dem angegebenen Port für unbegrenzte Zeit auf eine eingehende Verbindung. 

  • nc 127.0.0.1 1234

Wurde eine Verbindung aufgebaut und wieder geschlossen wurde, beendet sich Netcat.

  • Client: nc zielserver zielport (nc -vz 192.168.1.110 80)

Mit der IP-Adresse 192.168.1.110 und dem Port 80 soll sich Netcat verbinden. In dem Client-Modus muss auf dem Zielrechner und -port schon eine Server-Anwendung warten, andernfalls beendet sich Netcat mit einem Fehler.


Hinweis: Funktioniert natürlich nur, solange keine Firewall zwischen den jeweiligen Netzwerken der Systeme die Verbindungen blockiert!

Wichtige Parameter:

  • -v  => aktiviert ausführlichere Ausgaben
  • -z  => nc scannt nur nach lauschenden ("listening") Diensten (Portscan)
  • -l  => nc wartet auf eingehende Verbindungen ("listen")

Auch ein simpler Dateitransfer ist möglich, siehe https://de.wikipedia.org/wiki/Netcat#Einfaches_Dateikopieren.

Auch ein einfacher Portscan ist mit netcat möglich:

nc -zv localhost 20-23

Siehe auch Liste der standardisierten Ports https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports.

  • 22 - TCP/UDP => Secure Shell (SSH) wird für verschlüsselte Fernwartung und Dateiübertragung genutzt (scp, sftp) sowie für getunnelte Portweiterleitun. 

 

Samstag, 29. August 2020

DSGVO - Was sind personenbezogene Daten?

Personenbezogenen Daten sind alle Informationen, die sich auf eine identifizierte oder identifizierbare Person beziehen.

Beispiele für personenbezogene Daten:

Bankdaten

  • Kreditkarte, Kontonummer, Einkommen, Kontostände

Physische Merkmale

  • Geschlecht, Haut-, Harr-, Augenfarbe, Statur, Kleidergröße

Kenn-Nummern

  • Identifikationsnummer, Personalausweisnummer, Sozialversicherungsnummer

Besitzmerkmale

  • Fahrzeug-, Immobilieneigentum, Grundbucheintrag

Onlinedaten

  • Standortdaten, IP-Adresse, E-Mail-Adresse, Cookie-Kennung

Gesundheits-Informationen

  • Genetische Daten, Krankendaten

Werturteile

  • Schul- und Arbeitszeugnisse

Allgemeine Personendaten

  • Name, Alter, Geburtsdatum, Anschrift, Familienstand

 

Siehe auch Bundesdatenschutzgesetz (BDSG) § 46 Abs. 1 https://www.gesetze-im-internet.de/bdsg_2018/__46.html .

Montag, 24. August 2020

Fritz!Box - Anrufe per Python mit TR-064 und fritzconnection

Mit Hilfe von fritzconnection lassen sich Anrufe per TR-064 initiieren als auch beenden. Siehe auch https://avm.de/service/schnittstellen bzw. "AVM TR-064 – First Steps". Mit wenigen Zeilen Python-Quellcode kann man so z.B. auf Ereignisse bei einem Raspberry Pi reagieren.


Vorbereitung: Ein FRITZ!Box-Benutzerkonto erstellen

Siehe auch https://service.avm.de/help/de/FRITZ-Box-7590/018/hilfe_system_user_konzept.


Installation von fritzconnection (unter Python3)

Hinweis: Die hier gezeigte Lösung funktioniert nur mit Python3!
 
Package installer for Python (pip), wenn noch nicht vorhanden:
sudo apt-get install python3-pip

Damit die Python .whl files installiert werden können, müssen folgenden Packete vorhanden sein:
sudo apt-get install libxml2-dev libxslt-dev python-dev
Error: Please make sure the libxml2 and libxslt development packages are installed.

Installation von fritzconnection package via pip
sudo pip3 install fritzconnection
Hinweis: Da die Python .whl files (wheels) installiert werden müssen, dauert die Installation ca. 5-10min.

Script 

#!/usr/bin/python
from time import sleep
from fritzconnection import FritzConnection

fc = FritzConnection(
        address='192.168.1.1',
        user="ring",
        password="123456",
        )

print(fc)  # print router model informations
#fc.reconnect()  # get a new external ip from the provider

# call_action takes two required arguments: the service- and the action-name
# https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_voip-avm.pdf
fc.call_action("X_VoIP1","X_AVM-DE_DialNumber",
                arguments={"NewX_AVM-DE_PhoneNumber ": "**9"})
# **9 (Rundruf) Alle angeschlossenen Telefone klingeln
sleep(5)
# Disconnect the dialling process.
fc.call_action("X_VoIP1","X_AVM-DE_DialHangup")


Fehler die auftreten können:

fritzconnection.core.exceptions.FritzActionFailedError: UPnPError:
errorCode: 501
errorDescription: Action Failed


=> Bei der FRITZ!Box muss unter 'Telefonie/Telefonbuch/Wählhilfe' der Punkt 'Wählhilfe verwenden' ausgewählt werden. ErrorCode 501 erscheint beim Fehlen der Wählhilfe. 

fritzconnection.core.exceptions.FritzSecurityError: UPnPError:
errorCode: 606
errorDescription: Action Not Authorized

=> Der Benutzer der FRITZ!Box hat nicht die notwendigen Rechte einen Anruf zu tätigen.



Sonntag, 16. August 2020

Fritz!Box - VoIP telefonieren per PC

Vor kurzem habe ich mir ein Logitech H820e Headset gekauft, um auch während der "Skype Meetings" im Homeoffice eine gewisse Bewegungsfreiheit zu haben. Da ich das Headset auch privaten nutzen will, möchte ich eine meiner VoIP Rufnummern mit dem Headset koppeln, wenn ich am PC sitze.


Voice Over IP als internes Gerät an der Fritz!Box aktivieren

Bei einer AVM FRITZ! Box 7590 muss man unter "Telefonie" => "Telefoniegeräte" den Button "Neues Gerät einrichten" anklicken.

Anschließend wählt man "Telefon" einrichten aus und klickt auf „Weiter“.

Als Telefon muss jetzt "LAN/WLAN (IP-Telefon)" ausgewählt werden und für das Telefon ein Benutzername und Passwort vergeben werden. Hinweis: Das Passwort wird später für die VoIP Software zur Anmeldung benötigt.


 

VoIP Software installieren und konfigurieren

Als kompakte und kostenlose Software verwende ich PhonerLite

Dabei kommen jetzt die folgenden Einstellungen zum Einsatz und schon kann es mit der Internettelefonie am PC losgehen.

  • Registrar/Domain: IP-Adresse/Alias der FritzBox!
  • Benutzername/Passwort: Welche bei der o.g. Einrichtung vergeben wurden.
 


Donnerstag, 13. August 2020

Raspberry Pi-hole - DNS Service, FTL is not running

Sollte es nach der Einrichtung von Pi-hole zu den folgenden Problemen kommen, kann ein kurzer "checkout" vom "master Branch" helfen.

Meldungen:

  • DNS service is not running
  • DNS resolution is not available
  • FTL is not running

Die aktuelle Version von Pi-hole mit dem folgenden Befehl installieren, anschließend werden auch die einzelnen Dienste (lighttpd, FTL service und DNS service) wieder gestartet:

pihole checkout master

Please note that changing branches severely alters your Pi-hole subsystems
Features that work on the master branch, may not on a development branch
This feature is NOT supported unless a Pi-hole developer explicitly asks!
Have you read and understood this? [y/N] y


Kommt es hierbei zu keiner Fehlermeldung, sollte Pi-hole wieder einwandfrei funktionieren!

 

Sonntag, 9. August 2020

Raspberry Pi-hole - Installation

Die Installation von Pi-Hole ist sehr schnell realisiert, wenn man die Ersteinrichtung des Raspberry Pi bereits durchgeführt hat.


Ersteinrichtung durführen


Hinweis: Der WLAN Zugang sollte nicht eingerichtet werden, da der Pi direkt per LAN-Kabel den Router verbunden wird!

Pi-hole - Installation

Ist man mit dem Raspberry Pi per SSH verbunden muss man nur den folgenden Befehl ausführen und die Pi-HoleInstallation wird automatisch gestartet.



Anschließend dem Installationsassistenten folgen und die folgenden Punkte auswählen:


Siehe auch: https://de.wikipedia.org/wiki/Quad9 inkl. Verschlüsselte Namensauflösung im Internet (#DNS over TLS) https://de.wikipedia.org/wiki/Domain_Name_System_Security_Extensions.




Hinweis: Die IP-Adresse habe ich in meinem Fall auf 192.168.1.111 eingestellt. Siehe auch Raspberry Pi - WLAN Konfiguration inkl. reconnect und statische IP "jessie".





Hinweis: Sollten andere Nutzer im Haushalt nicht damit einverstanden sein, muss der "privacy mode" angepasst werden.


Die Installation von Pi-Hole ist jetzt abgeschlossen!

Das generierte Passwort zum Login für das Web-Interface kann auf Wunsch mit dem folgenden Befehl angepasst werden:
pihole -a -p

Anschließend sollte der Pi neugestartet werden:
sudo reboot

Das Web-Iinterface ist unter http://pi.hole/admin oder http://192.168.1.111/admin zu erreichen. Hier lassen sich dann z.B. weitere Einstellungen für die "Whitelist" vornehmen, falls Webseiten einen "Adblocker" erkennen.


Pi-Hole als DNS-Server einrichten

Damit Pi-Hole als "Adblocker" arbeiten kann, muss jetzt bei jedem Client im Netzwerk die IP-Adresse des Pi´s als DNS Server eingetragen werden.
 
Update: Die Einstellungen für AVM FRITZ! Boxen funktioniert nicht korrekt (siehe Anleitung unten)! Aus Sicherheitsgründen unterdrückt die FRITZ!Box DNS-Antworten, die auf IP-Adressen im eigenen Heimnetz verweisen. Siehe auch https://en.wikipedia.org/wiki/DNS_rebinding.

Alternative: DNS-Server des Pi-Hole per DHCP bekannt machen

Folgende Einstellungen müssen bei der Fritz! Box vorgenommen werden:
  • "Heimnetz" => "Netzwerk" => "Netzwerkeinstellungen" => "IPv4-Konfiguration".
  • Jetzt unter "Lokaler DNS-Server" die IP-Adresse des Pi-Hole eintragen.
Jetzt sollten auf der Pi-Hole Weboberfläche "non-FQDN-Anfragen" erlaubt werden, damit im lokalen Netzwerk die Hostnamen der Fritz!Box weiterhin über den DNS-Namen erreichbar sind!


Die bessere Lösung ist aber den DNS-Server im Router (in meinem Fall eine FRITZ!Box 7590) anzupassen. Wie dies funktioniert, sieht man in den nachfolgenden Screenshots.





Hinweis: Es muss immer auch ein Backup DNS Server eingegeben werden. Falls der Pi mal einen defekt hat, kann man dennoch weitersurfen. In meinem Fall habe ich den von Cloudflare (1.1.1.1) verwendet.

Unter Settings => DNS (http://192.168.1.111/admin/settings.php?tab=dns) trägst man zuletzt noch die IP Adresse des Pi’s unter "Upstream DNS Server" ein:


Fazit: Weit über 50% von meinem Traffic ist jetzt werbefrei :-)