threema-vs-telegram-article-whatsapp-banDie Diskussion ist groß, zu welchem Messenger soll man bloß wechseln, nach dem Verkauf von Whatsapp an Facebook?? Nur in einer Sache sind sich viele seitdem einig: weg von Whatsapp, zumindest so gut es geht. Auch ich versuche die Sicherheit meiner Chats nach diesem Ereignis zu erhöhen, und habe mich mit den 2 Messenger Alternativen Threema und Telegram beschäftigt.
Anmerkung: Die folgende Punkte folgen keiner bestimmten Sortierung. Die Threema Fakten und Daten sind zusammenrecherchiert, teilweise bestätigt von Threema Nutzern. Ich hab diese App noch nicht gekauft und kann daher nicht aus erster Hand berichten.

threema-vs-telegram-article-logo


threema-vs-telegram-threema-icons

Threema

threema-vs-telegram-threema-kaufen

+Erstellung eines persönlich-zufälligem Schlüssels mittels Bewegungen, die man in einem Feld bei der Einrichtung machen muss. Also kein system-generierter Schlüssel. Ob das jetzt so viel bringt, da User-Zufall vs System-Zufall immernoch Zufall ist, bleibt auszudiskutieren 😉 Ergänzung: Es ist doch ein positiver Punkt, Computer-Zufallsgeneratoren haben nicht gerade den besten Ruf, hier nur ein Beispiel.
+threema-vs-telegram-threema-security-statusSichere Verbindungen zwischen 2 Teilnehmern werden durch sichere QR-Codes und deren Einscannen der zweiten Person erstellt. Damit kann keine Manipulation beim Erstellen des sicheren Chats erfolgen, da keine Datenübertragung übers Netz erfolgt. Die verschiedenen Sicherheitsstufen werden eindeutig visualisiert.
+Verschlüsselung mit Open Source Bibliothek NaCl, die als sicher gilt
+threema-vs-telegram-threema-security-pinEs kann eine PIN vergeben werden, die beim Öffnen der App nach einer bestimmten Zeit bzw. nach einem Neustart des Telefons eingegeben werden muss. Außerdem kann ein Hauptschlüssel definiert werden, mehr dazu in der hier.
+threema-vs-telegram-threema-security-backupEs können Backups erstellt werden. Diese enthalten die eigene ID, Chats, Kontakte und auf Wunsch auch die Mediendaten. Die Backups müssen mit einem Passwort mit mindestens 8 Zeichen verschlüsselt werden und liegen dann als ZIP Dateien auf dem Speichermedium.
#Hinzufügen neuer Kontakte via ID/Telefonnummer und QR Code von Hand. Die App hat nach dem Einverständnis des Nutzers Zugriff auf das Telefonbuch. Aber auch beim Verweigern des Zugriffs kann die App weiter benutzt werden. Kontaktdetails werden nur in pseudonymisierter Form abgespeichert.
#Laut AGB werden die Daten aus dem Adressbuch pseudonymisiert an die Threema Server übertragen.
Von der Verschlüsselungsbibliothek abgesehen 100% closed source, Kommunikation läuft über Schweizer Server. Der Entwickler sagte kürzlich: „Momentan haben wir keine konkreten Pläne für externe Audits; falls sich aber etwas mit einer geeigneten Instanz zu akzeptablen Bedingungen ergibt, sind wir nicht grundsätzlich abgeneigt.“ (Quelle) Das macht alles natürlich sehr skeptisch.
kostet 1,60€

threema-vs-telegram-telegram-icon

Telegram

threema-vs-telegram-threema-install

+kostenlos
+threema-vs-telegram-telegram-web-editionViele inoffizielle Apps für Windows, Mac, Linux, Chrome und Windows Phone. Wie Beispielsweise Webogram, ziemlich cool. Telegram merkt sogar, wenn Zugriffe außerhalb der App erfolgen und informiert sofort (siehe nächster Punkt). Das Open Source erfreut die Entwickler- und Fangemeinde und wird in Zukunft sicher noch mehr Apps, Widgets und Gadgets hervorbringen. Wobei es schwer zu urteilen ist, inwiefern die Sicherheit bei diesen Apps noch gewährleistet ist. Aber eine große Community ist eher ein Pluspunkt.
+threema-vs-telegram-telegram-account-access-notificationSollte Telegram einen Zugriff von außerhalb der App feststellen, wird direkt eine Nachricht an den Nutzer geschickt. Dieser hat über die Einstellungen die möglichkeit alle aktiven Verbindungen zu der eigenen Telefonnummer zu beenden.
+threema-vs-telegram-telegram-self-destruct-timerSelbstzerstörungsmechanismus in sicheren Chats für besonders kritische Nachrichten. Zerstört Nachrichten nach einer angegebenen Zeitspanne automatisch sowohl beim Sender, als auch beim Empfänger.
#Teilweise Open Source, mehr und mehr Code soll noch veröffentlicht werden. Also keine geheimen Hintertürchen, die auf Befehl irgendwelcher Regierungen unter dem Deckmantel irgendwelcher Geheimgesetze eingebaut werden können, ohne, dass es auffällt (ein wenig gutgläubig gedacht…). Da noch nicht komplett offen, bis jetzt ein neutraler Punkt.
#Verschlüsselung mit MTProto. AES256, RSA2048 und Diffie-Hellman, klingt für mich „sicher“, aber es gibt angeblich einige Probleme mit der Sicherheit. So zum Beispiel, dass der per SMS zugeschickte Bestätigungscode gar nicht eingegeben werden muss, was bei mir tatsächlich auch so war. Warum auch immer. $200k stehen aktuell als Belohnung aus, sollte jemand diesen Mechanismus knacken können. Kann also nicht als ganzer Pluspunkt angesehen werden.
#Kommunikation läuft über russische Server, ob das positiv oder negativ ist, kann jeder selber entscheiden
#Benutzer, die Telegram schon haben, stehen direkt in der Kontaktliste, alle nicht-Nutzer kann man einladen. Die App hat also Zugriffsrechte auf die Kontaktliste und das ohne die Zustimmung des Nutzers zu erfragen. Die Adressbuchdaten werden jedoch nicht an den Server übertragen.
Das Löschen des Profils mitsamt aller Daten soll nicht besonders transparent gestaltet sein. Die AGB und Datenschutzerklärung erläutern nicht eindeutig, welche Daten gelöscht werden und welche verbleiben, wenn man sein Profil löscht. Zudem gibt es eine Seite, die dem Deaktivieren/Löschen eines Accounts dient. Auf dieser steht aber immerhin: „Note that if you delete your account, all your messages, groups and contacts will be deleted beyond retrieval. This is a one-way trip.“. Negativer Punkt, da hier wohl zu wenig Klarheit herrscht.

Fazit

Ich hoffe niemand erwartet hier von mir eine eindeutige Entscheidung, einen Sieger, der ultimative Messenger: wenn doch, den gibt es nicht. Beide Apps haben ihre Vorzüge und Nachteile. Beide tragen immens dazu bei unsere Kommunikation sicherer zu gestalten. Welche App sich in Deutschland und weltweit besser behaupten wird, wird die Zeit zeigen. Solange kann jeder selber entscheiden, ob er eine der beiden Apps, beide oder gar keine nutzt.
Ich für meinen Teil nutze zum Zeitpunkt der Artikelveröffentlichung nur Telegram, bin aber kurz davor auch Threema zu kaufen.

Quellen: via, via, via

Ich hatte letzte Woche mit einem eigenartigen Problem zu kämpfen. Die 2 nagelneuen Drucker auf Arbeit – beides HP Laserjet Pro 8600 Plus via Druckerserver – hingen sich regelmäßig, ja fast täglich, an irgendwelchen Dokumenten auf. Dieses Dokument kann dann auch auf keinem Wege abgebrochen werden.

Das Problem trat bei uns fast zur selben Zeit an beiden Druckern auf.
windows-druckerproblem-dokument-wird-nicht-gedruckt

Fehlersymptome:

  • Ein Dokument in der Druckerwarteschlange wird einfach nicht gedruckt. Alle weiteren Dokumente reihen sich ein, werden aber nicht gedruckt weil dieses Dokumente die Warteschlange blockiert.
  • Dieses dann aus der Druckerwarteschlange zu löschen funktioniert nicht. Es wird „Wird gelöscht…“ angezeigt und nichts passiert.
  • Drucker aus- und wieder anschalten löscht weder die Dokumente noch setzt es den Druck fort.
  • net stop spooler und net start spooler brachte nichts.
  • Drucker per LAN statt WLAN anschließen ändert auch nichts daran.
  • Am Druckerserver konnte man den Druckauftrag ebenfalls nicht erfolgreich entfernen. Druckerwarteschlange öffnen -> Drucker -> Alle Druckaufträge abbrechen zeigte ebenfalls keine Wirkung.
  • Auch das Anhalten des Druckers am Server und das Wiederholen der obigen Schritte bewirkte nichts.

Am Ende half nur eins: Neustart der Druckerserverrolle in Verbindung mit Drucker und PC, auf dem das verklemmte Dokument gedruckt wurde.
Das ist natürlich keine Lösung.

Lösung

Grundsätzlicher Tipp: Firmware- und Treiberupdate, hilft oftmals schon. Falls nicht:
Öffnet die Druckereigenschaften am Druckerserver und ändert folgende Einstellungen:

  • Freigabe -> „Druckauftragsbearbeitung auf Clientcomputern durchführen“ deaktivieren
  • Erweitert -> „Drucken nachdem die letzte Seite gespoolt wurde“ und „Fehlerhafte Druckaufträge anhalten“ aktivieren
  • Falls das Problem noch besteht, Anschlüsse -> „Bidirektionale Unterstützung aktivieren“ deaktivieren

Dies kann vielleicht zulasten der Dauer gehen, die benötigt wird bis ein Dokument vom PC über den Server auf den Drucker gelangt, aber dabei handelt es sich vermutlich um Millisekunden oder sehr wenige Sekunden.
Bei uns trat das oben beschriebene Problem seit dem nicht mehr auf.

Windows Update Fehler Code 80072EE2… verdammt nochmal, was ist das für ein Fehler?!
windows-update-fehler-error-code-80072ee2

Laut Microsoft Hilfe werden „möglicherweise ungewöhnlich viele Updates von den Windows Update-Servern angefordert.“. Also die Server oder das Netzwerk sind überlastet. Bei einem lokalen WSUS Server im Netzwerk an einem ruhigen Freitag kann man das eher ausschließen.

Es gibt aber auch Meinungen, nach denen der Fehler an fehlender oder geblockten Verbindung zum Update Server liegt, wie in diesem Video angesprochen. Also die Verbindung zum WSUS Server prüfen, Antivirenprogramme prüfen, ggf. vorübergehend deaktivieren.

Hilft nicht? Dann helfen vielleicht folgende Tools:

Microsoft Fix-It zum Zurücksetzen der Update Komponenten:
windows-update-fehler-error-code-80072ee2-fix-it

Hilft nicht? Bei mir auch nicht.
Weiter mit dem PC-WELT-Fix für Windows Update:
windows-update-fehler-error-code-80072ee2-ct-fix-it
Dieses Tool ist relativ aktuell und dadurch für die Systeme XP bis Windows 8 geeignet. Auf älteren Systemen (XP/Vista) kann man es ggf. auch mit dem pcwUpdateRepair probieren. Vermutlich sind diese Fixes aber im aktuellen Fix It mit enthalten.

Bei der Gelegenheit ein Hinweis für Admins: das PC-WELT Fix It Pack enthält ein paar nette kleine Tools im schnellen Zugriff für die Erste Hilfe am PC. Manche sind bereits fertig installiert, andere müssen noch schnell installiert werden. Die Installer sind aber in den Pack schon enthalten. Die Software ist neben der mächtigen Sammlung WSCC, welche alle nirsoft und sysinternals Tools enthält, eine kleine Alternative:
pc-welt-fix-it-pack-for-admins-usage

Hilft uns jetzt aber erstmal nicht weiter.

Der Fehler bleibt ungelöst und es geht wieder zurück zum Troubleshooting:

  • Ping/Remotezugriff zum WSUS Server (bzw. Windows Update) funktioniert?
  • Hat der WSUS Server den Computer in seiner Computerliste gelistet?
  • Wann war die letzte Aktualisierung laut WSUS?
  • Werden dort Fehler oder fehlerhafte Updates angezeigt?
  • Ggf. die Updates des WSUS bereinigen lassen (WSUS -> Optionen -> Assistent für die Serverbereinigung).
  • Antivirenprogramme/Firewalls/andere Verbindungsblocker sowohl auf dem Client als auch auf dem Server temporär deaktivieren. Achtung, natürlich alles so schnell wie möglich wieder aktivieren.

Ich vermute der Fehler liegt am Netzwerk des PCs. Zwar funktionieren Pings und Serverzugriffe, jedoch zeigen die Netzwerkfunktionen teilweise abnormales Verhalten. Die Netzlaufwerke spinnen; sobald ich versuche Daten dort abzuspeichern, stürzt der Explorer (auch der Total Commander) ab und alle Netzlaufwerke sind nicht mehr erreichbar. Trotz WSUS Ping wird der Rechner nicht in der Computerliste des WSUS gelistet. Vielleicht Fehler in der Netzwerkkarte.

Weitere Windows Update Fehler und ihre Lösung findet ihr hier.

tech-struktur2In einem aktuellen Webprojekt verwende ich MongoDB als Datenbank und die Node Erweiterung mongoose als Aufsatz. mongoose ist für alle Entwickler, die bisher pur auf der MongoDB arbeiten, definitiv einen Blick wert.
Anfangs wurde lokal auf dem PC programmiert, mittlerweile beginnen wir den Umstieg auf einen Webhoster. Dabei ergab sich ein Problem, dass ich kurz erläutern möchte.

Die Mongoose Verbindung zur Datenbank erfolgt anhand eines Connection Strings, der bei einer Standardinstallation aller Komponenten sehr einfach aussehen kann:

var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/proorg-test");

Dieser String verwendet localhost als Server, den Standardport von MongoDB 27017, die Datenbank „proorg-test“ und keine Authentifizierung. Das reicht für den Anfang und funktioniert gut.

Nach dem Umstieg auf einen (shared) Webserver trifft man jedoch meistens eine andere MongoDB Installation an. Oftmals wird diese mit dem Parameter –auth eine Authentifizierung erfordern, einen anderen Port nutzen und vielleicht auch einen anderen Server verwenden.
Neben den zusätzlichen Angaben für Server, Port und User muss man Mongoose jetzt auch befehlen, sich explizit an der „Admin Tabelle“ zu authentifizieren. Dies ist meisten die admin Tabelle, in der auch ein Admin Nutzer, dessen Daten im Connection String stehen, enthalten sein sollte.

var mongoose = require("mongoose");
mongoose.connect("mongodb://mongodb_admin:r0OtP4s$w0rd@localhost:20718/proganizer", {auth:{authdb:"admin"}});

Dieser String enthält jetzt den wichtigen Teil {auth:{authdb:“admin“}}, damit Mongoose sich mit dem mongodb_admin an der admin Tabelle authentifiziert.

Mehr dazu auch in den MongoDB Security Tutorials.

logo-trans-2012An dieser Stelle auch big shoutouts an uberspace.de, der sympathische deutsche Webhoster mit „Preis-selber-wählen“ Prinzip und einem riesigen Arsenal an vorinstallierten, vorkonfigurierten und bestens dokumentierten Server- und Entwickler-Tools. Ein kleiner Einblick: „SSH. Perl. PHP. Python. Ruby. node.js. Erlang. Lua. Compiler. FastCGI. MySQL. CouchDB. MongoDB. Cronjobs. HTTPS. IMAP. SMTP. Webmail. qmail. vmailmgr. maildrop. Spam­Assassin. ezmlm-idx. DSPAM. ~/service. runwhen. Eigene Logs. Backups. 10 GB Plattenplatz. Und das ist nur der Anfang.“

Mögliche Fehlermeldungen:
Dieser Fehler würde auftreten, wenn trotz –auth Parameter bei MongoDB der Standard Connection String benutzt würde:
assertion 16550 not authorized for query on proganizer.users ns:proganizer.users query:{ username: „SchurigH“ }
Wenn man nur Benutzername und Passwort eingibt, ohne den auth Parameter von Mongoose einzustellen, also

mongoose.connect("mongodb://schurigh_mongoadmin:r0OtP4s$w0rd@localhost:20718/proganizer");

, dann kommt:
auth: couldn’t find user schurigh_mongoadmin@proganizer, proganizer.system.users
Und selbst wenn man jetzt in proganizer.system.users einen neuen Admin User erstellt – das ginge mit db.addUser({user:“proganizer_admin“, pwd: „*****“, roles: [ „readWrite“, „dbAdmin“ ]}); – würde das nicht funktionieren. Ohne {auth:{authdb:“admin“}} geht es nicht.

Meine letzten Posts zum Firefox Script Deployment sind schon etwas älter: 17.0.2, 9.0, 8.0.1.
Sie beschreiben die zugrundeliegende Technik, mit der Firefox verteilt werden kann.

Update 19.09.2016: aktualisiertes Script beachtet jetzt die beiden verfügbaren 32/64bit-Architekturen von Firefox und updatet die installierte Architektur passend. Dafür müssen beide Installer in dem Format „Firefox48.0.2-32.exe“ und „Firefox48.0.2-64.exe“ vorliegen.
Info: Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.

Firefox 47.0.1

Das Installationsscript:

@echo off & Color 9f & setlocal
set wd=\\lea\Deployment\Software\Firefox
set log=%wd%\firefox.log
set tools=\\lea\Deployment\Sonstiges\tools
set instversion=0.0
set updateretry=0
set retry=0
set versionEL=9
set instEL=999
REM:: ######## EDIT THIS ####
set newversion=48.0.2
REM:: #######################

REM:: Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check
::goto end

REM:: Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end

:check
REM:: prüfe ob eine 32bit Version von Firefox schon installiert ist
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox" /v "CurrentVersion"^|findstr "CurrentVersion"') do set instversion=%%c
REM:: falls keine 32bit Version von Firefox gefunden wurde, prüfe 64bit
if "%instversion%"=="0.0" for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox" /v "CurrentVersion"^|findstr "CurrentVersion"') do set instversion=%%c

REM:: Wenn Version nicht gleich: vergleiche Versionen mit dem Versionchecker
%tools%\VersionCompare.exe %instversion% %newversion%
set versionEL=%errorlevel%
if "%versionEL%"=="-1" goto install
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log% & goto end
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %log% & goto end

:install
if "%processor_architecture%"=="AMD64" goto inst64

echo %date% %time% - %computername% (%instversion%) installiert %newversion% (32bit)... >> %log%
taskkill /F /IM firefox.exe
ping localhost -n 4
"%wd%\Firefox%newversion%-32.exe" -ms
goto cont

:inst64
echo %date% %time% - %computername% (%instversion%) installiert %newversion% (64bit)... >> %log%
taskkill /F /IM firefox.exe
ping localhost -n 4
"%wd%\Firefox%newversion%-64.exe" -ms
goto cont

:cont
set instEL=%errorlevel%
if %instEL%==1618 goto retry REM:: msiexec process in use, installation already in progress (eg. windows updates running)
if %instEL%==1602 goto retry REM:: user canceled installation (eg. taskkill)
if %instEL%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
::if %instEL%==1638 goto uninstall REM:: another product is already installed, denies an update

echo %date% %time% - %computername% Installation abgeschlossen, Errorlevel %instEL% >> %log%
goto settings

:settings
REM:: Install 32-bit customisations
if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\override.ini" "%programfiles%\Mozilla Firefox\"
if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\mozilla.cfg" "%programfiles%\Mozilla Firefox\"
if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\local-settings.js" "%programfiles%\Mozilla Firefox\defaults\preferences"

REM:: Install 64-bit customisations
if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\override.ini" "%ProgramFiles(x86)%\Mozilla Firefox\"
if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\mozilla.cfg" "%ProgramFiles(x86)%\Mozilla Firefox\"
if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\local-settings.js" "%ProgramFiles(x86)%\Mozilla Firefox\defaults\preferences"

goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hatte den Fehler %instEL%, retry in 5min... >> %log%
set retry=1
REM:: 5 Minuten warten
ping localhost -n 300 > nul
goto install

:retryfailed
echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, %instEL%, RETRY FAILED! >> %log%
goto end

:uninstall
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% deinstalliert Version %instversion% aufgrund EL 1638 Fehler... >> %log%
taskkill /F /IM firefox.exe
start /w "%programfiles%\Mozilla Firefox\uninstall\helper.exe" -ms
start /w "%programfiles(x86)%\Mozilla Firefox\uninstall\helper.exe" -ms
echo %date% %time:~0,8% - %computername% - %instversion% fertig deinstalliert, retry... >> %log%
set retry=1
goto install

REM:: Removes Firefox Desktop Icon - Windows XP
::if exist "%allusersprofile%\Desktop\Mozilla Firefox.lnk" del "%allusersprofile%\Desktop\Mozilla Firefox.lnk" /S

REM:: Removes Firefox Desktop Icon - Windows 7
::if exist "C:\Users\Public\Desktop\Mozilla Firefox.lnk" del "C:\Users\Public\Desktop\Mozilla Firefox.lnk"

:end
endlocal
exit

Datei install.ini hatte ich in den letzten Posts immer noch mit drin. Ich glaube jedoch, dass die Datei gar nicht mehr benutzt wird und habe sie mittlerweile aus meiner Verteilung entfernt.

Die Verteilung läuft bereits seit Langem ohne Probleme.
script-based-firefox-26-deployment-log

Flash ist eine weitere Standardsoftware auf den meisten Windows PCs, die regelmäßig aktualisiert werden muss. Also wieder ein Fall für eine Verteilung im Netzwerk. Nach den letzten Deployments [Skype, Java, Reader (Update), Firefox/Thunderbird (Update)] ist die Verteilung von Flash fast ein Kinderspiel.

Anmerkungen

Wie üblich wird zuerst die Version aus der Registry gelesen, überprüft und schlussendlich erfolgt die Installation .exe Dateien:

start /w flash-%version%_IE.exe -install
start /w flash-%version%_OTHER.exe -install

Achtung: Flash muss in 2 verschiedenen Ausführungen installiert werden. Auf der Downloadseite ist die Rede vom Internet Explorer und „Plug-In basierten Browsern“; also praktisch allen anderen Browsern. Daher 2 aufeinanderfolgende Installationen.
In 99% der Fälle bereitet die Installation keine Probleme. Für die restlichen 1% habe ich auch in diese Verteilung Fehlererkennung und ein Retry eingebaut. Die Fehler 1618, 1602 und 1603 resultieren in einem erneuten Installationsversuch 5 Minuten später.

Konfiguration

Nach der Installation wird noch eine Konfigdatei kopiert, die Flash mit einigen wenigen Einstellungen versieht.
mms.cfg:

AutoUpdateDisable=1
SilentAutoUpdateEnable=0
SilentAutoUpdateVerboseLogging=0

flash-deployment-working-dir-mms-config-file
Die Datei könnt ihr natürlich so anpassen, wie ihr die Einstellungen wollt.

Deployment

Update 19.09.2016: Version 23.0 getestet und läuft.
Info: Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.

flash-installer.bat:

@echo off & Color 9f & setlocal
set wd=\\server\Deployment\Software\Flash
set log=%wd%\flash-log.txt
REM:: --- Version hier ändern ---
set version=23.0
REM:: ---------------------------
set tools=\\lea\Deployment\Sonstiges\tools
set flashieEL=999
set flashplEL=999
set combinedEL=999
set versionEL=999
set instversion=000
set retry=0

REM:: Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check
::goto end

REM:: Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end

:check
REM:: check installed version
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerPlugin" /v "Version"^|findstr "Version"') do set instversion=%%c
if "%instversion%"=="000" goto install
%tools%\VersionCompare.exe %instversion% %version%
set versionEL=%errorlevel%
if "%versionEL%"=="-1" goto install
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log% & goto end
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neu) installiert >> %log% & goto end

:install
echo %date% %time:~0,8% - %computername% (%instversion%) startet die Installation... >> %log%
start /w %wd%\flash-%version%_IE.exe -install
set flashieEL=%errorlevel%
start /w %wd%\flash-%version%_OTHER.exe -install
set flashplEL=%errorlevel%

if %flashieEL%==1618 goto retry REM:: msiexec process in use, installation already in progress
if %flashieEL%==1602 goto retry REM:: user canceled installation
if %flashieEL%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
if %flashplEL%==1618 goto retry REM:: msiexec process in use, installation already in progress
if %flashplEL%==1602 goto retry REM:: user canceled installation
if %flashplEL%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
if %flashieEL%==1041 echo %date% %time:~0,8% - %computername% strange 1041 open browser fail, end >> %log% & goto end
if %flashplEL%==1041 echo %date% %time:~0,8% - %computername% strange 1041 open browser fail, end >> %log% & goto end

set combinedEL=%flashieEL%%flashplEL%
echo %date% %time:~0,8% - %computername% hat die Installation von %version% abgeschlossen, errorlevel: %combinedEL% >> %log%
goto finish

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hat nicht Errorlevel 00 erreicht, retry in 200Sek... >> %log%
set retry=1
ping localhost -n 200 > nul
goto install

:retryfailed
echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, RETRY FAILED! EL: %flashieEL% %flashplEL% >> %log%
goto end

:finish
REM:: copy flash config file for silent background updates
if "%processor_architecture%"=="x86" xcopy "%wd%\mms.cfg" "%systemroot%\System32\Macromed\Flash" /y & goto end
xcopy "%wd%\mms.cfg" "%systemroot%\SysWOW64\Macromed\Flash" /y
xcopy "%wd%\mms.cfg" "%systemroot%\System32\Macromed\Flash" /y
goto end

:end
endlocal
exit

Anpassungen

In dem Script tragt ihr in Zeile 8 immer die gewünschte Version ein und benennt die Installationsdateien nach folgendem Schema um:
flash-[Version]_IE.exe (z.B. flash-21.0_IE.exe)
flash-[Version]_OTHER.exe (z.B. flash-21.0_OTHER.exe)
Die Verteilung besteht wie üblich aus den üblichen Verteilungsdateien, eurer angepassten Konfigurationsdatei mms.cfg und den umbenannten Installationsdateien.

Fertig!
script-based-flash-deployment-ad-gpo-files-log

Weiterführende Links:
Flash Downloads for Deployment
Ivan Dretvic’s Guide zu Flash 11 Deployment via GPO / 11.2 with auto-update
Adobe Flash Player Administration Guide

Datenschutz und Verschlüsselung sind große Themen zurzeit, seit der NSA Story wichtiger als je zuvor. In Zeiten von Whatsapp und Facebook wird trotzdem fröhlich weiter offen kommuniziert. Oftmals werden auch private, geheime oder sicherheitskritische Informationen in diesen Netzwerken verschickt, beispielsweise Bankdaten, Zugänge oder Passwörter.

Was nun aber tun, wenn man eine geheime Information schnell und einmalig an eine andere Person schicken muss?

OneTimeSecret.com! Diese Seite bietet einen unschätzbaren Service an, super einfach zu benutzen.
Informationen eingeben (bis zu 25.000 Zeichen sind möglich), ggf. ein Zugangsschlüssel („Passphrase“)eingeben, Link generieren lassen.
onetimesecret.com-generate-secret
Ist der Link erst einmal generiert kann die Information nicht mehr verändert werden. Mit Passphrases verschlüsselte Informationen werden nicht einmal mehr angezeigt.
onetimesecret.com-generated-secret-page
Tipp: speichert euch den Link dieser Seite. später könnt ihr auf dieser Seite erfahren, wann das Geheimnis abgerufen wurde.

Die Information kann nur ein einziges Mal über den generierten Link abgerufen werden. Danach wird sie direkt unwiderruflich gelöscht. Für Geheimnisse, die mit einer Passphrase verschlüsselt wurden, muss der Empfänger des Links natürlich auch die Passphrase erhalten.
onetimesecret.com-view-secret-reply

Wie gesagt kann der Ersteller des Geheimnisses mit dem gespeicherten Link nach dem Erstellen seines Links jederzeit abfragen, ob seine Information abgerufen wurde.
onetimesecret.com-generated-secret-recieved

Ich finde die Seite echt super praktisch und ebenso einfach zu benutzen. Ich werde sie bestimmt noch oft gebrauchen. Meine Empfehlung: niemals sensible Informationen in den heutigen Netzwerken oder Kommunikationswegen verteilen. Ein wenig paranoid könnte man eigentlich schon behaupten: Alles ist einsehbar 😉