MS Office: PDF-Drucker

Gebraucht wird ein PDF-Drucker für (hüst) Word 2000. Nach dem fälligen Update von Windows XP nach Windows 7 (64-Bit) will das alte Adobe Professional 7 keinen PDF-Drucker mehr zur Verfügung stellen. Es ist weiterhin gewünscht, dass der neue PDF-Drucker sich wie der Konverter von Adobe Professional verhält — also nicht über den Druckdialog sondern über ein Icon/Menü gestartet wird. Weiterhin soll das erzeugte PDF in der Verzeichnisstruktur im selben Ordner und mit dem selben Dateinamen (bis auf die Endung .pdf) wie das .doc gespeichert werden.

Das Starten des Drucks über einen separaten Menüpunkt lässt sich leicht mit einem Makro und der Methode ActiveDocument.PrintOut() bewerkstelligen. Schwieriger ist die Übergabe eines Dateinamens an das Drucksystem, da dieses keine Informationen über das zu druckende Dokument erhält/benötigt. Ich habe schliesslich den PDF-Drucker von bioPDF benutzt, da er, im Gegensatz zu vielen anderen, über ein API verfügt. Wie sich allerdings herausstellte, hat MS Office <= 2003 einen Bug, der die native Nutzung des API verhindert. bioPDF stellt aber eine weitere Möglichkeit bereit den Druckvorgang zu steuern, nämlich eine config.exe die eine runonce.ini erzeugt — sozusagen eine Konfiguration für genau einen (den nächsten) Druckjob.

Das folgende VB-Skript tut schliesslich alles was ich eben beschrieben habe (und noch ein kleines Bisschen mehr):

Sub printPDF()

    Dim sPath As String
    Dim sName As String
    Dim sFullName As String
    Dim sPdfFileName As String
    Dim o As Document
    Dim sCurrentPrinterName As String

    Set o = ActiveDocument

    sCurrentPrinterName = ActivePrinter

    ActivePrinter = "PDF Writer - bioPDF"

    If Len(o.Path) = 0 Then
        o.Save
    End If

    sName = CreateObject("scripting.filesystemobject").getBaseName(o.Name)
    sPath = o.Path
    sFullName = o.FullName
    sPdfFileName = sPath & "\" & sName & ".pdf"

    Dim cmd As String

    cmd = "C:\Program Files\bioPDF\PDF Writer\API\EXE\config.exe "

    Shell cmd & "/S Output " & sPdfFileName, vbHide
    Shell cmd & "/S showpdf " & "no", vbHide
    Shell cmd & "/S openfolder " & "no", vbHide

    o.PrintOut

    ActivePrinter = sCurrentPrinterName
End Sub

Update: GEMA-Scareware

Heute traf mich eine Neuauflage der bekannten GEMA-Scareware, die ich bereits in einem früheren Blog-Post beschrieben habe: Der Zugang zu Ihrem Computer wurde gesperrt. Viel hat sich auf den ersten Blick nicht geändert: Der Text ist etwas anders formatiert und das offizielle Logo von paysafecard ist verschwunden (Es wird aber immernoch über diesen Service abgerechnet.). Neu ist, dass die Scareware jetzt alle Benutzer belästigt und, was noch viel schlimmer ist, sie funktioniert auch im abgesicherten Modus. Glücklicherweise ist der befallene Rechner recht langsam, so dass es mir gelingt den Taskmanager aufzurufen und ich kann gerade noch erkennen, dass eine gema.exe mehrfach gestartet wird. Da der abgesicherte Modus ebenfalls betroffen ist, boote ich den Rechner von der Windows XP-Installations-CD und starte die Notfallkonsole. Ich finde die gesuchte Datei an vier verschiedenen Orten, einmal im Systemordner, dann im Profil aller Benutzer, die seit der Infektion angemeldet waren und im Standardprofilordner:

C:\Windows\System32\gema.exe
C:\Dokumente und Einstellungen\Administrator\Anwendungsdaten\gema\gema.exe
C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\gema\gema.exe
C:\Dokumente und Einstellungen\Verwaltung\Anwendungsdaten\gema\gema.exe

Ich kopiere mir ein Exemplar und lösche anschließend alle vier Funde. Nach dem Neustart kann ich mich wieder einloggen und durchsuche die Windowsregistrierung nach gema.exe. Hier eine kleine Auswahl prominenter Treffer:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\gema
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\gema
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\gema.

Prinzipiell kann jeder Schlüssel, der auf eine gema.exe verweist gelöscht werden; Einer muss  allerdings repariert werden. Unter

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit

muss als Wert des Schlüssels wieder der Pfad zur C:\Windows\system32\userinit.exe mit einem abschließenden Komma eingetragen werden (siehe Bild).

Der Virencheck bei VirusTotal liefert zwei Treffer:

Comodo
TrojWare.Win32.Trojan.XPACK.Gen
DrWeb
HEUR:Trojan.DownLoader5.61021

Emacs twittering-mode

An Twitter-Clients für Linux mangelt es eigentlich nicht. Wer aber schon immer gern einen Command-Line-Client haben wollte, oder beim täglichen arbeiten den Emacs ungern verlässt, dem sei twittering-mode (twmode) empfohlen. Ich will die Installation unter Linux (Scientific Linux 6.2) kurz umreißen (sollte auf dem Mac ähnlich funktionieren; unter Windows muss man auf die mitgelieferten Command-Line-Tools zurückgreifen):

Voraussetzungen:

Als erstes die benötigten Abhängigkeiten (Emacs-23 *lol*, curl, wget, gnutls-utils, openssl, gnupg) installieren. Weiterhin wird ein Webbrowser gebraucht — Auf dem Desktop sicher kein Problem; auf der Konsole empfiehlt sich w3m mit w3m.el. Folgender Befehl installiert die Abhängigkeiten unter RHEL 6

# yum install emacs curl wget gnutls-utils openssl gnupg2

Wenn twittering-mode vom Github-Repository installiert werden soll (was ich empfehle), muss ausserdem Git installiert werden:

# yum install git

Installation

Es empfiehlt sich Emacserweiterungen nach ~/.emacs.d zu installieren, was im folgenden auch beherzigt werden soll.

$ cd ~/.emacs.d
$ git clone git://github.com/hayamiz/twittering-mode.git

Zur Emacs-Konfigurationsdatei ~/.emacs muss folgendes hinzugefügt werden:

(add-to-list 'load-path "~/.emacs.d/twittering-mode")
(require 'twittering-mode)

Jetzt Emacs starten und den Twittering-Mode mit M+x twit[1] starten. TWmode meldet sich mit Authorization via OAuth.

Wer browse-url-generic-program in der Emacskonfiguration gesetzt hat, kann hier y drücken, ansonsten n drücken und den Link unter 1. anklicken oder via Copypaste im Browser der Wahl öffnen. Den angezeigten PIN-Code in den Emacs-Minibuffer eingeben und los geht’s mit Twitter im Emacs:

Dauerhafte Authorisierung:

Um nicht bei jedem Start von twmode erneut gegen Twitter autorisieren zu müssen, kann man folgende Zeilen in die Emacskonfiguration ~/.emacs aufnehmen:

(require 'epa-file)
(epa-file-enable)
(setq twittering-use-master-password t)

Hierzu wird GnuPG und EasyPG benötigt. Zumindest letzteres ist in Emacs 23 standardmäßig integeriert und kann durch die beiden führenden Zeilen im obigen Listing aktiviert werden [Update: Für Emacs 23 werden die zwei führenden Zeilen nicht benötigt — Sie schaden aber auch nicht. Dank an @cvmat]. Der oauth-access-token wird verschlüsselt unter ~/.twittering-mode.gpg gespeichert. Beim Start von twmode fragt pinentry die Passphrase zum Tokenfile ab und erlaubt hiermit die automatische Authorisierung gegen Twitter.

Wichtige Kommandos:

u
Neuer Tweet
d
Neue Direct Message
Enter
Reply
F4
URL Verkürzung via tinyurl
C-c Enter
Retweet mit Zitat
C-u C-c Enter
Retweet
g
Timeline aktualisieren
g
Timeline aktualisieren
f
Timelines durchblättern
V
Beliebige Timeline
L
Timeline beliebiger Liste
C-c C-u
Eigene Timeline
C-c C-f
Following Timeline
C-c C-r
Reply Timeline (Antworten auf eigene Tweets)
C-c C-d
Direct Messages Timeline

C bedeutet Control. Zum Suchen von Begriffen in Tweets öffnet man eine neue Timeline (V) mit :search/SUCHBEGRIFF/.

[1] M+x bedeutet Meta und x gleichzeitig drücken. Meta ist auf PC-Tastaturen meistens auf der Alt und auf Mac-Tastauren auf cmd. In jedem Fall sollte die Tastenfolge Esc, x (nacheinander) funktionieren.

Scareware: Der Zugang zu Ihrem Computer wurde gesperrt.

[Update: Hier noch eine neuere Variante der GEMA-Scareware]

Wieder erreicht mich ein Hilferuf zu einer Geiselnahme. Diesmal gibt sich der Erpresser als GEMA aus und erklärt: „Auf Ihrem Computer wurden illegal heruntergeladene Musikstücke („Raubkopien“) gefunden.“ Man hat nun die Möglichkeit das Lösegeld in Höhe von 50 Euro via paysafecard zu entrichten. Gut. Als erstes den Rechner im Abgesicherten Modus starten (F8 drücken vor dem Start von Windows). Im Profilordner des Benutzers unter

C:\Benutzer\<Benutzername>\AppData\Roaming

fällt mir schnell eine Datei mit dem nichts sagenden Namen k8rdift659c.exe auf, die sich mit dem GEMA-Logo als Icon schmückt. In der Windows-Registrierung unter

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

findet sich Eintrag mit dem kryptischen Namen 7Rxb5FismTZydeX, der auf o. g. Datei im Profilordner verweist und für den Start der Scareware bei der Benutzeranmeldung sorgt. Nach dem Löschen der besagten Datei und dem Schlüssel aus der Registrierung konnte der Benutzer sich wieder wie gewohnt anmelden. Ein Check bei VirusTotal offenbart, dass diese Scareware recht neu ist; sie wird von lediglich 2 von 43 Scannern identifiziert:

AntiVir
TR/Crypt.XPACK.Gen2
Kaspersky
HEUR:Trojan.Win32.Generic

Update:

Ich habe den Rechner noch einmal unter die Lupe genommen und weitere Schlüssel in der Windows-Registrierung gefunden, die auf die Datei k8rdift659c.exe  verweisen:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit

Beide Einträge können bedenkenlos gelöscht werden.

Scareware: Aus Sicherheitsgründen wurde ihr Windowssystem blockiert.

Heute erreicht mich der Anruf eines aufgeregten Windows Nutzers: „Er könne nichts mehr machen, das System sei total blockiert.“ Wie sich schnell herausstellte war sein Rechner von einer Scareware befallen, wie sie in letzter Zeit schon häufiger aufgetreten sind. Dieser Geiselnehmer erklärt, dass das „Computersystem [durch das besuchen von Seiten mit infizierten und pornographischen Inhalten] an einer kritischen Grenze angekommen“ sei. Mas solle jetzt ein „zusätzliches Sicherheitsupdate herunterladen“, welchen selbstverständlich kostenpflichtig ist. Der Warnhinweis schmückt sich mit den Logos von Avira, Kasperski, McAfee und Microsoft. Also, frisch ans Werk. Wir laden dieses Update selbstverständlich nicht herunter, stattdessen booten wir den Rechner erst einmal im Abgesicherten Modus (Taste F8 mehrfach drücken, bevor Windows startet) und melden uns als Standardbenutzer an. In den Autostart-Ordnern findet sich, wie erwartet, nichts ungewöhnliches. In der Registry, unter

 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

finden sich drei Einträge, von denen einer auf den Namen SkypeM hört und auf eine Datei innerhalb des Benutzerprofiles verweist

Lokale Einstellungen\Anwendungsdaten\Skype\Skype.exe

Das ist an sich schon ungewöhnlich. Der Benutzerversichert ausserdem Skype niemals installiert zu haben (Was auch stimmt). Verschieben der Datei Skype.exe und anschließendes Löschen des Registrierungsschlüssels SkypeM löst die Geiselnahme auf. Eine anschließende Analyse der Datei durch VirusTotal ergibt acht verschiedene Namen für diese Scareware:

AVG
SHeur4.UAQ 20120312
BitDefender
Gen:Variant.Kazy.60597
F-Secure
Gen:Variant.Kazy.60597
Fortinet
W32/Yakes.B!tr
GData
Gen:Variant.Kazy.60597
Microsoft
Trojan:Win32/Ransom.EJ
NOD32
Win32/LockScreen.AIG
Symantec
Suspicious.MH690.A
TheHacker
Posible_Worm32
VIPRE
Trojan.Win32.Generic!BT

Sucht euch einen aus!

Windows Vista/7 Benutzerordner verschieben

Ich zeige kurz, wie man den Ordner mit den Benutzerprofilen (normalerweise C:\Users bzw. in der deutschen Version C:\Benutzer) an einen Ablageort auf einer anderen Festplatte/Partition verschiebt. Durch diese Trennung von Daten und Systemdateien ist es später beispielsweise einfacher das Betriebssystem neu zu installieren, ohne sich um die Daten kümmern zu müssen. In diesem Beispiel wird angenommen, dass die Benutzerprofile von c:\Users nach d:\Users bewegt werden sollen:

  1. Boot von einem Windows Vista/7 Installationsdatenträger
  2. Auswahl Computerreparaturoptionen
  3. Auswahl der Windowsinstallation
  4. Eingabeaufforderung
  5. Ausführen: robocopy c:\Users d:\Users /mir /xj /copyall
    • \mir spiegelt das Quell- in das Zielverzeichnis
    • \xj ingnoriert Abzweigungspunkte (Junktions)
    • \copyall kopiert alle Dateiinformationen
  6. Verschieben des Originalordners: ren c:\Users c:\Usersold (kann später gelöscht werden)
  7. Link anlegen: mklink c:\Users d:\Users /j
  8. Eingabeaufforderung mit exit verlassen und Rechner neustartet

Wenn anschließend alles wie gewohnt funktioniert, kann das umbenannte Originalverzeichnis c:\Usersold gelöscht werden.