WLAN verbinden via Console

Ruff_Ryders_R

Lt. Junior Grade
Dabei seit
Nov. 2009
Beiträge
406
Hallo zusammen,

wie kann ich mich mit einem WLAN unter Windows via Konsole (cmd) verbinden?
Wichtig, ich möchte dabei gleich den Netzwerkschlüssel via Parameter mitgeben.

Bei netsh habe ich leider bis jetzt keine Möglichkeit gefunden einen Key anzugeben und kein Profil
auswählen zu müssen.

Gibt es dazu ein paar Ansätze? gebraucht wird das übrigens für ein Script aber das ist erstmal nebensächlich.

Vielen Dank

LG Ruff_Ryders
 

blablub1212

Commodore
Dabei seit
Sep. 2009
Beiträge
5.068

Ruff_Ryders_R

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2009
Beiträge
406
...erstmal vielen Dank dafür vorab. Benötigt netsh zwingend ein "Profil" oder gibt es auch eine einmalig Connect Variante ohne dass ein Profil angelegt werden muss?

und gibt es vielleicht noch einen alternativen weg wie ein Verbindungsaufbau geskriptet werden könnte? ich dachte da an sowas wie Connect.exe -SSID:MeinNetzwerk -KEY:"StrengGeheim" :D

Vielen Dank für eure Hilfe :)
 

Raijin

Admiral
Dabei seit
Nov. 2007
Beiträge
9.588
Man könnte grundsätzlich ein Tool programmieren (zB in C#), das WLAN via Native Wifi API verbindet. Ob es so ein Tool schon gibt, weiß ich nicht.


Warum möchtest du überhaupt WLAN auf der Kommandozeile verbinden?



*edit
Hier wird beschrieben wie du bei netsh ein Profil im-/exportieren kannst. Evtl. kann man sich in einer Batch-Datei, o.ä. so ein Profil zusammenbasteln und benutzerdefinierte Verbindungen von der Kommandozeile aus starten.
 
Zuletzt bearbeitet:

Ruff_Ryders_R

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2009
Beiträge
406
...weil ich es so am einfachsten in ein C# Projekt einbinden könnte - dachte ich jedenfalls :D
aber wenn es eine einfachere Lösung via Native Wifi Api gibt, dann auch gerne so.

Ich brauch einfach eine Variante wie ich möglichst unkompliziert eine WLAN Verbindung zu einem
Neuen! WLAN herstellen kann unter Angabe von SSID, Netzwerkschlüssel und eventuell noch Netzwerkadapter,
falls ein Rechner mehrere WLAN Karten hat :freak:.

Wie würden Ihr es mir empfehlen?
 

Raijin

Admiral
Dabei seit
Nov. 2007
Beiträge
9.588
Wenn du eh schon in C# unterwegs bist, bietet sich die Lösung via API förmlich an. Gearbeitet habe ich damit allerdings noch nicht, ich kann also kein Urteil darüber bilden wie gut/einfach das funktioniert. Letztendlich hängt es natürlich auch von deiner Programmiererfahrung ab.

Einen Versuch ist es allemal wert. Frag einfach mal Onkel google nach Tutorials zu der API, da wirst du sicher ein paar Beispiele finden, mit denen du es einmal testen kannst. Wenn's klappt, kannst du es in dein Projekt einbinden.
 

Ruff_Ryders_R

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2009
Beiträge
406
...so also grundsätzlich funktioniert ein Connect jetzt mit der Wifi Native Api, allerdings gibt es noch einen Schönheitsmakel, den ich gerne beseitigen möchte.

Gibt der Nutzer ein falsches Passwort ein, sollte das signalisiert werden. Momentan versucht er einfach trotzdem eine Verbindung damit herzustellen und hängt dann in einer Endlosschleife fest.

Gibt es die Möglichkeit das Passwort irgendwie auf Korrektheit zu prüfen? :rolleyes:
 

blablub1212

Commodore
Dabei seit
Sep. 2009
Beiträge
5.068
Du solltest ja bei einem erfolgreichem Connect irgendeinen Rückgabewert erhalten. Dann prüfe einfach ob dieser Wert kommt, sollte er nicht kommen (z. B. nach 10 Sekunden), dann terminierst du die Verbindung und forderst den Nutzer zu einer erneuten Passwort Eingabe auf.

Sollte es keinen solchen Wert geben, dann könntest du natürlich auch einfach einen Server im WLAN anpingen und dann ebenfalls die Verbindung trennen und das Passwort erneut abfragen, falls der Ping nicht ankommt.
 

Raijin

Admiral
Dabei seit
Nov. 2007
Beiträge
9.588
Aus der Dokumentation zur API:

DWORD WINAPI WlanConnect( .. )

Return value

If the function succeeds, the return value is ERROR_SUCCESS.

If the function fails, the return value may be one of the following return codes.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms706613(v=vs.85).aspx


Ohne deinen Quellcode zu sehen kann man schlecht sagen woher die Endlosschleife kommt. Benutzt habe ich die API selbst noch nicht, aber ich gehe davon aus, dass der Aufruf von WlanConnect(..) nach einem Timeout oder eben einem Fehler einen entsprechenden Fehlercode zurückgibt (siehe Link).
Eventuell muss man den Timeout auch vorher setzen, weil per Default unter Umständen 5 Minuten oder sowas drinsteht.

Hast du dir mal das Sample von hier runtergeladen? Klick
 
Zuletzt bearbeitet:

Ruff_Ryders_R

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2009
Beiträge
406
...ich hab das Verhalten eben nochmal geprüft und versucht nachzuvollziehen. Standardmäßig war kein Rückgabewert eingetragen, das hab ich jetzt angepasst. Allerdings wird unabhängig vom Passwort immer 0 zurück gegeben (bei der WlanConnect Funktion), auch wenn das Passwort falsch ist. Es wird nur dann eine Exception geworfen, wenn das Passwort z.B. unter 8 Stellen hat.

Müsste man das nicht irgendwie prüfen können, ob das Passwort korrekt ist? in Windows wird ja sofort angezeigt, wenn das Passwort falsch war, leider weiß ich nicht genau wie ein W-Lan Verbindungsaufbau genau abläuft.

Gibt es da nicht so etwas wie:

public Boolean checkPasswort(String geheim);

:-)
 
Zuletzt bearbeitet:

Raijin

Admiral
Dabei seit
Nov. 2007
Beiträge
9.588
Keine Ahnung. Wie erwähnt habe ich noch nie mit der API gearbeitet. Die einzige Antwort, die ich dir dazu geben könnte, würde aus der verlinkten Doku kommen. Wenn du magst, kannst du mir deinen Quellcode (inkl. etwaiger DLLs für die API, etc) irgendwo hochladen und ich gucke mal drüber. Versprechen kann ich aber nix.
 

Ruff_Ryders_R

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2009
Beiträge
406
...das mit der "Schleife" ist weniger das Problem, das bekomm ich selber hin, aber eher das dass ich nicht weiß wo ich ansetzen kann beim prüfen des Passwortes :freak:
 
Top