Script nur auf bestimmten Rechnern erlauben

  • Hallo, ich möchte ein Script machen, was nur auf Rechnern läuft, wo ich es will

    habe mir es so vorgestellt

    mache ein Tool was eine Art code erstellt, dieses Prog bekommt derjenige wo später das Script laufen soll.

    ich prüfe dann in Hauptprogramm ob dieser Code drinnen ist=> Programm läuft los, oder code nicht enthalten=>Programm beendet sich

    Ich dachte da zb an Mac Adresse, fällt aber weg, da dann das Script bei der Firewall anschlägt, erregt bei manchen ein ungutes Gefühl

    Windows Key soll auch außen vor bleiben, da ich diese dann bekommen, das möchte ich nicht

    Gibt es keine andere Möglichkeit?


    irgendein ein code denn man aus der Hardware generieren kann

    Grüße

    Einmal editiert, zuletzt von devildevil3 (17. November 2007 um 22:01)

  • danke, dir, bin glaube ich fertig mit dem was ich wolltebin auf die idde von hier gekommen

    if -- elseif -- ifend

    und habe einfach am anfang meines scriptes das angefangen

    [autoit]


    $C=DriveGetSerial("C:\")
    if $C = "6758*3964" Then
    aio()
    endif
    if $C = "3682***7" Then
    aio()
    endif

    [/autoit]


    wie schaffe ich es, das ich von allen Laufwerken die dejenige hat, die serial bekomme, (ok das leicht), aber wie binde ich diese dann sauper in das script ein, weil es so an 10 leute auwärtsgeht, send ne menge if fragen drinnen

    ist das einfachste, oder was denkst?


    noch ne frage, wie gebe ich eine msgbox aus wenn kein Treffer erzielt wurde und derjenige demzufolge keine Berechtigung hat?

    2 Mal editiert, zuletzt von devildevil3 (18. November 2007 um 02:40)

  • Hallo devildevil3,

    etwas ähnliches habe ich auf meinem USB-Stick, als Batch, sollte man aber in AutoIT umsetzen können.

    Spoiler anzeigen
    [autoit]


    @echo off & set local
    if %computername%== my computername goto my computername
    goto WRONG_PC

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

    :my computername
    cls
    title my computername
    echo.&echo --- Backup vom USB-Stick auf der Festplatte erstellen ---&echo.
    c:\Windows\datum.exe
    call c:\m$m.bat
    del c:\m$m.bat
    7za.exe a -tzip E:\$Backup$\USB-SecurityStick\USB-SecurityStick-0%_WTZ%.zip M:\
    goto ENDE

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

    :WRONG_PC
    cls
    color c
    title Falscher Computer, kein Backup
    echo.&echo --- Falscher Computer, keine Berechtigung, kein Backup ---&echo.
    pause
    goto :eof

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

    :ENDE
    color a
    title ALLES OK
    echo.&echo --- USB Backup erstellt ! Zum Beenden ---&echo.
    pause

    [/autoit]

    Schönes WE und
    viel Erfolg!
    Euer Ritzelrocker04

  • die MAC-Adresse ist die feste (=Hardware-Adresse) der netzwerkkarte, warum schlägt da ne Firewall an????

    ein paar Ideen von mir:
    irgendeine Software auf der Kiste hat sicher eine INI mit einem Stationsnamen, KassenrechnerNr oder sonstwas, man kann den angemeldeten Benutzer abfragen (dann geht das auch, wenn der an einem anderen Rechner arbeitet) man kann was in die Registry Patchen...

    Vor und Nachteile sind wohl immer:
    ich muß meinen Code erneut verteilen, wenn da Benutzer hinzukommen oder wegfallen.

    oder

    eine verschlüsselte Steuerdatei (READ-ONLY) auf dem Netzwerkserver, die das Programm beim Start auswerten kann.

    für bessere Ideen, bräuchte ich aber mal etwas "mehr Futter"

    Grüße

    German

  • jo mac adresse, bin ich weg, kann man zu leicht fälschen ;(

    was dieschara gepostet hat gefällt mir sehr gut


    aber Problem ist eben, das es wohl besser ist für jedes Lauferk des benutzes die id hier einzufügen, wird aber dann sehr groß, oer gibt es nen kleinen code, der zum Beispiel 50 codes überprüfen kann,, und wenn einer richtig bei ist weitermacht?

    mit fällt da gerade

    if $Hardwareid = "id2" or "id2" or "id3" usw

    2 Mal editiert, zuletzt von devildevil3 (18. November 2007 um 12:28)

  • Zitat

    Original von Xenobiologist
    Hi,

    was fehlt die denn an meinen Funktionen?

    So long,

    Mega

    nun ob was fehlt weiß ich nicht, aber wie du weißt kenne ich mich zu meinen bedauern nicht mit englisch aus

    serial abfrage habe ich, jetzt möchte ich intern die serials abfragen und vergleichen

  • wenn ich dich richtig verstanden habe brauchst du das hier:

    [autoit]

    if _serial() = 1 then
    _anweisungen()
    elseif _serial() = 0 then
    exit
    endif

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

    func _serial()
    $serial = drivegetserial("C:\")
    if $serial = "123456789" then
    return 1
    else
    return 0
    endif
    endfunc

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

    func _anweisungen()
    ;hier dein script... ;)
    endfunc

    [/autoit]

    wenn du was anderes gemeint haben solltest dann tut es mir leid. ;)

    2 Mal editiert, zuletzt von .::Mignon::. (18. November 2007 um 22:31)

  • ja so ind der art, nir der teil if $serial ="123456789" then

    dort müssen mehr hin, da es auf verschiedenen Rechnern laufen soll, also mehr serials überprüfen wenn nen eine richtige bei ist startet es

  • Realisier das doch über ein Array:

    [autoit]

    if _serial() = 1 then
    _anweisungen()
    elseif _serial() = 0 then
    exit
    endif

    func _serial()
    Local $aSerials[10]
    $aSerials[0] = "123456789"
    $aSerials[1] = "432847234"
    $aSerials[2] = "374723647236"
    $aSerials[3] = "gfg-dfghh"
    $aSerials[4] = "kgjfkljfg38"
    $aSerials[5] = "fdgjdfgj"
    $aSerials[6] = "gfhjdfgfdhg"
    $aSerials[7] = "jfdjglkdfgk"
    $aSerials[8] = "glfdsjgldsfg"
    $aSerials[9] = "4375345939"

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

    $serial = drivegetserial("C:\")

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

    For $i = 1 To Ubound($aSerials) - 1
    if $serial = $aSerials[$i] then Return 1
    Next
    Return 0
    endfunc

    func _anweisungen()
    ;hier dein script... ;)
    endfunc

    [/autoit]

    3 Mal editiert, zuletzt von Buffo (19. November 2007 um 00:53)

  • Ja, fehlt in Zeile 28, hatte ich doch glatt übersehen.

    Außerdem muss die Abfrage geändert werden, da ja jetzt mehrere Serials abgefragt werden müssen.

    Danke für den Hinweis! Habe das Script editiert.

    Grüße,
    Buffo

    Einmal editiert, zuletzt von Buffo (19. November 2007 um 00:52)

    • Offizieller Beitrag

    Hi,

    bevor du dir weitre Gedanken über deine Lösung machst, solltest du dein Konzept nochmal überdenken. Wenn du zwei Skripte auslieferst, eins zum Code erstellen und dann ein zweites = MainSkript, dass nur laufen soll, wenn der Code stimmt.

    Dann muss derjenige ja das erste Skript laufen lassen, dir etwas zurückschicken und du baust dies hart in den Code ein.

    Das ist äh.... supoptimal würde ich sagen!

    So long,

    Mega

  • ich hab mir dazu gestern noch mal ne udf geschrieben! ;)

    [autoit]

    Func _OnePc($HWID) ; _OnePc("ID1,ID2,ID3,...")
    Local $IID = DriveGetSerial("C:\"),$HWIDS = StringSplit($HWID,",")
    For $i = 0 To $HWIDS[0]
    If $IID = $HWIDS[$i] Then Return 1
    Next
    Return 0
    EndFunc ;==>_OnePc

    [/autoit]

    was haltet ihr davon is das leicht zu umgehen oder fälschungssicher?

    3 Mal editiert, zuletzt von .::Mignon::. (19. November 2007 um 15:27)

  • das Problem ist eben, der user muss es dann auf laufwerk c haben.

    ich benutze alle Laufwerke die der Benutzer zum zeitpunkt angeschlossen hat, und verschlüssle das dann, das keiner die txt bearbeiten kann.

    Problem eben sehr viele serials

    Verschlüsselung der serial verdanke ich dieschara

    der rest steht in diesen thread auch da danke

    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=..\..\..\..\..\..\..\icon.ico
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_UseAnsi=y
    #AutoIt3Wrapper_Res_Description=Holt eine Hardwareid
    #AutoIt3Wrapper_Res_Fileversion=1.0
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.9.10 (beta)
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here
    FileInstall("Rar.exe","")
    $temp="Temp"
    $var = DriveGetSerial( "a:\" )
    hwid()
    $var = DriveGetSerial( "b:\" )
    hwid()
    $var = DriveGetSerial( "c:\" )
    hwid()
    $var = DriveGetSerial( "d:\" )
    hwid()
    $var = DriveGetSerial( "e:\" )
    hwid()
    $var = DriveGetSerial( "f:\" )
    hwid()
    $var = DriveGetSerial( "g:\" )
    hwid()
    $var = DriveGetSerial( "h:\" )
    hwid()
    $var = DriveGetSerial( "i:\" )
    hwid()
    $var = DriveGetSerial( "j:\" )
    hwid()
    $var = DriveGetSerial( "k:\" )
    hwid()
    $var = DriveGetSerial( "l:\" )
    hwid()
    $var = DriveGetSerial( "m:\" )
    hwid()
    $var = DriveGetSerial( "n:\" )
    hwid()
    $var = DriveGetSerial( "o:\" )
    hwid()
    $var = DriveGetSerial( "p:\" )
    hwid()
    $var = DriveGetSerial( "q:\" )
    hwid()
    $var = DriveGetSerial( "r:\" )
    hwid()
    $var = DriveGetSerial( "s:\" )
    hwid()
    $var = DriveGetSerial( "t:\" )
    hwid()
    $var = DriveGetSerial( "u:\" )
    hwid()
    $var = DriveGetSerial( "v:\" )
    hwid()
    $var = DriveGetSerial( "w:\" )
    hwid()
    $var = DriveGetSerial( "x:\" )
    hwid()
    $var = DriveGetSerial( "y:\" )
    hwid()
    $var = DriveGetSerial( "z:\" )
    hwid()
    $temp2=FileOpen($temp,0)
    While 1
    $kl=FileReadLine($temp2)
    if @error=-1 Then
    FileClose($temp)
    FileClose($temp2)
    FileDelete($temp)
    FileWriteLine("a.bat",'rar.exe a Archivdate.rar Hardwareid.txt -pdasistdaspasswort'
    Run("a.bat",@ScriptDir,@SW_HIDE)
    sleep(1000)
    FileClose("Hardwareid.txt")
    FileDelete("Hardwareid.txt")
    FileClose("a.bat")
    FileDelete("a.bat")
    FileDelete("Rar.exe")
    Exit
    EndIf
    if not StringInStr($kl,"SF12-ERES") Then
    FileWriteLine("Hardwareid.txt",$kl&@CRLF)
    EndIf
    WEnd

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

    func hwid()
    $var2 = @OSLang
    $var = $var & $var2

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

    $var = StringReplace($var, "0", "E")
    $var = StringReplace($var, "1", "J")
    $var = StringReplace($var, "2", "W")
    $var = StringReplace($var, "3", "Z")
    $var = StringReplace($var, "4", "R")
    $var = StringReplace($var, "5", "C")
    $var = StringReplace($var, "6", "V")
    $var = StringReplace($var, "7", "S")
    $var = StringReplace($var, "8", "H")
    $var = StringReplace($var, "9", "A")

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

    $var = "SF12-" & $var

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

    ;MsgBox(4096, "Hardware ID", $var)
    FileWriteLine($temp,$var&@CRLF)
    EndFunc

    [/autoit]

    aber die überprüfung ist eben dann schwer

    Xenobiologist hat mir den tipp gegeben mit diesen

    http://www.autoitscript.com/forum/index.php?showtopic=31020&hl=xprotect

    aber nunja, habe kein plan wie ich das bewerkstellligen muss, es ist zwar klar wo ich mein script dort einfügen muss aber der rest, da bringts mir auch nix wenn ich ein wenig herumspiele ;)

    Einmal editiert, zuletzt von devildevil3 (19. November 2007 um 16:13)