Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Magic Packet richtig zusammenstellen (https://www.delphipraxis.net/134498-magic-packet-richtig-zusammenstellen.html)

stev-e87 23. Mai 2009 11:40


Magic Packet richtig zusammenstellen
 
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... :wall:

Neutral General 23. Mai 2009 11:46

Re: Magic Packet richtig zusammenstellen
 
Hi,

Weiß nicht ob das dein Fehler ist. Wahrscheinlich nicht, aber das hier:

Delphi-Quellcode:
Data := Data + Chr(StrToInt('$FF'));
kann man auch einfach so schreiben:

Delphi-Quellcode:
Data := Data + Chr($FF);
Gruß
Neutral General

Apollonius 23. Mai 2009 11:50

Re: Magic Packet richtig zusammenstellen
 
Man könnte sogar gleich Data := #255#255#255#255#255#255 daraus machen.

Hast du mal im Debugger geschaut, was beim Versenden in Data steht?

stOrM 23. Mai 2009 12:04

Re: Magic Packet richtig zusammenstellen
 
So, oder bei den Schweizern nachsehen: Klick

Blödsinn sorry ! (Kommt davon wenn man nicht alles liest! ) :shock:

Hier gibt es noch etwas dazu Klick

stev-e87 23. Mai 2009 12:06

Re: Magic Packet richtig zusammenstellen
 
Hi,

also der Debugger liefert das für Data:

'ÿÿÿÿÿÿ'#0#$D'aE'#$1A'û'#0#$D'aE'#$1A'û'#0#$D'aE'# $1A'û'#0#$D'aE'#$1A'û'#0#$D'aE'#$1A
'û'#0#$D'aE'#$1A'û'#0#$D'aE'#$1A'û'#0#$D'aE'#$1A'û '#0#$D'aE'#$1A'û'#0#$D'aE'#$1A'û'#0#
$D'aE'#$1A'û'#0#$D'aE'#$1A'û'#0#$D'aE'#$1A'û'#0#$D 'aE'#$1A'û'#0#$D'aE'#$1A'û'#0#$D'aE'#$1A'û'

Auch nix anderes als die oben geposteten Bytes... :|

@Apollonius,Neutral General

Das vereinfacht zwar die Schreibweise, ändert aber leider am Resultat nix.

Hmmm-...

Phoenix 23. Mai 2009 12:51

Re: Magic Packet richtig zusammenstellen
 
Such mal hier in der DP nach Wake on Lan und Magic Packet. Da sollte es imho schon fertige Lösungen zu geben..

stev-e87 23. Mai 2009 13:21

Re: Magic Packet richtig zusammenstellen
 
Die fast immer auf die schweizer Lösung rauslaufen, die ich benutze...

stev-e87 23. Mai 2009 16:56

Re: Magic Packet richtig zusammenstellen
 
Mich wundert auch ganz stark, dass der Wireshark in der einfachsten Form, wenn data:=#255#255#255#255#255#255 oder eben 5x $FF ist ohne den ganzen Rest ranzuhängen 79 79 79 79 79 79 statt FF FF FF FF FF FF ergibt.Ist das jetzt vielleicht ein Problem der Indy (10.1) Komponenten? Da seh ich nicht mehr so ganz durch ...

Neutral General 23. Mai 2009 17:11

Re: Magic Packet richtig zusammenstellen
 
Hi,

Also meine Vermutung ist: Wenn die Send-Methode einen String erwartet, dann vielleicht einen darstellbaren?! Wobei... evtl ist $FF darstellbar. Aber vielleicht zählen auch nur 7-Bit ASCII Zeichen :mrgreen:

Was ich sagen will: Gibt es auch ne Send-Methode die nen Pointer oder sowas erwartet? Sodass du die Daten "roh" verschickst anstatt sie als String zu verschicken.

stev-e87 23. Mai 2009 17:28

Re: Magic Packet richtig zusammenstellen
 
Weiß ich jetzt nicht, könnte wohl noch sendbuffer verwenden aber da wollte er glaub ich auch ne Rückwandlung RawToString oder so.
die Mac-Adresse übergibt er ja bis auf die lezten beiden Bytes wiederum richtig... ein Kuddelmuddel ist das...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz