mamahuana
Goto Top

Truecrypt Device automatisch auslesen und danach per Batch Datei automatisch mounten

Hallo zusammen,

ich hätte eine Frage zu Truecrypt und dem automatischen Mounten von verschlüsselten Datenträgern, sobald man eine Batchdatei anklickt. Als Betriebssystem benutze ich Windows 8.1 64 Bit. Truecrypt habe ich nicht installiert. Ich benutze eine portable Version.

Bisher habe ich meine vollverschlüsselten Festplatten per Batchdatei gestartet.

Inhalt der Batchdatei ungefähr:
@echo off
start TrueCrypt.exe /v \Device\Harddisk11\Partition1 /ls /a /k ABC.dat /k DEF.dat /p "schweresPasswort" /e /b  
action=Mount TrueCrypt Volume
exit C:\Windows\system32\cmd.exe

Problem hierbei ist, dass sich bei jedem Neustart die interne Nummerierung ändert und \Device\Harddisk01\Partition1 auf einmal unter \Device\Harddisk02\Partition1 befindet. Mein Batchscript funktioniert dann natürlich nicht mehr, es sei denn ich passe es manuell an.

Aus diesem Grund habe ich im Internet recherchiert und bin auf folgende Seite gestoßen: (http://www.markuskirschmann.de/wordpress/?p=356). Die Prozedur wird sehr gut unter Windows XP erklärt.

Das Script sieht folgendermaßen aus:
@echo off
REM Überprüfen, ob das Laufwerk schon gemountet wurde
dir u: 2> null.tmp > null2.tmp
if %ERRORLEVEL% EQU 0 goto ende

REM DeviceId ermitteln
wmic diskdrive get model,deviceId,SerialNumber | findstr > Info.txt
set /p theDevice= <Info.txt
set substring=%theValue:~17,1%
REM Mounten
start /D "C:\Program Files (x86)\TrueCrypt" TrueCrypt.exe /v \Device\Harddisk%substring%\Partition1 /lu /a /e /q preferences /k keyFileX.dat  

REM Aufräumen
:ende
del InfoU.txt
del null2.tmp

Dieses Script habe ich folgendermaßen angepasst, so dass es bei mir eigentlich laufen sollte. Tut es aber leider nicht. Zu erwähnen sei hier auch, dass ich es abändern musste, da unter Windows 8.1 aus irgendwelchen Gründen der Befehl findstr > Info.txt keinen Erfolg brachte. Die Info.txt Datei war leer, so dass ich eine andere Möglichkeit finden musste, die Info.txt zu befüllen.

@echo off
REM Überprüfen, ob das Laufwerk schon gemountet wurde
dir s: 2> null.tmp > null2.tmp
if %ERRORLEVEL% EQU 0 goto ende

REM DeviceId ermitteln
wmic /output:"D:\Info.txt" diskdrive get model,deviceId,SerialNumber | C:\Windows\System32\findstr.exe > D:\Info.txt  
set /p theDevice= <D:\Info.txt
set substring=%theValue:~17,1%
REM Mounten
start TrueCrypt.exe /v \Device\Harddisk%substring%\Partition1 /ls /a /e /q preferences /k ABC.dat /k DEF.dat /p "schweresPasswort" /e /b  

Sobald ich das Script ausführe bekomme ich aber die Fehlermeldung: "Das System kann den angegebenen Pfad nicht finden." Die Einstellungen habe ich aber alle korrekt eingebunden bzw. auf mein System angepasst. Passwörter und Keyfiles stimmen alle.Im Truecryptfenster bekomme ich folgendes angezeigt:
\Device\Harddisk~17,1\Partition1. Hier sollte aber eigentlich die korrekte Zahl ausgelesen werden, die über den Befehl "wmic diskdrive get model,deviceId,SerialNumber | findstr > Info.txt" ausgelesen wird und dann in die Info.TXT geschrieben wird

Leider kann ich meinen Fehler nicht finden. Das Script liest einfach nicht die richtigen Daten aus der Info.txt-Datei aus und fügt den String auch nicht korrekt zusammen.

Die Info.txt sieht etwa so aus:
DeviceID             Model                                  SerialNumber      
\\.\PHYSICALDRIVE11  STXXX XXXXXXXXXXXXXX SCSI Disk Device  123456789      
\\.\PHYSICALDRIVE10  WD XXXXXXX External USB Device         WD-987654321   
\\.\PHYSICALDRIVE9   Compact Flash USB Device               XY-12354856      

Das Ziel ist es, die Zahl nach \\.\PHYSICALDRIVE automatisch zu ermitteln und diese dann automatisch in das Truecryptfenster zu übertragen.

Im Truecryptfenster steht jedes Mal \Device\Harddisk~17,1\Partition1 anstatt \Device\Harddisk11\Partition1.

Vielleicht habt Ihr eine Idee. Ich bin für jede Hilfe dankbar.

Vielen Dank und viele Grüße.

Content-ID: 292056

Url: https://administrator.de/contentid/292056

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

122990
122990 01.01.2016 aktualisiert um 21:26:03 Uhr
Goto Top
Moin,
wieso nutzt du nicht das Mounten mit der VolumeID?
\\?\Volume{5cceb196-48bf-46ab-ad00-70965512253a}
http://andryou.com/truecrypt/docs/command-line-usage.php

Du trägst alle deine VolumeIDs in eine Liste ein prüfst die vorhandenen Volumes welche du mit mountvol erhältst auf diese IDs mit findstr und mountest bei einem Fund dein Laufwerk.

Beispiel bei dem die IDs direkt mit Leerzeichen voneinander getrennt in der Batch stehen. Diese könnten aber alternativ genauso in einer Textdatei stehen und bei findstr mit dem Parameter /g:"Pfad" eingelesen werden.
@echo off
for /f %%a in ('mountvol ^| findstr "{b08b9f51-0676-11df-92bd-806e6f6e6963} {b08b9f51-0676-11df-92bd-806e6dds6e6963}" 2^>nul') DO @(  
	TrueCrypt.exe /v %%a /a /e /q preferences /k keyFileX.dat
)
An die Volume IDs deiner Partitionen kommst du mit dem Aufruf von mountvol. Achtung: VolumeIDs sind "Case-Sensitive"!

Btw.
set substring=%theValue:~17,1%
hier solltest du schon eine Variable benutzen die auch existiert ;-P theValue gibts nich ... Flüchtigkeitsfehler.

Gruß grexit
AnkhMorpork
AnkhMorpork 05.01.2016 um 12:39:23 Uhr
Goto Top
Ay,

oder die gute alte PS:

Function tcm ([String]$volume="f:\data.tc",[String]$letter="x:")  
{
$MountError = 0
If (Test-Path $letter)
{
"Drive $letter is already mounted."  
$MountError = 1
} #EndIf
If (!(Test-Path $volume))
{
"File $volume not found."  
$mountError = 1
} #EndIf
If ($MountError -eq 0)
{
C:\"Program Files"\TrueCrypt\TrueCrypt.exe /volume $volume /letter $letter  
} #EndIf
} #EndFunction


Gruß

Ankh