Einzelnen Beitrag anzeigen

stev-e87

Registriert seit: 28. Feb 2009
20 Beiträge
 
#1

Magic Packet richtig zusammenstellen

  Alt 23. Mai 2009, 11:40
Hallo,

ich versuche gerade meinen Rechner per WoL zu starten und benutze dazu den Code von Swissdelphicenter in leicht abgeänderter Art:

Delphi-Quellcode:
procedure Wake_On_LAN(Mac:String);
var
  Data, temp: string;
  k, n: integer;
begin
  Data := '';
  for k := 0 to 5 do
  begin
    Data := Data + Chr(StrToInt('$FF')); // 6x add a FF / 6x ein FF hinzufügen
  end;
  temp := StringReplace(Mac, '-', '', [rfReplaceAll]);
  for k := 0 to 15 do
  begin
    temp := StringReplace(Mac, '-', '', [rfReplaceAll]);
    for n := 0 to 5 do
    begin
      // 16x add Target-Mac-Adress / 16x die Ziel-Macadresse hinzufügen
      Data := Data + Chr(StrToInt('$' + temp[1] + temp[2]));
      Delete(temp, 1, 2);
    end;
  end;
  with Wnd_Main.IdUDPClient_WoL do begin
  //Example with TIdUDPClient of Indy
  Host:= '192.168.2.255';
  Port:= 2304;
  Send(Data); // Send it / Verschick es
  end;
end;
Änderungen:
- die Mac übergebe ich der Prozedur anstatt diese auszulesen (ist ja eh immer die gleiche ), auch in der Form 11-22-33-44-55-66
- Den Host tausche ich bei jedem Versuch von 255.255.255.255 auf 192.168.2.255

selbstverständlich ist Broadcast_Enable und Active bei der Indy Kompo True. Mit nem anderen funktionierenden Tool gehts, den rechner zu wecken.

Besonders lustig ist auch die Ausgabe von Wireshark:

Meine Variante bringt folgenden Quatsch (nur Datenteil):

0000 79 79 79 79 79 79 00 0d 61 45 1a 75 00 0d 61 45 yyyyyy..aE.u..aE
0010 1a 75 00 0d 61 45 1a 75 00 0d 61 45 1a 75 00 0d .u..aE.u..aE.u..
0020 61 45 1a 75 00 0d 61 45 1a 75 00 0d 61 45 1a 75 aE.u..aE.u..aE.u
0030 00 0d 61 45 1a 75 00 0d 61 45 1a 75 00 0d 61 45 ..aE.u..aE.u..aE
0040 1a 75 00 0d 61 45 1a 75 00 0d 61 45 1a 75 00 0d .u..aE.u..aE.u..
0050 61 45 1a 75 00 0d 61 45 1a 75 00 0d 61 45 1a 75 aE.u..aE.u..aE.u
0060 00 0d 61 45 1a 75 ..aE.u

wohingegen das andere Tool-wie es sein sollte, 6x FF am Anfang gefolgt von 16x Mac bringt, was Wireshark auch direkt als WoL identifiziert...

Bei anderen hat doch aber dieses Skript auch funktioniert...
  Mit Zitat antworten Zitat