script per mac adresse schützen

  • um meine scritpts davor zu schützen das auf rechnern laufen, auf den ich nicht will das sie laufen hab ich mir gedacht die mac adresse abzufragen und wenn diese nicht die gewünschte ist das script zu beenden.
    das abfragen der mac adresse hab ich soweit hinbekommen,aber das das nur geht wenn das die richtige ist bekomm ich ihrgendwie nicht hin
    also so frag ich die mac adresse ab

    [autoit]


    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"
    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) then
    For $objItem In $colItems

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

    $Output = $objItem.MACAddress & @CRLF
    next
    msgbox(4096, "Mac-Adress", $output)
    Endif

    [/autoit]

    wenn ich da jetz aber den Zusatz hier ransetze

    [autoit]


    If $Output = ("Mac Adresse") Then ;hier steht meine mac adresse drin
    msgbox(4096, "Es Geht", "sie haben die richtige mac adresse")
    Else
    msgbox(4096, "Error", "sie haben die falsche mac adresse")

    [/autoit]


    kommt bei mir immer die msgbox mit error
    woran kann das liegen ???

    Einmal editiert, zuletzt von Remus (20. April 2008 um 12:14)

  • Hi,
    nettes Script, ich habe sowas immer mit ping und Arp -a realisiert. Cool

    Wegen deinem Problem. Du müsstest ja eigentlich auch mal eine Macadresse festlegen die geprüft werden soll..... Oder?

    MfG
    Der_Doc

  • ich hab da schon meine mac adresse eingesetzt aber es geht trotzdem nicht so wie ich mir das vorstelle
    ps: das script is gröstenteils gar nicht von mir sowas kann ich noch nicht

  • Setze mal $output = StringReplace($output,@CRLF,"") in dien Script ein.
    Bei der Abfrage mit WMI sthet immer am eine ein @CRLF. Leider wird das so nicht angezeigt.
    Aber mit Stringlen ($output) wirdt du veststellen das deine MAC-Adresse 19 Zeichen hat. Das sind 2 zuviel.

    [autoit]


    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"
    $rightmac = "........" ; <---- meine Mac
    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) then
    For $objItem In $colItems

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

    $Output = $objItem.MACAddress & @CRLF
    next
    msgbox(4096, "Mac-Adress", Stringlen($output)) ; Längenermittlung Zeichen 19
    $output = StringReplace($output,@CRLF,"") ; @CRLF abschneiden
    msgbox(4096, "Mac-Adress", $output)

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

    if $rightmac = $output then
    msgbox(4096, "Mac-Adress", "richtig")
    Else
    msgbox(4096, "Mac-Adress", "falsch")
    EndIf
    Endif

    [/autoit]


    Hoffe das war dein Problem.
    MfG
    Der_Doc

    • Offizieller Beitrag

    Hier liegt der Fehler:

    [autoit]

    $Output = $objItem.MACAddress & @CRLF

    [/autoit]

    In der Schleife wird ein Zeilenumbruch angefügt, du könntest ja mehrere Netzwerkadapter haben, dann werden natürlich auch mehrere MAC-Adressen geliefert.
    Die Ausgabe solltest du also splitten und dann alle evtl. Adressen abprüfen.

    [autoit]

    Global $MAC_Vorgabe = '00:24:B5:58:BD:C4'
    Global $MACs = StringSplit($Output, @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 Then MsgBox(0, '', 'OK')

    [/autoit]
  • Hallo zusammen.

    Also eine MAC Adr. ist meine ich gar keine so sichere Methode, wenn man die MAC des Erstellers kennt.

    Remus, weiß jemand Deine MAC Adr. dann gibt es ausreichend Möglichkeiten diese zu übernehmen. Aber darauf werde ich hier aus Sicherheitsgründen nicht eingehen.
    Aber diese Art ist schon mal ein Sicherheitspunkt, der gut gedacht ist und wenn man ihn evtl. noch codiert gar nicht übel. Ich arbeite auch mit der MAC Adr., aber ich weiß auch, das man es umgehen kann. So, wie vieles am PC und im weltweiten Netz.

    Mach weiter so, denn Du hast gute Ideen.

    Gruß, Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Und eine andere möglichkeit