script
Delete Older Files
$Path = "C:\temp" $Daysback = "-30" $CurrentDate = Get-Date $DatetoDelete = $CurrentDate.AddDays($Daysback) Get-ChildItem $Path | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item
openssl nameopt
OpenSSL unterstützt eine nette Option, falls man den Output in einem Script weiterverarbeiten will.
Hier die normale Ausgabe:
openssl x509 -in test.cer -noout -text
Certificate: Data: Version: 3 (0x2) Serial Number: 55:0d:00:d6:79:bf:17:7b Signature Algorithm: sha256WithRSAEncryption Issuer: C = US, O = Google Trust Services, CN = Google Internet Authority G3 Validity Not Before: Nov 27 14:02:00 2018 GMT Not After : Feb 19 14:02:00 2019 GMT Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.google.com
Und hier die Multiline Ausgabe:
openssl x509 -in test.cer -noout -text -nameopt multiline
Certificate: Data: Version: 3 (0x2) Serial Number: 55:0d:00:d6:79:bf:17:7b Signature Algorithm: sha256WithRSAEncryption Issuer: countryName = US organizationName = Google Trust Services commonName = Google Internet Authority G3 Validity Not Before: Nov 27 14:02:00 2018 GMT Not After : Feb 19 14:02:00 2019 GMT Subject: countryName = US stateOrProvinceName = California localityName = Mountain View organizationName = Google LLC commonName = *.google.com
Registry bearbeiten
Einträge in der Windows Registry lassen sich auch mit der Powershell einfach bearbeiten. Das kann etwa sinnvoll sein, wenn man von einem lokalen Administrator Account Einträge für Benutzer setzen muss. Problem dabei ist, dass die Powershell nur eigene Laufwerke für HKCU: und HKLM: erstellt. Damit kommt man nur in die Einstellungen vom Current User oder von Local Machine.
Glücklicherweise werden unter Accessing HKEY_USERS With Powershell
gleich verschiedene Methoden vorgestellt wie das trotzdem funktioniert.
Sinnvoll scheint mir, mit
New-PSDrive HKU Registry HKEY_USERS
ein neues Laufwerk anzulegen oder direkt ohne Powershell Laufwerksbuchstaben einen Wert zu setzen
Set-ItemProperty -Path Microsoft.PowerShell.Core\Registry::HKEY_USERS\S-1-5-21-1234567890-xxxxxxxxxx-yyyyyyyyyy-zzzzz\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name Wallpaper -Value C:\Pictures\cats.jpg
Ubuntu 18.10 Cosmic Cuttlefish
Ubuntu 18.10 Cosmic Cuttlefish und die Hostname Umbenennung
Eben das neue Ubuntu aufgesetzt. In einer Virtual Box. Aber eigentlich brauch ich gleich zwei solche Maschinen. Also was liegt näher als die VM zu klonen. Geht ja einfach, sogar eine neue MAC Adresse wird generiert. Jetzt noch schnell den zweiten Server umbenannt in /etc/hostname -> reboot -> hostname ist wieder der von Maschine 1.
Suchen, googlen, setzen mit hostname command. Reboot. Und immer wieder zurück auf dem alten Hostname. Was ist da los Ubuntu?
Es finden sich erste Hinweise dass das an cloud-init liegt. Was macht das mit meinem hostname, bitteschön? Auch DHCP wird nicht frisch geholt, aber das ist eine andere Geschichte…
/var/lib/cloud/instances/3f1ebbef-73c0-49db-9207-fde1dce2b8f4/cloud-config.txt
Exakt hier kann man den hostnamen ändern. Reboot und es wurde übernommen!
Update: Einen Reboot später -> wieder der alte Hostname!
Update: Um Ubuntu zu klonen und umzubenennen muss man diesen cloud configuration service abändern:
/etc/cloud/cloud.cfg
# This will cause the set+update hostname module to not operate (if true) preserve_hostname: true
grep binary file
Binary file (standard input) matches
-a | --text Process a binary file as if it were text; this is equivalent to the ‘--binary-files=text’ option.
Dosbox unter Windows 10
Mit einer kleinen Batch Datei kann man ganz einfach die Dosbox mit der im aktuellen Ordner nötigen Konfig aufrufen:
"c:\Program Files (x86)\DOSBox-0.74\DOSBox.exe" -conf dosboxMM4-5.conf
JPEG Dateierweiterung erzeugen
Einen Haufen Files im LOST Ordner. Ohne erweiterung. Aber fast alles Fotos…
Bitte einmal mit Mobaxterm und der Bash auf .jpg Umbenennen:
ls -1 | while read LINE; do mv $LINE $LINE.jpg; done
Powershell: Get-ADComputer
Eine Liste von Computerobjekten aus dem Active Directory holen. Nur Rechnernamen anzeigen
Get-ADComputer -Filter 'CN -Like "Prefix*"' | Select -Expand Name
Verify X509 Certificate
Es ist nicht ausreichend nur den Private Key zu überprüfen!
OpenSSL bietet auch eine einfache Möglichkeit einen CSR zu prüfen:
openssl req -in example.csr -verify verify OK
Beim Public Key wird es komplizierter. Einzig eine Prüfung mit der Signatur der übergeordneten CA hilft. Hier eine erste Version eines Prüfscriptes.
#!/bin/bash if [[ $# -ne 1 ]]; then echo "Wrong number of arguments." exit 1 fi FILE=$1 # Allows to configure different openssl version OPENSSL=$(which openssl) TEMPDIR="/tmp USERAGENT="CustomUserAgent" # A proxy server would also get configured here WGETOPTS="--user-agent=${USERAGENT} --timeout=5 --tries=1 -e" SIGNER=$($OPENSSL x509 -in ${FILE} -text -noout | grep "CA Issuers - URI:http" | cut -d":" -f2- | tr -d '\r') if [[ -z $SIGNER ]]; then echo "No issuer certificate found for download." exit 1 fi SIGNERFILE=$(awk -F'/' '{print $NF}' <<<$SIGNER) /usr/bin/wget $WGETOPTS $SIGNER -O $TEMPDIR/$SIGNERFILE >/dev/null 2>&1 # Try to convert to PEM $OPENSSL x509 -inform der -in $TEMPDIR/$SIGNERFILE -out $TEMPDIR/$SIGNERFILE.cer 2>/dev/null if [[ -s $TEMPDIR/$SIGNERFILE.cer ]]; then # use converted file, if conversation was successfull SIGNERFILE="$SIGNERFILE.cer" fi echo -n "Certificate verification: " $OPENSSL verify -CAfile $TEMPDIR/$SIGNERFILE -partial_chain $FILE 2>&1 | grep -e "certificate signature failure" -e "OK" | cut -d":" -f2 # Cleanup if [[ ! -z $SIGNERFILE ]]; then /bin/rm $TEMPDIR/$SIGNERFILE* fi