ordell1234 | 07.03.2008 19:32 | findftp.bat 2008.03.08 Code:
@echo off
REM Version 2008.03.08
REM
REM MightyMarc, ordell1234, myrtille und cad@ www.trojaner-board.de
rem Danke an alle ungenannten, freiwilligen sowie unfreiwilligen Tester.
REM Diese Batchdatei wurde von Mitgliedern des Sicherheitsforums www.trojaner-board.de erstellt.
REM Die Datei kann jederzeit fuer nicht-kommerzielle Zwecke heruntergeladen und verwendet werden.
REM Die Bereitstellung gegen Entgelt sowie die Verwendung des Codes in nicht-freier Software sind
REM nicht gestattet.
REM Marc Manske, Juli 2007
REM Pruefung des Betriebssystems und des Bootmodus'
if "%OS%" neq "Windows_NT" goto wrngos
if "%safeboot_option%" equ "MINIMAL" goto safeboot
if "%safeboot_option%" equ "NETWORK" goto srchwd
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v shell |findstr "findftp.bat" 2>nul
if "%errorlevel%"=="0" goto reboot
%systemdrive%
cd\
set /a x=0
set /a srvcnt=0
reg export HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced %systemdrive%\escan\advanced.reg>nul
reg export "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" %systemdrive%\escan\winlogon.reg>nul
reg export "hkcu\control panel\international" %systemdrive%\escan\international.reg>nul
cls
echo.
echo Benutzung dieser Batchdatei einzig und allein auf eigene Gefahr!
echo Es wird fuer nichts garantiert!
echo.
echo Wer alle moeglichen Risiken NICHT in Kauf nehmen moechte, steigt bei der
echo naechsten Abfrage aus (0 - Batch beenden)!
echo.
echo **** Es wird nun die Pingzeit zu den Downloadservern getestet. ****
echo.
echo **** Dieser Vorgang dauert etwa 30 Sekunden. ****
echo.
echo.
:srchwd
rem Search Working Directory
rem Hier wird geschaut, ob das WD bereits existiert. Wenn nicht wird es angelegt
rem und die Variable wd gesetzt.
set wd=%systemdrive%\escan\bases_x
if exist %systemdrive%\escan\bases_x goto pngsrv
mkdir %systemdrive%\escan\bases_x
pause
:pngsrv
rem Ping Servers
rem Die beiden Downloadserver werden angepingt, die Ergebnisse in Dateien ueberfuehrt.
ping ftp.microworldsystem.com > %wd%\ping1.log
ping update.mailscan.info > %wd%\ping2.log
findstr "Mittelwert" %wd%\ping1.log > %wd%\p1.log
findstr "Mittelwert" %wd%\ping2.log > %wd%\p2.log
:pngcom
rem Ping Communication (dumme Bezeichnung aber was soll's)
rem Die Pingzeiten der Server werden angezeigt und der User zur Auswahl aufgefordert.
cls
echo.
echo Welchen Downloadserver wollen Sie verwenden:
echo Geben sie 1 fuer Server 1 bzw 2 fuer Server 2 ein. Sollten Sie die
echo mwav.exe bereits in %systemdrive%\escan gespeichert haben, waehlen Sie bitte
echo 3 aus, um die Datei zu entpacken und alles weitere zu veranlassen.
echo.
echo Es wird empfohlen, den Server mit dem geringeren Mittelwert zu waehlen.
echo.
echo.
echo [1] Server 1:
more %wd%\p1.log
echo.
echo [2] Server 2:
more %wd%\p2.log
echo.
echo [3] Bereits vorhandene mwav.exe entpacken
echo.
echo [4] Update wiederholen / weitfuehren
echo.
if "%safeboot_option%" equ "NETWORK" (
echo [5] eScan starten
echo.
)
echo [0] Beenden
echo.
set /p srv=Auswahl mit [Enter] bestaetigen:
if "%srv%"=="1" goto ftp
if "%srv%"=="2" goto ftp
if "%srv%"=="3" goto extract
if "%srv%"=="4" goto testextr
if "%srv%"=="5" (
if "%safeboot_option%" equ "NETWORK" goto safeboot
)
if "%srv%"=="0" goto end1
goto pngcom
:ftp
cls
echo.
echo Die eScan-Programmdatei wird von Server %srv% geladen.
echo DIES DAUERT EINIGE MINUTEN (!), abhaengig von der Geschwindigkeit Ihrer
echo Internetanbindung, der Auslastung des Servers und anderen Faktoren:
echo.
echo 56k Modem mindestens 41 Minuten !
echo ISDN mindestens 18 Minuten !
echo.
echo DSL 1000 mindestens 2 Minuten 30 Sekunden
echo DSL 2000 mindestens 1 Minute 15 Sekunden
echo DSL 6000 mindestens 40 Sekunden
echo.
echo Zu den nun folgenden Logzeilen kann ich Ihnen nur dieses raten:
echo.
echo Don't panic!
echo.
echo (Sie koennen jederzeit mit Strg + C aus dieser Batchdatei aussteigen.)
echo.
echo.
:wgetfile
rem Write Get File
rem Das FTP-Script zum Downloaden der Datei wird geschrieben.
echo hash > %wd%\ftp.txt
echo binary >> %wd%\ftp.txt
echo get download/tools/mwav.exe %systemdrive%\escan\mwav.exe >> %wd%\ftp.txt
echo quit >> %wd%\ftp.txt
:wgetsize
rem Write Get Size
rem Das FTP-Script fuer das directory listing wird geschrieben.
rem Aus dem directory listing wird die Dateigroeße bestimmt.
pause
echo cd download > %wd%\ftpgetsize.txt
echo cd tools >> %wd%\ftpgetsize.txt
echo dir >> %wd%\ftpgetsize.txt
echo quit >> %wd%\ftpgetsize.txt
if "%srv%"=="2" goto ftp2
:ftp1
rem FTP Server 1
rem Zuerst wird der dir-Befehl im Downloadverzeichnis ausgefuehrt.
rem Aus dem Output wird ueber findstr die richtige Zeile ermittelt
rem und aus ihr der richtige Token extrahiert.
rem Danach wird die mwav.exe runtergeladen. Nach dem Download wird wie oben
rem ueber den dir-Befehl sowie findstr der token extrahiert.
rem Beide Tokens werden verglichen.
ftp -s:%wd%\ftpgetsize.txt -A ftp.microworldsystems.com > %wd%\ftp.log
for /f "tokens=1-9" %%i in ('findstr "mwav.exe" %wd%\ftp.log') do set rfsize=%%m
ftp -s:%wd%\ftp.txt -A ftp.microworldsystems.com
for /f "tokens=1-9" %%i in ('dir /-C %systemdrive%\escan^| findstr "mwav.exe"') do set lfsize=%%k
if "%rfsize%"=="%lfsize%" goto extract
goto nodl
:ftp2
rem FTP Server 2
rem siehe :ftp1
set x=0
ftp -s:%wd%\ftpgetsize.txt -A update.mailscan.info > %wd%\ftp.log
for /f "tokens=1-9" %%i in ('findstr "mwav.exe" %wd%\ftp.log') do set rfsize=%%m
ftp -s:%wd%\ftp.txt -A update.mailscan.info
for /f "tokens=1-9" %%i in ('dir /-C %systemdrive%\escan^| findstr "mwav.exe"') do set lfsize=%%k
:size
rem Größenprüfung, ob der Download vollständig verlief
if "%rfsize%"=="%lfsize%" goto extract
:nodl
rem No Download
rem Meldung die der User zu sehen bekommt, wenn die Tokens (siehe :ftp1)
rem unterschiedlich sind. es wird aufgefordert irgendwas zu machen.
echo **** ftp - no download >> %temp%\find.log
set ndl=
cls
echo Der Download war nicht erfolgreich.
echo Groesse der Datei auf dem Server:
echo %rfsize% byte
echo Groesse der Datei hier auf dem Computer:
echo %lfsize%
echo.
echo Wiederholen Sie den Download mit der Batchdatei.
echo Alternativ koennen Sie die mwav.exe auch hier ueber Ihren Browser
echo runterladen:
echo.
echo http://update6.mwti.net/download/tools/mwav.exe
echo http://update3.mwti.net/download/tools/mwav.exe
echo http://www.mwti.net/download/tools/mwav.exe
echo ftp://update.mailscan.info/download/tools/mwav.exe
echo.
echo Speichern Sie die in diesem Fall die mwav.exe in %systemdrive%\ (nicht in einem
echo Ordner oder Unterordner), starten die Batch und waehlen Option 3.
echo.
echo [1] Datei nochmal runterladen
echo [0] Batchdatei beenden
echo.
set /p ndl=Auswahl mit [Enter] bestaetigen:
if "%ndl%"=="1" goto pngsrv
if "%ndl%"=="0" goto end
goto nodl
pause
:extract
rem extract
rem Da der User hier hinspringen kann, muessen die Verzeichnisse ueberprueft werden.
rem Sind sie nicht vorhanden, werden sie erstellt und die Variable(n) gesetzt.
rem %temp% wird auf %systemdrive%\eScan umgebogen. Das haengt damit zusammen, dass
rem die mwav.exe sich beim Ausfuehren in %temp% entpackt. Und im standard-Tempordner
rem will man die Dateien nicht haben.
rem mwav.exe wird mit /FS (Fullsilent) gestartet, damit es sich ohne Userinteraktion entpackt.
dir /A:D %systemdrive%\escan | findstr /i "bases_x"
if %errorlevel% equ 1 mkdir escan\bases_x
cls
echo Download erfolgreich. Groesse der Datei auf dem Server ist %rfsize% byte und
echo auf dem Computer %lfsize% byte.
echo.
echo eScan wird jetzt in das Zielverzeichnis entpackt und ueberprueft
echo den Arbeitsspeicher. Dieser Vorgang dauert - abhaengig von Ihrem System -
echo etwa 30 - 90 Sekunden.
echo.
echo Sollte nach 5 Minuten immer noch dieser Text zu lesen sein, brechen sie
echo den Vorgang mit der Tastenkombination Strg + C ab und starten Sie die Batchdatei
echo neu (Option 3 waehlen). Fuehrt dies auch nicht zum Erfolg, melden Sie bite Ihr
echo Problem hier:
echo.
echo www.trojaner-board.de, Diskussionsforum, eScan-Anleitung und find.bat
echo.
echo.
REM Da eScan derzeit sinnfreie Ordner in Systemverzeichnissen anlegt, werden die Zugriffsrechte beschränkt
copy /v %windir%\system32\cacls.exe %systemdrive%\escan
if %errorlevel%==1 goto nocacls
echo y|%systemdrive%\escan\cacls %windir% /e /p %userdomain%\%username%:n >nul
echo y|%systemdrive%\escan\cacls %windir% /e /g %userdomain%\%username%:r >nul
echo y|%systemdrive%\escan\cacls %windir%\system32 /e /p %userdomain%\%username%:n >nul
echo y|%systemdrive%\escan\cacls %windir%\system32 /e /g %userdomain%\%username%:r >nul
:nocacls
%systemdrive%\escan\mwav.exe /FS
:testextr
rem testing extraction
rem Hier werden einfach ein paar Dateien gesucht um zu sehen, ob das Entpacken
rem auch funktioniert hat.
dir %temp% | findstr /i "zcompare.ppl"
if %errorlevel% equ 1 goto noextr
dir %temp% | findstr /i "download.exe"
if %errorlevel% equ 1 goto noextr
dir %temp% | findstr /i "virus.avi"
if %errorlevel% equ 1 goto noextr
dir %temp% | findstr /i "mexe.com"
if %errorlevel% equ 1 goto noextr
dir %temp% | findstr /i "unregx.exe"
if %errorlevel% equ 1 goto noextr
goto files
:noextr
rem no extraction
rem bei testextr ist einmal %errorlevel% = 1 aufgetaucht > Entpacken unvollstaendig
pause
set nxtr=
cls
echo.
echo Das Entpacken von eScan war leider nicht erfolgreich. Bitte starten Sie
echo die Batchdatei neu und waehlen Sie bei der Frage nach dem Downloadserver
echo Option "3" aus. Das Entpacken wird wiederholt.
echo.
echo [1] Datei nochmal runterladen
echo [2] Erneut versuchen die Datei zu entpacken
echo [0] Batchdatei beenden
echo.
set /p nxtr=Auswahl mit [Enter] bestaetigen:
if "%nxtr%"=="1" goto pngsrv
if "%nxtr%"=="2" (
for /f "tokens=1-9" %%i in ('dir /-C %systemdrive%\escan^| findstr "mwav.exe"') do set lfsize=%%k
for /f "tokens=1-9" %%i in ('findstr "mwav.exe" %wd%\ftp.log') do set rfsize=%%m
goto size
)
if "%nxtr%"=="0" goto end
goto noextr
:files
rem files
rem hier werden einige Dateien geschrieben, die für das Update benötigt werden.
echo > %temp%\download.lck
echo > %temp%\filelist.lst
echo [Config] > %temp%\EUpdate.ini
echo ConnectViaProxy=0 >> %temp%\EUpdate.ini
echo SourceURL=http://update4.mwti.net/pub/update >> %temp%\EUpdate.ini
echo HTTPHost=http://update4.mwti.net/sendinfo >> %temp%\EUpdate.ini
echo DownloadType=2 >> %temp%\EUpdate.ini
echo HTTPPort=80 >> %temp%\EUpdate.ini
echo LogfilePath=%temp% >> %temp%\EUpdate.ini
echo DestDir=%temp% >> %temp%\EUpdate.ini
echo TempDir=%temp% >> %temp%\EUpdate.ini
echo Createsysteminfo=0 >> %temp%\EUpdate.ini
echo CreateReport=0 >> %temp%\EUpdate.ini
echo CopyMissing=0 >> %temp%\EUpdate.ini
echo HTTPLastTry=1 >> %temp%\EUpdate.ini
echo HTTPNumOfTry=1 >> %temp%\EUpdate.ini
echo Fileno=0 >> %temp%\EUpdate.ini
echo Hosttry=0 >> %temp%\EUpdate.ini
:options
rem options
rem hier werden die notwendigen Werte fuer den escan und updatetest in der Registry gesetzt
reg add HKCR\eut /v Language /t REG_SZ /d German /f
reg add HKCR\eut /v AllFiles /t REG_SZ /d 1 /f
reg add HKCR\eut /v ProgramFiles /t REG_SZ /d 0 /f
reg add HKCR\eut /v SizeRestriction /t REG_SZ /d 10 /f
:update
rem update
rem eScan wird aktualisiert
cls
echo.
echo Das Entpacken war erfolgreich. Nun werden die Updates fuer eScan
echo runtergeladen. Dies kann einige Minuten dauern (meist 1-2 Minuten).
echo.
%temp%\download.exe
del /s /q %temp%\spy* 2>nul
del /s /q /f %temp%\*.manifest 2>nul
:testupdate
rem Pruefung des Updates durch Vergleich des in der EUpdate.ini eingetragenen Datums
rem mit dem aktuellen Datum. Der Reg.-Zweig, der die Datumsoptionen beinhaltet wird
rem gesichert und dann werden die einstellungen auf ein einheitliches Format gebracht.
rem Letztendlich wird der Reg.-Zweig wieder reimportiert.
reg add "hkcu\control panel\international" /v sShortDate /t REG_SZ /d dd.MM.yyyy /f>nul
reg add "hkcu\control panel\international" /v sDate /t REG_SZ /d . /f>nul
reg add "hkcu\control panel\international" /v iDate /t REG_SZ /d 1 /f>nul
for /f "tokens=2 delims==" %%i in ('findstr /i "lastsuccessfuldownload" %temp%\EUpdate.ini') do echo %%i> %wd%\datum.log
for /f "tokens=1,2,3 delims=." %%i in (%wd%\datum.log) do set edatum=%%j.%%i.%%k
echo %date%
echo %edatum%
if "%date%"=="%edatum%" goto reboot
set /a x=%x%+1
if %x% lss 4 goto update
:srvchange
if %srvcnt% equ 1 goto leckmich
cls
echo.
echo Das Update will bei Ihnen partout nicht funktionieren. Es wird jetzt ein anderer
echo Updateserver getestet.
echo.
echo Bitte druecken Sie eine beliebige Taste um die Aktualiserung zu starten.
echo.
pause
echo [Config] > %temp%\EUpdate.ini
echo ConnectViaProxy=0 >> %temp%\EUpdate.ini
echo SourceURL=http://update3.mwti.net/pub/update >> %temp%\EUpdate.ini
echo HTTPHost=http://update3.mwti.net/sendinfo >> %temp%\EUpdate.ini
echo DownloadType=2 >> %temp%\EUpdate.ini
echo HTTPPort=80 >> %temp%\EUpdate.ini
echo LogfilePath=%temp% >> %temp%\EUpdate.ini
echo DestDir=%temp% >> %temp%\EUpdate.ini
echo TempDir=%temp% >> %temp%\EUpdate.ini
echo Createsysteminfo=0 >> %temp%\EUpdate.ini
echo CreateReport=0 >> %temp%\EUpdate.ini
echo CopyMissing=0 >> %temp%\EUpdate.ini
echo HTTPLastTry=1 >> %temp%\EUpdate.ini
echo HTTPNumOfTry=1 >> %temp%\EUpdate.ini
echo Fileno=0 >> %temp%\EUpdate.ini
echo Hosttry=0 >> %temp%\EUpdate.ini
set x=0
set srvcnt=1
goto update
:leckmich
cls
echo.
echo Bei Ihnen ist der Versuch einer Programmaktualisierung ein hoffnungsloser
echo Fall. Melden Sie sich im Forum www.trojaner-board.de und beschreiben Sie Ihr
echo Problem im Diskussionforum unter "eScan-Anleitung und find.bat"
echo.
echo Wahlen Sie, ob eScan ohne aktuellen Signaturen fortgesetzt werden soll:
echo.
echo [1] Fortsetzen.
echo.
echo [2] Die Stapelbearbeitung abbrechen.
echo.
set /p boot=Auswahl mit [Enter] bestaetigen:
if "%boot%"=="1" goto reboot
if "%boot%"=="2" goto end2
goto leckmich
:reboot
rem Die findftp.bat wird in den Autostart von winlogon geschrieben. Der Nutzer kann entscheiden, ob er sofort oder
rem später in den abgesicherten Modus wechseln möchte
if "%safeboot_option%" equ "NETWORK" goto safeboot
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v shell /d "explorer.exe, %~dp0findftp.bat" /f
echo y|cacls %windir% /e /r %userdomain%\%username%>nul
echo y|cacls %windir%\system32 /e /r %userdomain%\%username%>nul
cls
echo Bitte starten Sie das System im abgesicherten Modus neu.
echo Hierfuer druecken Sie noch VOR dem Anmeldebildschirm von Windows 'F8'.
echo.
echo Sie koennen entweder sofort neu starten oder spaeter selbst in den abgesicherten Modus wechseln.
echo.
echo [1] Jetzt in den abgesicherten Modus wechseln.
echo Bitte vorher andere offene Anwendungen schliessen.
echo.
echo [2] Selbst zu einem spaeteren Zeitpunkt in den abgesicherten Modus wechseln.
echo.
echo [3] Die Stapelbearbeitung abbrechen.
echo.
set /p boot=Auswahl mit [Enter] bestaetigen:
if "%boot%"=="1" shutdown -r -f -t 10
if "%boot%"=="2" goto end1
if "%boot%"=="3" goto end2
goto :reboot
:safeboot
rem Start von escan im abgesicherten Modus,
rem Da eScan unsinnige Ordner und Dateien in %windir% erstellt, wird der schreibende Zugriff vorübergehend verweigert
rem Zurücksetzen des ursprünglichen Winlogon-Registryeintrags über end2
cls
%systemdrive%
cd\
echo Sie befinden sich im abgesicherten Modus. escan wird jetzt gestartet...
echo.
dir /s /b find.bat>%systemdrive%\escan\findpath.tmp & set /p findpath=<%systemdrive%\escan\findpath.tmp
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v find.bat /d "%findpath%" /f>nul
echo y|%systemdrive%\escan\cacls %windir% /e /p %userdomain%\%username%:n >nul
echo y|%systemdrive%\escan\cacls %windir% /e /g %userdomain%\%username%:r >nul
echo y|%systemdrive%\escan\cacls %windir%\system32 /e /p %userdomain%\%username%:n >nul
echo y|%systemdrive%\escan\cacls %windir%\system32 /e /g %userdomain%\%username%:r >nul
%temp%\mexe.com /drive
echo 0 - Bootmodus: %Safeboot_Option% >>%temp%\mwav.log
copy %temp%\mwav.log %wd%
echo y|cacls %windir% /e /r %userdomain%\%username%>nul
echo y|cacls %windir%\system32 /e /r %userdomain%\%username%>nul
cls
echo escan ist beendet. Das System startet jetzt neu und fuehrt die find.bat aus.
echo Bitte schliessen Sie alle offenen Anwendungen.
echo.
echo Wenn Sie jetzt nicht neu starten moechten, druecken Sie bitte [q] fuer [q]uit.
set /p boot=Eingabe mit [Enter] bestaetigen:
if "%boot%"=="q" goto end2
start shutdown -r -f -t 10
:end2
reg import %systemdrive%\escan\winlogon.reg >nul
if "%errorlevel%"=="1" reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v shell /d Explorer.exe /f
reg import %systemdrive%\escan\advanced.reg >nul
reg import %systemdrive%\escan\international.reg >nul
ren %systemdrive%\escan\*.reg *.old 2>nul
if "%errorlevel%"=="1" del /q %systemdrive%\escan\*.reg
:end1
cls
echo Die Stapelverarbeitung ist beendet.
echo.
pause
exit
:wrngos
color 04
echo.
echo Ihre Windowsversion wird nicht unterstuetzt.
echo Die Stapelverarbeitung wird abgegbrochen.
echo.
pause
exit ....und nu ab in den Supermarkt, Grundnahrungsmittel besorgen :party: |