Da ich mit meinem bisherigem IRC Client nicht zufrieden war hab ich mich auf die Suche nach einem Neuen gemacht. Schließlich bin ich schnell auf Nettalk gestoßen und fand den Client auch Recht ansprechend. Das einzige Manko war das man keinen HTTP Proxy benutzen kann. Das höchste der Gefühle ist ein socks4.
Also habe ich mir ein kleinen Account auf meinem Proxyserver angelegt und via plink ein Socks erstellt.
Jetzt störte mich aber das ständig sichtbare CMD.exe Fenster.
Es müsste ja auch möglich sein so ein CMD.exe Fenster im Hintergrund zu halten, praktisch unsichtbar zu machen.
Schluß endlich hab ich dann eine GPO(gpedit.msc / Benutzerkonfiguration / Skripte / Anmelden) erstellt welche folgendes VB Script ausführt:
[php]
‚Funktion: Sucht nach dem Prozess plink.exe, wenn vorhanden wird er beendet. Im nächsten Schritt wird ein Proxy in die Windows Interneteinstellungen eingetragen und ssh.bat aufgerufen.
’sucht nach plink.exe und beendet den Prozess
Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strComputer, strProcessKill
Dim wshshell
strComputer = "."
strProcessKill = "’plink.exe’"
Set objWMIService = GetObject("winmgmts:"&"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
‚Soll der Proxy nur für ein Protokol genutzt werden, muss der Wert mit dem Protokollname und einem = Zeichen eingetragen werden. z.B.: http=192.168.100:8080
‚jede weitere Proxy Protokoll Zuweisung kann einfach hinter die letzte Zuweisung gehängt werden. Dabei wird ein Semikolon als Trennzeichen benutzt. z.B.: http=192.168.100:8080;http=192.168.100:7070
’soll für alle Protokolle der selbe Proxy benutzt werden reicht es nur die Adresse/IP des Proxy einzutragen. z.B.: 192.168.100:8080
‚Die einzige Ausnahame Dabei sind socks-Protokolle. Hier muss immer der Protollname(socks) vor die Adresse/IP des Proxy eingesetzt werden. z.B.:socks=192.168.100.100:9090
Set WshShell = WScript.CreateObject("WScript.SHell")
‚Proxy Enable 1=True 0=False
wshshell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", 1, "REG_DWORD"
‚FQGN+Port oder IP+Port eintragen. Je nach dem auch das Protokoll.
wshshell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer","socks=localhost:7331"
‚Proxyeinstellungen für lokale Adresse(n) umgehen.
wshshell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride","10.10.10.1"
‚Batch Datei für die Parameterübergabe für plink starten (0=Hide Window | True(Boolean)=Script wird erst weiter ausgeführt wenn das Programm, in diesem Fall plink.exe, geschlossen wird
WshShell.Run "ssh.bat",0,True
[/php]
Anschließend habe ich eine ssh.bat erstellt, in der nur plink + Parameter zu automatischen Konnektierung ausgeführt werden. Beide Dateien + die plink.exe habe ich dann in den Ordner C:\Windows\System32\GroupPolicy\User\Scripts\Logon kopiert und fertig war meine invisiblePlink GPO.
Dank dieser GPO muss ich mich jetzt nicht mehr um das Verbinden zum SSH Server kümmern, sondern kann gleich mein IRC Client starten und los trollen. Ein kleines Problem habe ich aber noch, sobald der Rechner in den Ruhezustand geht, bricht die Verbindung logischerweise ab, und ich muss das Script einmal per Hand starten. Ich müsste also ein Funktion bauen, welche mir, sagen wir mal alle 5 Minuten, check ob die Verbindung noch steht. Ideen?
Bin gerade dran mir mit Hilfe des Plink.exe Sources eine modded Plink.exe zu gestallten. Zwischenzeitlich muss ein uneleganter Loop herhalten.
[php]
Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strComputer, strProcessKill
Dim wshshell
strComputer = "."
strProcessKill = "’plink.exe’"
Set objWMIService = GetObject("winmgmts:"&"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
Do while colProcess.Count = 0
Set WshShell = WScript.CreateObject("WScript.SHell")
WshShell.Run "tunnel.bat",0,True
loop
[/php]
Quelle : http://www.hack-fleisch.net/?p=1094