Leszugriff verweigern?

  • Hallo ich wollte mal fragen ob ich z.b. den Lesezugriff von einer Datei nur mit einen Bestimmten Programm zulassen kann. Also z.b. wenn ich versuche eine .txt datei mit notepad öffnet wird sie angezeigt und sonst kann sie nich gelesen oder kopiert werden. Ist soetwas möglich.
    Sozusagen das ich mit

    [autoit]

    FileSetAttrib

    [/autoit]

    den lesezugriff erst zulasse wenn von notepad auf die datei greift.
    mfg

    Zitat

    Also meine Idee ist ich habe letzten mein Steam account geklaut bekommen keine Ahnung wie ich glaube per stealer oder trojaner. So nun möchte ich meine Datei einfach schützen das sie nur von Steam gelesen werden kann. Das Problem ist wenn ich es so mache wie unten beschrieben kann einfach die datei kopiert werden wenn steam geöffnet ist, was ziemlich oft der fall ist.

    2 Mal editiert, zuletzt von olitha (13. April 2009 um 15:11)

  • [autoit]

    While 1
    If ProcessExists ("Notepad.exe") Then
    FileSetAttrib (***) ;Lesezugriff
    ElseIf Not ProcessExists ("Notepad.exe") Then
    FileSetAttrib (***) ;Kein Lesezugriff.
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]

    So zum Beispiel ;)

  • Naja ich weis net,
    du möchtest doch net immer eine While-Schleife laufenlassen?
    wenn sowieso erstmal nen sleep(100) einbauen, da die Schleife sonst immer mit 100% CPU-Last läuft.
    Ich würde dann die Datei anlegen und alle Berechtigungen entziehen.
    Dann beim Aufruf des Scriptes die Berechtigungen setzten und testen.

    Nur in wieweit sich Windows in Sachen Benutzerrechten von Autoit was sagen lässt kann ich leider net genau sagen. Weil unter Windows wird die Berechtigung ja an Gruppen festgemacht und unter Autoit am File.

    Also testen würde ich sagen.

    MFG
    Der_Doc

  • ...Weil unter Windows wird die Berechtigung ja an Gruppen festgemacht und unter Autoit am File.

    MFG
    Der_Doc

    Wie ? Ich glaub wir machen am Dienstag-Morgen nochmal Windows-Rechte ! ;)

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hallo Poker.

    Die Idee hatte ich auch, aber das geht nur grob so, wenn er nämlich eine bestimmte Datei schützen möchte die mit Notepad zu lesen wäre. Dann könnte man den prozess abfragen und wenn Notepad gestartet ist, dann die Datei zur Verfügung stellen über FileIsntall. Aber das macht wenig sinn, meine ich, bei zahlreichen Dateien.

    Ober er läßt die Datei wirklich erst durch das Script schreiben, wenn der Prozess vorhanden ist. Das wäre aber wiederum bei längeren Dateien viel arbeit.

    Also ich meine das er es so meint. Auf seiner Festplatte sind z. B. muster1.mus und muster2.mus. Dateien mit der Endung "mus" dürfen nur durch Notpad geöffnet wwerden und nur dann wenn Notpad auch gestartet ist. Die Endung könnte man noch in der Registry eintragen, das weiß ich das es geht, aber weiter komme ich da auch nicht.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Prinzipiell schon (in Deinem Script könnte man Zeile 4: "ElseIf Not ProcessExists ("Notepad.exe") Then" auch einfach durch "Else" ersetzen), aber das Leserecht lässt sich mit den File-Attributen nicht verhindern. Lesen geht immer ! Du kannst die Datei verstecken, schreibschützen und als Systemdatei deklarieren, aber wenn man den Dateinamen und -ort kennt, kann man sie trotzdem lesen.

    Hier helfen dann nur die Datei- und Verzeichnis-ACL's. Da ich diese mal von einer Quell- zu einer Zieldatei kopieren musste hat ich folgende Funktionen genutzt:

    Spoiler anzeigen
    [autoit]

    ; Funktionen für das anpassen von Sicherheits- und Benutzereinstellungen
    ;
    ; _GetFileSecurityDACL($quelle) : Liest eine Beschreibung der Sicherheitsinfomationen
    ; _SetFileSecurityDACL($ziel, $beschreibung) : Setzt eine Beschreibung der Sicherheitsinfomationen
    ; _CopyFileSecurityDACL($quelle, $ziel) : Kopiert eine Beschreibung der Sicherheitsinfomationen
    ; _GetFileSecurityOWNER($quelle) : Liest eine Beschreibung der Besitzerinfomationen
    ; _SetFileSecurityOWNER($ziel) : Setzt eine Beschreibung der Besitzerinfomationen
    ; _CopyFileSecurityOWNER($quelle, $ziel) : Kopiert eine Beschreibung der Besitzerinfomationen
    ; _CheckSecurityDescriptor($beschreibung) : Prüft eine Beschreibung auf Gültigkeit

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GetFileSecurityDACL($sFile)
    If Not IsDeclared("DACL_SECURITY_INFORMATION") Then Const $DACL_SECURITY_INFORMATION = 0x4
    Local $return
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    If Not FileExists($sFile) Then Return SetError(1,0,0)
    $return = DllCall($hAdvapi32,"long","GetFileSecurity", _
    "str",$sFile, _
    "dword", $DACL_SECURITY_INFORMATION, _
    "ptr",0, _
    "dword",0, _
    "dword*",0)
    If Not $return[5] Then Return SetError(1,0,0)
    Local $strucSD = DllStructCreate("byte[" & $return[5] & "]")
    $return = DllCall($hAdvapi32,"long","GetFileSecurity", _
    "str",$sFile, _
    "dword", $DACL_SECURITY_INFORMATION, _
    "ptr",DllStructGetPtr($strucSD), _
    "dword",DllStructGetSize($strucSD), _
    "dword*",0)
    If Not $return[0] Then Return SetError(1,0,0)
    DllClose($hAdvapi32)
    Return DllStructGetData($strucSD,1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _SetFileSecurityDACL($sFile,$Descriptor)
    If Not IsDeclared("DACL_SECURITY_INFORMATION") Then Const $DACL_SECURITY_INFORMATION = 0x4
    Local $strucSD = DllStructCreate("byte[" & (StringLen($descriptor)/2)-1 & "]")
    DllStructSetData($strucSD,1,$Descriptor)
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    Local $return = DllCall($hAdvapi32,"long","SetFileSecurity", _
    "str",$sFile, _
    "dword", $DACL_SECURITY_INFORMATION, _
    "ptr",DllStructGetPtr($strucSD))
    DllClose($hAdvapi32)
    If $return[0] = 0 Then Return SetError(1,0,0)
    Return 1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CopyFileSecurityDACL($sSFile, $sDFile)
    If Not _SetFileSecurityDACL($sDFile,_GetFileSecurityDACL($sSFile)) Then SetError(1,0,0)
    Return 1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CheckSecurityDescriptor($Descriptor)
    Local $strucSD = DllStructCreate("byte[" & (StringLen($Descriptor)/2)-1 & "]")
    DllStructSetData($strucSD,1,$Descriptor)
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    Local $return = DllCall($hAdvapi32,"int","IsValidSecurityDescriptor", _
    "ptr",DllStructGetPtr($strucSD))
    DllClose($hAdvapi32)
    If $return[0] = 0 Then Return SetError(1,0,0)
    Return 1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GetFileSecurityOWNER($sFile)
    If Not IsDeclared("OWNER_SECURITY_INFORMATION") Then Const $OWNER_SECURITY_INFORMATION = 0x1
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    Local $return = DllCall($hAdvapi32,"long","GetFileSecurity", _
    "str",$sFile, _
    "dword", $OWNER_SECURITY_INFORMATION, _
    "ptr",0, _
    "dword",0, _
    "dword*",0)
    Local $strucSD = DllStructCreate("byte[" & $return[5] & "]")
    $return = DllCall($hAdvapi32,"long","GetFileSecurity", _
    "str",$sFile, _
    "dword", $OWNER_SECURITY_INFORMATION, _
    "ptr",DllStructGetPtr($strucSD), _
    "dword",DllStructGetSize($strucSD), _
    "dword*",0)
    If Not $return[0] Then Return SetError(1,0,0)
    DllClose($hAdvapi32)
    Return DllStructGetData($strucSD,1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _SetFileSecurityOWNER($sFile,$Descriptor)
    If Not IsDeclared("OWNER_SECURITY_INFORMATION") Then Const $OWNER_SECURITY_INFORMATION = 0x1
    Local $strucSD = DllStructCreate("byte[" & (StringLen($Descriptor)/2)-1 & "]")
    DllStructSetData($strucSD,1,$Descriptor)
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    Local $return = DllCall($hAdvapi32,"long","SetFileSecurity", _
    "str",$sFile, _
    "dword", $OWNER_SECURITY_INFORMATION, _
    "ptr",DllStructGetPtr($strucSD))
    DllClose($hAdvapi32)
    If $return[0] = 0 Then Return SetError(1,0,0)
    Return 1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CopyFileSecurityOWNER($sSFile, $sDFile)
    If Not _SetFileSecurityOWNER($sDFile,_GetFileSecurityOWNER($sSFile)) Then SetError(1,0,0)
    Return 1
    EndFunc

    [/autoit]

    Nach den Beispielen müsstest Du schauen, das Du das Leserecht für "Jeder" verweigert bekommst. Wenn Du etwas dazu findest, hätte ich auch interesse...

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Micha_he
    Du olitha ist ganz neu hier, ich glaube nciht das er damit schon was anfangen kann ;)

    Aber die Idee von Dir es so zu machen finde ich gut. Mal sehen wer durch die Funktion so durch blickt, das er gute Beispiele bringtt, die auch dann umzusetzen sind. Bei mir erst einmal: ?(

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Damit kann ich was anfangen, aber so ist es nicht möglich hab ich unten beschrieben wieso.

    [autoit]

    While 1
    If ProcessExists ("Notepad.exe") Then
    FileSetAttrib (***) ;Lesezugriff
    ElseIf Not ProcessExists ("Notepad.exe") Then
    FileSetAttrib (***) ;Kein Lesezugriff.
    EndIf
    WEnd

    [/autoit]


    Also meine Idee ist ich habe letzten mein Steam account geklaut bekommen keine Ahnung wie ich glaube per stealer oder trojaner. So nun möchte ich meine Datei einfach schützen das sie nur von Steam gelesen werden kann. Das Problem ist wenn ich es so mache wie beschrieben kann einfach die datei kopiert werden wenn steam geöffnet ist was ziemlich oft der fall ist.

    mfg

  • Also ich habe eine Idee mann könnte ja theoretisch die datei in einen Ordner hinterlegen wo sie dann hinkopiert wird wenn steam gestartet wird und dann wieder gelöscht wird das Problem ist dabei wenn ich das gleiche mit den Firefox versuche werden die neuen Passwörter etc nicht gespeichert. Ich möchte ein Prog schreiben das vor Angriffen schützt. Das mit den Kopieren und Löschen wäre kein Prob aber es gibt sicherlich eine bessere lösung. Die frage ist nur wie^^
    Tut mir leid das ich das nicht in der alten antwort reingeschrieben habe hoffe das ist erlaubt
    mfg

  • Da würde ich Kaspersky empfehlen, dann mit der Computer Bild Lizenz und alles ist perfekt =D

  • @Micha-He
    wieso bei Dateien oder Ordner kann ich doch sagen das der Benuzer/Gruppe Vollzugriff auf die Datei oder Den Ordner hat?
    Habe mich doch erst aufklären lassen. Wenn war es nur falsch beschrieben.

    MfG
    Der_Doc

  • Geht das nicht, dass man den Zugriff kurz aufmacht und wenn Notepad die Datei eingelesen hat, sofort wieder sperrt?

    Oder, dass man zum Abrufen der Datei Administratorenrechte benötigt? Unter Vista meldet sich dann ja die UAC zu Wort...

    P.S.: Seht Ihr?? Von wegen scheiß Vista und UAC!! Das ist doch für etwas gut :rofl:

  • Hallo olitha,

    wenn Dir einer von Deinem Rechner etwas "klaut", dann hat er Rechte, die Du Dir/Ihm gegeben hast.
    Der einfachste/sicherste Weg so etwas zu unterbinden ist mit einem eingeschränkten Konto zu Arbeiten
    und bestimmte Dinge mit z.B. SuRun zu Erledigen.
    Der "Eindringling hat dann nur die eingeschränkten Rechte und wird nichts ausrichten.

    PS: Dein Steam-Account ist ja sicher nicht das Einzige, dass man Dir "klauen" könnte ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Und wie wollt Ihr den Lese-Zugriff öffnen und sperren ?
    Das geht nur über die ACL und nicht über die File-Attribute.

    Und sogar dabei ist noch das Problem, das der der die Datei "besitzt" (Owner) immer Vollzugriff hat.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • ich hab noch eine 2. Variante im Angebot...

    Edit: gelöscht...
    ich glaub, die war nicht so gut

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • nee,
    ich glaub die funktioniert nicht.
    Ist mir aber erst gekommen, als ich schon abgeschickt hatte.
    Möcht mich doch net blamieren :rofl:

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Da würde ich Kaspersky empfehlen, dann mit der Computer Bild Lizenz und alles ist perfekt =D


    Ich hab eine eigene gekaufte Lizens. ja ok aber mich würde trotzdem interessiere ob soetwas möglich wäre da bestimmt mehr leute interesse an so einem programm habne,

  • nur ma so aus neugier, wenn ich n iso mounte und dann das iso löschen will geht das ja auch nicht! vlt kann man ja des so machen ;)

    mfg

    • Offizieller Beitrag

    Paralleles Lesen geht immer, nur halt Schreibzugriff (Löschen) exklusiv. Wenn das Programm sein Handle offen lässt (meiste schlechter Stil), dann kannst du nicht daran rumfuhrwerken.
    Meine Empfehlung ist ein TrueCrypt-Container, den man nur öffnet, wenn das Spiel o.ä. gerade läuft und ein Virenscanner.

    peethebee