AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anmeldung am DHCP-Server

Ein Thema von Pfanne · begonnen am 27. Apr 2011 · letzter Beitrag vom 29. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2      
Pfanne

Registriert seit: 27. Jan 2011
23 Beiträge
 
#1

Anmeldung am DHCP-Server

  Alt 27. Apr 2011, 21:48
Hi,

ich möchte die DHCP-Anmeldeprozedur (DISCOVER, OFFER, REQUEST, ACK) mit Delphi an meinem Router Testen.

Hintergrund ist eine nicht überall (unterschiedliches DHCP-Serververhalten) funktionierende Anmeldung eines AVR Microcontrollers an meinem DHCP-Server.
Der einfachheit halber möchte die Anmeldeprozedur mit Delphi und WireShark "studieren".

Ich möchte quasi das vollständige DISCOVER-Frame selber auf die Reise schicken.
Wenn ich jetzt aber über den UDP-Socket einen Leerstring versende bastelt mir der Socket ja schon was zusammen.

Ich möchte jetzt Frame-Mitschinitte aus WireShark importieren (reine FrameDaten *.bin) und diese dann modifiziert über Delphi versenden.

Momentan lade ich den *.bin File in einen Stream und versende diesen über den UDP-Socket.
Wie gesagt ist leider der "Header?" somit doppelt.

Seht ihr auf die Schnelle eine einfache Möglichkeit BinärDaten 1:1 als DHCP-Boottrap zu versenden?

Danke für eure Unterstützung.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Anmeldung am DHCP-Server

  Alt 27. Apr 2011, 21:54
.. selber bauen?
So richtig komplex ist das DHCP Protocol nicht.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Pfanne

Registriert seit: 27. Jan 2011
23 Beiträge
 
#3

AW: Anmeldung am DHCP-Server

  Alt 27. Apr 2011, 22:10
Hallo Klaus,

danke für den Link, es geht hier aber nicht um die Protokollstruktur sondern um den Test der verschiedenen Verhaltensweisen von DHCP-Server trotz "Normung".

Beispiel:
Ein Client sendet bei der DISCOVER-Anfrage als Source seine momentan noch statischsche IP also <> 0.0.0.0 (ja, soetwas gibt es!).

Einige DHCP-Server verwerfen die Anfrage (weil ja nicht konform, find ich auch richtig), andere senden trotz möglicher Protokollfehler ein OFFER.
Gleiches beim REQUEST......

Ich möchte nun mit einfachen Mitteln (Delphi und WireShark Mitschnitte) das Verhalten von verschiedenen DHCP-Servern "untersuchen" um ein besseres Verständnis dafür zu entwickeln.

Gruß
Pf@nne
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
198 Beiträge
 
Delphi XE Professional
 
#4

AW: Anmeldung am DHCP-Server

  Alt 28. Apr 2011, 23:37
Magst Du einmal einen Wireshark-Dump eines funktionierenden und evtl. eines fehlschlagenden DHCP-Request Deines AVRs erstellen? Ein klein wenig kenn ich mich mit DHCP aus....

Macht der AVR evtl. einen Request schon mit einer IP-Adresse, die er von früher hat? Dann kommt es z.b. auf die Konfiguration des DHCP-Servers an, ob er die Anfrage bearbeitet oder ignoriert. Angenommen, der DHCPd fühlt sich für 10.8.15.0/24 zuständig, der AVR fragt aber nach, ob er 192.168.47.11 haben darf, dann wird der DHCPd die Anfrage komplett ignorieren (not authoritive). Im ISC dhcpd gibt es dazu eine Option, dass er sich definitiv für alles authoritive fühlt.

Gruß,
SirTwist
  Mit Zitat antworten Zitat
Pfanne

Registriert seit: 27. Jan 2011
23 Beiträge
 
#5

AW: Anmeldung am DHCP-Server

  Alt 29. Apr 2011, 11:18
Hi SirTwist,

das Problem ist mehr oder weniger schon eingekreist.
Mir geht es jetzt darum eine kleine "Simmulation" der Anmelderoutine mit Delphi zu schreiben. Ich möchte die Testpakete quasi selber verändern.....

Ich hab da noch mal zusammen gefasst, die WireShark Mitschnitte kann ich heute Abend reinstellen.

Ich habe festgestellt, dass die Anmeldeprozedur (DISCOVER, OFFER, REQUEST, ACK) an einem DHCP-Server eigentlich genormt sein sollte >RFC1541<, jedoch sich offensichtlich nicht alle Server bzw. Clients sich strikt daran halten.

Ich habe einen Client, der beim DISCOVER und beim REQUEST als SOURCE seine momentan noch statische IP sendet, als SOURCE <> 0.0.0.0, nur gibt es DHCP-Server die diese Packete (weil nicht Konform) verwerfen, andere DHCP-Server akzeptieren diese aber.

Ich möchte dieses Verhalten näher untersuchen.
Ich habe mir folgendes Überlegt:
- Mitschnitt der LAN-Kommunikation zwischen Client und DHCP-Server mit WireShark.
- Speichern eines mitgeschnittenen Frames (z.B. DISCOVER vom Client) als reine Binärdaten (*.bin)
- Laden der Binärdaten in einen Delphi-Stream
- Manipulation des geladenen Streams
- versenden dieses Streams über einen UDP-Socket

Das klappt auch so weit ganz gut.
Mein Problem ist nun, das UDPSocket.SendStream(myStream) ja schon eigenständig Protokollinformationen hinzufügt, so das dann ja der UDP-Header + meine *.bin-Daten versendet werden.

Frage: wie kann ich den "nackten" *.bin File Versenden?

Dann stellt sich noch die Frage, wie schalte ich die IP-Kontrolle der LAN-Schnittstelle ab?
Reicht es einfach alle Dieste und Protokolle zu entfernen, kann man das vieleicht eleganter ausschalten, so das man es später auf einfachem weg wieder aktivieren kann, ohne die Komplette Schnitstelle neu einzurichten.

Danke für dein Interesse......
Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt....
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: Anmeldung am DHCP-Server

  Alt 29. Apr 2011, 12:14
Mein Problem ist nun, das UDPSocket.SendStream(myStream) ja schon eigenständig Protokollinformationen hinzufügt, so das dann ja der UDP-Header + meine *.bin-Daten versendet werden.
Was du suchst sind Raw-Sockets.
Das ist im Prinzip nur ein Flag, dass dem WinSock-Stack sagt, dass der Header weggelassen werden soll.
Leider hat Microsoft die Erzeugung von Raw-Sockets auf Windows XP/Vista/7 unterbunden.
Nur auf einem Server-OS können IHMO noch Raw-Sockets erstellt werden.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#7

AW: Anmeldung am DHCP-Server

  Alt 29. Apr 2011, 12:21
Laut MSDN kann man Raw-Sockets schon erstellen, allerdings benötigt der Prozess dafür Administrator-Rechte.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

AW: Anmeldung am DHCP-Server

  Alt 29. Apr 2011, 13:18
Laut MSDN kann man Raw-Sockets schon erstellen, allerdings benötigt der Prozess dafür Administrator-Rechte.
Microsoft hat dies aber zusätzlich eingeschränkt...

Limitations on Raw Sockets
On Windows 7, Windows Vista, Windows XP with Service Pack 2 (SP2), and Windows XP with Service Pack 3 (SP3), the ability to send traffic over raw sockets has been restricted in several ways:

* TCP data cannot be sent over raw sockets.
* UDP datagrams with an invalid source address cannot be sent over raw sockets. The IP source address for any outgoing UDP datagram must exist on a network interface or the datagram is dropped. This change was made to limit the ability of malicious code to create distributed denial-of-service attacks and limits the ability to send spoofed packets (TCP/IP packets with a forged source IP address).
* A call to the bind function with a raw socket for the IPPROTO_TCP protocol is not allowed.
Andreas
  Mit Zitat antworten Zitat
Pfanne

Registriert seit: 27. Jan 2011
23 Beiträge
 
#9

AW: Anmeldung am DHCP-Server

  Alt 29. Apr 2011, 13:36
Na prima,

dann brauch ich ja garnicht weiter zu schauen.....

Zitat:
The IP source address for any outgoing UDP datagram must exist on a network interface or the datagram is dropped
Das ist ja genau das, was ich testen möchte SOURCE = 0.0.0.0

Heißt das den nicht aber auch, dass eine DHCP Anmedung nur von WIN selber vorgenommen werden kann?


Erst mal Danke für eure Hilfe, auch wenn es nicht so klappt wie ich es mir vorgestellt habe.

Gruß
Pf@nne
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

AW: Anmeldung am DHCP-Server

  Alt 29. Apr 2011, 13:42
dann brauch ich ja garnicht weiter zu schauen.....
Naja, wenn du herausfinden würdest, wie man die Begrenzung umgehen kann (geheimer Registry key oder ein Systemtreiber der den Riegel wieder aufmacht) dann würde es gehen. Und ich wäre auch an der Lösung interessiert
Zitat:
Heißt das den nicht aber auch, dass eine DHCP Anmedung nur von WIN selber vorgenommen werden kann?
Ja!
Ausser du würdest z.B. einen Windows 2003/2008 SERVER benützen.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr.
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