Datei-Hash unter Windows 10 berechnen

Windows Powershell öffnen und zu dem Verzeichnis navigieren, wo die zu prüfende Datei abgespeichert ist.

Folgendes Beispiel errechnet den Hashwert der angegebenen Datei auf Basis eines SHA-256 Hash-Algorithmus:

Get-FileHash .\kali-linux-2020.4-rpi.img.xz -Algorithm SHA256

Das Ergebnis kann dann mit der Download-Seite abgeglichen werden:

Hash
----
D39A920FA5B825AFA31148DAA10DF2B07E1422A81A214DABAD08E33856B5EF23

Signup-Link aus öffentlichen Freigaben entfernen

Nextcloud zeigt bei der öffentlichen Freigabe von Ordnern oder Dateien standardmäßig folgenden Link-Text im Footer an:

Holen Sie sich ihr eigenes kostenloses Konto

Um diesen Link zu entfernen, muss lediglich die nachfolgende Zeile in der config.php eingefügt werden:

'simpleSignUpLink.shown' => false,

Ultimative Leistung unter Windows 10 freischalten

Um den Energiesparplan „Ultimative Leistung“ freizuschalten, muss zunächst die Eingabeaufforderung (cmd) geöffnet und folgendes eingegeben werden:

powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61

Nach Bestätigung mit Enter wird die GUID des Energieschemas „Ultimative Leistung“ ausgegeben.

Anschließend noch folgendes Kommando eingeben und mit „Enter“ bestätigen:

powercfg.cpl

Es öffnet sich das Fenster mit den Energieoptionen und man kann den nun freigeschalteten Plan auswählen:

Energieoptionen

Geänderte Zellen automatisch markieren

Der folgende VBA-Code formatiert jede Zelle, die eine Änderung erfährt, mit roter Textfarbe:

Private Sub Worksheet_Change(ByVal Target as Range)
    Target.Font.ColorIndex = 3
End Sub

VBA ist die Abkürzung für Visual Basic for Applications.

Teilstring ersetzen mit REPLACE

Gelegentlich kommt es vor, dass man nur einzelne Zeichenfolgen in bestimmten Feldern einer mySQL-Datenbank ersetzen möchte.

Ein Anwendungsfall kann zum Beispiel ein seit vielen Jahren betriebener WordPress-Blog sein, welcher bereits betrieben wurde, als SSL-/TLS-Verschlüsselung bei privaten Webseiten noch nicht Usus war.

In diesem Fall können in der Datanbank obsolete href-Attribute mit HTTP (anstatt HTTPS) enthalten sein, die heute zu Sicherheitshinweisen in modernen Browsern führen.

Bei mitunter Tausenden von Einträgen kann folgendes Statement dann sehr hilfreich sein:

UPDATE `table`
SET `column` = REPLACE(`column`, 'http://example.com', 'https://example.com')
WHERE `column` LIKE '%http://example.com%'
;

Tabelle, Spaltenbezeichnungen und Suchstring müssen nur noch auf die eigenen Bedürfnisse angepassst werden.

iOS: VPN On-Demand-Profil für Verbindung zur FRITZ!Box in fremden WLAN-Netzwerken

Die unten dargestellte Profildatei ist zum Import auf einem iOS-Gerät vorgesehen, um in fremden (= nicht auf der Whitelist stehenden) WLAN- bzw. WiFi-Netzwerken immer automatisch eine VPN-Verbindung aufzubauen.

Das Shared Secret muss nach Base64 kodiert werden. Link zu einem Base64-Encoder

Die nachfolgende XML-Datei* basiert auf einer Version von GitHub. Die EvaluateConnection-Funktion wurde auskommentiert, damit immer eine VPN-Verbindung aufgebaut wird, und nicht nur bei bestimmten URLs im heimischen WLAN (z.B. zur FRITZ!Box oder *.local)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PayloadContent</key>
	<array>
		<dict>
			<key>IPSec</key>
			<dict>
				<key>AuthenticationMethod</key>
				<string>SharedSecret</string>
				<key>LocalIdentifier</key>
				<!-- FRITZ!Box Benutzername -->
				<string>FRITZ!Box Benutzername</string>
				<key>LocalIdentifierType</key>
				<string>KeyID</string>
				<key>RemoteAddress</key>
				<!-- DDNS-URL der FRITZ!Box -->				
				<string>DDNS-URL der FRITZ!Box</string>
				<key>SharedSecret</key>
				<data>
				xxxxxxxxxxxxxxxxxx
				</data>
				<key>XAuthEnabled</key>
				<integer>1</integer>
				<key>XAuthName</key>
				<!-- FRITZ!Box Benutzername -->
				<string>FRITZ!Box Benutzername</string>
				<key>XAuthPassword</key>
				<!-- FRITZ!Box Passwort des Benutzers -->
				<string>xxxxxxxxxxxxxxxxxx</string>
				<!-- VPN-On-Demand Codeblock -->
				<key>OnDemandEnabled</key>
				<integer>1</integer>
				<key>OnDemandRules</key>
				<array>
				<!-- VPN beim Zugriff auf Heimnetz-Adressen aufbauen -->
					<!-- <dict> -->
						<!-- <key>Action</key> -->
						<!-- <string>EvaluateConnection</string> -->
						<!-- <key>ActionParameters</key> -->
						<!-- <array> -->
							<!-- <dict> -->
								<!-- <key>Domains</key> -->
								<!-- <array> -->
									<!-- <string>*.local</string> -->
									<!-- <string>*.fritz.box</string> -->
									<!-- <string>fritz.box</string> -->
								<!-- </array> -->
								<!-- <key>DomainAction</key> -->
								<!-- <string>ConnectIfNeeded</string> -->
							<!-- </dict> -->
						<!-- </array> -->
					<!-- </dict> -->
					<dict>
						<!-- VPN bei ausgewählten WLAN-Netzen deaktivieren -->
						<key>InterfaceTypeMatch</key>
						<string>WiFi</string>
						<key>SSIDMatch</key>
						<array>
							<string>Name of my Home Network</string>
							<string>Company WiFi</string>
						</array>
						<key>Action</key>
						<string>Disconnect</string>
					</dict>
					<dict>
						<!-- VPN bei aktiver WLAN-Verbindung aktivieren -->
						<key>InterfaceTypeMatch</key>
						<string>WiFi</string>
						<key>Action</key>
						<string>Connect</string>
					</dict>
					<dict>
						<!-- VPN im Mobilfunknetz nicht aktivieren -->
						<key>InterfaceTypeMatch</key>
						<string>Cellular</string>
						<key>Action</key>
						<string>Disconnect</string>
					</dict>
					<dict>
						<!-- VPN Default state -->
						<key>Action</key>
						<string>Disconnect</string>
					</dict>
				</array>
				<!-- VPN-On-Demand Codeblock ENDE-->
			</dict>
			<key>IPv4</key>
			<dict>
				<key>OverridePrimary</key>
				<integer>1</integer>
			</dict>
			<key>PayloadDescription</key>
			<string>Configures VPN settings</string>
			<key>PayloadDisplayName</key>
			<string>VPN</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.vpn.managed.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
			<key>PayloadType</key>
			<string>com.apple.vpn.managed</string>
			<key>PayloadUUID</key>
			<!-- PayloadUUID -->
			<string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
			<key>PayloadVersion</key>
			<real>1</real>
			<key>Proxies</key>
			<dict>
				<key>HTTPEnable</key>
				<integer>0</integer>
				<key>HTTPSEnable</key>
				<integer>0</integer>
			</dict>
			<key>UserDefinedName</key>
			<string>VPN FRITZ!Box</string>
			<key>VPNType</key>
			<string>IPSec</string>
		</dict>
	</array>
	<key>PayloadDisplayName</key>
	<string>VPN on Demand-Profildatei</string>
	<key>PayloadIdentifier</key>
	<!-- PayloadIdentifier -->
	<string>xxxxxxxxxxxxxxxxxx</string>
	<key>PayloadRemovalDisallowed</key>
	<false/>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<!-- PayloadUUID -->
	<string>xxxxxxxxxxxxxxxxxx</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>

Die Datei muss mit der Dateiendung .mobileconfig gespeichert werden, z.B. vpn.mobileconfig

Diese Profildatei wurde erfolgreich unter iOS 13.4.1 getestet.

* XML = Extensible Markup Language

WordPress: xmlrpc.php mittels BrowserMatch absichern

.htaccess-Datei im WordPress-Root-Verzeichnis um folgende Zeilen ergänzen:

<IfModule mod_setenvif.c>
  <Files xmlrpc.php>
    BrowserMatch "WordPress" allowed
    BrowserMatch "wp-iphone" allowed
    BrowserMatch "Jetpack by WordPress.com" allowed
    Order Deny,Allow
    Deny from All
    Allow from env=allowed
  </Files>
</IfModule>

Anderslautende User-Agents werden vom Server abgewiesen.