home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / PWAEUS20.ZIP / USER.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-03-26  |  8KB  |  599 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 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Boolean  BOOLEAN007
  26.     Boolean  BOOLEAN008
  27.     Boolean  BOOLEAN009
  28.     Boolean  BOOLEAN010
  29.     Boolean  BOOLEAN011
  30.     Boolean  BOOLEAN012
  31.     DWord    DWORD001
  32.     DWord    DWORD002
  33.     String   STRING001
  34.     String   STRING002
  35.     String   STRING003
  36.     String   STRING004
  37.     String   STRING005
  38.     String   STRING006
  39.     String   STRING007
  40.     String   STRING008
  41.     String   STRING009
  42.     String   STRING010
  43.     String   TSTRING011(1)
  44.     String   STRING012
  45.     String   STRING013
  46.     String   STRING014
  47.     String   STRING015
  48.     String   STRING016
  49.     String   STRING017
  50.     String   STRING019
  51.     String   STRING021
  52.     String   STRING023
  53.     String   STRING024
  54.     Int      INT001
  55.     Int      INT002
  56.     Int      INT003
  57.     Int      INT004
  58.     Int      INT005
  59.     Int      INT006
  60.     Int      INT007
  61.     Int      TINT008(1)
  62.     Int      INT011
  63.     Int      INT012
  64.     Int      INT015
  65.     Int      INT017
  66.     Int      INT018
  67.     BigStr   BIGSTR001
  68.     Declare  Function FUNCTION001(Int INT014, String STRING018) String
  69.     Declare  Function FUNCTION002(Int INT013) Boolean
  70.     Declare  Function FUNCTION003(String STRING020) Boolean
  71.     Declare  Function FUNCTION004(Int INT016, String STRING022) DWord
  72.     Declare  Procedure PROC001()
  73.     Declare  Procedure PROC002(Int INT010)
  74.     Declare  Procedure PROC003()
  75.     Declare  Procedure PROC004()
  76.     Declare  Procedure PROC005()
  77.     Declare  Procedure PROC006()
  78.     Declare  Procedure PROC007()
  79.  
  80. ;------------------------------------------------------------------------------
  81.  
  82.     PROC004()
  83.     PROC006()
  84.     PROC001()
  85.     End
  86.  
  87. ;------------------------------------------------------------------------------
  88.  
  89.     Procedure PROC006()
  90.  
  91.     Boolean  BOOLEAN007
  92.  
  93.     If (FUNCTION004(16, STRING001) <> 60976) End
  94.     Newline
  95.     If (BOOLEAN003 == 0) Then
  96.         PrintLn STRING004
  97.         Print STRING005
  98.         InputStr "_", STRING010, 7, 25, Mask_AlNum(), 8192 + 8
  99.         Newline
  100.         If (STRING010 == "") Then
  101.             BOOLEAN002 = 0
  102.         Endif
  103.     Else
  104.         BOOLEAN007 = 0
  105.         :LABEL001
  106.         If (BOOLEAN007) Goto LABEL002
  107.         Print STRING006
  108.         InputStr "_", STRING010, 7, 1, "sSrR" + Chr(13), 8 + 8192
  109.         Newline
  110.         Select Case (STRING010)
  111.             Case "", "r", "R"
  112.                 PROC007()
  113.                 BOOLEAN002 = 0
  114.                 BOOLEAN007 = 1
  115.             Case "s", "S"
  116.                 Print STRING005
  117.                 InputStr "_", STRING010, 7, 25, Mask_AlNum(), 8192 + 8
  118.                 Newline
  119.                 If (STRING010 == "") Then
  120.                     BOOLEAN002 = 0
  121.                 Endif
  122.                 BOOLEAN007 = 1
  123.         End Select
  124.         Goto LABEL001
  125.     Endif
  126.     :LABEL002
  127.  
  128.     EndProc
  129.  
  130.  
  131. ;------------------------------------------------------------------------------
  132.  
  133.     Procedure PROC007()
  134.  
  135.     String   STRING012
  136.  
  137.     STRING007 = ReplaceStr(STRING007, "%#", String(INT002))
  138.     Print STRING007
  139.     InputStr "_", STRING012, 7, 9, Mask_Num() + "-", 8192 + 8
  140.     Newline
  141.     If (STRING012 == "0") Then
  142.         PrintLn "@X0CAborted.@X07"
  143.         End
  144.     Endif
  145.     If (STRING012 <> "") Then
  146.         STRING012 = ReplaceStr(STRING012, "-", ";")
  147.         Tokenize STRING012
  148.         INT005 = S2I(GetToken(), 10)
  149.         INT006 = S2I(GetToken(), 10)
  150.     Endif
  151.     If ((INT005 < 1) || (INT005 > INT002)) INT005 = 1
  152.     If ((INT006 > INT002) || (INT006 < 1)) INT006 = INT002
  153.     If (INT005 > INT002) Then
  154.         INT005 = 1
  155.         INT006 = INT002
  156.     Endif
  157.     If (FUNCTION004(1, STRING001) % 2 <> 1) Then
  158.         INT005 = 0
  159.         INT006 = 0
  160.     Endif
  161.  
  162.     EndProc
  163.  
  164.  
  165. ;------------------------------------------------------------------------------
  166.  
  167.     Procedure PROC001()
  168.  
  169.     Int      INT009
  170.  
  171.     FOpen 1, ReadLine(PCBDat(), 29), 0, 0
  172.     FClose -1
  173.     If (Exist(PPEPath() + "user.top")) Then
  174.         DispFile PPEPath() + "user.top", 0
  175.     Endif
  176.     If (FUNCTION004(5, STRING001) <> 19055) End
  177.     If (INT005 > 1) Then
  178.         FSeek 1, (INT005 - 1) * 400, 1
  179.     Endif
  180.     For INT009 = INT005 To INT006
  181.         FRead 1, BIGSTR001, 400
  182.         If (BOOLEAN002 == 1) Then
  183.             If (InStr(Lower(Mid(BIGSTR001, 1, 25)), Lower(STRING010))) Then
  184.                 PROC002(INT009)
  185.             Endif
  186.         Else
  187.             PROC002(INT009)
  188.         Endif
  189.         If (Abort()) Then
  190.             INT009 = INT002
  191.         Endif
  192.     Next
  193.     FClose 1
  194.     FClose 3
  195.     If (Abort()) Then
  196.         Newline
  197.     Else
  198.         PROC005()
  199.     Endif
  200.     PROC003()
  201.  
  202.     EndProc
  203.  
  204.  
  205. ;------------------------------------------------------------------------------
  206.  
  207.     Procedure PROC005()
  208.  
  209.     String   STRING013
  210.  
  211.     If (Exist(PPEPath() + "USER.BOT")) Then
  212.         FOpen 1, PPEPath() + "USER.BOT", 0, 2
  213.         FDefIn 1
  214.         FDGet STRING013
  215.         :LABEL003
  216.         If (Ferr(1)) Goto LABEL005
  217.         STRING013 = ReplaceStr(STRING013, "%tu", String(INT003))
  218.         STRING013 = ReplaceStr(STRING013, "%tl", String(INT001))
  219.         If (INT003) Then
  220.             STRING013 = ReplaceStr(STRING013, "%pl", String(ToInt(100 * (ToReal(INT001) / ToReal(INT003)))))
  221.             Goto LABEL004
  222.         Endif
  223.         STRING013 = ReplaceStr(STRING013, "%pl", "0")
  224.         :LABEL004
  225.         PrintLn STRING013
  226.         FDGet STRING013
  227.         Goto LABEL003
  228.         :LABEL005
  229.         FClose 1
  230.     Endif
  231.  
  232.     EndProc
  233.  
  234.  
  235. ;------------------------------------------------------------------------------
  236.  
  237.     Procedure PROC002(Int INT010)
  238.  
  239.     String   STRING014
  240.     String   STRING015
  241.     String   STRING016
  242.     String   STRING017
  243.     Int      INT011
  244.     Int      INT012
  245.     Boolean  BOOLEAN008
  246.  
  247.     STRING016 = STRING009
  248.     BOOLEAN008 = 1
  249.     If (BOOLEAN001) Then
  250.         BOOLEAN008 = FUNCTION002(INT010)
  251.     Endif
  252.     If (BOOLEAN008) Then
  253.         INT012 = S2I(Asc(Mid(BIGSTR001, 108, 1)), 10)
  254.         If (INT012 >= INT004) Then
  255.             STRING017 = RTrim(String(Mid(BIGSTR001, 1, 25)), " ")
  256.             If (BOOLEAN005) Then
  257.                 BOOLEAN008 = !FUNCTION003(STRING017)
  258.             Endif
  259.             STRING016 = ReplaceStr(STRING016, "%#", String(INT010))
  260.             STRING016 = ReplaceStr(STRING016, "%a", STRING017)
  261.             STRING016 = FUNCTION001(INT012, STRING016)
  262.             STRING016 = ReplaceStr(STRING016, "%b", RTrim(String(Mid(BIGSTR001, 26, 24)), " "))
  263.             STRING014 = ""
  264.             STRING015 = String(Mid(BIGSTR001, 75, 13))
  265.             For INT011 = 1 To Len(STRING015)
  266.                 If (InStr(Mask_Num() + "+", Mid(STRING015, INT011, 1)) > 0) Then
  267.                     STRING014 = STRING014 + Mid(STRING015, INT011, 1)
  268.                 Endif
  269.                 If (Len(STRING014) >= 3) Break
  270.             Next
  271.             If (STRING014 <> STRING003) Then
  272.                 Inc INT001
  273.                 STRING016 = ReplaceStr(STRING016, "%c", STRING002 + STRING014)
  274.                 Goto LABEL006
  275.             Endif
  276.             STRING016 = ReplaceStr(STRING016, "%c", STRING014)
  277.             :LABEL006
  278.             STRING015 = Left(Right(STRING014, 4), 2) + "-" + Right(STRING014, 2) + "-" + Left(STRING014, 2)
  279.             STRING016 = ReplaceStr(STRING016, "%d", Mid(BIGSTR001, 90, 2) + "-" + Mid(BIGSTR001, 92, 2) + "-" + Mid(BIGSTR001, 88, 2))
  280.             STRING016 = ReplaceStr(STRING016, "%e", Mid(BIGSTR001, 94, 5))
  281.             STRING016 = ReplaceStr(STRING016, "%g", String(B2W(Asc(Mid(BIGSTR001, 110, 1)), Asc(Mid(BIGSTR001, 109, 1)))))
  282.             STRING016 = ReplaceStr(STRING016, "%h", String(B2W(Asc(Mid(BIGSTR001, 113, 1)), Asc(Mid(BIGSTR001, 112, 1)))))
  283.             STRING016 = ReplaceStr(STRING016, "%i", String(B2W(Asc(Mid(BIGSTR001, 115, 1)), Asc(Mid(BIGSTR001, 114, 1)))))
  284.             PrintLn STRING016
  285.             Inc INT003
  286.         Endif
  287.     Endif
  288.  
  289.     EndProc
  290.  
  291.  
  292. ;------------------------------------------------------------------------------
  293.  
  294.     Function FUNCTION002(Int INT013) Boolean
  295.  
  296.     Int      INT014
  297.  
  298.     If (U_InConf(INT013, CurConf())) Then
  299.         FUNCTION002 = 1
  300.     Else
  301.         FUNCTION002 = 0
  302.     Endif
  303.  
  304.     EndFunc
  305.  
  306.  
  307. ;------------------------------------------------------------------------------
  308.  
  309.     Function FUNCTION001(Int INT014, String STRING018) String
  310.  
  311.     Boolean  BOOLEAN010
  312.     Int      INT015
  313.     String   STRING020
  314.  
  315.     If (!BOOLEAN004 && !BOOLEAN006) Then
  316.         STRING018 = ReplaceStr(STRING018, "%f", String(INT014))
  317.     ElseIf (BOOLEAN004 && !BOOLEAN006) Then
  318.         BOOLEAN010 = 0
  319.         For INT015 = 1 To INT007
  320.             If (TINT008(INT015) == INT014) Then
  321.                 STRING018 = ReplaceStr(STRING018, "%f", TSTRING011(INT015))
  322.                 BOOLEAN010 = 1
  323.                 Break
  324.             Endif
  325.         Next
  326.         If (!BOOLEAN010) STRING018 = ReplaceStr(STRING018, "%f", String(INT014))
  327.     ElseIf (!BOOLEAN004 && BOOLEAN006) Then
  328.         If (CurSec() < INT014) Then
  329.             STRING018 = ReplaceStr(STRING018, "%f", STRING008)
  330.         Else
  331.             STRING018 = ReplaceStr(STRING018, "%f", String(INT014))
  332.         Endif
  333.     ElseIf (CurSec() < INT014) Then
  334.         STRING018 = ReplaceStr(STRING018, "%f", STRING008)
  335.     Else
  336.         BOOLEAN010 = 0
  337.         For INT015 = 1 To INT007
  338.             If (TINT008(INT015) == INT014) Then
  339.                 STRING018 = ReplaceStr(STRING018, "%f", TSTRING011(INT015))
  340.                 BOOLEAN010 = 1
  341.                 Break
  342.             Endif
  343.         Next
  344.         If (!BOOLEAN010) STRING018 = ReplaceStr(STRING018, "%f", String(INT014))
  345.         Goto LABEL007
  346.         STRING018 = ReplaceStr(STRING018, "%f", String(INT014))
  347.     Endif
  348.     :LABEL007
  349.     FUNCTION001 = STRING018
  350.  
  351.     EndFunc
  352.  
  353.  
  354. ;------------------------------------------------------------------------------
  355.  
  356.     Function FUNCTION003(String STRING020) Boolean
  357.  
  358.     String   STRING021
  359.     Boolean  BOOLEAN012
  360.  
  361.     BOOLEAN012 = 0
  362.     Frewind 3
  363.     FDGet STRING021
  364.     :LABEL008
  365.     If (Ferr(3)) Goto LABEL009
  366.     If (STRING021 == STRING020) Then
  367.         BOOLEAN012 = 1
  368.         Goto LABEL009
  369.     Else
  370.         FDGet STRING021
  371.     Endif
  372.     Goto LABEL008
  373.     :LABEL009
  374.     FUNCTION003 = BOOLEAN012
  375.  
  376.     EndFunc
  377.  
  378.  
  379. ;------------------------------------------------------------------------------
  380.  
  381.     Procedure PROC003()
  382.  
  383.     Forward (79 - Len(StripAtx(STRING001))) / 2
  384.     PrintLn STRING001
  385.  
  386.     EndProc
  387.  
  388.  
  389. ;------------------------------------------------------------------------------
  390.  
  391.     Function FUNCTION004(Int INT016, String STRING022) DWord
  392.  
  393.     DWord    DWORD002
  394.     Int      INT017
  395.     String   STRING023
  396.  
  397.     DWORD002 = 0
  398.     INT017 = 0
  399.     While (((1 < 0) && (INT017 >= Len(STRING022) - 1)) || ((1 >= 0) && (INT017 <= Len(STRING022) - 1))) Do
  400.         DWORD002 = DWORD002 + INT016 * Asc(Mid(STRING022, INT017, 1))
  401.         INT017 = INT017 + 1
  402.     EndWhile
  403.     FUNCTION004 = DWORD002
  404.  
  405.     EndFunc
  406.  
  407.  
  408. ;------------------------------------------------------------------------------
  409.  
  410.     Procedure PROC004()
  411.  
  412.     String   STRING023
  413.     String   STRING024
  414.     Int      INT018
  415.  
  416.     INT001 = 0
  417.     STRING024 = PPEPath() + "USER.CFG"
  418.     STRING001 = "@X08Enhanced User Lister v2.0 by Drew [PWA]@X07"
  419.     INT003 = 0
  420.     FOpen 1, STRING024, 0, 2
  421.     INT002 = FileInf(ReadLine(PCBDat(), 29), 4) / 400
  422.     INT005 = 1
  423.     INT006 = INT002
  424.     FClose -1
  425.     If (FUNCTION004(8, STRING001) <> 30488) End
  426.     FDefIn 1
  427.     FDGet STRING023
  428.     If (Lower((STRING023 == "yes"))) Then
  429.         BOOLEAN001 = 1
  430.     Else
  431.         BOOLEAN001 = 0
  432.     Endif
  433.     FDGet STRING023
  434.     If (Lower((STRING023 == "yes"))) Then
  435.         BOOLEAN002 = 1
  436.     Else
  437.         BOOLEAN002 = 0
  438.     Endif
  439.     FDGet STRING023
  440.     If (Lower((STRING023 == "yes"))) Then
  441.         BOOLEAN003 = 1
  442.     Else
  443.         BOOLEAN003 = 0
  444.     Endif
  445.     FDGet STRING023
  446.     If (Lower((STRING023 == "yes"))) Then
  447.         If (Exist(PPEPath() + "USER.SEC")) Goto LABEL010
  448.         BOOLEAN004 = 0
  449.         Log "Enhanced User Lister v2.0 - USER.SEC does not exist!", 0
  450.         Goto LABEL011
  451.         :LABEL010
  452.         BOOLEAN004 = 1
  453.         FOpen 3, PPEPath() + "USER.SEC", 0, 2
  454.         FGet 3, STRING023
  455.         INT007 = S2I(STRING023, 10)
  456.         Redim TSTRING011, INT007 + 1
  457.         Redim TINT008, INT007 + 1
  458.         For INT018 = 1 To INT007
  459.             FGet 3, STRING023
  460.             TINT008(INT018) = S2I(STRING023, 10)
  461.             FGet 3, TSTRING011(INT018)
  462.         Next
  463.         FClose 3
  464.         :LABEL011
  465.     Else
  466.         BOOLEAN004 = 0
  467.     Endif
  468.     FDGet STRING023
  469.     If (Lower((STRING023 == "yes"))) Then
  470.         FOpen 3, PPEPath() + "USER.EXC", 0, 2
  471.         BOOLEAN005 = 1
  472.     Else
  473.         BOOLEAN005 = 0
  474.     Endif
  475.     FDGet STRING023
  476.     If (Lower((STRING023 == "yes"))) Then
  477.         BOOLEAN006 = 1
  478.     Else
  479.         BOOLEAN006 = 0
  480.     Endif
  481.     FDGet STRING008
  482.     FDGet STRING023
  483.     INT004 = S2I(STRING023, 10)
  484.     FDGet STRING002
  485.     FDGet STRING003
  486.     FDGet STRING004
  487.     FDGet STRING005
  488.     FDGet STRING006
  489.     FDGet STRING007
  490.     FDGet STRING009
  491.     FClose 1
  492.     FDefIn 3
  493.  
  494.     EndProc
  495.  
  496.  
  497. ;------------------------------------------------------------------------------
  498. ;
  499. ; Usage report (before postprocessing)
  500. ;
  501. ; ■ Statements used :
  502. ;
  503. ;    5       End
  504. ;    82      Goto 
  505. ;    99      Let 
  506. ;    4       Print 
  507. ;    5       PrintLn 
  508. ;    56      If 
  509. ;    1       DispFile 
  510. ;    5       FOpen 
  511. ;    7       FClose 
  512. ;    3       FGet 
  513. ;    1       Log 
  514. ;    4       InputStr 
  515. ;    2       Inc 
  516. ;    6       Newline
  517. ;    1       Tokenize 
  518. ;    1       Forward 
  519. ;    1       Frewind 
  520. ;    1       FSeek 
  521. ;    1       FRead 
  522. ;    3       FDefIn 
  523. ;    19      FDGet 
  524. ;    2       Redim 
  525. ;    7       EndProc
  526. ;    4       EndFunc
  527. ;
  528. ;
  529. ; ■ Functions used :
  530. ;
  531. ;    2       -
  532. ;    3       *
  533. ;    3       /
  534. ;    1       %
  535. ;    34      +
  536. ;    4       -
  537. ;    19      ==
  538. ;    6       <>
  539. ;    10      <
  540. ;    6       <=
  541. ;    5       >
  542. ;    14      >=
  543. ;    55      !
  544. ;    15      &&
  545. ;    11      ||
  546. ;    6       Len(
  547. ;    8       Lower()
  548. ;    18      Mid()
  549. ;    2       Left()
  550. ;    2       Right()
  551. ;    2       Ferr()
  552. ;    1       Chr()
  553. ;    8       Asc()
  554. ;    2       InStr()
  555. ;    2       Abort()
  556. ;    2       RTrim()
  557. ;    1       StripAtx()
  558. ;    16      String()
  559. ;    2       Mask_Num()
  560. ;    2       Mask_AlNum()
  561. ;    1       CurConf()
  562. ;    2       PCBDat()
  563. ;    8       PPEPath()
  564. ;    2       ReadLine()
  565. ;    2       CurSec()
  566. ;    2       GetToken()
  567. ;    3       B2W()
  568. ;    3       Exist()
  569. ;    6       S2I()
  570. ;    1       FileInf()
  571. ;    1       U_InConf()
  572. ;    25      ReplaceStr()
  573. ;    2       ToReal()
  574. ;    1       ToInt()
  575. ;
  576. ;------------------------------------------------------------------------------
  577. ;
  578. ; Analysis flags : d
  579. ;
  580. ; d - Access PCBOARD.DAT ■ 2
  581. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  582. ;     for many PPE so they can find various informations on the system
  583. ;     (system paths, max number of lines in messages, ...) but it may also
  584. ;     be a way to gather vital informations.
  585. ;     ■ Search for : PCBDAT()
  586. ;
  587. ;------------------------------------------------------------------------------
  588. ;
  589. ; Postprocessing report
  590. ;
  591. ;    5       For/Next
  592. ;    1       While/EndWhile
  593. ;    36      If/Then or If/Then/Else
  594. ;    1       Select Case
  595. ;
  596. ;------------------------------------------------------------------------------
  597. ;                 AEGiS Corp - Break the routines, code against the machines!
  598. ;------------------------------------------------------------------------------
  599.