![]() |
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:
Änderungen:
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; - 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: |
Re: Magic Packet richtig zusammenstellen
Hi,
Weiß nicht ob das dein Fehler ist. Wahrscheinlich nicht, aber das hier:
Delphi-Quellcode:
kann man auch einfach so schreiben:
Data := Data + Chr(StrToInt('$FF'));
Delphi-Quellcode:
Gruß
Data := Data + Chr($FF);
Neutral General |
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? |
Re: Magic Packet richtig zusammenstellen
|
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-... |
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..
|
Re: Magic Packet richtig zusammenstellen
Die fast immer auf die schweizer Lösung rauslaufen, die ich benutze...
|
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 ...
|
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. |
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 10:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz