![]() |
Manipulieren der Benutzerangaben bei Named Pipes
Hallöchen zusammen. Ich habe eine Client-Server Anwendung (Windows), welche über Netzwerk mittels Named Pipes Daten austauschauscht. Soweit geht auch alles. Störend finde ich jedoch, dass eine Verbindung nur klappt, wenn auf dem Client-PC ein identischer User-Account läuft wie er auch auf dem ServerPC zu finden ist, oder auf dem Server das Gast-Konto aktiviert ist.
Nun ist es so, das auf dem Server ein fester User Acc vorhanden ist, welcher aber nicht auf den Clients eingerichtet werden soll. Mittels WireShark habe ich beobachtet, dass bei Verbindungsaufbau irgendwann ein TCP Packet übermittelt wird, welches Infos zu Benutzername und wohl auch Kennwort übermittelt. Meine Frage ist nun: Gibt es eine Möglichkeit diese Benutzerinformationen vor der Übertragung zu ändern? So dass eine Verbindung zum Server möglich wird ohne dass auf dem Client das identische Konto angelegt sein muss. Intuitiv gehe ich ja davon aus, dass diese Geschichten fest in den Windows DLLs implementiert sind, und man somit da nicht ran kommt. Alternativ dann vielleicht noch das direkte Manipulieren des TCP Packets. Naja..wie auch immer....kennt ihr eine Lösung? Vorschläge? Netten Gruß |
AW: Manipulieren der Benutzerangaben bei Named Pipes
Müsste man dann sicher beim erstellen/öffnen der Verbindung angeben. Entsprechend interessant wäre wie du derzeit die Pipes erstellst.
|
AW: Manipulieren der Benutzerangaben bei Named Pipes
Naja, ich sag mal soviel...Das ganze findet im Rahmen meiner Bachelorarbeit statt. Habe hierfür von meinem Betreuer eine Unit bekmomen, und ich weiß nun nicht ob ich die raußgeben darf. Im Prinzip müsste das schon gehen, aber ich will das vorher abklären. Was ich aber sagen kann: Diese Unit nennt sich Pipes.pas und geht auf den Programmierer rllibbiy zurück. Die Unit gab es einst hier zum Downloaden:
![]() Diese Seite ist aber inzwischen tot. |
AW: Manipulieren der Benutzerangaben bei Named Pipes
|
AW: Manipulieren der Benutzerangaben bei Named Pipes
Jo genau das ist die Unit.
|
AW: Manipulieren der Benutzerangaben bei Named Pipes
Ich habe das ganze bei mir umgebastelt für das Verwenden der Zugriffsrechte einer Datei, welche als Property eingetragen werden kann.
Vielleciht kannst Du etwas von den Auszügen brauchen ....
Delphi-Quellcode:
procedure TPipeServer.GenACLFromFile;
//20110228 by Thomas Wassermann var res : Boolean; len : Cardinal; fDaclPresent,fDaclDefaulted:Bool; begin FACL := nil; if Assigned(FpFileSD) then DoHeapFree(FpFileSD); if FileExists(FACLFileName) then begin res := GetFileSecurity(PChar(FACLFileName),DACL_SECURITY_INFORMATION,FpFileSD,0,len); if res or (GetLastError() = ERROR_INSUFFICIENT_BUFFER) then begin FpFileSD := DoHeapAlloc(len); GetFileSecurity(PChar(FACLFileName),DACL_SECURITY_INFORMATION,FpFileSD,len,len); GetSecurityDescriptorDacl(FpFileSD,fDaclPresent,FACL,fDaclDefaulted); end; end; end; ..... ..... procedure TPipeServer.SetActive(Value: Boolean); begin // Check against current state GenACLFromFile; if (FActive <> Value) then begin // Shutdown if active if FActive then DoShutdown; // Startup if not active if Value then DoStartup end; end; ..... ..... procedure InitializeSecurity(var SA: TSecurityAttributes;ACL:PACL=nil); var sd: PSecurityDescriptor; begin // Allocate memory for the security descriptor sd:=AllocMem(SECURITY_DESCRIPTOR_MIN_LENGTH); // Initialise the new security descriptor InitializeSecurityDescriptor(sd, SECURITY_DESCRIPTOR_REVISION); // Add a NULL descriptor ACL to the security descriptor SetSecurityDescriptorDacl(sd, True, ACL, False); // Set up the security attributes structure with SA do begin nLength:=SizeOf(TSecurityAttributes) ; lpSecurityDescriptor:=sd; bInheritHandle:=True; end; end; |
AW: Manipulieren der Benutzerangaben bei Named Pipes
Ok, erstaml danke für die Antworten.
@ Bummi: Wenn ich das richtig sehe, dann hast du hier am Code des Servers rumgedreht. Mir geht es aber nicht um die Serverseite sondern einzig um das was beim Client passiert. Ich verusuch das nochmal zu erklären. Windows1(Client): User: Bär Pass: 1234 Windows2(Server): User: großerBär Pass: 4321 Der Einfachheit halber sei angenommen, dass sonst keine weiteren Accounts auf den Windowsen sind. Also auch keine Gast-Accounts. Der Pipe-Client kann sich nun nicht mit dem Pipe-Server verbinden, da die Accounts unterschiedlich sind. Ist es jedoch möglich, im Code des Pipe-Clients statt [User: Bär Pass: 1234] die Kennung des Servers also [User: großerBär Pass: 4321] zu übermitteln, sollte eine Verbindung hinhauen. Und auf die Umsetzung dieser Idee zielt meine Frage ab. Ist dies Möglich? |
AW: Manipulieren der Benutzerangaben bei Named Pipes
Wenn ich Dich richtig verstanden habe meinst Du so etwas wie RunAs?
Die Zugriffsberechtigungen funktionieren wie Dateiberechtigungen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 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