![]() |
LPT-Port steuern
Hallo
Ich hab die Suche benutz und bin auf diesen Topic gestossen: ![]() nun hab ich dieses skript bei mir bei einem neuen project eingefügt:
Delphi-Quellcode:
Nun kommt aber beim Complimieren:
function PortIn( PortNum: word): byte;
Var a : byte; Begin asm mov DX, PortNum; in AL, DX; mov a, AL; end; {asm} PortIn := a; end; procedure PortOut( PortNum: word; a: byte); Begin asm mov DX, PortNum; mov AL, a; out DX, AL; end; {asm} end; Zitat:
MfG xstream |
Re: LPT-Port steuern
Moin xstream,
unter welchem Betriebssystem hast Du es ausprobiert? Ich vermute mal ein NT-basiertes, wie XP. Der Sourcecode dürfte aber nur unter 95/95/ME funktionieren. |
Re: LPT-Port steuern
Hi!
Soweit ich weis, geht das nur unter Win9x. Unter NT (200/XP) musst du evtl. die API nutzen, weil das OS das direkte ansprechen der Ports nicht erlaubt (Sicherheitsgründe). |
Re: LPT-Port steuern
hmm richtig vermutet... win xp home...
habt ihr einen 'ersatz' für die funktionen? wäre sehr dankbar.... |
Re: LPT-Port steuern
Such mal im MSDN, vielleicht findest du was. Wenn mir was einfällt, geb ich Bescheid.
|
Re: LPT-Port steuern
Hallo,
wie schon berichtet, ist der Zugriff direkt auf Hardware bei XP nicht möglich. Das muss dann über einen Treiber gemacht werden. Ich selbst benutze dafür die Komponente IOPort von ![]() Grüße Sven |
Re: LPT-Port steuern
Einen generischen Port-I/O-Treiber bekommt man kostenlos im DDK dazu. Wenn ihr wollt, kann ich euch den gern kompilieren, den Header hier reinstellen usw.
Es muß aber eigentlich über DeviceIoControl() gehen. Es macht keinen Sinn, daß MS das System sicher macht, nur um dann Leute zu zwingen es über einen generischen Port-Treiber wieder unsicher zu machen. |
Re: LPT-Port steuern
@SvB: dein tip geht bei mir irgendwie ned...
@Mephistopheles: kannst du mir dazu mal genäuere informationen geben? vielen dank für eure antworten... nun wenn ich das ganze unter win 98 verwenden würde? wie müsste ich es dann proggen, bzw. würde es dann so funtzen wie es im anderen post steht? |
Re: LPT-Port steuern
Hi,
unter Windows 98 funktionieren die Assembler Anweisungen auch ohne Treiber. Ne Möglichkeit wäre es beim Programmstart zu prüfen welche Windows-Version installiert ist und bei NT-basierten Systemen den Treiber zu laden und bei 9x Systemen einfach nicht. Gruß, Michael |
Re: LPT-Port steuern
sorry bin da wirklich noch ein noob... aber welchen treiber?
|
Re: LPT-Port steuern
Zitat:
@xstream: Es geht um einen kleinen generischen oder spezifischen Porttreiber um obige (ASM)Anweisungen zum Laufen zu bekommen. Ansonsten schau dir mal DeviceIoControl() an. Damit sollte es auch ohne extra Treiber möglich sein. Dazu gibt es aber einen anderen Thread irgendwo hier. |
Re: LPT-Port steuern
Die genaue URL ist
![]() Hast Du das gemeint, was nicht geht. Grüße Sven |
Re: LPT-Port steuern
Ich habe auch gerade mal meine Festplatte etwas durchforstet und habe da noch was gefunden. Nennt sich "TDLPortIO", darunter in Google suchen und Du findest dann was, was auch mit Delphi funktioniert. Eventuell muss da was nachgearbeitet werden damit es mit D7 funktioniert, dürfte aber nicht so schwer sein.
Grüße Sven |
Re: LPT-Port steuern
Hi,
vielleicht ist auch diese Seite interessant, ![]() auf dieser Seite sind u.a. die Funktionen und Prozeduren, für Delphi aufgeführt. Viel Spass |
Re: LPT-Port steuern
wieso nutzt ihr net die DP suche ? ich hab gewiss schon in mindestens 5 beiträgen auf genau diese fragen eine antwort gegeben
stichwort zlportio |
Re: LPT-Port steuern
Hallo,
hier ein kleines beispiel mit IO.DLL (Link von Blutiger Anfänger):
Delphi-Quellcode:
Beim ersten Start meckert Delphi. Ignoriere das, dort wird nur der Treiber installiert.
implementation
{$R *.dfm} procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll'; procedure PortWordOut(Port : Word; Data : Word); stdcall; external 'io.dll'; procedure PortDWordOut(Port : Word; Data : DWord); stdcall; external 'io.dll'; function PortIn(Port : Word) : Byte; stdcall; external 'io.dll'; function PortWordIn(Port : Word) : Word; stdcall; external 'io.dll'; function PortDWordIn(Port : Word) : DWord; stdcall; external 'io.dll'; procedure SetPortBit(Port : Word; Bit : Byte); stdcall; external 'io.dll'; procedure ClrPortBit(Port : Word; Bit : Byte); stdcall; external 'io.dll'; procedure NotPortBit(Port : Word; Bit : Byte); stdcall; external 'io.dll'; function GetPortBit(Port : Word; Bit : Byte) : WordBool; stdcall; external 'io.dll'; function RightPortShift(Port : Word; Val : WordBool) : WordBool; stdcall; external 'io.dll'; function LeftPortShift(Port : Word; Val : WordBool) : WordBool; stdcall; external 'io.dll'; function IsDriverInstalled : Boolean; stdcall; external 'io.dll'; procedure TForm1.Button1Click(Sender: TObject); var b:byte; begin If IsDriverInstalled then begin //die 0 ausgeben PortOut($378,$0); //Wert vom Port holen b:=PortIn($378); end; end; Ich hoffe ich habe dir geholfen. Warum man bei WIN98 direkt zugreifen kann und warum bei W2k, Winnt oder WinXP nicht, darüber lass ich mich hier zu einem späteren Zeitpunkt aus. Rainer |
Re: LPT-Port steuern
super vielen dank an alle
der tip von runger funktioniert ohne probleme,..... vielen dank.... |
Re: LPT-Port steuern
Zitat:
Ich denke vollen Portzugriff sollte jeder haben! :wall: Vielleicht sollte endlich mal ein VXer einen Virus schreiben, der dank einem generischen Portzugriff lustige Muster auf die CRT-Innenseite brennt (genügend leicht benutzbare Treiber/DLL-Kombos zum Thema gibt es ja), oder anders Hardware beschädigt. Dann ginge vielleicht auch hier den Leuten auf, daß es so nicht sein darf. |
Re: LPT-Port steuern
Hallo Mephistopheles,
Das von mir gelieferte Codebeispiel benutzt einen Treiber. ( Hatte ich beschrieben ). Es wird also der ganz normale Weg durch Windows genommen, so wie das der Printer und alle anderen Geräte auch tun. Der Treiber wird beim ersten Versuch die IO.dll zu benutzen installiert. Das hier ist kein Peek oder Poke wie du es vielleicht von Basic gewohnt bist. Rainer |
Re: LPT-Port steuern
Zitat:
Sicherheit ist eine Frage des Vertrauens. Wenn er damit leben kann, dass jede Software auf seinem System potentiell alle Ports verwenden kann, dann ist dies seine Entscheidung. Ich persönlich würde dieses Risiko auf Dauer nicht eingehen (und schon gar nicht für Produktionssysteme). |
Re: LPT-Port steuern
Zitat:
Der Treiber wird nur installiert, wenn der Benutzer Admin ist - was dir zu denken geben sollte. Admin ist die höchste Instanz im System und darf prinzipiell mehr als SYSTEM (nämlich Netzwerkzugriffe) - und kann sich eben auch SYSTEM-Rechte verschaffen. Und nein, dies ist nicht der Weg den Drucker und andere Geräte gehen. Als wertvolle Informationsquelle darf ich dir das ![]() Zitat:
Zitat:
Zitat:
Zitat:
Übrigens wäre dies ein Grund für große Firmen den Einsatz solcher Software abzulehnen. Insofern natürlich vom Autor ehrlich angegeben wird, wo der Haken liegt. |
Re: LPT-Port steuern
Hallo,
ich bin's echt leid! Hier kann man reinstellen was man will, immer gibt's irgendjemand der ein Haar in der Suppe findet. Ich wollte doch dem guten Menschen nur helfen. Die Windows - Betriebssysteme sind so unsicher, dass es hier wohl auf meinen Beitrag für dies eine spezifische Lösung nicht ankommt. Rainer |
Re: LPT-Port steuern
Zitat:
Zitat:
Aber eine Frage: wenn dich jemand an einer Tankstelle (natürlich gibt's dort ein paar Benzinlachen in meiner Geschichte) nach Feuer für eine Zigarette fragt, was machst du? Feuer geben und schleunigst wegfahren (Vgl. dein obiger Ansatz) oder ihm erklären, daß man an einer Tankstelle nicht mit Feuer spielt und ggf. andere Leute auf das Problem aufmerksam machen (Vgl. mein Ansatz)? Zitat:
Kannst du das mit irgendetwas begründen? Weißt du, wann die letzten Löcher gefunden wurden, die Ring0-Zugriff erlaubten und außerhalb administrativer Rechte funktionierten? Es ist ja ein Allgemeingut, daß Windows unsicher wäre. Ich bin davon überzeugt, daß es das nicht ist (NT-Plattform). Aber lassen wir die Diskussion über Windows. Manche finden es halt nicht gut und arbeiten dennoch damit - ich finde es super und arbeite auch damit. Zitat:
|
Re: LPT-Port steuern
hei man kriegt euch wieder ein...
1. wird die software NIE verbreitet 2. brauch ich die software dort, wo nur programme hinkommen wo ich weiss was es ist, bzw. kein internet 3. wird die software wahrscheindlich nur auf einer zeitspanne von 2 bzw. 3 monaten gebraucht und nicht für immer |
Re: LPT-Port steuern
@crt zum rauchen bringen: wer hat denn jemals vom vga-port ansteuern gesprochen? nur so kleine zwischenfrage... zur not kann man ja diesen treiber so modifizieren, dass er genau dafür nicht mehr zu gebrauchen ist.
|
Re: LPT-Port steuern
Zitat:
|
Re: LPT-Port steuern
der code der diese zugriffe durch den porttreiber ausübt existiert doch garnicht in dem projekt!
ausserdem wenn du auf solche kleinigkeiten die deinen lieben ring0 belästigen KÖNNTEN reagierst, dann solltest du dich mal aufrichten und schauen das man auch mit einem einzigen befehl die festplatte formatieren kann. da brauch ich keinen ring0 zugriff und das hat mindestens genausoviel schaden BLABLABLA ey leute wird hier nun geholfen oder um jede klitzekleine sicherheitslücke, die nichtmal existiert, weil der code dazu fehlt und die verbreitung erstrecht, hochgepusht ? dann kann ich gleich mal bei den unzähligen chatprojekten die sich hier angesammelt haben mal ein paar exploits rausfinden.. gibts ja immerhin bei den meisten auch gleich die soße dazu.. MENSCH kriegt euch mal wieder ein O_o / extrem offtopic und aufregung ende |
Re: LPT-Port steuern
@ supermuckl
ich finde es gerade in einem Forum, in dem es um die Entwicklung von Software geht, sehr wichtig auf solche Gefahren hinzuweisen. Auch wenn diese nicht sehr akkut sind sollte es doch zumindest erwähnt werden und jeder der sich Softwareentwickler nennt und sich diesen Thread ansieht weil er selbst gerade versucht auf den LPT zuzugreifen kann nicht genug gewarnt werden bevor er etwas entwickelt das er kommerziell vertreibt und dann potentiell unsicher sein könnte. Nur meine Meinung...aber sichere Software ist ehute das A und O. Und ausseredem zeigt ja Mephistopheles das er nicht nur daher redet. Er hat ja in einem anderen Thread ein Projekt ins Leben gerufen das sich genau damit beschäftigt. Gruss Dragi |
Re: LPT-Port steuern
Hallo Mephistopheles,
ich glaub ich hab dir unrecht getan! Ich hab erst im Laufe der Diskussion gecheckt was euch stört. In dieser Beziehung gebe ich euch völlig recht. Bemerkung zu dem Windows-Murks: Ich bin Systemadministrator und verbringe meine Zeit zu 40% damit Updates Servicepacks und Sicherheitslückenschliesser zu installieren. Das war alles was ich dazu zu sagen habe! Rainer |
Re: LPT-Port steuern
Zitat:
Zitat:
Der Punkt ist folgender: der Code im Treiber existiert! Deine Kommentare hin oder her. Wirf einen Disassembler an (Download siehe meine Signatur) und schau es dir selber an, wenn du es nicht glauben kannst. Jetzt kommt natürlich xstream, der Orginalposter, (lt. eigenem Bekunden noch sehr jung - 15? -, deshalb ist ihm der folgende Punkt vermutlich noch nicht bewußt) und nimmt einen der o.g. Treiber, der eine Lücke in die Systemsicherheit reißt. Heute sagt er noch: hey, das ist nur für ein Projekt usw. usf. In 5 Jahren hat er dann vielleicht einen Job als Systemprogrammierer. Wie's der Zufall so will, fragt ihn sein Chef, ob er da nicht was hätte ... man bräuchte in einem gewissen Programm die Möglichkeit einzelne Pins am LPT anzusteuern. xstream denkt kurz nach und denkt sich: man, das hast du doch schon mal gemacht. *kram* *kram* ... voila, Code gefunden. Und schneller als man es sich versieht, ist der Code trotz aller Bekundungen in einer Produktivumgebung im Einsatz. ... und dieses Szenario spricht noch nichtmal von den dutzenden Lesern, die hier mitlesen und damit auf die gleiche Spur geleitet werden. :zwinker: Hallo Rainer, Zitat:
Zitat:
Aktuell versuchen wir etwas Geld für einen neuen Server rauszuleiern. Wahrscheinlich überall das gleiche ;) Kleine Bitte: Wenn jemand von euch sinnvollen Code mit IN/OUT hat, mit dem ein DOS-fähiger Drucker angesteuert werden kann, möge er mir den bitte per PN oder ![]() |
Re: LPT-Port steuern
Nur zur Info:
wir betreuen zu zweit 450 PC's 12 Server, ausserdem 8 Aussenstellen mit nocheinmal ca 100 PC's. Win2k ist Standard WinXP ist im kommen. Zentrale Updates sind bei uns nur extrem schwer zu handeln. Rainer |
Re: LPT-Port steuern
[OT]Bei sovielen Außenstellen - vermutlich nicht immer mit bester Anbindung und dank Windows 2000 ohne TS - kann ich mir das vorstellen. Wahrscheinlich beziehen eure Clients die Updates direkt über MS, statt über einen firmenzentralen SUS, oder? Vielleicht bringt ja die kommende SUS-Generation ein paar Hilfestellungen mit. Ich fiebere dem auch schon entgegen (sollte ja eigentlich schon im letzten Jahr erscheinen).
Aber du machst das nicht nur so nebenbei, oder? Ich habe nämlich Firmen erlebt, wo der Dipl.-Ing., der eigentlich andere Aufgaben hatte "so nebenbei" das Firmennetzwerk "administriert". PS: Wir können das auch auf PM verlegen?![/OT] |
Re: LPT-Port steuern
Hallo,
So ist es. Ich entwickle auch noch Software. Rainer |
Re: LPT-Port steuern
Mh, gibt es denn jetzt irgendeine sichere(re) Möglichkeit, nur beschränkten Zugriff auf z.B. einen speziellen Port zu erhalten?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 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