WAKE ON LAN ( WOL ) Est-il possible de sauter l'étape du mot de passe ?

Résolu
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012 - 4 janv. 2011 à 15:56
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012 - 5 janv. 2011 à 11:36
J'ai réussie grâce a ce script à démarrer un pc en local. Toutefois, je voudrais sauter l'étape du mot de passe.

Est-ce possible ?

'//////////////////////////////////////////////////////////////////////
Imports System.Management
Imports System.Net.Sockets

Public Class Form1
Dim udpClt As New UdpClient

Private Function generatePacket(ByVal MAC As String, ByRef packet As Byte()) As Boolean
generatePacket = True
Dim byteLength As Integer
Select Case MAC.Length
Case 12
byteLength = 2
Case 17
byteLength = 3
Case Else
generatePacket = False
Exit Function
End Select
Dim i, j As Integer
Dim block As [Byte]()
ReDim block(5)
Try
For i = 0 To 5
block(i) = Convert.ToByte(MAC.Substring(byteLength * i, 2), 16)
Next
Catch
generatePacket = False
Exit Function
End Try
For i = 0 To 5
packet(i) = &HFF
Next
For i = 6 To 97 Step 6
For j = 0 To 5
packet(i + j) = block(j)
Next
Next
End Function

Private Sub executeWOL(ByVal MAC As String)
Dim packet As [Byte]()
ReDim packet(101)
Dim localBCast As New Net.IPEndPoint(Net.IPAddress.Parse(lBcast.Text), CInt(udpPort.Text))
generatePacket(MAC, packet)
udpClt.Send(packet, 102, localBCast)
localBCast = Nothing
End Sub
End Class
'//////////////////////////////////////////////////////////////////////

Sinon j'ai trouvé cette fonction (sur le net) que je ne sais pas utiliser car il faut l'adresse mac en 6 bits. Chose que je ne sais pas faire !

Public Shared Sub WOL(ByVal targetMAC() As Byte, ByVal password() As Byte)
'target mac must be 6-bytes!
If (targetMAC.Length <> 6) Then
Throw New ArgumentException
End If
' check password
If ((Not (password) Is Nothing) AndAlso ((password.Length <> 4) AndAlso (password.Length <> 6))) Then
Throw New ArgumentException
End If
Dim packetLength As Integer = (6 + (20 * 6))
If (Not (password) Is Nothing) Then
packetLength = (packetLength + password.Length)
End If
Dim magicPacket() As Byte = New Byte((packetLength) - 1) {}
' has a 6-byte header of 0xFF
Dim header() As Byte = New Byte() {255, 255, 255, 255, 255, 255}
Buffer.BlockCopy(header, 0, magicPacket, 0, header.Length)
' repeat the destination MAC 16 times
' your MAC *is* in network (reverse) order, right??
Dim offset As Integer = 6
Dim i As Integer = 0
Do While (i < 16)
Buffer.BlockCopy(targetMAC, 0, magicPacket, offset, targetMAC.Length)
offset = (offset + 6)
i = (i + 1)
Loop
If (Not (password) Is Nothing) Then
Buffer.BlockCopy(password, 0, magicPacket, offset, password.Length)
End If
Dim ep As Net.IPEndPoint = New Net.IPEndPoint(Net.IPAddress.Broadcast, 9)
Dim c As UdpClient = New UdpClient
c.Send(magicPacket, magicPacket.Length, ep)
End Sub


D'avance merci.
Fabiano
A voir également:

11 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 janv. 2011 à 17:04
J'ai fais quelques recherche sur cette histoire de mot de passe. Apparemment, certaines cartes réseaux peuvent, pour un maximum de sécurité, être configurées pour ajouter un mot de passe à la fonction WOL. Le paquet magique réveillera l'ordinateur que si l'adresse MAC est correcte (logique) et que le mot de passe envoyé correspond à celui stocké dans la carte réseau.
Personnellement, je n'en ai jamais eu besoin, puisque je ne savais même pas que ça existait.

Par contre ce mot de passe n'a rien à voir avec le mot de passe du couple login/mdp d'une session windows (par exemple). Ce login/mdp, il faudra toujours le saisir à l'ouverture de session, locale sur la machine, ou distante dans le cas d'une session TSE (Bureau à distance, à autoriser auparavant sur la machine).
A moins que la machine soit configurée pour ouvrir automatiquement une session


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 janv. 2011 à 09:50
Je ne connais pas l'existence de script pour cela (mais cela ne veut pas dire que ça n'existe pas, je ne connais pas tout).

Tu pourrais utiliser la commande Shutdown de Windows qui permet d'arrêter ou redémarrer la machine locale ou une machine distante à condition qu'elle exécute un Windows XP ou supérieur. Si ça marche sur un réseau local, je ne suis pas certain que ça puisse marcher à travers internet.

Sinon reste la solution, d'ouvrir une session distante (TSE pour windows) sur la machine et l'éteindre par l'opération classique à travers cette session distante.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 janv. 2011 à 11:12
Ca ne marche pas parce que la syntaxe n'est pas correcte.
La syntaxe correcte serait celle-ci :
shutdown -s -f -t 180 -m 127.0.0.1

Le paramètre en rouge indique le temps d'attente avant que la commande shutdown lance l'arrêt de la machine. 180 indique 180 secondes soit 3min. L'utilisation de ce paramètre à pour effet d'afficher un message durant toute la durée sur la console de la machine qui va être arrêtée. Tu peux spécifier un temps entre 0 et 600 secondes. Si tu n'utilise pas ce paramètre le temps d'attente est par défaut de 30 secondes.

Info : "shutdown -a" annule l'arrêt planifié en cours sur la machine.


Pour le démarrage automatique de ton logiciel il suffit de mettre un raccouris dans le dossier du Menu Démarrer/Programmes/Démarrage, soit d'un utilisateur, soit de tous les utilisateurs (All Users).
Ou alors dans la base de registre, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run pour l'utilisateur actuel, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run pour tous les utilisateurs

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 janv. 2011 à 16:17
faut l'adresse mac en 6 bits
Octets, pas bits. Un byte=Un octet.
Une adresse MAC fait toujours 6 octets, il ne peut en être autrement. Donc si tu as une adresse MAC valide tu as donc obligatoirement tes 6 octets.

Concernant la seconde fonction, je ne vois pas l'utilité du password. Personellement, je n'ai jamais envoyé de password dans une trame WOL


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012
4 janv. 2011 à 16:29
Est-il possible alors de sauter l'étape du mot de passe ?

D'avance merci.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 janv. 2011 à 16:42
Ben ce que fait la première fonction que tu donne, elle n'utilise pas de password.

Je n'ai pas comparer dans le détail les 2 fonctions, mais si tu enlève la partie password dans la seconde fonction, tu retomberas, je pense, sur quelque chose d'assez proche et similaire de la première fonction.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012
4 janv. 2011 à 16:55
La première fonctionne a merveille. C'est celle-ci que je voudrais adapter pour qu'au démarrage du pc distant on ne me demande pas le mot de passe. C'est juste pour éviter des allez retour car l'ordinateur distant est bien "distant" !

A noter que je suis obligé de laisser le mot de passe sur l'ordinateur distant !
0
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012
4 janv. 2011 à 17:11
ok. J'ai bien compris. Mille mercis.
0
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012
5 janv. 2011 à 09:38
J'ai une dernière question...

Comment faire maintenant pour éteindre et redémarrer l'ordinateur distant ?

Bien sûr en utilisant le 1er script.

D'avance merci.
Fabiano
0
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012
5 janv. 2011 à 10:02
Ça ne marche pas avec shell !

Pourtant, il n'y a aucun message d'erreur.

Shell("shutdown -s -f -t 127.0.0.1", vbHide)

Je vais voir si c'est possible d'envoyer une requête via un socket.

Seulement je ne sais pas comment faire pour que mon application (serveur) à l'installation se lance au prochain démarrage de windows.


Si tu as une piste...

D'avance merci.
Fabiano
0
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012
5 janv. 2011 à 11:36
Merci beaucoup pour ton aide.

Aujourd'hui j'ai plein de petite question pour clôturer mon projet.

Encore merci pour ton aide.

Bien à toi,
Fabiano
0
Rejoignez-nous