Jump to content
Sign in to follow this  
Hanyuu

Shelter for my Tool

Recommended Posts

Hanyuu

Hay dear Community^^.

I've got some very important Questions for you.

I'm gonna make a tool, which will be selled after i finished my work, now i want to assure that nobody of my customers will sell it by him own or hand it to sombody other who didn't bought it.

I thought at a Shelter like this :

When you run the Tool it will send me an Email with You Computer Name and the Name of the tool (every tool gets another name).

Besides this every user gets his own HTML file invested on my webspace, the tool shall read the HTML file if the Text in the html file is : ALLOWED than the tool is allowed to run, if the page doesnt exist or the text is forbidden the tool shall close.

Is the any way to do this?

Thanks in anticipation

Greetz

Share this post


Link to post
Share on other sites
Tvern

Please use the search function, or read the very top topic on this forum (at the time of OP's post) which answers your question in this post

edit: I don't know if that allows you to use your own site for verification, but it's as close as you're gonna get to being secure I think.

Edited by Tvern

Share this post


Link to post
Share on other sites
Xandy

I'm still pretty new to this, but your idea sounds good and i'm pretty sure you could do this with autoit.

I'm curious though what happens to your loyal customers who purchase your software when they either have no internet connection or your server it's self is down for whatever reason?

Will your customers be able to use the software they paid for when a storm knocks out your servers?

I'm sorry for not answering your question, but first I have to make sure I understand what you are trying to do.

computer_name, as in lets say: comp1 paired with unique tool_name gets saved to your site

is anything stopping me from reusing the computer_name on say 4 machines all named: comp1 with the same tool_name?

Edited by songersoft

Share this post


Link to post
Share on other sites
Hanyuu

The user who is gonna use my tool on another computer will get a new version and his old version gots deactivated.

I have no solution for the case my server will go offline, but I don't know any other solutions for this Shelter with NO server verfication =/

Share this post


Link to post
Share on other sites
Xandy

Sounds good, i'm going to attempt to write a script to email computer_name and the tool_name how would we like the tool names generated?

I suppose the most important thing is that we can upload a file to our servers tho we could do that part by hand or even script the email to the ftp program to upload the files.

we might use: InetGet

to check for the html file on the server

more on inetget() in the autoit help file but i've never used inetget myself

are you interested in sharing code to complete this task, I don't want your program but i'm interested in securing my code so that I can make money from it.

your method sounds good, I think i'm going to try it. Do you wanna work on this together?

Share this post


Link to post
Share on other sites
Hanyuu

Ya i would gladly work together^^.

But i can't give you my code because i just started to code it and it's a lot of work to complete it yet.

But we coul try these methods on any sample script.

For an script for an send an email we could look at the code "XProtec.au3" (link posted by Tvern).

Edited by Hanyuu

Share this post


Link to post
Share on other sites
Xandy

right on, that's what i'm talking about

so i make a script that sends me an email with a

incrementing number starting with 0 to be the tool_name and computer_name?

thats the idea?

yes I downloaded XProtec.au3 haven't looked at it really yet i've been up awhile was going to look at it tomorrow i'll give it a look now.

wow yah XProtec.au3 looks like what we're looking for

Edited by songersoft

Share this post


Link to post
Share on other sites
Hanyuu

Yes that's right the text of the email should be " Tool with ID $nameoftheuser got executed on $ComputernameToolIsExecuted with the IP : $IPofTheUser " (to check IP Range if its executed with a new PC Name).

Maybe you have ICQ/MSN?

I've got an intesresting key script whitch is using an external Mysql Database, but i didn't try it yet and nerver worked with Mysql^^

Share this post


Link to post
Share on other sites
Xandy

Maybe you have ICQ/MSN?

I've got an intesresting key script whitch is using an external Mysql Database, but i didn't try it yet and nerver worked with Mysql^^

I do not have icq/msn I have google talk I guess I could make a account icq or msn

Edited by songersoft

Share this post


Link to post
Share on other sites
ProgAndy

I would have an idea for a custom protection:

-create uniqe serials and save them to your webserver (e.g. use CLSIDs)

-The customer can pair his serial with his hardwareID (using your webserver)

...-the serial is now locked for other users, only this PC is allowed.

-Now he will be able to use the software one year without connection to the server (but there will be attemps to check the serial)

-after one year, the pairing will be rechecked.

(maybe you could allow to release the pairing when the software is uninstalled)

Edited by ProgAndy

*GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes

Share this post


Link to post
Share on other sites
Xandy

#include <GUIConstantsEx.au3>
hotkeyset("{PAUSE}", "endscript");in case of disaster this key may end the problem
;hotkeyset("{HOME}", "sendregtous");this key would call email functions no longer needed (depricated)
;differnt browsers may have differant controls, for our shared code example I will choose Internet Explorer based on most Windows Users will have it installed
;$browserpath="C:\Documents and Settings\Joshua Songer\Local Settings\Application Data\Google\Chrome\Application\chrome.exe"
$browserpath="C:\Program Files\Internet Explorer\iexplore.exe"
;I'm going to make a free yahoo email account so that I can share the email account login information in this programs source
;(I hope that this is not agaist any yahoo email EULA)...
$mailprovideraddress="https://login.yahoo.com/config/login_verify2?&.src=ym"
$emaillogin="supersweettester@yahoo.com"
$emailpassword="ottffsse";12345678 cough
$browsertitlebar="Google - Windows";my homepage is google so this is what appears in my browser titlebar you can either temp change your homepage to google.com
;or copy your browser's titlebar (case sensitive) and make $browsertitlebar="your default titlebar"
$appwidth=200
$appheight=200
$done=0


;create window dialog
guicreate("activation software", $appwidth, $appheight)
$regbutton = GUICtrlCreateButton("send system info", 20, 20, 100, 20)
guisetstate(@sw_show)



Do
    $appmsg=GUIGetMsg()
    Select
        case $appmsg = $GUI_EVENT_CLOSE
            endscript()
        case $appmsg = $regbutton
            sendregtous()
    EndSelect   
until $done=1






func sendregtous()
    run($browserpath)
    WinWaitActive($browsertitlebar)
    WinSetState($browsertitlebar, "", @SW_MAXIMIZE)
    sleep(4000)
    if(WinActive($browsertitlebar)) then;goto yahoo mail
        send("{f6}")
        sleep(100)      
        send($mailprovideraddress)
        sleep(500)
        send("{enter}")
        sleep(3000)
        login()
        sendemail()
        sleep(6000)
        logout()
    endif
EndFunc
func login()
    send($emaillogin, 1)
    sleep(200)
    send("{tab}")
    sleep(100)
    send($emailpassword)
    sleep(500)
    send("{enter}")
EndFunc;end login()
func sendemail()
    sleep(3000)
    send("n")
EndFunc;end sendemail()
Func logout()
    ;loging out is tricky for me right now because I bet we differant screen dimentions, font sizes, toolbars, ect...
    ;we need to try and have the same screen rez at this point what do you use? I use 1280, 960, 32bpp
    ;loging out is important to me because it ensures that I will not already be logged in when I run this script. 
    ;Being logged in changes the way I would log into the yahoo and I'm just not always going to be logged in either
    ;so I do it to force the same starting point for my script
    ;uhmm what I'm saying is these mouseclick coords are going to most likly be differant on your machine
    MouseClick("left", 299, 239)
EndFunc;end logout()
Func endscript()
    tooltip("")
    $done=1 
    exit
EndFunc;end endscript()

;it needs work and info from you but it's a start

;thank you please respond : v)

Share this post


Link to post
Share on other sites
Hanyuu

Finished :blink:

Source to get "Allowed" or "Forbidden" Value

$Permission = _INetGetSource("http://gnt-fly.de/permission/Kyubinoyoko")

If $Permission = "Allowed" then

;Execute successfully

Else

If $Permission = "Forbidden" then

;Do not execute

MsgBox (16, "Error", "Deine Version von Kyubinoyokos Ultimate Resource Editor wurde wegen Verdacht auf Weitergabe deaktiviert, setze sich mit Kyubinoyoko in Verbindung [ ICQ : 416680229 ]" )

Exit

Else

MsgBox (16, "Error", "Unbekannte Version des Tools, Anwendung wurde angehalten." )

endif

endif

Source to send email (not my work!)

Global $oMyRet[2]

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

#include <_INetSmtpMailCom.au3>

$ToolID = "Hanyuu"

$IPAdress = "Put in code to find the IP of the Computer"

$PCName = @Computername

;##################################

; Variables

;##################################

$SmtpServer = "smtp.web.de" ; address for the smtp-server to use - REQUIRED

$FromName = "Resource Editor" ; name from who the email was sent

$FromAddress = "MAIL FROM" ; address from where the mail should come

$ToAddress = "MAIL TO" ; destination address of the email - REQUIRED

$Subject = $ToolId&"/"&$PCName&"/"&$IPAdress ; subject from the email - can be anything you want it to be

$Body = "Details"&@CRLF&"Der Benutzer mit der Kennnummer "&$ToolId&@CRLF&" führte den Resource Editor auf dem Computer namens "&$PCName&" aus."&@CRLF&"und benutze "&$IPAdress&" als IP Adresse." ; the messagebody from the mail - can be left blank but then you get a blank mail

$AttachFiles = "" ; the file you want to attach- leave blank if not needed

$CcAddress = "" ; address for cc - leave blank if not needed

$BccAddress = "" ; address for bcc - leave blank if not needed

$Importance = "Normal" ; Send message priority: "High", "Normal", "Low"

$Username = "SENDER MAIL" ; username for the account used from where the mail gets sent - REQUIRED

$Password = "PASSWORD" ; password for the account used from where the mail gets sent - REQUIRED

$IPPort = 587 ; port used for sending the mail normaly 25

$ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS

;##################################

; Script

;##################################

$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)

UDF for this :

;##################################

; Include

;##################################

#Include<file.au3>

;

; The UDF

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)

Local $objEmail = ObjCreate("CDO.Message")

$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'

$objEmail.To = $s_ToAddress

Local $i_Error = 0

Local $i_Error_desciption = ""

If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress

If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress

$objEmail.Subject = $s_Subject

If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then

$objEmail.HTMLBody = $as_Body

Else

$objEmail.Textbody = $as_Body & @CRLF

EndIf

If $s_AttachFiles <> "" Then

Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")

For $x = 1 To $S_Files2Attach[0]

$S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])

ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console

If FileExists($S_Files2Attach[$x]) Then

$objEmail.AddAttachment ($S_Files2Attach[$x])

Else

ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)

SetError(1)

Return 0

EndIf

Next

EndIf

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer

If Number($IPPort) = 0 then $IPPort = 25

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort

;Authenticated SMTP

If $s_Username <> "" Then

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password

EndIf

If $ssl Then

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

EndIf

;Update settings

$objEmail.Configuration.Fields.Update

; Set Email Importance

Switch $s_Importance

Case "High"

$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"

Case "Normal"

$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"

Case "Low"

$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"

EndSwitch

$objEmail.Fields.Update

; Sent the Message

$objEmail.Send

If @error Then

SetError(2)

Return $oMyRet[1]

EndIf

$objEmail=""

EndFunc ;==>_INetSmtpMailCom

;

;

; Com Error Handler

Func MyErrFunc()

$HexNumber = Hex($oMyError.number, 8)

$oMyRet[0] = $HexNumber

$oMyRet[1] = StringStripWS($oMyError.description, 3)

ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)

SetError(1); something to check for when this function returns

Return

EndFunc

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.