Montag, Februar 22, 2010

SecureStrings und Encryption mit Powershell

In einem von aussen nicht direkt einsehbaren Speicherbereich werden SecureStrings gespeichert. Damit man diese in einem Script dastellen kann, werden Sie encrypted. Die Verschlüsselung ist an die erstellende Maschine gebunden.


#$SecureString=read-host -assecurestring

Sichere
Eingabe des SecureStrings an der Console

$Encrypted=convertfrom-securestring
-securestring $securestring

Encrypted
(für Skripting geeignet)

0..6|%{$A[$_]=$encrypted.substring(($_ * 44),44)}

$A Array
von 7 Teilen, wegen der Übersichtlichkeit
$encrypted.length/7=44


#"`$E=`$null";$A|%{"`$E+=""$_"""}

Folgende
Skriptzeilen erstellen

$E=$null
$E+="01000000d0...fc297eb0100"
$E+="0000fcd684... 96300000000"
$E+="0200000000...0000253b9b1"
$E+="4c835c1f40...04800000a000"
$E+="0000100000...c02d2784f47d"
$E+="1000000065...34e88821400"
$E+="00003d43c0...5f56b26949c5"

Skriptzeilen

$SecureString=Convertto-Securestring -string $E

SecureString aus Encrypted String

$Ptr = [System.Runtime.InteropServices
.Marshal]::SecureStringToBSTR($SecureString)

Pointer
darauf

$Decoded=[System.Runtime.InteropServices
.Marshal]::PtrToStringAuto($ptr)

Entschlüsselt

dnscache (dns-client) Problem mit Outlook

Warum auch immer Outlook nach seiner Beendigung den dns-client so stört, dass nur ein Neustart des Service ein Weiterarbeiten möglich macht, die Deaktivierung des Dienstes schafft Abhilfe.

Den Status fragt man wie folgt ab:
get-service *dns* | select-object *

sftp und ftps

Für ftp gibt es zwei abgesicherte Varianten. Die Details stehen in Wikipedia.
1. 1und1 unterstützt SFTP. Dabei wird nur die Authentifizierung über SSH abgewickelt, der Rest der Übertragung bleibt unverschlüsselt. Im .Net Framework gibt es keine direkte SFTP Untersützung.
2. Unter Windows findet sich die Klasse [System.Net.FtpWebRequest] welche mit der Property .EnableSsl=true auch FTPS unterstützt. Es wird die gesamte ftp Verbindung verschlüsselt. Diese Version wird nicht von 1und1 unterstützt.
3. Zur Kommunikation mit 1und1 muss man passives ftp einsetzen. Das kann der Standard Windows ftp Client nicht. Alternativ einsetzbar sind z.B.: winscp.com von  winscp.net oder ftps.com von www.stdnet.com/moveit.

Mit winscp.com und Powershell kann man Daten zu 1und1 halbwegs sicher per sftp übertragen:

#passwort und username sollten mit Encryption und secure-string im Script stehen
$Source="$Env:tmp\daten.txt"
$ProcPar=new-object System.Diagnostics.ProcessStartInfo
$ProcPar.FileName="C:\programme\WinSCP\winscp.com"
$ProcPar.Arguments="/passive"
$ProcPar.UseShellExecute=$false
$ProcPar.RedirectStandardInput=$true
$ProcPar.RedirectStandardOutput=$true
$ProcPar.CreateNoWindow=$true
$Proc=[diagnostics.process]::start($ProcPar)
$Proc.StandardInput.WriteLine("option batch abort")
$Proc.StandardInput.WriteLine("option confirm off")

$Open="open sftp://"+ $username +":" + $password + "@ftpserver.dom"
$Proc.StandardInput.WriteLine($Open)
$Proc.StandardInput.WriteLine("put $Source /public/")
$Proc.StandardInput.WriteLine("close")
$Proc.close()
$Proc=$null

Mittwoch, Februar 10, 2010

Fritz!Mini Erfahrungen

Seit etwa einem Jahr läuft ein Fritz!Mini in meinem Netzwerk. Das Gerät sieht sehr nett aus. Die Bedienung der Tastatur erscheint mir auf Dauer etwas schwergängig und unangenehm. Nach einem Jahr waren die Akkus hinüber.
Scheinbar kann das Fritz!Mini die Fritz!Box 7170 zum Neustart zwingen. Beobachtet wurde das während der Fritz!Mini Funktionen Telefon, Musik, Webradio.
Fazit, es ist ein nettes Technologiemuster, ich kann es aber auf Grund der vermuteten Beeinträchtigung des Telefonbetriebs noch nicht in einer Produktivumgebung einsetzen.