home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PCBOARD / PWD16.ZIP / PASSWORD.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-01-02  |  17KB  |  498 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Integer  INTEGER001
  21.     Integer  INTEGER002
  22.     Integer  INTEGER003
  23.     Integer  INTEGER004
  24.     Integer  INTEGER005
  25.     Integer  INTEGER006
  26.     Integer  INTEGER007
  27.     Integer  INTEGER008
  28.     String   STRING002
  29.     String   STRING003
  30.     String   STRING004
  31.     String   STRING005
  32.     String   STRING006
  33.     String   STRING007
  34.     String   STRING008
  35.     String   STRING009
  36.     String   STRING010
  37.     String   STRING011
  38.     String   STRING012
  39.     String   STRING013
  40.     String   STRING014
  41.     String   STRING015
  42.     String   STRING016
  43.     String   STRING017
  44.     String   STRING018
  45.     String   STRING019
  46.     String   STRING020
  47.     String   STRING021
  48.     String   STRING022
  49.     String   STRING023
  50.     String   STRING024
  51.     String   STRING025
  52.     String   STRING026
  53.     String   STRING027
  54.     String   STRING028
  55.     String   STRING029
  56.     String   STRING030
  57.     String   STRING031
  58.     String   STRING032
  59.     String   STRING033
  60.     String   STRING034
  61.     String   STRING035
  62.     String   STRING036
  63.     String   STRING037
  64.     String   STRING038
  65.     String   STRING039
  66.     String   STRING040
  67.     String   STRING041
  68.     String   STRING042
  69.     String   STRING043
  70.     String   STRING044
  71.     String   STRING045
  72.     String   STRING046
  73.     String   STRING047
  74.     String   STRING048
  75.     String   STRING049
  76.     String   STRING050
  77.     String   STRING051
  78.     String   STRING052
  79.  
  80. ;------------------------------------------------------------------------------
  81.  
  82.     STRING048 = PcbNode()
  83.     GetUser
  84.     If ((Psa(2) == 1) && (Psa(3) == 1)) Goto LABEL001
  85.     End
  86.     :LABEL001
  87.     If (!Exist(PPEPath() + "password.cfg")) End
  88.     STRING014 = Left(ReadLine(PPEPath() + "password.cfg", 1), 1)
  89.     STRING015 = Left(ReadLine(PPEPath() + "password.cfg", 2), 1)
  90.     STRING016 = Left(ReadLine(PPEPath() + "password.cfg", 3), 1)
  91.     STRING017 = Left(ReadLine(PPEPath() + "password.cfg", 4), 1)
  92.     STRING018 = Left(ReadLine(PPEPath() + "password.cfg", 5), 1)
  93.     STRING019 = Left(ReadLine(PPEPath() + "password.cfg", 6), 1)
  94.     STRING020 = Left(ReadLine(PPEPath() + "password.cfg", 7), 1)
  95.     STRING021 = Left(ReadLine(PPEPath() + "password.cfg", 8), 1)
  96.     STRING022 = Left(ReadLine(PPEPath() + "password.cfg", 9), 1)
  97.     STRING023 = Left(ReadLine(PPEPath() + "password.cfg", 10), 1)
  98.     STRING024 = Left(ReadLine(PPEPath() + "password.cfg", 11), 1)
  99.     STRING046 = ReadLine(PCBDat(), 265)
  100.     STRING047 = 12
  101.     INTEGER001 = STRING046
  102.     INTEGER002 = STRING047
  103.     STRING025 = Left(ReadLine(PPEPath() + "password.cfg", 12), 1)
  104.     STRING026 = Left(ReadLine(PPEPath() + "password.cfg", 14), 1)
  105.     STRING027 = Left(ReadLine(PPEPath() + "password.cfg", 16), 1)
  106.     STRING028 = Left(ReadLine(PPEPath() + "password.cfg", 18), 1)
  107.     STRING049 = ReadLine(PPEPath() + "password.cfg", 20)
  108.     STRING030 = Left(ReadLine(PPEPath() + "password.cfg", 13), 5)
  109.     STRING031 = Left(ReadLine(PPEPath() + "password.cfg", 15), 5)
  110.     STRING032 = Left(ReadLine(PPEPath() + "password.cfg", 17), 5)
  111.     STRING033 = Left(ReadLine(PPEPath() + "password.cfg", 19), 5)
  112.     INTEGER003 = STRING030
  113.     INTEGER004 = STRING031
  114.     INTEGER005 = STRING032
  115.     INTEGER006 = STRING033
  116.     STRING035 = Left(ReadLine(PPEPath() + "password.cfg", 21), 1)
  117.     STRING036 = Left(ReadLine(PPEPath() + "password.cfg", 22), 1)
  118.     STRING037 = Left(ReadLine(PPEPath() + "password.cfg", 23), 1)
  119.     STRING038 = Left(ReadLine(PPEPath() + "password.cfg", 24), 1)
  120.     STRING039 = Left(ReadLine(PPEPath() + "password.cfg", 25), 1)
  121.     STRING040 = Left(ReadLine(PPEPath() + "password.cfg", 26), 1)
  122.     STRING041 = Left(ReadLine(PPEPath() + "password.cfg", 27), 1)
  123.     STRING042 = Left(ReadLine(PPEPath() + "password.cfg", 28), 1)
  124.     STRING043 = Left(ReadLine(PPEPath() + "password.cfg", 29), 1)
  125.     STRING051 = ReadLine(PPEPath() + "password.cfg", 30)
  126.     STRING008 = U_Addr(0)
  127.     STRING009 = U_Addr(1)
  128.     STRING010 = U_Addr(2)
  129.     STRING011 = U_Addr(3)
  130.     STRING012 = U_Addr(4)
  131.     STRING013 = U_Addr(5)
  132.     STRING044 = U_HVPhone
  133.     STRING045 = U_BDPhone
  134.     If (STRING014 == YesChar()) Log "Password.PPE Executed", 0
  135.     If (STRING025 == YesChar()) Message INTEGER003, STRING049, "PASSWORD PPE EXECUTED", U_Name() + " (" + STRING048 + ")", "R", 0, 0, 0, PPEPath() + "pwd_ppe.msg"
  136.     INTEGER008 = Left(ReadLine(PPEPath() + "password.cfg", 31), 3)
  137.     STRING052 = Left(ReadLine(PPEPath() + "password.cfg", 32), 1)
  138.     STRING029 = Left(ReadLine(PPEPath() + "password.cfg", 33), 1)
  139.     STRING034 = Left(ReadLine(PPEPath() + "password.cfg", 34), 5)
  140.     INTEGER007 = STRING034
  141.     If (CurSec() <= INTEGER008) Goto LABEL002
  142.     If (STRING052 == YesChar()) Log "Invalid Security Level Executed PASSWORD.PPE", 0
  143.     If (STRING029 == YesChar()) Message INTEGER007, STRING049, "INVALID SECURITY LEVEL", U_Name() + " (" + STRING048 + ")", "R", 0, 0, 0, PPEPath() + "pwd_sec.msg"
  144.     PrintLn 
  145.     PrintLn "@X0C@FIRST@, did you forget your password?"
  146.     End
  147.     :LABEL002
  148.     If (U_Ver == "") Goto LABEL003
  149.     Goto LABEL006
  150.     :LABEL003
  151.     If (STRING015 == YesChar()) Log "Caller Never Entered Their Verification Info", 0
  152.     Cls
  153.     PrintLn 
  154.     PrintLn "@CLS@@X07"
  155.     PrintLn "@X0F    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  156.     PrintLn "@X0F    @X7F│    @X71Your user record does @X74NOT @X71contain the verification information    @X70│"
  157.     PrintLn "@X0F    @X7F└@X70──────────────────────────────────────────────────────────────────────┘"
  158.     PrintLn 
  159.     PrintLn "@X03"
  160.     PrintLn "  The following is the @X0FVerification Information @X03for this system:"
  161.     PrintLn 
  162.     PrintLn "  ====> @X0F", STRING051
  163.     PrintLn "@X03"
  164.     PrintLn "  During a previous logon you were asked to enter the @X0FVerification Information@X03."
  165.     PrintLn "  If this information was in your user record, and you could have matched this"
  166.     PrintLn "  information, you would now be able to reset your own password.  Because it's"
  167.     PrintLn "  missing you'll have to have your password reset by the Sysop.  Please answer"
  168.     PrintLn "  the following questions which will be formatted into a message to the Sysop."
  169.     PrintLn 
  170.     PrintLn 
  171.     InputStr "What is your voice phone number", STRING003, 14, 14, "1234567890 -()", 256 + 2 + 4
  172.     :LABEL004
  173.     PrintLn 
  174.     STRING004 = ""
  175.     InputStr "What would you like your new password to be", STRING004, 14, 12, Mask_Pwd(), 1 + 256 + 2 + 4 + 8
  176.     If (Len(STRING004) >= INTEGER001) Goto LABEL005
  177.     PrintLn "@CLS@@X07"
  178.     PrintLn "@X04    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  179.     PrintLn "@X04    @X7F│                @X71The password you entered was invalid.                 @X70│"
  180.     PrintLn "@X04    @X7F│     @X71It must be between @X74" + STRING046 + " @X71and @X74" + STRING047 + " @X71characters using @X74A@X71-@X74Z @X71and/or @X740@X71-@X749@X71!     @X70│"
  181.     PrintLn "@X04    @X7F└@X70──────────────────────────────────────────────────────────────────────┘"
  182.     Goto LABEL004
  183.     :LABEL005
  184.     PrintLn 
  185.     PrintLn 
  186.     KbdStuff "Y" + Chr(13)
  187.     If ((U_FSEP == 1) && (U_FSE == 0)) KbdStuff "N" + Chr(13)
  188.     If ((U_FSEP == 1) && (U_FSE == 1)) KbdStuff "Y" + Chr(13)
  189.     KbdStuff "Voice Phone Number is: " + STRING003 + Chr(13)
  190.     KbdStuff "Reset New Password to: " + STRING004 + Chr(13)
  191.     KbdStuff "Callers record is missing the verification information!" + Chr(13)
  192.     KbdStuff Chr(32) + Chr(13)
  193.     KbdStuff "I forgot my password! Could you please voice verify me?" + Chr(13)
  194.     End
  195.     :LABEL006
  196.     Cls
  197.     PrintLn 
  198.     PrintLn "@CLS@@X07"
  199.     PrintLn "@X0F @X7F┌──────────────────────────────────────────────────────────────────────────@X78┐@X07"
  200.     PrintLn "@X0F @X7F│                        @X74USER ACCOUNT INFORMATION@POS:77@@X78│"
  201.     PrintLn "@X0F @X7F└@X78──────────────────────────────────────────────────────────────────────────┘@X07"
  202.     PrintLn 
  203.     PrintLn "@X0F @X7F┌──────────────────────────────────────────────────────────────────────────@X78┐@X07"
  204.     PrintLn "@X0F @X7F│ @X74--> @X70Your Name       : @X71@USER@@POS:77@@X70│"
  205.     If (STRING035 == YesChar()) PrintLn "@X0F @X7F│ @X74--> @X70Address Line 1  : @X71" + STRING008 + " @POS:77@@X70│"
  206.     If (STRING036 == YesChar()) PrintLn "@X0F @X7F│ @X74--> @X70Address Line 2  : @X71" + STRING009 + " @POS:77@@X70│"
  207.     If (STRING037 == YesChar()) PrintLn "@X0F @X7F│ @X74--> @X70City/Town       : @X71" + STRING010 + " @POS:77@@X70│"
  208.     If (STRING038 == YesChar()) PrintLn "@X0F @X7F│ @X74--> @X70State/Province  : @X71" + STRING011 + " @POS:77@@X70│"
  209.     If (STRING039 == YesChar()) PrintLn "@X0F @X7F│ @X74--> @X70Zip/Postal Code : @X71" + STRING012 + " @POS:77@@X70│"
  210.     If (STRING040 == YesChar()) PrintLn "@X0F @X7F│ @X74--> @X70Country         : @X71" + STRING013 + " @POS:77@@X70│"
  211.     If (STRING041 == YesChar()) PrintLn "@X0F @X7F│ @X74--> @X70Voice Phone #   : @X71" + STRING044 + "   @POS:77@@X70│"
  212.     If (STRING042 == YesChar()) PrintLn "@X0F @X7F│ @X74--> @X70Data Phone  #   : @X71" + STRING045 + "   @POS:77@@X70│"
  213.     If (STRING043 == YesChar()) PrintLn "@X0F @X7F│ @X74--> @X70Last Time On    : @X71@LASTDATEON@ @X74at @X71@LASTTIMEON@@POS:77@@X70│"
  214.     PrintLn "@X0F @X7F└@X70──────────────────────────────────────────────────────────────────────────┘@X0B"
  215.     PrintLn 
  216.     PrintLn " Each of your password entries was invalid. Please answer the following to"
  217.     PrintLn " assist us in verifying you and resetting your password."
  218.     PrintLn 
  219.     STRING002 = ""
  220.     InputYN "@X07@X0B Does the above information belong to you @X0E(@X0FY@X0B/@X0FN@X0E)", STRING002, 11
  221.     If (STRING002 == YesChar()) Goto LABEL008
  222.     If (STRING002 == NoChar()) Goto LABEL007
  223.     If (STRING002 == "") Goto LABEL006
  224.     :LABEL007
  225.     Cls
  226.     If (STRING016 == YesChar()) Log "Caller Answered Account Info Did Not Belong to Them", 0
  227.     PrintLn 
  228.     PrintLn " Since this user information doesn't belong to you, perhaps another user"
  229.     PrintLn " has logged onto this BBS with the same name. In that case you may want"
  230.     PrintLn " to choose another variation of your name to use on this BBS (for example,"
  231.     PrintLn " using  BOB  in place of  ROBERT  or by using a middle initial)."
  232.     PrintLn 
  233.     PrintLn " You'll now be given a chance to leave a comment to the Sysop about your"
  234.     PrintLn " problem before being automatically logged off the system."
  235.     PrintLn 
  236.     Wait
  237.     End
  238.     :LABEL008
  239.     Cls
  240.     If (STRING017 == YesChar()) Log "Caller Answered Account Info Did Belong to Them", 0
  241.     AdjTime 5
  242.     PrintLn 
  243.     PrintLn "@CLS@@X07"
  244.     PrintLn "@X0B    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  245.     PrintLn "@X0B    @X7F│                    @X74USER VERIFICATION INFORMATION                     @X70│@X0B"
  246.     PrintLn "@X0B    @X7F└@X78──────────────────────────────────────────────────────────────────────@X70┘"
  247.     PrintLn 
  248.     PrintLn "@X03"
  249.     PrintLn "   The following is the @X0FVerification Information @X03for this system:"
  250.     PrintLn 
  251.     PrintLn "   ====> @X0F", STRING051
  252.     PrintLn "@X03"
  253.     PrintLn "  If you're a registered user on this system and simply forgot your password"
  254.     PrintLn "  you can automatically reset it.  During a previous logon you were prompted"
  255.     PrintLn "  for the above @X0FVerification Information@X03.    If your answer to the following"
  256.     PrintLn "  question matches the information contained in your record you will be able"
  257.     PrintLn "  to enter in a @X0FNEW @X03logon password. If it doesn't match you will be prompted"
  258.     PrintLn "  for information which will be formatted into a comment to the Sysop."
  259.     PrintLn 
  260.     PrintLn 
  261.     InputStr "What is your Verification Information", STRING007, 14, 12, Mask_Ascii(), 256 + 2 + 4 + 8
  262.     PrintLn 
  263.     If (U_Ver == STRING007) Then
  264.         Goto LABEL012
  265.     Endif
  266.     InputStr "In case you mistyped please enter it in again", STRING050, 14, 12, Mask_Ascii(), 256 + 2 + 4 + 8
  267.     If (U_Ver == STRING050) Then
  268.         Goto LABEL012
  269.     Else
  270.         Goto LABEL009
  271.     Endif
  272.     :LABEL009
  273.     Cls
  274.     If (STRING018 == YesChar()) Log "Caller Entered Incorrect Verification Info", 0
  275.     If (STRING026 == YesChar()) Message INTEGER004, STRING049, "INVALID LOGON ATTEMPT", U_Name() + " (" + STRING048 + ")", "R", 0, 0, 0, PPEPath() + "ver_fail.msg"
  276.     PrintLn 
  277.     PrintLn "@CLS@@X07"
  278.     PrintLn "@X0F    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  279.     PrintLn "@X0F    @X7F│       @X71The verification information you typed in was @X74INCORRECT!       @X70│"
  280.     PrintLn "@X0F    @X7F└@X70──────────────────────────────────────────────────────────────────────┘"
  281.     PrintLn 
  282.     PrintLn 
  283.     PrintLn "@X0B    @X03The verification information you entered as your Mother's maiden name"
  284.     PrintLn "@X0B    @X03does not match what was entered in the verification field of your user"
  285.     PrintLn "@X0B    @X03record. You'll now be asked a few questions to assist us in verifying"
  286.     PrintLn "@X0B    @X03you and resetting your password. These answers will be formatted into"
  287.     PrintLn "@X0B    @X03a message to the Sysop to which you'll be able to add any additional"
  288.     PrintLn "@X0B    @X03information you feel the Sysop will need to verify you."
  289.     PrintLn 
  290.     PrintLn 
  291.     InputStr "What is your voice phone number", STRING003, 14, 14, "1234567890 -()", 256 + 2 + 4
  292.     :LABEL010
  293.     PrintLn 
  294.     STRING004 = ""
  295.     InputStr "What would you like your new password to be", STRING004, 14, 12, Mask_Pwd(), 1 + 256 + 2 + 4 + 8
  296.     If (Len(STRING004) >= INTEGER001) Goto LABEL011
  297.     PrintLn "@CLS@@X07"
  298.     PrintLn "@X04    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  299.     PrintLn "@X04    @X7F│                @X71The password you entered was invalid.                 @X70│"
  300.     PrintLn "@X04    @X7F│     @X71It must be between @X74" + STRING046 + " @X71and @X74" + STRING047 + " @X71characters using @X74A@X71-@X74Z @X71and/or @X740@X71-@X749@X71!     @X70│"
  301.     PrintLn "@X04    @X7F└@X70──────────────────────────────────────────────────────────────────────┘"
  302.     Goto LABEL010
  303.     :LABEL011
  304.     PrintLn 
  305.     PrintLn 
  306.     KbdStuff "Y" + Chr(13)
  307.     If ((U_FSEP == 1) && (U_FSE == 0)) KbdStuff "N" + Chr(13)
  308.     If ((U_FSEP == 1) && (U_FSE == 1)) KbdStuff "Y" + Chr(13)
  309.     KbdStuff "Voice Phone Number is: " + STRING003 + Chr(13)
  310.     KbdStuff "Reset New Password to: " + STRING004 + Chr(13)
  311.     KbdStuff "Caller answered the verification information incorrectly!" + Chr(13)
  312.     KbdStuff Chr(32) + Chr(13)
  313.     KbdStuff "I forgot my password! Could you please voice verify me?" + Chr(13)
  314.     End
  315.     :LABEL012
  316.     Cls
  317.     If (STRING019 == YesChar()) Log "Caller Entered Correct Verification Info", 0
  318.     PrintLn 
  319.     PrintLn 
  320.     PrintLn "@CLS@@X07"
  321.     PrintLn "@X0F    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  322.     PrintLn "@X07    @X7F│        @X71The verification information you typed in was @X74CORRECT!        @X70│"
  323.     PrintLn "@X07    @X7F└@X70──────────────────────────────────────────────────────────────────────┘"
  324.     PrintLn 
  325.     PrintLn 
  326.     PrintLn "@X03    Now that we've verified you let's update your password. When prompted"
  327.     PrintLn "    please enter in what you would like your @X02NEW @X03system password to be."
  328.     PrintLn 
  329.     PrintLn "    @X0FNOTE: @X03Your password should be at least @X02" + STRING046 + " @X03and no more than @X02" + STRING047 + " @X03characters"
  330.     PrintLn "    long (using the characters @X02A@X03-@X02Z @X03and/or @X020@X03-@X029@X03), cannot be a subset of your"
  331.     PrintLn "    name and cannot match the first four characters of a previous password."
  332.     PrintLn 
  333.     PrintLn 
  334.     :LABEL013
  335.     STRING005 = ""
  336.     STRING006 = ""
  337.     InputStr " Enter your NEW system password (dots will echo)", STRING005, 14, 12, Mask_Pwd(), 8 + 1 + 256
  338.     PrintLn 
  339.     InputStr "   In case you mistyped please enter it in again", STRING006, 14, 12, Mask_Pwd(), 8 + 1 + 256
  340.     If ((STRING005 == "") || (STRING006 == "")) Goto LABEL014
  341.     If ((Len(STRING005) < INTEGER001) || (Len(STRING006) < INTEGER001)) Goto LABEL015
  342.     If (STRING005 == STRING006) Then
  343.         Goto LABEL017
  344.     Endif
  345.     Cls
  346.     If (STRING020 == YesChar()) Log "The Two Passwords Entered Did Not Match", 0
  347.     PrintLn 
  348.     PrintLn "@CLS@@X07"
  349.     PrintLn "@X0F    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  350.     PrintLn "@X0F    @X7F│    @X71The two passwords you entered did @X74NOT @X71match. Please try again.    @X70│"
  351.     PrintLn "@X0F    @X7F└@X70──────────────────────────────────────────────────────────────────────┘"
  352.     PrintLn 
  353.     Goto LABEL013
  354.     :LABEL014
  355.     Cls
  356.     If (STRING021 == YesChar()) Log "Caller Entered a Blank Password", 0
  357.     PrintLn 
  358.     PrintLn "@CLS@@X07"
  359.     PrintLn "@X07    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  360.     PrintLn "@X07    @X7F│         @X71One of your attempts to enter a password was @X74BLANK@X71.          @X70│"
  361.     PrintLn "@X07    @X7F│         @X71You @X74MUST @X71enter a @X74VALID @X71password in @X74BOTH @X71fields.              @X70│"
  362.     PrintLn "@X07    @X7F└@X70──────────────────────────────────────────────────────────────────────┘"
  363.     PrintLn 
  364.     Goto LABEL013
  365.     :LABEL015
  366.     Cls
  367.     If (STRING022 == YesChar()) Log "Passwords Were an Incorrect Length", 0
  368.     PrintLn 
  369.     PrintLn "@CLS@@X07"
  370.     PrintLn "@X04    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  371.     PrintLn "@X04    @X7F│                @X71Your password was @X74NOT @X71properly reset.                 @X70│"
  372.     PrintLn "@X04    @X7F│     @X71It must be between @X74" + STRING046 + " @X71and @X7412 @X71characters using @X74A@X71-@X74Z @X71and/or @X740@X71-@X749@X71!     @X70│"
  373.     PrintLn "@X04    @X7F└@X70──────────────────────────────────────────────────────────────────────┘"
  374.     PrintLn 
  375.     Goto LABEL013
  376.     :LABEL016
  377.     Cls
  378.     If (STRING023 == YesChar()) Log "Caller Entered an Invalid Password", 0
  379.     Cls
  380.     PrintLn 
  381.     PrintLn "@X7F┌──────────────────────────────────────────────────────────────────────@X70┐@X07"
  382.     PrintLn "@X7F│                 @X71Your password was @X74NOT @X71properly reset.                @X70│@X07"
  383.     PrintLn "@X7F│                                                                      @X70│@X07"
  384.     PrintLn "@X7F│  @X71Your new password on this system must meet the following criteria:  @X70│@X07"
  385.     PrintLn "@X7F│                                                                      @X70│@X07"
  386.     PrintLn "@X7F│  @X741@X71) It must be between @X74" + STRING046, "@X71 and @X74" + STRING047 + " @X71characters using @X74A@X71-@X74Z @X71and/or @X740@X71-@X749@X71.     @X70│@X07"
  387.     PrintLn "@X7F│  @X742@X71) The first four characters cannot match a previous password.      @X70│@X07"
  388.     PrintLn "@X7F│  @X743@X71) Your new password cannot be a subset of your name.               @X70│@X07"
  389.     PrintLn "@X7F└@X70──────────────────────────────────────────────────────────────────────┘@X07"
  390.     PrintLn 
  391.     Goto LABEL013
  392.     :LABEL017
  393.     Cls
  394.     NewPwd STRING006, BOOLEAN001
  395.     If (!BOOLEAN001) Goto LABEL016
  396.     If (STRING024 == YesChar()) Log "Password Was Successfully Reset for User", 0
  397.     PrintLn 
  398.     PrintLn "@CLS@@X07"
  399.     PrintLn "@X04    @X7F┌──────────────────────────────────────────────────────────────────────@X70┐"
  400.     PrintLn "@X04    @X7F│                          @X74PERFECT MATCH!                              @X70│"
  401.     PrintLn "@X04    @X7F└@X70──────────────────────────────────────────────────────────────────────┘"
  402.     PrintLn 
  403.     PrintLn "@X04    @X03The two passwords you keyed in did match. Your password will be reset and"
  404.     PrintLn "@X04    @X03will be valid on your next call."
  405.     PrintLn 
  406.     PrintLn "@X04    @X03Unfortunately, because your original password failed, you'll be logged"
  407.     PrintLn "@X04    @X03off the system and will have to call back using your NEW logon password."
  408.     PrintLn 
  409.     Wait
  410.     DispText 273, 256 + 128 + 2048 + 32768
  411.     If (STRING027 == YesChar()) Message INTEGER005, STRING049, "AUTOMATED PASSWORD CHANGE", U_Name() + " (" + STRING048 + ")", "R", 0, 0, 0, PPEPath() + "pwd_pass.msg"
  412.     If (STRING028 == YesChar()) Message INTEGER006, U_Name() , "PASSWORD RESET PROGRAM", "PASSWORD SUCCESSFULLY RESET", "R", 0, 0, 0, PPEPath() + "pwd_user.msg"
  413.     End
  414.  
  415. ;------------------------------------------------------------------------------
  416. ;
  417. ; Usage report (before postprocessing)
  418. ;
  419. ; ■ Statements used :
  420. ;
  421. ;    7       End
  422. ;    12      Cls
  423. ;    2       Wait
  424. ;    26      Goto 
  425. ;    57      Let 
  426. ;    162     PrintLn 
  427. ;    45      If 
  428. ;    1       GetUser
  429. ;    1       AdjTime 
  430. ;    12      Log 
  431. ;    8       InputStr 
  432. ;    1       InputYN 
  433. ;    1       DispText 
  434. ;    16      KbdStuff 
  435. ;    1       NewPwd 
  436. ;    5       Message 
  437. ;
  438. ;
  439. ; ■ Functions used :
  440. ;
  441. ;    130     +
  442. ;    45      ==
  443. ;    2       <
  444. ;    1       <=
  445. ;    2       >=
  446. ;    5       !
  447. ;    5       &&
  448. ;    2       ||
  449. ;    4       Len(
  450. ;    32      Left()
  451. ;    18      Chr()
  452. ;    5       U_Name()
  453. ;    1       NoChar()
  454. ;    27      YesChar()
  455. ;    4       Mask_Pwd()
  456. ;    2       Mask_Ascii()
  457. ;    1       PCBDat()
  458. ;    40      PPEPath()
  459. ;    1       PcbNode()
  460. ;    35      ReadLine()
  461. ;    1       CurSec()
  462. ;    1       Exist()
  463. ;    2       Psa()
  464. ;
  465. ;------------------------------------------------------------------------------
  466. ;
  467. ; Analysis flags : Acd
  468. ;
  469. ; A - Adjust online time remaining ■ 5
  470. ;     Program modify the amount of online time remaining, this may
  471. ;     be a way to bypass time limits
  472. ;     ■ Search for : ADJTIME
  473. ;
  474. ; c - Change password ■ 3
  475. ;     Program directly changes a user's password. This may be ok for
  476. ;     a password history manager, but it is very suspect. Check!
  477. ;     ■ Search for : NEWPWD
  478. ;
  479. ; d - Access PCBOARD.DAT ■ 2
  480. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  481. ;     for many PPE so they can find various informations on the system
  482. ;     (system paths, max number of lines in messages, ...) but it may also
  483. ;     be a way to gather vital informations.
  484. ;     ■ Search for : PCBDAT()
  485. ;
  486. ;------------------------------------------------------------------------------
  487. ;
  488. ; Postprocessing report
  489. ;
  490. ;    0       For/Next
  491. ;    0       While/EndWhile
  492. ;    3       If/Then or If/Then/Else
  493. ;    0       Select Case
  494. ;
  495. ;------------------------------------------------------------------------------
  496. ;                 AEGiS Corp - Break the routines, code against the machines!
  497. ;------------------------------------------------------------------------------
  498.