Scripts (am besten Batch) | URLs blocken

bastla

mit bastla_Assi
Hi,

ich habe ein Problem:

Ich habe ein Programm muster.exe auf der Festplatte liegen, dass die Internetseite http://muster.muster kontaktieren will.

Diese Kontaktaufnahme möchte ich verhindern. Ich kann das ganze zwar mit meiner Firewall blocken lassen, aber ich will ein Script, am liebsten wäre mir Batch, es geht aber auch VBS (-> vermute mal, dass man mit VBS mehr Möglichkeiten hat), haben, das den Zugang blokiert und auf allen Windows-PCs läuft.
Ein Delphiprogrammcode geht auch, aber bitte in Quelltextform und nicht bereits kodiert als EXE (falls es jemandem hilft: ich nutze die Freeware Pascal-platform "Lazarus")

Das Programm muster.exe soll also glauben, dass beim Aufruf der http://muster.muster Seite keine Antwort kommt.
Von mir aus kann das Programm auch denken, dass der gesamte PC keinen Internetzugang hat.

Ich möchte also nicht auf jedem PC die Firewall neu konfigurieren, oder die Host-Datei auf dem PC ständig ändern.

Hab in Batch keine Lösung gefunden und in Delphi sind meine Kenntnisse noch nicht so weit.
Das ganze sollte am besten ohne Zusatzprogramm ablaufen, also kein Script, dass dann auf eine "block.exe" oder so verweist.
Wenn es ich aber nicht vermeiden lässt, nehme ich auch die "block.exe" in Kauf.

Schonmal vielen Dank und Gruß
bastla
 
Als Bat:

Code:
set hostsfile=%windir%\system32\drivers\etc\hosts  
    set tmpfile=%temp%\hosts.tmp  
       
    rem -- vorhandenen Eintrag entfernen und in Temp-Datei schreiben  
    type %hostsfile% | find /v "muster.com" >%tmpfile%  
       
    rem -- neuen Eintrag der Temp-Datei hinzufügen  
    echo "127.0.0.1   muster.com">>%tmpfile%  
       
    rem -- Temp-Datei in Hostfile umbenennen  
    move %tmpfile% %hostsfile%

Einmal ausführen. schreibt dann 127.0.0.1 muster.com in die hosts
Anfragen an muster.com wird auf deinen PC umgelenkt
 
@Jim Duggan:

Du hast doch nichts dagegen, wenn ich mir das abspeichere und auch mal weiter gebe, oder?
Das macht das ganze um einiges einfacher^^


Aber wäre natürlich besser, wenn es noch eine Möglichkeit gibt, das wieder zu löschen, allerdings müsste man dann alle anderen Zeilen mit for neu schreiben lassen, nur die eine nicht, oder?
 
Code:
set hostsfile=%windir%\system32\drivers\etc\hosts  
    set tmpfile=%temp%\hosts.tmp  
       
    rem -- vorhandenen Eintrag entfernen und in Temp-Datei schreiben  
    type %hostsfile% | find /v "muster.com" >%tmpfile%  
       
   [B][COLOR="Red"] rem -- neuen Eintrag der Temp-Datei hinzufügen  
    echo "127.0.0.1   muster.com">>%tmpfile%  [/COLOR][/B]
       
    rem -- Temp-Datei in Hostfile umbenennen  
    move %tmpfile% %hostsfile%

Den rot markierten Teil weglassen.
 
Dann wird das gelöscht?

cool, dann bastel ich noch ein hübsches Menü dazu und am Ende kommt ein hübsches Programm raus, womit man Anfragen von Programmen auf den eigenen PC umleiten kann^^
 
Klingt mir zwar schwer nach dem umgehen von Aktivierungsabfragen, aber gebastelt hab ich trotzdem:

Code:
@echo off
setlocal enabledelayedexpansion
set hostsfile=%windir%\system32\drivers\etc\hosts

:: Hier gewünschten Host, oder set /p / if-Abfrage einsetzen...
set blockhost=muster.com

for /f "delims=" %%a in ('type %hostsfile%') do (
	echo %%a | findstr /i "!blockhost!" > nul
	If "!ERRORLEVEL!" == "1" (
		echo %%a >> !hostsfile!_new
		set found=0
	) ELSE (
		set found=1
	)
)
If "%found%" == "0" echo 127.0.0.1     %blockhost% >> %hostsfile%_new
del %hostsfile%
ren %hostsfile%_new hosts

1. mal ausführen >> muster.com wird hinzugefügt
2. mal ausführen >> muster.com wird entfernt

Funktioniert klarerweise auch, wenn man schon mehrere sachen in der hosts drinenstehen hat...
 
Jo, vielen Dank!

werde die Scripts erstmal testen. Obs funktioniert, kann ich ja gleich posten, nochmal vielen Dank!

Gruß
bastla

Edit: Das Script von Razorblade funktioniert tadellos! Vielen Dank dafür, Razorblade!
 
Zuletzt bearbeitet:
Np.

@Thread: Jim meinte nur, dass es wegen nem Dateischutz (ich vermute unter Win7) nicht funktioniert. Ich werd das heute abend mal prüfen, bescheidgeben und ggf nachbessern.
jfyi

@Jim: Ich merk gerade, dass ich vorschnell geantwortet hab. Mein Script läuft auch über ne Tempfile, nur meine liegt im hosts-Ordner...
Ich nehm nämlich einfach den Pfad (%windir%\system32\drivers\etc\) mit der Datei "hosts" und häng hinten ein _new an. In der letzten Zeile wird dann die hosts_new zu ner hosts...


EDIT:
Sodala, hab gestern abend noch getestet, und es stimmt, direkt im hosts-Verzeichnis arbeiten is nicht - zumindest nicht unter 7. Nicht mal das verschieben einer Datei ausm Temp-Verz. ins Hosts-Verz. ist möglich.
Long story short: Ich arbeite daran.
Greets
 
Zuletzt bearbeitet:
Uff. Nach diversen fehlschlägen und dem Ableben meiner Windows-Installation sollte es nun hinhauen.

Ich bitte um Tester und Antworten:

Code:
@echo off
call :oselev %0 %*
setlocal enabledelayedexpansion
set hosts=%windir%\system32\drivers\etc\hosts

:: Hier gewünschten Host, oder set /p / if-Abfrage einsetzen...
set blockhost=muster.com

for /f "delims=" %%a in ('type %hosts%') do (
	echo %%a | findstr /i "!blockhost!" > nul
	If "!ERRORLEVEL!" == "1" (
		echo %%a >> !hosts!_new
		set found=0
	) ELSE (
		set found=1
	)
)
If "%found%" == "0" echo 127.0.0.1     %blockhost% >> %hosts%_new
del %hosts%
move %hosts%_new hosts
pause

:oselev
ver | findstr /i "6\." > nul
if "%ERRORLEVEL%" == "1" goto :eof
md %windir%\oselev > nul
if "%ERRORLEVEL%" == "0" (
	rd %windir%\oselev > nul
	if exist "%~1.ELEVATED" del "%~1.ELEVATED"
	goto :eof
)
PushD "%~dp1"
if exist "%~1.ELEVATED" (
	del "%~1.ELEVATED"
	goto :eof
)
set CMD_Args=%1 %2
set CMD_Args=%CMD_Args:"="%
set ELEVATED_CMD=PowerShell -Command (New-Object -com 'Shell.Application').ShellExecute('Cmd.exe', '/C %CMD_Args%', '', 'runas')
echo %ELEVATED_CMD% >> "%~1.ELEVATED"
:: If there are single quotes in the arguments, this will fail
call %ELEVATED_CMD%
exit
 
Ich weiss nicht, wozu man dieses Script jetzt braucht, da das alte doch auch funktioniert hat!

Außerdem wird bei mir, Win7 32bit, die Hosts-Datei ins Nirvana verschoben!
Beim zweitmaligen Start kommt eine schöne Fehlermeldung, dass eine datei nicht gefunden werden kann :(.

Sind in dem etc-Ordner nur 5 Dateien enthalten oder wurden neben der hosts-Datei noch andere verschoben, denn sonst ist mein Ordner jetzt fehlerhaft!
 
Nun, es soll die weiterentwicklung sein um das script mit Administrativen rechten starten zu können.

Unter XP sind 5 Dateien enthalten, sollten also unter 7 genausoviele sein.
Ausser der Hosts-Datei werden keine Dateien bearbeitet, d.h. es wird zwar vom Script eine temporäre Datei angelegt, aber die wird dann wieder entfernt.

Fehlermeldungen hab ich bei meinen versuchen eigentlich keine gesehen...

Tja, ich schätze, Automatisches beziehen von erweiterten Rechten unter Windows 7 mit Batch ist wohl doch nicht drin...

Ich lass das Script mal so stehen, vllt. finden sich ja noch n paar tester....
 
Oben