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

Messages postés
262
Date d'inscription
mardi 26 février 2002
Dernière intervention
27 février 2012
- - Dernière réponse : cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
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
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
0
Merci
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
Commenter la réponse de cs_casy
Messages postés
262
Date d'inscription
mardi 26 février 2002
Dernière intervention
27 février 2012
0
Merci
Est-il possible alors de sauter l'étape du mot de passe ?

D'avance merci.
Commenter la réponse de cs_fabiano13
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
0
Merci
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
Commenter la réponse de cs_casy
Messages postés
262
Date d'inscription
mardi 26 février 2002
Dernière intervention
27 février 2012
0
Merci
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 !
Commenter la réponse de cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Dernière intervention
27 février 2012
0
Merci
ok. J'ai bien compris. Mille mercis.
Commenter la réponse de cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Dernière intervention
27 février 2012
0
Merci
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
Commenter la réponse de cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Dernière intervention
27 février 2012
0
Merci
Ç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
Commenter la réponse de cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Dernière intervention
27 février 2012
0
Merci
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
Commenter la réponse de cs_fabiano13

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.