Jump to content

XProTec2


Oldschool
 Share

Recommended Posts

Alright, I got it working, runs a little slow, but it works!

#cs ===============================================================================
    *XProTec - Free Version f2.0.0 - 11.27.2007
    Autor:      Oldschool    (Originally written by Valuater)
    E-mail:     
    Language:    English
    OSystem:    Windows Xp
    Features:   -Automated Program
    -Register Users
    -Receive Payment
    -Program Protection
    Requirements: Legal copy of Microsoft Windows Xp
    Construction: AutoIt 3.2.2.0+, SciTE 1.73
    
    Thanks to all, Enjoy...
#ce ===============================================================================
; This is a modified XproTec.au3 
; It will gather user info and e-mail all registration info & the serial to the Developer, who can then chose to forward the serial back to the user.

#include <Array.au3>
#include <Inet.au3>
#include <GUIConstants.au3>
#include <IE.au3>
;#include-once

Global $smtpserver = "smtp.gmail.com"
Global $sendusername = "login"
Global $sendpassword = "pass"

Global $D_Mail = "your e-mail" ; developer email
Global $D_Program = "Test123"; your program name
Global $U_Price = "1.00" ; the amount of money you wish to be payed by the user
Global $U_Trial = "0" ; amount of days for the trial period
Global $U_License = "3" ; 3 = one computer only - see license notes
Global $P_Serial = "9876557657864" ; program serial
Global $D_EGold = "http://3900361.e-gold.com/" ; e-gold link
Global $mEGoldID = "3900361 (8261157)" ;My eGold #
Global $D_Link = "www.johnbokma.com/spam/blacklist.txt" ; looks for "www.mywebsite.com/.../Blacklist.txt" ; see Blacklist
Global $U_Return = 1 ; pay or quit .... or  $U_Return = 0 ; will return control to developer with @extended = 6 [Limited Freeware Option]
Global $X_read001 = RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $D_Program, "001")
Global $X_read004 = RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $D_Program, "004")

If $X_read001 = "" And $X_read004 = "" Then
    GUICreate("Logical AI Registration Form")
    GUICtrlCreateLabel("eMail:", 15, 10, 50)
    GUICtrlCreateLabel("Full Name:", 15, 40, 50)
    GUICtrlCreateLabel("Address:", 15, 70, 50)
    GUICtrlCreateLabel("Address:", 15, 100, 50)
    GUICtrlCreateLabel("Postal Code:", 15, 130, 60)


    $input1 = GUICtrlCreateInput("", 90, 10, 250, 20)
    $input2 = GUICtrlCreateInput("", 90, 40, 250, 20)
    $input3 = GUICtrlCreateInput("", 90, 70, 250, 20)
    $input4 = GUICtrlCreateInput("", 90, 100, 250, 20)
    $input5 = GUICtrlCreateInput("", 90, 130, 250, 20)

    $myedit = GUICtrlCreateEdit("After you complete payment, your validation code will arrive via e-mail within 24 hours." & @CRLF, 1, 230, 400, 70, $WS_DISABLED)
    $btn = GUICtrlCreateButton("Register", 160, 310, 80, 20)
    ;$btn2 = GUICtrlCreateButton ("Buy Now", 160, 340, 80, 20)
    GUISetState()
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_CLOSE
                Exit
            Case $msg = $btn
                $U_Mail = GUICtrlRead($input1)
                If StringInStr($U_Mail, "@") And StringInStr($U_Mail, ".") Then
                    XProTec($D_Mail, $D_Program, $U_Price, $U_Trial, $U_License, $P_Serial, $D_EGold, $D_Link, $U_Return)
                    GUIDelete()
                    MsgBox(0, "", "Registration Confirmed", 2)
                    ExitLoop
                Else
                    If MsgBox(262149, "", "Not a valid e-mail address.", 10) = 2 Then Exit
                EndIf
        EndSelect
    WEnd
Else
    XProTec($D_Mail, $D_Program, $U_Price, $U_Trial, $U_License, $P_Serial, $D_EGold, $D_Link, $U_Return)
    ;Start()  <== This is where you start your program
    MsgBox(0, "", "XProTec is working properly")
EndIf
Func XProTec($D_Mail, $D_Program, $U_Price = 0, $U_Trial = 0, $U_License = 1, $P_Serial = 1, $D_EGold = 1, $D_Link = 1, $U_Return = 1)
    If @Compiled <> 1 And $P_Serial <> 1 Then Return SetError(1, -1, "Not a Compiled Program")
    Local $i_rand, $U_info, $Vreg, $U_Payed, $rtemp = @TempDir & "\XTemp.txt", $M_server = "@ClickTask.com", $ND_Mail = $D_Mail, $encrypt = "zXy987zXy", $ver = "f1.0.0"
    Local $P_program = $D_Program, $sC = @ComputerName, $sD = @HomeDrive, $R_owner = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "RegisteredOwner"), $sS = @ScriptName
    Local $D_1 = _StringEncryptor(1, $D_Mail, $encrypt), $D_2 = "9876557657864" 
    $rand = Chr(Random(Asc("A"), Asc("Z"), 1)) & Random(100, 999, 1) & "-" & Chr(Random(Asc("A"), Asc("Z"), 1)) & Random(100, 999, 1) & "-" & Chr(Random(Asc("A"), Asc("Z"), 1)) & Random(100, 999, 1) & "-" & Chr(Random(Asc("A"), Asc("Z"), 1)) & Random(100, 999, 1)
    Local $P_3 = StringMid(_StringEncryptor(1, "X" & (StringLeft(DriveGetSerial($sD), 6) + StringLen($sC)) & StringLen($sC), $encrypt & "n", 2), StringLen($sC) / 2, 16), $F_days = 0, $F_file = @SystemDir & "\winopsys.dat"
    If Not StringInStr($D_Mail, "@") And Not StringInStr($D_Mail, ".") Then Return mError("Not a Valid Developer Email   ", 3, 1)
    If $U_License <> 1 And $U_License <> 2 And $U_License <> 3 Then Return mError("Not a Valid User License Number (1,2 or 3)   ", 4, 1)
    While 1
        If Ping("www.Autoit3.com", 4000) > 0 Then ExitLoop
        If MsgBox(262149, "Connection Error", "An Internet Connection is Required     ", 10) = 2 Then Exit
    WEnd
    $X_read001 = RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "001")
    $X_read004 = RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "004")
    If $X_read001 = "" And $X_read004 = "" Then
        $U_Mail = GUICtrlRead($input1) 
        $U_Name = GUICtrlRead($input2)
        $U_Address = GUICtrlRead($input3)
        $U_Address2 = GUICtrlRead($input4)
        $U_Zip = GUICtrlRead($input5)
        $text = "Please copy the Validation Code below" & @CRLF & @CRLF & "Owner = " & $R_owner & @CRLF & "Program = " & $P_program & @CRLF & _
                "Validation Date = " & _DateTimeFormat(_NowCalc2(), 1) & @CRLF & "Validation Code = " & $rand & @CRLF & @CRLF & @CRLF & $P_program & @CRLF & _
                "Customer = " & $U_Name & @CRLF & "Address: " & $U_Address & @CRLF & "Address2: " & $U_Address2 & @CRLF & "Zip: " & $U_Zip & @CRLF & "Program Serial:" & $P_Serial
        If StringInStr($U_Mail, "@") And StringInStr($U_Mail, ".") Then
            mEmailer($P_program & $M_server, $U_Mail, $ND_Mail, $P_program & " Validation Code", $text)
        Else
            If MsgBox(262149, "", "Not a valid e-mail address.", 10) = 2 Then Exit
        EndIf
        
        Local $X_read003 = $U_Mail, $X_read004 = _NowCalc2(), $X_read005 = "", $X_read006 = "", $X_read007 = ""
        IniWrite($F_file, "Security", $P_program, _StringEncryptor(1, _NowCalc2(), (StringLen($D_1) - 13)))
        RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "001", "REG_SZ", $D_Mail)
        If $P_Serial <> $D_2 Then RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "002", "REG_SZ", "Developer Not Licensed")
        If $P_Serial = $D_2 Then RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "002", "REG_SZ", "Licensed Developer")
        RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "003", "REG_SZ", $U_Mail)
        RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "004", "REG_SZ", _StringEncryptor(1, _NowCalc2(), (StringLen($D_1) - 13)))
        RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "005", "REG_SZ", "")
        RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "006", "REG_SZ", "")
        RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "007", "REG_SZ", "")
    Else
        If $X_read001 <> $D_Mail Then mError("Not the Registered Developer Email  ", 5, 1)
        If $P_Serial <> $D_2 Then RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "002", "REG_SZ", "Developer Not Licensed")
        If $P_Serial = $D_2 Then RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "002", "REG_SZ", "Licensed Developer")
        $X_read003 = RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "003")
        $X_read004 = _StringEncryptor(0, RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "004"), (StringLen($D_1) - 13))
        $X_read005 = _StringEncryptor(0, RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "005"), $encrypt & "7")
        $X_read006 = _StringEncryptor(0, RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "006"), $encrypt & "2")
        $X_read007 = RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "007")
        $X_read008 = RegRead("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "008")
    EndIf
    If InetGet($D_Link & "Blacklist.txt", $rtemp, 1) = 1 Then
        $itemp = FileRead($rtemp)
        FileDelete($rtemp)
        If StringInStr($itemp, $X_read003) Or StringInStr($itemp, $ND_Mail) Then mError("This program has been abused and will now close.", 6, 1)
    EndIf
    If $U_Trial = 0 And $U_Price = 0 Then Return SetError(0, 0, "Free Licensed")
    If $U_License = 1 And $X_read005 = $X_read003 Then Return SetError(0, 1, "Email Licensed")
    If $U_License = 2 And $X_read006 = $R_owner Then Return SetError(0, 2, "Owner Licensed")
    If $U_License = 3 And $X_read007 = $P_3 Then Return SetError(0, 3, "Computer Licensed") 
    If $U_License = 1 Then $U_info = "Your E-Mail   "
    If $U_License = 1 Then $i_rand = _StringEncryptor(1, $X_read003, $encrypt & "7")
    If $U_License = 2 Then $U_info = "Windows Registered Owner  "
    If $U_License = 2 Then $i_rand = _StringEncryptor(1, $R_owner, $encrypt & "2")
    If $U_License = 3 Then $U_info = "One Computer Only  "
    If $U_License = 3 Then $i_rand = $P_3
    $T_days = _DateDiff("D", $X_read004, _NowCalc2())
    $t = FileGetTime(_StringEncryptor(0, IniRead($F_file, "Security", $P_program, _NowCalc2()), (StringLen($D_1) - 13)))
    If Not @error Then $F_days = _DateDiff("D", $t[0] & "/" & $t[1] & "/" & $t[2], _NowCalc2())
    If $F_days > $T_days Then $T_days = $F_days
    If $T_days < 0 Or $T_days > 3600 Then mError("ERROR - Validation Date   ", 7, 1)
    If $P_Serial <> $D_2 And $T_days > 90 Then mError("Developer Trial Period has Expired  ", 9, 1)
    If $U_Trial <> 0 And $U_Price = 0 And $T_days > $U_Trial Then mError($P_program & "'s Trial Period has Expired  ", 8, 1)
    If $U_Trial <> 0 And $T_days > ($U_Trial / 2) And $T_days <= $U_Trial Then $U_Payed = mPurchase($P_program, $U_Price, $U_Trial, $U_License, $T_days, $D_EGold, $U_info, $i_rand, 0)
    If $U_Trial = 0 And $U_Price <> 0 Or $T_days > $U_Trial Then $U_Payed = mPurchase($P_program, $U_Price, $U_Trial, $U_License, $T_days, $D_EGold, $U_info, $i_rand, $U_Return)
    If $U_Payed = 1 And $U_License >= 1 And $U_License <= 3 Then RegWrite("HKCU\Software\Microsoft\Windows\Current Version\Settings\ClickTask.com\X-" & $P_program, "00" & ($U_License + 4), "REG_SZ", $i_rand) ;==>
    If $U_Payed = 1 Then $text = "Please save this Registration Code Page" & @CRLF & @CRLF & "Owner = " & $R_owner & @CRLF & "Program = " & $P_program & @CRLF & _
            "Registration Date = " & _DateTimeFormat(_NowCalc2(), 1) & @CRLF & "Registration Code = " & $i_rand & @CRLF & @CRLF & " Thank You!" & @CRLF & $P_program
    If $U_Payed = 1 Then mEmailer($P_program & $M_server, $X_read003, $ND_Mail, $P_program & " Registration Code", $text)
    If $U_Payed = 1 Then MsgBox(64, $P_program, " You are now registered and a confirmation email with your serial number will arrive within 24 hours.  " & @CRLF & "When you recieve the serial number, restart this program." & @CRLF & @CRLF & "..... Thank You !      ", 5)
    If $U_Payed = 1 Then Return SetError(0, 4, "License Paid")
    If $U_Trial = 0 And $U_Price <> 0 Or $T_days > $U_Trial Then Return SetError(0, 6, "Freeware Limited")
    Return SetError(0, 5, "License Not Paid")
EndFunc   ;==>XProTec

Func mPurchase($Prog, $U_P, $U_T, $U_L, $T_D, $D_P, $Uinfo, $irand, $rFatal = 0)
    Local $PR1 = "Trial Period = " & $U_T & " Days  " & @CRLF & "License Type = " & $Uinfo & @CRLF & "Register Fee =  $" & $U_P
    Local $PR2 = "   " & @CRLF & "Days Since Validation = " & $T_D & @CRLF & @CRLF & "Would you like to Register Now?      " & @CRLF & @CRLF
    Local $PR3 = "*Yes*  to Register Now!" & @CRLF & "*No*  to use your previous Registration Number.      " & @CRLF & "*Cancel*  to Quit Registration." & @CRLF
    $U_ans = MsgBox(262147, $Prog, $PR1 & $PR2 & $PR3)
    If $U_ans = 6 Then
        WinMinimizeAll()
        $oIE = _IECreate($D_EGold)
        Sleep(1000)
        While WinExists($oIE)
            Sleep(3000)
            If StringInStr(WinGetTitle($oIE), "e-metal Payment Order - Confirmation") Then
                Sleep(2000)
                $sText = _IEBodyReadHTML($oIE)
                ;MsgBox(0, "", $sText)
                If StringInStr($sText, "Paid To:") And StringInStr($sText, $mEGoldID) Then
                    MsgBox(0, "", "Payment Confirmed", 1)
                    Return 1
                    ExitLoop
                EndIf
            EndIf
        WEnd
    EndIf
    If $U_ans = 7 Then
        Do
            $input10 = Qbox($Prog, "Please Paste your Registration Code below       " & @CRLF & "License Type = " & $Uinfo & "   " & @CRLF & "If not, you will need to restart - " & $Prog & "   ")
        Until $input10 = $irand
        Return 1
    EndIf
    If $rFatal Then Exit
    Return 0
EndFunc   ;==>mPurchase

Func mEmailer($e_Sender, $e_Recipient, $e_CcAddress, $e_Subject, $e_Text)
    ; Info for this function by JdeB = http://www.autoitscript.com/forum/index.php?s=&showtopic=23860&view=findpost&p=166575
    $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    $objMessage = ObjCreate("CDO.Message")
    With $objMessage
        .Subject = $e_Subject
        .Sender = $e_Sender
        .From = $e_Sender
        .To = $e_Recipient
        .Cc = $e_CcAddress
        .TextBody = $e_Text
    EndWith
    With $objMessage.Configuration.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $smtpserver
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $sendusername
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $sendpassword
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 ;25
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        .Update
    EndWith
    $objMessage.Send
    If @error Then MyErrFunc()
    $oMyError = ""
    $objMessage = ""
EndFunc   ;==>mEmailer
Func Qbox($t1, $L1)
    $Qbox = InputBox($t1, $L1, "", "", 300, 150)
    If @error = 1 Then Exit
    Return $Qbox
EndFunc   ;==>Qbox
Func mError($sText, $ret = 0, $iFatal = 0)
    MsgBox(48 + 4096 + 262144, "*XProTec*", $sText & " #" & $ret & "   ")
    If $iFatal Then Exit
EndFunc   ;==>mError
Func MyErrFunc()
    MsgBox(262209, "COM / Internal Error", "This Program has been interupted by a Fatal COM Error      ")
    Exit
EndFunc   ;==>MyErrFunc

Func _INetGetSources($s_URL, $s_Header = '')
    If StringLeft($s_URL, 7) <> 'http://'  And StringLeft($s_URL, 8) <> 'https://'  Then $s_URL = 'http://' & $s_URL
    Local $h_DLL = DllOpen("wininet.dll"), $ai_IRF, $s_Buf = ''
    Local $ai_IO = DllCall($h_DLL, 'int', 'InternetOpen', 'str', "AutoIt v3", 'int', 0, 'int', 0, 'int', 0, 'int', 0)
    If @error Or $ai_IO[0] = 0 Then
        DllClose($h_DLL)
        SetError(1)
        Return ""
    EndIf
    Local $ai_IOU = DllCall($h_DLL, 'int', 'InternetOpenUrl', 'int', $ai_IO[0], 'str', $s_URL, 'str', $s_Header, 'int', StringLen($s_Header), 'int', 0x80000000, 'int', 0)
    If @error Or $ai_IOU[0] = 0 Then
        DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IO[0])
        DllClose($h_DLL)
        SetError(1)
        Return ""
    EndIf
    Local $v_Struct = DllStructCreate('udword')
    DllStructSetData($v_Struct, 1, 1)
    While DllStructGetData($v_Struct, 1) <> 0
        $ai_IRF = DllCall($h_DLL, 'int', 'InternetReadFile', 'int', $ai_IOU[0], 'str', '', 'int', 256, 'ptr', DllStructGetPtr($v_Struct))
        $s_Buf &= StringLeft($ai_IRF[2], DllStructGetData($v_Struct, 1))
    WEnd
    DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IOU[0])
    DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IO[0])
    DllClose($h_DLL)
    Return $s_Buf
EndFunc   ;==>_INetGetSources
Func _StringEncryptor($i_Encrypt, $s_EncryptText, $s_EncryptPassword, $i_EncryptLevel = 1)
    If $i_Encrypt <> 0 And $i_Encrypt <> 1 Then
        SetError(1)
        Return ''
    ElseIf $s_EncryptText = '' Or $s_EncryptPassword = '' Then
        SetError(1)
        Return ''
    Else
        If Number($i_EncryptLevel) <= 0 Or Int($i_EncryptLevel) <> $i_EncryptLevel Then $i_EncryptLevel = 1
        Local $v_EncryptModified, $i_EncryptCountH, $i_EncryptCountG, $v_EncryptSwap, $av_EncryptBox[256][2], $i_EncryptCountA
        Local $i_EncryptCountB, $i_EncryptCountC, $i_EncryptCountD, $i_EncryptCountE, $v_EncryptCipher, $v_EncryptCipherBy
        If $i_Encrypt = 1 Then
            For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
                $i_EncryptCountG = ''
                $i_EncryptCountH = ''
                $v_EncryptModified = ''
                For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
                    If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
                        $i_EncryptCountH = 1
                    Else
                        $i_EncryptCountH = $i_EncryptCountH + 1
                    EndIf
                    $v_EncryptModified = $v_EncryptModified & Chr(BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountG, 1)), Asc(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
                Next
                $s_EncryptText = $v_EncryptModified
                $i_EncryptCountA = ''
                $i_EncryptCountB = 0
                $i_EncryptCountC = ''
                $i_EncryptCountD = ''
                $i_EncryptCountE = ''
                $v_EncryptCipherBy = ''
                $v_EncryptCipher = ''
                $v_EncryptSwap = ''
                $av_EncryptBox = ''
                Local $av_EncryptBox[256][2]
                For $i_EncryptCountA = 0 To 255
                    $av_EncryptBox[$i_EncryptCountA][1] = Asc(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
                    $av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
                Next
                For $i_EncryptCountA = 0 To 255
                    $i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
                    $v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
                    $av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
                    $av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
                Next
                For $i_EncryptCountA = 1 To StringLen($s_EncryptText)
                    $i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
                    $i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
                    $i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
                    $v_EncryptCipherBy = BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountA, 1)), $i_EncryptCountE)
                    $v_EncryptCipher = $v_EncryptCipher & Hex($v_EncryptCipherBy, 2)
                Next
                $s_EncryptText = $v_EncryptCipher
            Next
        Else
            For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
                $i_EncryptCountB = 0
                $i_EncryptCountC = ''
                $i_EncryptCountD = ''
                $i_EncryptCountE = ''
                $v_EncryptCipherBy = ''
                $v_EncryptCipher = ''
                $v_EncryptSwap = ''
                $av_EncryptBox = ''
                Local $av_EncryptBox[256][2]
                For $i_EncryptCountA = 0 To 255
                    $av_EncryptBox[$i_EncryptCountA][1] = Asc(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
                    $av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
                Next
                For $i_EncryptCountA = 0 To 255
                    $i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
                    $v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
                    $av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
                    $av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
                Next
                For $i_EncryptCountA = 1 To StringLen($s_EncryptText) Step 2
                    $i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
                    $i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
                    $i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
                    $v_EncryptCipherBy = BitXOR(Dec(StringMid($s_EncryptText, $i_EncryptCountA, 2)), $i_EncryptCountE)
                    $v_EncryptCipher = $v_EncryptCipher & Chr($v_EncryptCipherBy)
                Next
                $s_EncryptText = $v_EncryptCipher
                $i_EncryptCountG = ''
                $i_EncryptCountH = ''
                $v_EncryptModified = ''
                For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
                    If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
                        $i_EncryptCountH = 1
                    Else
                        $i_EncryptCountH = $i_EncryptCountH + 1
                    EndIf
                    $v_EncryptModified = $v_EncryptModified & Chr(BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountG, 1)), Asc(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
                Next
                $s_EncryptText = $v_EncryptModified
            Next
        EndIf
        Return $s_EncryptText
    EndIf
EndFunc   ;==>_StringEncryptor
Func _NowCalc2()
    $var = InetGetNow()
    $var2 = StringRight($var, 4)
    $Counter = 0
    Dim $WeekDays[7]
    $WeekDays = _ArrayCreate("Monday, ", "Tuesday, ", "Wednesday, ", "Thursday, ", "Friday, ", "Saturday, ", "Sunday, ")
    While $Counter <= 6
        If StringInStr($var, $WeekDays[$Counter]) Then
            $var3 = StringReplace($var, $WeekDays[$Counter], $var2)
        EndIf
        $Counter += 1
    WEnd
    Select
        Case StringInStr($var3, 'Janu')
            $var4 = StringReplace($var3, 'January ', "01")
        Case StringInStr($var3, 'Febr')
            $var4 = StringReplace($var3, 'February ', "02")
        Case StringInStr($var3, 'Marc')
            $var4 = StringReplace($var3, 'March ', "03")
        Case StringInStr($var3, 'Apri')
            $var4 = StringReplace($var3, 'April ', "04")
        Case StringInStr($var3, 'May')
            $var4 = StringReplace($var3, 'May ', "05")
        Case StringInStr($var3, 'June')
            $var4 = StringReplace($var3, 'June ', "06")
        Case StringInStr($var3, 'July')
            $var4 = StringReplace($var3, 'July ', "07")
        Case StringInStr($var3, 'Augu')
            $var4 = StringReplace($var3, 'August ', "08")
        Case StringInStr($var3, 'Sept')
            $var4 = StringReplace($var3, 'September ', "09")
        Case StringInStr($var3, 'Octo')
            $var4 = StringReplace($var3, 'October ', "10")
        Case StringInStr($var3, 'Nove')
            $var4 = StringReplace($var3, 'November ', "11")
        Case StringInStr($var3, 'Dece')
            $var4 = StringReplace($var3, 'December ', "12")
    EndSelect

    $var5 = StringMid($var4, 5, 2)
    $var6 = StringMid($var4, 7, 2)
    Return ($var2 & "/" & $var5 & "/" & $var6 & " " & @HOUR & ":" & @MIN & ":" & @SEC)
EndFunc   ;==>_NowCalc2
Func InetGetNow()
    Local $sTimeSource = _INetGetSource("http://www.time.gov/timezone.cgi?Eastern/d/-5")
    Local $sBR = StringRegExp($sTimeSource, '(?i)<font size="5" color="white">(.*)<br>', 3)
    Return $sBR[0]
EndFunc   ;==>InetGetNow
Func _DateTimeFormat($sDate, $sType)
    Local $asDatePart[4]
    Local $asTimePart[4]
    Local $sTempDate = ""
    Local $sTempTime = ""
    Local $sAM
    Local $sPM
    Local $iWday
    Local $lngX
    If Not _DateIsValid($sDate) Then
        SetError(1)
        Return ("")
    EndIf
    If $sType < 0 Or $sType > 5 Or Not IsInt($sType) Then
        SetError(2)
        Return ("")
    EndIf
    _DateTimeSplit($sDate, $asDatePart, $asTimePart)
    Switch $sType
        Case 0
            $lngX = DllCall("kernel32.dll", "long", "GetLocaleInfo", "long", 0x400, "long", 0x1F, "str", "", "long", 255)
            If Not @error And $lngX[0] <> 0 Then
                $sTempDate = $lngX[3]
            Else
                $sTempDate = "M/d/yyyy"
            EndIf
            If $asTimePart[0] > 1 Then
                $lngX = DllCall("kernel32.dll", "long", "GetLocaleInfo", "long", 0x400, "long", 0x1003, "str", "", "long", 255)
                If Not @error And $lngX[0] <> 0 Then
                    $sTempTime = $lngX[3]
                Else
                    $sTempTime = "h:mm:ss tt"
                EndIf
            EndIf
        Case 1
            $lngX = DllCall("kernel32.dll", "long", "GetLocaleInfo", "long", 0x400, "long", 0x20, "str", "", "long", 255)
            If Not @error And $lngX[0] <> 0 Then
                $sTempDate = $lngX[3]
            Else
                $sTempDate = "dddd, MMMM dd, yyyy"
            EndIf
        Case 2
            $lngX = DllCall("kernel32.dll", "long", "GetLocaleInfo", "long", 0x400, "long", 0x1F, "str", "", "long", 255)
            If Not @error And $lngX[0] <> 0 Then
                $sTempDate = $lngX[3]
            Else
                $sTempDate = "M/d/yyyy"
            EndIf
        Case 3
            If $asTimePart[0] > 1 Then
                $lngX = DllCall("kernel32.dll", "long", "GetLocaleInfo", "long", 0x400, "long", 0x1003, "str", "", "long", 255)
                If Not @error And $lngX[0] <> 0 Then
                    $sTempTime = $lngX[3]
                Else
                    $sTempTime = "h:mm:ss tt"
                EndIf
            EndIf
        Case 4
            If $asTimePart[0] > 1 Then
                $sTempTime = "hh:mm"
            EndIf
        Case 5
            If $asTimePart[0] > 1 Then
                $sTempTime = "hh:mm:ss"
            EndIf
    EndSwitch
    If $sTempDate <> "" Then
        $lngX = DllCall("kernel32.dll", "long", "GetLocaleInfo", "long", 0x400, "long", 0x1D, "str", "", "long", 255)
        If Not @error And $lngX[0] <> 0 Then
            $sTempTime = StringReplace($sTempTime, "/", $lngX[3])
        EndIf
        $iWday = _DateToDayOfWeek($asDatePart[1], $asDatePart[2], $asDatePart[3])
        $asDatePart[3] = StringRight("0" & $asDatePart[3], 2)
        $asDatePart[2] = StringRight("0" & $asDatePart[2], 2)
        $sTempDate = StringReplace($sTempDate, "d", "@")
        $sTempDate = StringReplace($sTempDate, "m", "#")
        $sTempDate = StringReplace($sTempDate, "y", "&")
        $sTempDate = StringReplace($sTempDate, "@@@@", _DateDayOfWeek($iWday, 0))
        $sTempDate = StringReplace($sTempDate, "@@@", _DateDayOfWeek($iWday, 1))
        $sTempDate = StringReplace($sTempDate, "@@", $asDatePart[3])
        $sTempDate = StringReplace($sTempDate, "@", StringReplace(StringLeft($asDatePart[3], 1), "0", "") & StringRight($asDatePart[3], 1))
        $sTempDate = StringReplace($sTempDate, "####", _DateMonthOfYear($asDatePart[2], 0))
        $sTempDate = StringReplace($sTempDate, "###", _DateMonthOfYear($asDatePart[2], 1))
        $sTempDate = StringReplace($sTempDate, "##", $asDatePart[2])
        $sTempDate = StringReplace($sTempDate, "#", StringReplace(StringLeft($asDatePart[2], 1), "0", "") & StringRight($asDatePart[2], 1))
        $sTempDate = StringReplace($sTempDate, "&&&&", $asDatePart[1])
        $sTempDate = StringReplace($sTempDate, "&&", StringRight($asDatePart[1], 2))
    EndIf
    If $sTempTime <> "" Then
        $lngX = DllCall("kernel32.dll", "long", "GetLocaleInfo", "long", 0x400, "long", 0x28, "str", "", "long", 255)
        If Not @error And $lngX[0] <> 0 Then
            $sAM = $lngX[3]
        Else
            $sAM = "AM"
        EndIf
        $lngX = DllCall("kernel32.dll", "long", "GetLocaleInfo", "long", 0x400, "long", 0x29, "str", "", "long", 255)
        If Not @error And $lngX[0] <> 0 Then
            $sPM = $lngX[3]
        Else
            $sPM = "PM"
        EndIf
        $lngX = DllCall("kernel32.dll", "long", "GetLocaleInfo", "long", 0x400, "long", 0x1E, "str", "", "long", 255)
        If Not @error And $lngX[0] <> 0 Then
            $sTempTime = StringReplace($sTempTime, ":", $lngX[3])
        EndIf
        If StringInStr($sTempTime, "tt") Then
            If $asTimePart[1] < 12 Then
                $sTempTime = StringReplace($sTempTime, "tt", $sAM)
                If $asTimePart[1] = 0 Then $asTimePart[1] = 12
            Else
                $sTempTime = StringReplace($sTempTime, "tt", $sPM)
                If $asTimePart[1] > 12 Then $asTimePart[1] = $asTimePart[1] - 12
            EndIf
        EndIf
        $asTimePart[1] = StringRight("0" & $asTimePart[1], 2)
        $asTimePart[2] = StringRight("0" & $asTimePart[2], 2)
        $asTimePart[3] = StringRight("0" & $asTimePart[3], 2)
        $sTempTime = StringReplace($sTempTime, "hh", StringFormat("%02d", $asTimePart[1]))
        $sTempTime = StringReplace($sTempTime, "h", StringReplace(StringLeft($asTimePart[1], 1), "0", "") & StringRight($asTimePart[1], 1))
        $sTempTime = StringReplace($sTempTime, "mm", StringFormat("%02d", $asTimePart[2]))
        $sTempTime = StringReplace($sTempTime, "ss", StringFormat("%02d", $asTimePart[3]))
        $sTempDate = StringStripWS($sTempDate & " " & $sTempTime, 3)
    EndIf
    Return ($sTempDate)
EndFunc   ;==>_DateTimeFormat
Func _DateDiff($sType, $sStartDate, $sEndDate)
    Local $asStartDatePart[4]
    Local $asStartTimePart[4]
    Local $asEndDatePart[4]
    Local $asEndTimePart[4]
    Local $iTimeDiff
    Local $iYearDiff
    Local $iMonthDiff
    Local $iStartTimeInSecs
    Local $iEndTimeInSecs
    Local $aDaysDiff
    $sType = StringLeft($sType, 1)
    If StringInStr("d,m,y,w,h,n,s", $sType) = 0 Or $sType = "" Then
        SetError(1)
        Return (0)
    EndIf
    If Not _DateIsValid($sStartDate) Then
        SetError(2)
        Return (0)
    EndIf
    If Not _DateIsValid($sEndDate) Then
        SetError(3)
        Return (0)
    EndIf
    _DateTimeSplit($sStartDate, $asStartDatePart, $asStartTimePart)
    _DateTimeSplit($sEndDate, $asEndDatePart, $asEndTimePart)
    $aDaysDiff = _DateToDayValue($asEndDatePart[1], $asEndDatePart[2], $asEndDatePart[3]) - _DateToDayValue($asStartDatePart[1], $asStartDatePart[2], $asStartDatePart[3])
    If $asStartTimePart[0] > 1 And $asEndTimePart[0] > 1 Then
        $iStartTimeInSecs = $asStartTimePart[1] * 3600 + $asStartTimePart[2] * 60 + $asStartTimePart[3]
        $iEndTimeInSecs = $asEndTimePart[1] * 3600 + $asEndTimePart[2] * 60 + $asEndTimePart[3]
        $iTimeDiff = $iEndTimeInSecs - $iStartTimeInSecs
        If $iTimeDiff < 0 Then
            $aDaysDiff = $aDaysDiff - 1
            $iTimeDiff = $iTimeDiff + 24 * 60 * 60
        EndIf
    Else
        $iTimeDiff = 0
    EndIf
    Select
        Case $sType = "d"
            Return ($aDaysDiff)
        Case $sType = "m"
            $iYearDiff = $asEndDatePart[1] - $asStartDatePart[1]
            $iMonthDiff = $asEndDatePart[2] - $asStartDatePart[2] + $iYearDiff * 12
            If $asEndDatePart[3] < $asStartDatePart[3]Then $iMonthDiff = $iMonthDiff - 1
            $iStartTimeInSecs = $asStartTimePart[1] * 3600 + $asStartTimePart[2] * 60 + $asStartTimePart[3]
            $iEndTimeInSecs = $asEndTimePart[1] * 3600 + $asEndTimePart[2] * 60 + $asEndTimePart[3]
            $iTimeDiff = $iEndTimeInSecs - $iStartTimeInSecs
            If $asEndDatePart[3] = $asStartDatePart[3]And $iTimeDiff < 0 Then $iMonthDiff = $iMonthDiff - 1
            Return ($iMonthDiff)
        Case $sType = "y"
            $iYearDiff = $asEndDatePart[1] - $asStartDatePart[1]
            If $asEndDatePart[2] < $asStartDatePart[2]Then $iYearDiff = $iYearDiff - 1
            If $asEndDatePart[2] = $asStartDatePart[2]And $asEndDatePart[3] < $asStartDatePart[3]Then $iYearDiff = $iYearDiff - 1
            $iStartTimeInSecs = $asStartTimePart[1] * 3600 + $asStartTimePart[2] * 60 + $asStartTimePart[3]
            $iEndTimeInSecs = $asEndTimePart[1] * 3600 + $asEndTimePart[2] * 60 + $asEndTimePart[3]
            $iTimeDiff = $iEndTimeInSecs - $iStartTimeInSecs
            If $asEndDatePart[2] = $asStartDatePart[2]And $asEndDatePart[3] = $asStartDatePart[3]And $iTimeDiff < 0 Then $iYearDiff = $iYearDiff - 1
            Return ($iYearDiff)
        Case $sType = "w"
            Return (Int($aDaysDiff / 7))
        Case $sType = "h"
            Return ($aDaysDiff * 24 + Int($iTimeDiff / 3600))
        Case $sType = "n"
            Return ($aDaysDiff * 24 * 60 + Int($iTimeDiff / 60))
        Case $sType = "s"
            Return ($aDaysDiff * 24 * 60 * 60 + $iTimeDiff)
    EndSelect
EndFunc   ;==>_DateDiff
Func _DateIsValid($sDate)
    Local $asDatePart[4]
    Local $asTimePart[4]
    Local $iNumDays
    $iNumDays = "31,28,31,30,31,30,31,31,30,31,30,31"
    $iNumDays = StringSplit($iNumDays, ",")
    _DateTimeSplit($sDate, $asDatePart, $asTimePart)
    If $asDatePart[0] <> 3 Then
        Return (0)
    EndIf
    If _DateIsLeapYear($asDatePart[1]) Then $iNumDays[2] = 29
    If $asDatePart[1] < 1000 Or $asDatePart[1] > 2999 Then Return (0)
    If $asDatePart[2] < 1 Or $asDatePart[2] > 12 Then Return (0)
    If $asDatePart[3] < 1 Or $asDatePart[3] > $iNumDays[$asDatePart[2]]Then Return (0)
    If $asTimePart[0] < 1 Then Return (1)
    If $asTimePart[0] < 2 Then Return (0)
    If $asTimePart[1] < 0 Or $asTimePart[1] > 23 Then Return (0)
    If $asTimePart[2] < 0 Or $asTimePart[2] > 59 Then Return (0)
    If $asTimePart[3] < 0 Or $asTimePart[3] > 59 Then Return (0)
    Return (1)
EndFunc   ;==>_DateIsValid
Func _DateTimeSplit($sDate, ByRef $asDatePart, ByRef $iTimePart)
    Local $sDateTime
    Local $x
    $sDateTime = StringSplit($sDate, " T")
    If $sDateTime[0] > 0 Then $asDatePart = StringSplit($sDateTime[1], "/-.")
    If $sDateTime[0] > 1 Then
        $iTimePart = StringSplit($sDateTime[2], ":")
        If UBound($iTimePart) < 4 Then ReDim $iTimePart[4]
    Else
        Dim $iTimePart[4]
    EndIf
    If UBound($asDatePart) < 4 Then ReDim $asDatePart[4]
    For $x = 1 To 3
        $asDatePart[$x] = Number($asDatePart[$x])
        $iTimePart[$x] = Number($iTimePart[$x])
    Next
    Return (1)
EndFunc   ;==>_DateTimeSplit
Func _DateToDayOfWeek($iYear, $iMonth, $iDay)
    Local $i_aFactor
    Local $i_yFactor
    Local $i_mFactor
    Local $i_dFactor
    If Not _DateIsValid($iYear & "/" & $iMonth & "/" & $iDay) Then
        SetError(1)
        Return ("")
    EndIf
    $i_aFactor = Int((14 - $iMonth) / 12)
    $i_yFactor = $iYear - $i_aFactor
    $i_mFactor = $iMonth + (12 * $i_aFactor) - 2
    $i_dFactor = Mod($iDay + $i_yFactor + Int($i_yFactor / 4) - Int($i_yFactor / 100) + Int($i_yFactor / 400) + Int((31 * $i_mFactor) / 12), 7)
    Return ($i_dFactor + 1)
EndFunc   ;==>_DateToDayOfWeek
Func _DateDayOfWeek($iDayNum, $iShort = 0)
    Local $aDayOfWeek[8]
    $aDayOfWeek[1] = "Sunday"
    $aDayOfWeek[2] = "Monday"
    $aDayOfWeek[3] = "Tuesday"
    $aDayOfWeek[4] = "Wednesday"
    $aDayOfWeek[5] = "Thursday"
    $aDayOfWeek[6] = "Friday"
    $aDayOfWeek[7] = "Saturday"
    Select
        Case Not StringIsInt($iDayNum) Or Not StringIsInt($iShort)
            SetError(1)
            Return ""
        Case $iDayNum < 1 Or $iDayNum > 7
            SetError(1)
            Return ""
        Case Else
            Select
                Case $iShort = 0
                    Return $aDayOfWeek[$iDayNum]
                Case $iShort = 1
                    Return StringLeft($aDayOfWeek[$iDayNum], 3)
                Case Else
                    SetError(1)
                    Return ""
            EndSelect
    EndSelect
EndFunc   ;==>_DateDayOfWeek
Func _DateMonthOfYear($iMonthNum, $iShort)
    Local $aMonthOfYear[13]
    $aMonthOfYear[1] = "January"
    $aMonthOfYear[2] = "February"
    $aMonthOfYear[3] = "March"
    $aMonthOfYear[4] = "April"
    $aMonthOfYear[5] = "May"
    $aMonthOfYear[6] = "June"
    $aMonthOfYear[7] = "July"
    $aMonthOfYear[8] = "August"
    $aMonthOfYear[9] = "September"
    $aMonthOfYear[10] = "October"
    $aMonthOfYear[11] = "November"
    $aMonthOfYear[12] = "December"
    Select
        Case Not StringIsInt($iMonthNum) Or Not StringIsInt($iShort)
            SetError(1)
            Return ""
        Case $iMonthNum < 1 Or $iMonthNum > 12
            SetError(1)
            Return ""
        Case Else
            Select
                Case $iShort = 0
                    Return $aMonthOfYear[$iMonthNum]
                Case $iShort = 1
                    Return StringLeft($aMonthOfYear[$iMonthNum], 3)
                Case Else
                    SetError(1)
                    Return ""
            EndSelect
    EndSelect
EndFunc   ;==>_DateMonthOfYear
Func _DateToDayValue($iYear, $iMonth, $iDay)
    Local $i_aFactor
    Local $i_bFactor
    Local $i_cFactor
    Local $i_eFactor
    Local $i_fFactor
    Local $iJulianDate
    If Not _DateIsValid(StringFormat("%04d/%02d/%02d", $iYear, $iMonth, $iDay)) Then
        SetError(1)
        Return ("")
    EndIf
    If $iMonth < 3 Then
        $iMonth = $iMonth + 12
        $iYear = $iYear - 1
    EndIf
    $i_aFactor = Int($iYear / 100)
    $i_bFactor = Int($i_aFactor / 4)
    $i_cFactor = 2 - $i_aFactor + $i_bFactor
    $i_eFactor = Int(1461 * ($iYear + 4716) / 4)
    $i_fFactor = Int(153 * ($iMonth + 1) / 5)
    $iJulianDate = $i_cFactor + $iDay + $i_eFactor + $i_fFactor - 1524.5
    Return ($iJulianDate)
EndFunc   ;==>_DateToDayValue
Func _DateIsLeapYear($iYear)
    If StringIsInt($iYear) Then
        Select
            Case Mod($iYear, 4) = 0 And Mod($iYear, 100) <> 0
                Return 1
            Case Mod($iYear, 400) = 0
                Return 1
            Case Else
                Return 0
        EndSelect
    Else
        SetError(1)
        Return 0
    EndIf
EndFunc   ;==>_DateIsLeapYear
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...