Script/Exe an PC binden (z. B. über MAC Adresse)

  • Hallo miteinander,

    habe ein kleines einfaches Script erstellt, welches ein Browserfenster öffnet und mit bestimmten Anmeldedaten befüllt. Dieses Script darf aber nur von einem bestimmten PC ausgeführt werden. Mir fällt leider nichts kreativeres ein, als die MAC Adresse zur Identifikationsprüfung zu verwenden. Daher würde ich vor dem ausführen des Scripts die MAC-Adresse der Netzwerkkarte des PC´s auslesen und per IF-Abfrage überprüfen.

    Zum Auslesen der MAC Adresse gibt es ja einige Beispiele im Netz, aber irgendwie klappt das mit der Prüfung nicht. Ich sehe langsam vor lauter Bäumen den Wald nicht mehr.

    Hier mein Script: (hab jetzt schon wieder so viel hin und her verändert - wahrscheinlich stimmt´s jetzt vorn und hinten nicht mehr)

    Spoiler anzeigen


    ;Ip Adresse auslesen
    Func _GetMacAddress($_phisycaladdress)
    Local $chk_1 = StringReplace($_phisycaladdress, '.', '') / 1
    If @extended <> 3 Or $chk_1 < 1 Then Return ''
    Local $chk_2 = StringSplit($_phisycaladdress, '.', 1)
    For $idx_chk = 1 To $chk_2[0]
    If ($chk_2[$idx_chk] / 1) < 0 or ($chk_2[$idx_chk] / 1) > 255 Then Return ''
    Next
    Local $_buf = ''
    Local $_pid = Run('nbtstat -a ' & $_phisycaladdress, '', @SW_HIDE, 2)
    Do
    $_buf &= StdoutRead($_pid)
    Until @error
    If StringReplace($_buf, 'MAC Adresse = ', '') <> $_buf Then
    $chk_3 = StringSplit($_buf, 'MAC Adresse = ', 1)
    Return StringReplace(StringReplace($chk_3[2], @CR, ''), @LF, '')
    EndIf
    Return ''
    EndFunc

    ;Prüfen
    Global $MAC_Vorgabe = 'XX:XX:XX:XX:XX:XX'
    Global $MACs = StringSplit($_phisycaladdress, @CRLF)
    Global $MAC_OK = False

    For $i = 1 To $MACs[0]
    If $MACs[$i] = $MAC_Vorgabe Then
    $MAC_OK = True
    ExitLoop
    EndIf
    Next

    If $MAC_OK = True Then
    #include
    $oIE = _IECreate ("http://Webadresseblabla.de")
    If IsObj($oIE) Then
    _IELoadWait($oIE)
    $oForm = _IEFormGetObjByName($oIE, "userlogin")
    $oUsername = _IEFormElementGetObjByName($oForm, "wpName1")
    _IEFormElementSetValue($oUsername, "Karlheinzguschtavrüdiger")
    $oPasswd = _IEFormElementGetObjByName($oForm, "wpPassword1")
    _IEFormElementSetValue($oPasswd, "XXXXXXX")
    _IEFormSubmit($oForm)
    EndIf
    Else
    MsgBox(48,"Tja, wahr wohl nix!","Das Ausführen dieses Vorgangs ist an einen bestimmten Client gebunden!")
    EndIf

    Bin dankbar für jegliche Hilfe. Grüssle...

    Einmal editiert, zuletzt von IT-Mensch (5. März 2012 um 17:13)

  • Autoit kann problemlos decompiliert werden. Daher ist eine zuverlässige "Bindung" nicht möglich.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Aber es gibt doch einige tools die das Script cryptisch Verschlüsseln... Ist das so einfach zu knacken? ohhhh man... super^^

  • Aber es gibt doch einige tools die das Script cryptisch Verschlüsseln... Ist das so einfach zu knacken?

    kurz und knapp: Ja

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Ok, das ist blöd! Aber für mein Problem wäre o. g. trotzdem kurzfristig die Lösung. Der Zugriff auf die Seite wird zusätzlch über eine Htaccess eingeschränkt. Hier wird zuvor die feste IP-Adresse kontrolliert. Daher könnte man mit den Anmeldedaten aus der exe sowieso nicht viel anfangen, wenn man sich nicht in einem der freigegebenen Netzwerke befindet. An diesem Rechner sollen mehrere User auf diese Seite zugreifen (ist ne Wissensdatenbank in Form eines geschützten Wikis) und sonst wird da nichts getan. Keine Schreibrechte oder sonstiges. Der Rechner ist besonders eingeschränkt. Auch kein USB, CD, ...

  • Solange der User dein Script nicht mithilfe eines Decompilers Sichtbar machen kann passt es doch soweit, kommt der User an Private Daten aus dem Internet zb? z.b Stroage oder so? wo er einen Decompiler hinterlegen könnte?.

    Gruß Marvin

  • Bestimmte Contents sind über den Router gesperrt, aber jaaa verdammt, ein User könnte theoretisch die exe-Datei uploaden und online durch einen decompiler jagen... Ich werde wahrscheinlich alles sperren müssen, bis auf die eine Domain. Dann bin ich wieder der Spielverderber... :rock:

    Das sind zwar nur ein paar einfache Handwerker, die sich immer wieder bestimmte Infos von der Seite holen müssen aber bei sowas bin ich immer total paranoid.

    Aber hey, kann mir jetzt eigentlich jemand sagen was ich falsch mache? Denn das Ding läuft ja nich mal...

  • Nun in dem Fall würde ich sagen leg die Wissensdatebank lokal auf den Rechner, jegliche Netzwerkverbindung weg und Fingerabdruck- und Irisscan nicht vergessen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • kann der user der damit arbeiten soll, überhaupt eine exe decompilieren?
    oder machst du dir da jetzt nur sorgen, weil es nicht in den it richtlinien steht, das er keine fremdsoftware nutzen darf!
    ein normaler user, der nicht viel mit it, programmierung zu tun hat, würde auf solch einen gedanken nicht kommen!

    gruß gmmg

  • kann der user der damit arbeiten soll, überhaupt eine exe decompilieren?
    oder machst du dir da jetzt nur sorgen, weil es nicht in den it richtlinien steht, das er keine fremdsoftware nutzen darf!
    ein normaler user, der nicht viel mit it, programmierung zu tun hat, würde auf solch einen gedanken nicht kommen!

    gruß gmmg

    Sorry aber jeder DAU kann autoit decompilieren ;). Ist mir einem Klick erledigt.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Nun in dem Fall würde ich sagen leg die Wissensdatebank lokal auf den Rechner, jegliche Netzwerkverbindung weg und Fingerabdruck- und Irisscan nicht vergessen.

    Genau... lokal können sich die Daten ja dann schließlich auch von selbst aktualisieren. Hier ändern sich nämlich manche Informationen täglich. Danke für deine konstruktiven Vorschläge! Sehr hilfreich!

  • kann der user der damit arbeiten soll, überhaupt eine exe decompilieren?
    oder machst du dir da jetzt nur sorgen, weil es nicht in den it richtlinien steht, das er keine fremdsoftware nutzen darf!
    ein normaler user, der nicht viel mit it, programmierung zu tun hat, würde auf solch einen gedanken nicht kommen!

    gruß gmmg

    Nein, diese User sind in der Regel einfache Servicekräfte aus dem Handwerksbereich. Die IT-Richtlinien sind in unserem Unternehmen recht eindeutig. Der User darf nicht Mal an den Missbrauch denken.

    Aber unser IT-Leiter ist ein gebranntes Kind. Vor allem was firmenspezifische Informationen angeht. Hier treffen halt konkurrierende Anforderungen aufeinander. Es darf nix kosten und soll gleichzeitig wasserdicht sein.

    Kann mir vielleicht trotzdem irgendjemand sagen was ich falsch mache? Außerdem, ich wollte von Anfang an nur wissen was mit dem Script ist, bis Chip mich vollgelabert hat von wegen decompilen usw. wie bereits erwähnt, wär eigentlich e scheiss egal da die Seite ja e zusätzlich per htaccess die IP Adresse überprüft.

    Also bitte keine Lebensberatung mehr. Kann mir jemand was zum Script sagen?

    Einmal editiert, zuletzt von IT-Mensch (5. März 2012 um 16:23)

  • Spoiler anzeigen
    [autoit]


    Global $MAC = "00:17:42:B6:7D:84"
    Global $Access = False
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}")
    $netAdapterSet = $objWMIService.ExecQuery("select * from Win32_NetworkAdapter")
    For $netAdapter in $netAdapterSet
    If $netAdapter.MACAddress = $MAC Then $Access = True
    Next

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

    If $Access = True Then
    $oIE = _IECreate ("http://Webadresseblabla.de")
    If IsObj($oIE) Then
    _IELoadWait($oIE)
    $oForm = _IEFormGetObjByName($oIE, "userlogin")
    $oUsername = _IEFormElementGetObjByName($oForm, "wpName1")
    _IEFormElementSetValue($oUsername, "Karlheinzguschtavrüdiger")
    $oPasswd = _IEFormElementGetObjByName($oForm, "wpPassword1")
    _IEFormElementSetValue($oPasswd, "XXXXXXX")
    _IEFormSubmit($oForm)
    EndIf
    Else
    MsgBox(48,"Tja, wahr wohl nix!","Das Ausführen dieses Vorgangs ist an einen bestimmten Client gebunden!")
    EndIf

    [/autoit]

    geht dass? vorrausgesetzt deine _IE.. Actionen sind richtig :P

  • @IT-Mensch

    du kannst auch nocht die domain abfragen

    [autoit]

    If @LogonDomain <> "xxxx" Or @LogonDNSDomain <> "xxxx.INT" Then EXIT

    [/autoit]

    oder einen ipadress bereich!

    gruß gmmg