Jump to content

Der Werkzeugkasten für die DBox2


-=The Brain=-

Empfohlene Beiträge

  • Antworten 172
  • Created
  • Letzte Antwort

Top Posters In This Topic

Hmmm,

 

also ich weiß ja nicht. Dieser umweg über den Bootmanager find ich nun nicht so doll. Natürlich bin ich auch dafür sourcen die es schon gibt zu verwenden, ganz klar, faul bin ich auch, aber ein externes Programm zu öffnen und quasi die kontrolle über den Programmablauf völligst zu verlieren finde ich nicht gut. Gerade an so einem kritischen Punkt.

Wie bemerkst du zum Beispiel das die Box den Boot Request nie gesendet hat, Die antwort nicht erhalten hat usw. Das bekommst du an der stelle doch garnicht mehr mit....

 

Mir ist schon klar das du da nochmal einiges an arbeit reininvestiern musst, aber ich helfe dir da auch gerne. Leider kenn ich mich mit c# nun nicht so doll aus, aber in pseudocode oder ner anderen sprache kann ich dir es grob erklären.

 

Prinzipiell sollte das ganze nicht so schwierig sein. Du musst erstmal rausbekommen wie du mit c# netzwerkports anspricht. Hab das ganze mal in Perl gemacht war ganz einfach. Da gabs ein fertiges package zum includen. So wird das bei c# ja auch sein.

 

Wie kommst du auf Port 67 und 69?? Jede beschreibung des Themas sagt port 67 und 68!

 

Such doch einfach mal in google nach bootp und c# da gibts bestimmt schon was zum wiederverwenden.

 

Prinzipiell ist es nur ein lauschen am Port und sobald etwas reinkommet ein gültige BootP antwort zu geben. Danach weiß die box bescheid und kennt deinen PC als Server und fragt dann über TFTP die PPCBOOT an. Hierfür kannst du auchmal schauen was du für TFTP für c# findest. Du musst der Box dann nur noch per TFTP die PPCBOOT schicken den rest macht sie von alleine.

 

Naja vieleicht nicht ganz die 13.img muss sehr wahrscheinlich auch noch per NFS rübergeschubst werden. Oha da hatte ich jetzt nicht drann gedacht. Da musst du auch noch schauen ob du was c# mäßiges für NFS, findest. Weiß jetzt nicht ob man der box das ding auch anders schicken kann. Ne antwort bekommst du von der Box dann bestimmt irgendwie auch über eines der Protokolle...

 

Naja ist dann doch etwas schwieriger. Vieleicht für die Version 2.0 aber schöner wäre es.

 

Schreib mir dochmal ob das mit c# stimmt dann schau ich mal was sich finden lässt...

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Admin

@-=The Brain=-

 

Also für die Version 2.0 muß ich kai-t beipflichten. Da wäre ne eigene Unter-

stützung des Flashens schon ganz wünschenswert. Zumal dann ja vielleicht

das nervige Abschalten des Hyperthreadings bei XP und nem Pentium weg-

fallen könnte. Du würdest da also ein neues Basistool als Ablösung für den

Bootmanager kreieren. :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie gesagt schreib mir mal ob ich mit c# richtig liege dann such ich mal obs nicht was fertiges für BootP und TFTP und NFS gibt. Wenn man da was findet das die Basisfunktionalität als package bereitstellt ist es kein hexenwerk.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@kai-t

 

da hast Du natürlich Recht. Das stimmt mit dem Nutzen des Boot-Managers. Nervt mich ja auch selber. Grundsätzlich ist das eigene Schreiben des Tools nicht wirklich das Schwierige Thema.

 

Bei wird es halt am Verständnis scheitern Kommunikation PC

 

Also werde ich mich noch mal ran machen, und das Ganze dann doch selber schreiben. Naja ... und eigentlich ist was eigenes ja sowieso besser.

 

@SnowHead

Basistool :(:(:wub:

Also wie gesagt, ich mache mich dran. Eigenes ist schon besser. Ist ja bald Weekend. Da habe ich ja Zeit!

Link zu diesem Kommentar
Auf anderen Seiten teilen

@kai-t

 

Ja, ich schreibe das in C Sharp.

Wenn ich auf der Suche nach Code-Schnipseln in C Sharp bin, dann

suche ich eigentlich aussschließlich hier : codeproject.com.

Da werde ich eigentlich immer fündig.

 

Grüße

bearbeitet von -=The Brain=-
Link zu diesem Kommentar
Auf anderen Seiten teilen

@derberg_de

 

Gerade geschehen! Danke für den Tip.

Ich bin ja sowieso dankbar, wenn jemand noch hier oder da was findet, was zu

andern oder zu verbessern ist.

 

@kai-t

Du musst erstmal rausbekommen wie du mit c# netzwerkports anspricht. Hab das ganze mal in Perl gemacht war ganz einfach. Da gabs ein fertiges package zum includen. So wird das bei c# ja auch sein.

Das habe ich ja schon. Funktioniert auch. Also ich habe gerade mal ein kleines Prog geschrieben, was am UDP-Port lauscht und das Broadcast-Datenpaket der DBox beim Einschalten empfängt. Bzw. mir eine Meldung am Bildschirm ausgibt, das auf dem Port Daten empfangen wurden.

 

Nun sehe ich im Moment das Problem bzw. stehe ich gerade dort, ich muss ja der DBox ähnlich DHCP eine IP-Adresse und ein passendes Sub-Netz anbieten bzw. dieses der Ethernet-Karte der Box zuweisen. Und da hakt es gerade.

 

Danach weiß die box bescheid und kennt deinen PC als Server und fragt dann über TFTP die PPCBOOT an. ... [sNIP] ... Du musst der Box dann nur noch per TFTP die PPCBOOT schicken den rest macht sie von alleine.

Das ist wirklich alles? Der DBox per TFTP die ppcboot anbieten. Und diese ppcboot macht den Rest ? Bzw. fordert das entsprechende Image an ? Das ist wirklich alles ? Das kann ich fast nicht glauben ....

 

Vieleicht für die Version 2.0 aber schöner wäre es.

Nee nee ... wenn, dann will ich es schon ordentlich machen. Also den ganzen Programmteil mit dem Bootmanager habe ich rausgeschmissen. Wird also nicht erst in der 2.0 !!!

 

Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was ist eigentlich genau der Unterschied zwischen DHCP und BOOTP ? Würde eine DBOX2 in einem Windows-Netzwerk mit DHCP-Server die vom DHCP zugeteilten Einstellungen übernehmen?

 

Denn dieses BOOTP brauche ich doch (wenn ich es richtig heraus gelesen habe) nur, umd der Netzwerkkarte IP, Subnetz, Gateway etc. zuzuweisen. Oder habe ich einen Denkfehler ?

 

Denn ich habe mir gerade mal DHCP-Zuweisungen unter C Sharp angesehen. Und das ist relativ simpel.

 

Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Aikonia

 

erst mal Danke für den Link. Aber genau als ich diesen Link, bzw. den Text dahinter gelesen habe, da kam mir die Frage ob eine DBox auf einen DHCP-Server antworten würde.

 

Also ganz genau gesagt wollte ich wissen, ob mir der DHCP-Dienst beim Flashen einer DBOx, deren IP-Adresse und MAC-Adresse ich nicht kenne, helfen kann !? Denn dann würde ich es gerne versuchen das Problem per DHCP zu lösen.

 

Aber ich schätze mal wohl eher nicht ...

 

Grüße :(

bearbeitet von -=The Brain=-
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, also wenn ich das richtig verstanden habe macht die Box ja eine Anfrage an Broadcast, also alle Netzwerkkarten und Geräte empfangen sie.

 

Nun und darauf erwartet sie da sie ja keine ip hat auch eine Antwort auf Broadcast. D.h. das Paket das du sendest muss an 255.255.255.255 gerichtet sein somit ist es laut definition eine Broadcast sendung die die Ip lose Dbox empfängt. Enthalten muss das paket so wie ich das verstanden habe folgendes:

 

Die Hardware-Adresse des Clients. Der Client erwartet eine Antwort mit seiner Hardware-Adresse, um zu erkennen, dass das Paket für ihn ist.

(Also als Hardware Adresse musst du wohl die Mac Adresse der Dbox schicken. Dies hat sie dir vorher in der Anfrage an Broadcast auch mit übermittelt. Lass dir einfach die Daten die sie sendet mal ausgeben da müsste die Mac mit dabei sein. Um zu sehen welches die Mac sein könnte lese die Mac vom Typenschild deiner Dbox ab und lass dir die Gesendeten daten in Hex anzeigen.)

 

Die Zufallszahl, die in der Anfrage vom Client erzeugt wurde.

(Hmmm, hier wirds etwas schwierig. Dafür müsste ich auchmal so ne BootP anfrage sehen. Irgendwo ist darin ne zufallszahl enthalten. Kann man mal nur hoffen das die anfrage der Dbox die selbe reihenfolge der Parameter hat wie unsere antwort, Dann sollte die Zufallszahl direkt hinter der Mac Adresse kommen. Diese musst du wieder mit zurück schicken)

 

Das wichtigste überhaupt: Die IP-Adresse der Client-Maschine

(Hier kannst du der Dbox nun ne Passende Ip Adresse geben!)

 

Die IP-Adresse und der Hostname des Boot-Servers. Von dort kann im nächsten Schritt über TFTP ein Betriebssystem geladen werden.

(Also die Ip von deinem PC dort fragt die Box als nächstes an)

 

Der Name und die Pfadangabe der Bootdatei. Die Bootdatei enthält den Kernel, der anschließend mit TFTP übertragen wird.

(Also die Box pullt sich das schon qusi. du gibst ihr hier schon mit das sie ne ppcboot von dir bekommt)

 

Name des Verzeichnisses, das vom Kernel über NFS als root (/) Partition eingebunden werden soll

(Das ist die stelle die im Bootmanager bei NFS steht und dort wo die 13.img liegen muss)

 

Der festplattenlose BOOTP-Client lauscht also auf dem vorgegebenen Port, und wartet auf eine Antwort vom Server. Empfängt er ein Paket, wird die MAC-Adresse mit der eigenen, sowie die Zufallszahl mit der gesendeten verglichen. Erkennt der Client, dass die Antwort für ihn gedacht ist, wird die IP-Adresse dem Netzwerk-Interface zugewiesen

 

 

So also prinzipiell ganz einfach. Dein Problem ist du musst quasi während des BootP schon nen TFTP Server emulieren weil die Box direkt auf die BootP antwort von dir versuchen wird unter deinen mitgegeben daten also IP, Dateiname, Verzeichniss die Bootdatei vom TFTP Server zu holen, der muss in dem Moment also schon von dir bereitgestellt werden.

 

Danach wirds noch heftiger in der PPCBoot wird die Box veranlasst eine datei von dem bei der BootP Antwort als root gegebenen NFS mount zu flashen. Der name ist 13.img, aber nur weil das in der PPCBoot so steht das kann man per hexeditor auch in Brain.img ändern. Nun auf jedenfall muss da ein NFS Server für die Box emuliert werden damit sie sich das image holen kann...

 

Also du musst nach einer BootP Antwort sofort einen TFTP Server und einen NFS Server parat haben. Mit minimaler funktionalität natürlich. So das eben die Box die Dateien dort abholen kann. Das muss auch in c# gebaut werden....

Link zu diesem Kommentar
Auf anderen Seiten teilen

@kai-t

 

Guten Morgen. Ich merke schon, das Projekt weitet sich ganz schön aus. Naja, aber macht mir ja auch wirklich Spaß, meinen Horizont ein wenig zu erweitern.

 

So, also ich habe jetzt mal das Datenpaket aufgefangen das die DBox beim Anschalten per Broadcast sendet. Den Hex-Code habe ich auch schon mal ein wenig zerpflückt ... ganz schöne Sisyphus-Arbeit.

 

Also hier mal der Hex-Code. Ich hoffe, Du kannst irgendwas damit anfangen :

Ich habe mal die Spalten A, B, C, D, E, F, G, H, I, J, K, L, M, N, O und P eingefügt, um die Daten wie in einer Tabelle beschreiben zu können !

		A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P 
0000   ff ff ff ff ff ff 00 50 9c 1b xx xx 08 00 45 00  .......P...s..E.
0010   01 48 00 00 00 00 3c 11 7d a6 00 00 00 00 ff ff  .H....<.}.......
0020   ff ff 00 00 00 43 01 34 00 00 01 01 06 00 00 00  .....C.4........
0030   15 7c 00 00 00 00 00 00 00 00 00 00 00 00 00 00  .|..............
0040   00 00 00 00 00 00 00 50 9c 1b xx xx 00 00 00 00  .......P...s....
0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0060   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0070   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0080   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0090   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00a0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00b0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00c0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00d0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00e0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00f0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0100   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0110   00 00 00 00 00 00 63 82 53 63 00 00 00 00 00 00  ......c.Sc......
0120   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0130   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0140   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0150   00 00 00 00 00 00								......

 

Was ich bis jetzt herausgefunden habe :

0000A bis 0000F sind die ff:ff:ff:ff:ff:ff für den Broadcast

0000G bis 0000L ist die MAC-Adresse meiner DBox (habe ich geändert !)

0010H steht für (0x11) -> UDP-Protokoll

0010I bis 0010J ist die CheckSumme (0x7da6)

0010K bis 0010N ist IP der DBox bei der Anfrage (00.00.00.00)

0010O bis 0020B ist die IP an die das UDP-Paket geschickt wurde (255.255.255.255)

0050G bis 0090J ist der Server-Host-Name (hier natürlich nicht bekannt)

0090G bis 0110F ist das Bootfile. In diesem Fall also NULL. Ich denke mal, hier kommt dann irgendwie die ppcboot ins Spiel !?

0110G bis 0110J das ist diese ominöse Zufalls-Check-Zahl

 

Also so weit kann ich jetzt das Gesendete Datenpaket annehmen und auch anzeigen / auswerten lassen.

 

Wenn ich jetzt richtig weiter denke, dann muss ich doch auf dieses Paket die passende Antwort senden. Also die zu verwendende IP etc. Oder ?

 

Grüße

 

[EDIT]

Kann ein Admin mal den Namen des Themas ändern? Denn so richtig trifft

der ja nun nicht mehr zu ... :(

[/EDIT]

bearbeitet von -=The Brain=-
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Admin

@-=The Brain=-

 

Bin zwar nicht kai-t, aber Du hast Recht. Jetzt mußt Du die erste Antwort an die

Box senden. Inhalt ist ja in den beiden Links beschrieben.

2. BOOTP reply. The server responds with the client's IP address, the server's IP address (it's own), and the IP address of a default gateway.

 

Welchen Threadnamen hättest Du denn gern?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja korrekt.

Versuch dieses Paket mal anzupassen und auf port 68 an 255.255.255.255 zu schicken.

Vergebe ne IP für die Box, ne IP für dich, PCCboot.

 

Wenn du der box ein korrektes Paket auf port 68 liefert wird sie als reaktion darauf, eine TFTP Anfrage auf port 69 losschicken.

Diese geht an die IP die du als deine vorher im BOOTP Paket angegeben hast. Dieses neue Paket wäre dann wieder wichtig. Mit diesem versucht sie vom TFTP Server die PPCboot Datei zu holen. Vieleicht langt es darauf das PPCBoot file auf Port 69 an sie zu senden. Das wäre super.

 

@Snowhead: Die antwort ist etwas komplizierter. Ich denke das Antwortpaket muss genauso aussehen wie es Brain beschreibt. Du musst alles mitliefern. Mac adressen, Ips, lokation der PPCBoot und eben auch die zufallszahl.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@SnowHead

Guten Morgen.

Welchen Threadnamen hättest Du den gern?

Wie wäre es mit "... wenns mal wieder länger dauert ..." ? :(

 

@kai-t

Ich versuche mal mein Glück. Muss ja irgendwie zu lösen sein! Wenn meine Box auf eine von mir gestricktes Datenpaket ordentlich antwortet und die gesendeten Daten akzeptiert, werde ich das dann gleich hier verkünden :( . Dann müssen wir sehen, wie es weiter geht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie gesagt so wie ich das verstehe läuft das so ab:

 

Anfrage der box auf Port 67 -> Die die du jetzt empfängst

Deine Antwort muss raus auf Port 68

Wenn diese korrekt ist wird die Box ein PPCBoot file auf Port 69 anfragen. Die Antwort muss dann ebenfalls auf Port 69 kommen.

Wenn wir soweit wären wäre das schon super.

 

Gruß

Kai

Link zu diesem Kommentar
Auf anderen Seiten teilen

@kai-t

Hi, hi, wenn er ihn nicht wiederfindet hilft ihm das hier auch nicht da er es ja nicht findet :-)

 

Bei uns nennt man das Haare spalten ... :(:(:wub: . Nach ewig langem Suchen und durchstöbern des Keywelt-Board´s habe ich den Thread aber zum Glück wieder gefunden. Und den Namen auch gleich in den Monitor geritzt, damit ich ihn auch immer wieder finde ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Admin

@-=The Brain=-

 

Nach ewig langem Suchen und durchstöbern des Keywelt-Board´s habe ich den Thread aber zum Glück wieder gefunden. Und den Namen auch gleich in den Monitor geritzt, damit ich ihn auch immer wieder finde ...

So was nennt man bei uns Sarkasmus. :(

 

Nun aber back to topic. Ich hab zu Hause noch ein paar gute Netzwerkanalysetools

rumliegen, mit denen man den Datenverkehr sehr komfortabel dokumentieren kann.

Wenn Du mit so einem Proggy mal schaust, was der Bootmanager macht, kommst

Du bestimmt einen Riesenschritt weiter. Kannst bei Interesse ja mal einen Funk geben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.

×
×
  • Neu erstellen...