home *** CD-ROM | disk | FTP | other *** search
/ Groovy Bytes: Behind the Moon / groovybytes.iso / GROOVY / PPE / PAIN / P__SYSTO.ZIP / P!-SYSTO.PPE (.txt) < prev    next >
Encoding:
PCBoard Programming Language Executable  |  1995-06-08  |  6.8 KB  |  412 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.     Integer  INTEGER002
  20.     Integer  INTEGER003
  21.     Integer  TINTEGER004(1)
  22.     Integer  INTEGER005
  23.     Integer  INTEGER006
  24.     Integer  INTEGER007
  25.     Integer  INTEGER008
  26.     Integer  INTEGER009
  27.     Integer  INTEGER010
  28.     String   STRING001
  29.     String   TSTRING002(1)
  30.     String   TSTRING003(1)
  31.     String   TSTRING004(1)
  32.     String   TSTRING005(1)
  33.     String   STRING006
  34.     String   STRING007
  35.     String   TSTRING008(44)
  36.     String   STRING009
  37.     String   STRING010
  38.     String   STRING011
  39.     String   TSTRING012(30)
  40.     String   STRING013
  41.     Time     TIME001
  42.     Word     WORD001
  43.  
  44. ;------------------------------------------------------------------------------
  45.  
  46.     RdUNet PcbNode()
  47.     WrUNet PcbNode(), "U", UN_Name(), UN_City(), "PAiN!-SYS0P-T00L", "PAiN!-SYS0P-T00L"
  48.     Goto LABEL002
  49.     :LABEL001
  50.     STRING001 = ReadLine(PCBDat(), 31) + ".@@@"
  51.     FOpen 1, STRING001, 0, 0
  52.     FRead 1, WORD001, 2
  53.     INTEGER003 = FileInf(STRING001, 4) / WORD001 - 1
  54.     Redim TSTRING002, INTEGER003
  55.     Redim TSTRING003, INTEGER003
  56.     Redim TSTRING004, INTEGER003
  57.     Redim TINTEGER004, INTEGER003
  58.     Redim TSTRING005, INTEGER003
  59.     For INTEGER002 = 0 To INTEGER003
  60.         FSeek 1, INTEGER002 * WORD001 + 2, 0
  61.         FRead 1, TSTRING002(INTEGER002), 14
  62.         FSeek 1, INTEGER002 * WORD001 + 158, 0
  63.         FRead 1, TSTRING003(INTEGER002), 29
  64.         FSeek 1, INTEGER002 * WORD001 + 187, 0
  65.         FRead 1, TSTRING005(INTEGER002), 26
  66.         FSeek 1, INTEGER002 * WORD001 + 214, 0
  67.         FRead 1, TSTRING004(INTEGER002), 29
  68.     Next
  69.     FClose 1
  70.     Return
  71.     :LABEL002
  72.     AnsiPos 1, 23
  73.     SaveScrn
  74.     STRING007 = ReadLine(PPEPath() + "p!-systo.cfg", 1)
  75.     STRING011 = ReadLine(PPEPath() + "p!-systo.cfg", 2)
  76.     STRING013 = ReadLine(PPEPath() + "p!-systo.cfg", 3)
  77.     STRING009 = ReadLine(PPEPath() + "p!-systo.cfg", 4)
  78.     If (Right(STRING007, 1) <> "\") STRING007 = STRING007 + "\"
  79.     If (Right(STRING011, 1) <> "\") STRING011 = STRING011 + "\"
  80.     AnsiPos 1, GetY()
  81.     PrintLn 
  82.     PrintLn "@X0DPLEASE WAIT..."
  83.     PrintLn 
  84.     STRING001 = "S " + PPEPath() + "sys.tmp"
  85.     Shell 0, INTEGER007, PPEPath() + "p!-systo.exe", STRING001
  86.     FOpen 1, PPEPath() + "sys.tmp", 0, 0
  87.     FGet 1, STRING001
  88.     FClose 1
  89.     If (STRING001 == "**UL") Then
  90.         MPrintLn "@X05SYS0P iS UPL0ADiNG L0CALLY..."
  91.         STRING001 = "U " + PPEPath() + "sys.tmp"
  92.         FOpen 1, PPEPath() + "sys.tmp", 1, 0
  93.         FPutLn 1, STRING013
  94.         FClose 1
  95.         Shell 0, INTEGER007, PPEPath() + "p!-systo.exe", STRING001
  96.         Gosub LABEL001
  97.         INTEGER005 = CurConf()
  98.         INTEGER006 = 1
  99.         FOpen 1, PPEPath() + "sys.tmp", 0, 0
  100.         :LABEL003
  101.         FGet 1, TSTRING008(INTEGER006)
  102.         If (TSTRING008(INTEGER006) == "**") Goto LABEL004
  103.         Inc INTEGER006
  104.         Goto LABEL003
  105.         :LABEL004
  106.         Dec INTEGER006
  107.         FGet 1, STRING001
  108.         INTEGER008 = S2I(STRING001, 10)
  109.         FClose 1
  110.         Cls
  111.         If (INTEGER006 == 0) Then
  112.             RestScrn
  113.             Goto LABEL002
  114.         Endif
  115.         PrintLn "@X0D                                L0CAL UPL0AD"
  116.         PrintLn "@X05──────────────────────────────────────────────────────────────────────────────"
  117.         PrintLn 
  118.         PrintLn "@X07 C0NFERENCE     : @X08( @X0F" + I2S(INTEGER005, 10) + "@X08 )@X07 = @X08( @X0F" + TSTRING002(INTEGER005) + "@X08 )"
  119.         PrintLn 
  120.         PrintLn "@X07 FiLES FLAGGED  : @X08( @X0F" + I2S(INTEGER006, 10) + "@X08 )"
  121.         PrintLn 
  122.         PrintLn "@X07 BYTES FLAGGED  : @X08( @X0F" + I2S(INTEGER008, 10) + "@X08 )@X07 = @X08( @X0F" + I2S(INTEGER008 / 1024, 10) + "@X07 K@X08 )"
  123.         PrintLn 
  124.         TIME001 = ((INTEGER008 / 1024) / 100) * S2I(STRING009, 10)
  125.         STRING010 = TIME001
  126.         PrintLn "@X07 ESTiMATED TiME : @X08( @X0F" + STRING010 + "@X08 )"
  127.         PrintLn 
  128.         PrintLn 
  129.         PrintLn "@X03                          iS THAT WHAT Y0U WANT ?"
  130.         INTEGER010 = 0
  131.         :LABEL005
  132.         If (INTEGER010) Then
  133.             AnsiPos 32, 15
  134.             PrintLn "@X7F▌YES!@X78▐@X07  N0PE  "
  135.         Endif
  136.         If (INTEGER010) Goto LABEL006
  137.         AnsiPos 32, 15
  138.         PrintLn "@X07 YES!  @X7F▌N0PE@X78▐@X07 "
  139.         :LABEL006
  140.         AnsiPos 1, 1
  141.         :LABEL007
  142.         STRING001 = Inkey()
  143.         If (STRING001 == "") Goto LABEL007
  144.         If ((((STRING001 == "LEFT") || (STRING001 == "RIGHT")) || (STRING001 == "UP")) || (STRING001 == "DOWN")) INTEGER010 = ! INTEGER010
  145.         If (Upper(STRING001) == "Y") INTEGER010 = 0
  146.         If (Upper(STRING001) == "N") INTEGER010 = 1
  147.         If (STRING001 == Chr(13)) Goto LABEL008
  148.         Goto LABEL005
  149.         :LABEL008
  150.         If (INTEGER010) Goto LABEL009
  151.         RestScrn
  152.         Goto LABEL002
  153.         :LABEL009
  154.         For INTEGER002 = 1 To INTEGER006
  155.             Cls
  156.             PrintLn "@X07TESTiNG @X08( @X0F" + TSTRING008(INTEGER002) + "@X08 )@X07 = FiLE @X08( @X0F" + I2S(INTEGER002, 10) + "@X07/@X0F" + I2S(INTEGER006, 10) + " @X08) ..."
  157.             Delay 30
  158.             TSTRING008(INTEGER002) = Strip(TSTRING008(INTEGER002), " ")
  159.             If (Right(TSTRING005(INTEGER005), 1) == "\") TSTRING005(INTEGER005) = Left(TSTRING005(INTEGER005), Len(TSTRING005(INTEGER005)) - 1)
  160.             Shell 1, INTEGER007, "copy " + TSTRING008(INTEGER002) + " " + TSTRING005(INTEGER005), ""
  161.             INTEGER009 = Len(TSTRING008(INTEGER002))
  162.             :LABEL010
  163.             Dec INTEGER009
  164.             If (Mid(TSTRING008(INTEGER002), INTEGER009, 1) <> "\") Goto LABEL010
  165.             STRING006 = Strip(Mid(TSTRING008(INTEGER002), INTEGER009 + 1, Len(TSTRING008(INTEGER002))), " ")
  166.             STRING001 = GetEnv("pcbdir")
  167.             If (Right(STRING001, 1) <> "\") STRING001 = STRING001 + "\"
  168.             Shell 1, INTEGER007, STRING007 + "pcbtest.bat", TSTRING005(INTEGER005) + "\" + STRING006 + " upload " + STRING001 + TempPath() + "updesc." + I2S(PcbNode(), 10) + " " + STRING006
  169.             FAppend 1, TSTRING003(INTEGER005), 1, 0
  170.             FOpen 2, STRING001 + TempPath() + "updesc." + I2S(PcbNode(), 10), 0, 0
  171.             FGet 2, STRING001
  172.             FPutLn 1, STRING001
  173.             :LABEL011
  174.             If (Ferr(2)) Goto LABEL012
  175.             FGet 2, STRING001
  176.             FPutLn 1, STRING001
  177.             Goto LABEL011
  178.             :LABEL012
  179.             FClose 1
  180.             FClose 2
  181.         Next
  182.     Endif
  183.     Select Case (STRING001)
  184.         Case "**DL"
  185.             PrintLn "@X05SYS0P iS FLAGGiNG FiLES F0R Y0U T0 D0WNL0AD..."
  186.             FOpen 1, PPEPath() + "sys.tmp", 1, 0
  187.             FPutLn 1, STRING013
  188.             FClose 1
  189.             STRING001 = "D " + PPEPath() + "sys.tmp"
  190.             Shell 0, INTEGER007, PPEPath() + "p!-systo.exe", STRING001
  191.             FOpen 1, PPEPath() + "sys.tmp", 0, 0
  192.             :LABEL013
  193.             FGet 1, STRING001
  194.             If (STRING001 == "**") Goto LABEL014
  195.             Flag STRING001
  196.             Goto LABEL013
  197.             :LABEL014
  198.             FClose 1
  199.         Case "**VIEW"
  200.             PrintLn "@X05SYS0P iS FLAGGiNG TXT/ANSi/RiP T0 ViEW T0 Y0U..."
  201.             STRING001 = "V " + PPEPath() + "sys.tmp"
  202.             FOpen 1, PPEPath() + "sys.tmp", 1, 0
  203.             FPutLn 1, STRING013
  204.             FClose 1
  205.             Shell 0, INTEGER007, PPEPath() + "p!-systo.exe", STRING001
  206.             FOpen 1, PPEPath() + "sys.tmp", 0, 0
  207.             Cls
  208.             PrintLn "@X07Y0U WiLL SEE THE FiLES N0W, PRESS @X08<@X0FRETURN@X08>@X07 AFTER EACH..."
  209.             PrintLn "@X01────────────────────────────────────────────────────────"
  210.             :LABEL015
  211.             STRING001 = Inkey()
  212.             If (STRING001 <> Chr(13)) Goto LABEL015
  213.             INTEGER005 = 0
  214.             :LABEL016
  215.             Inc INTEGER005
  216.             FGet 1, STRING001
  217.             If (STRING001 == "**") Goto LABEL018
  218.             Cls
  219.             DispFile STRING001, 1
  220.             :LABEL017
  221.             STRING001 = Inkey()
  222.             If (STRING001 <> Chr(13)) Goto LABEL017
  223.             Goto LABEL016
  224.             :LABEL018
  225.             FClose 1
  226.         Case "**EDIT"
  227.             PrintLn "@X05SYS0P iS EDiTiNG Y0UR REC0RD..."
  228.             FOpen 1, STRING011 + "PWRD", 0, 0
  229.             INTEGER006 = 0
  230.             :LABEL019
  231.             FGet 1, STRING001
  232.             If (Ferr(1)) Goto LABEL022
  233.             STRING001 = Mid(STRING001, 2, Len(STRING001))
  234.             INTEGER005 = 1
  235.             :LABEL020
  236.             If (Mid(STRING001, INTEGER005, 1) == ",") Goto LABEL021
  237.             Inc INTEGER005
  238.             Goto LABEL020
  239.             :LABEL021
  240.             Inc INTEGER006
  241.             TSTRING012(INTEGER006) = Mid(STRING001, 1, INTEGER005 - 1)
  242.             Goto LABEL019
  243.             :LABEL022
  244.             For INTEGER002 = 8 To 13
  245.                 AnsiPos 15, INTEGER002
  246.                 Color 17
  247.                 SPrintLn "                                         "
  248.             Next
  249.             AnsiPos 18, 9
  250.             Color 29
  251.             SPrintLn "WHAT LEVEL SH0ULD THE USER BEC0ME ?"
  252.             GetUser
  253.             For INTEGER002 = 1 To INTEGER006
  254.                 If (S2I(TSTRING012(INTEGER002), 10) == U_Sec) INTEGER005 = INTEGER002
  255.             Next
  256.             :LABEL023
  257.             AnsiPos 32, 11
  258.             Color 127
  259.             SPrint "▌"
  260.             If (Len(TSTRING012(INTEGER005)) == 1) SPrint "00" + TSTRING012(INTEGER005)
  261.             If (Len(TSTRING012(INTEGER005)) == 2) SPrint "0" + TSTRING012(INTEGER005)
  262.             If (Len(TSTRING012(INTEGER005)) == 3) SPrint TSTRING012(INTEGER005)
  263.             Color 120
  264.             SPrint "▐"
  265.             :LABEL024
  266.             STRING001 = Inkey()
  267.             If (STRING001 == "") Goto LABEL024
  268.             If ((STRING001 == "UP") || (STRING001 == "LEFT")) Then
  269.                 Dec INTEGER005
  270.                 If (INTEGER005 < 1) INTEGER005 = INTEGER006
  271.             Endif
  272.             If ((STRING001 == "DOWN") || (STRING001 == "RIGHT")) Then
  273.                 Inc INTEGER005
  274.                 If (INTEGER005 > INTEGER006) INTEGER005 = 1
  275.             Endif
  276.             If (STRING001 == Chr(13)) Goto LABEL025
  277.             Goto LABEL023
  278.             :LABEL025
  279.             Color 7
  280.             GetUser
  281.             U_Sec = I2S(TSTRING012(INTEGER005), 10)
  282.             PutUser
  283.     End Select
  284.     :LABEL026
  285.     RestScrn
  286.     End
  287.  
  288. ;------------------------------------------------------------------------------
  289. ;
  290. ; Usage report (before postprocessing)
  291. ;
  292. ; ■ Statements used :
  293. ;
  294. ;    1       End
  295. ;    4       Cls
  296. ;    5       Color 
  297. ;    45      Goto 
  298. ;    48      Let 
  299. ;    24      PrintLn 
  300. ;    40      If 
  301. ;    1       DispFile 
  302. ;    10      FOpen 
  303. ;    1       FAppend 
  304. ;    10      FClose 
  305. ;    8       FGet 
  306. ;    5       FPutLn 
  307. ;    2       GetUser
  308. ;    1       PutUser
  309. ;    1       Gosub 
  310. ;    1       Return
  311. ;    1       Delay 
  312. ;    5       Inc 
  313. ;    3       Dec 
  314. ;    6       Shell 
  315. ;    1       RdUNet 
  316. ;    1       WrUNet 
  317. ;    8       AnsiPos 
  318. ;    1       SaveScrn
  319. ;    3       RestScrn
  320. ;    5       SPrint 
  321. ;    2       SPrintLn 
  322. ;    1       MPrintLn 
  323. ;    4       FSeek 
  324. ;    5       FRead 
  325. ;    5       Redim 
  326. ;    1       Flag 
  327. ;
  328. ;
  329. ; ■ Functions used :
  330. ;
  331. ;    5       *
  332. ;    4       /
  333. ;    73      +
  334. ;    3       -
  335. ;    28      ==
  336. ;    6       <>
  337. ;    5       <
  338. ;    4       <=
  339. ;    1       >
  340. ;    8       >=
  341. ;    17      !
  342. ;    8       &&
  343. ;    9       ||
  344. ;    7       Len(
  345. ;    2       Upper()
  346. ;    5       Mid()
  347. ;    1       Left()
  348. ;    4       Right()
  349. ;    2       Ferr()
  350. ;    4       Chr()
  351. ;    2       Strip()
  352. ;    4       Inkey()
  353. ;    1       CurConf()
  354. ;    1       PCBDat()
  355. ;    19      PPEPath()
  356. ;    4       PcbNode()
  357. ;    5       ReadLine()
  358. ;    1       UN_Name()
  359. ;    1       UN_City()
  360. ;    1       GetEnv()
  361. ;    9       I2S()
  362. ;    3       S2I()
  363. ;    1       GetY()
  364. ;    1       FileInf()
  365. ;    2       TempPath()
  366. ;
  367. ;------------------------------------------------------------------------------
  368. ;
  369. ; Analysis flags : WMSfd
  370. ;
  371. ; W - Write user ■ 5
  372. ;     Program writes a user record. Although this may be normal for a
  373. ;     User Editor, it may also be a way to modify an account level.
  374. ;     ■ Search for : PUTUSER
  375. ;
  376. ; M - Send text to modem only ■ 4
  377. ;     Some informations are sent only to the modem, not to the local
  378. ;     screen, this is a well known way to make stealth backdoors, Check!
  379. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  380. ;
  381. ; S - Shell to DOS ■ 5
  382. ;     This may be normal if the PPE need to execute an external command,
  383. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  384. ;     or usefull (sorting, maintenance,...). Check!
  385. ;     ■ Search for : SHELL
  386. ;
  387. ; f - Flag files for download ■ 3
  388. ;     This may be normal if a PPE needs to send some files, but since
  389. ;     this statement allows flagging of any file on the hard disk, you
  390. ;     have to be carefull. Check!
  391. ;     ■ Search for : FLAG
  392. ;
  393. ; d - Access PCBOARD.DAT ■ 2
  394. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  395. ;     for many PPE so they can find various informations on the system
  396. ;     (system paths, max number of lines in messages, ...) but it may also
  397. ;     be a way to gather vital informations.
  398. ;     ■ Search for : PCBDAT()
  399. ;
  400. ;------------------------------------------------------------------------------
  401. ;
  402. ; Postprocessing report
  403. ;
  404. ;    4       For/Next
  405. ;    0       While/EndWhile
  406. ;    5       If/Then or If/Then/Else
  407. ;    1       Select Case
  408. ;
  409. ;------------------------------------------------------------------------------
  410. ;                 AEGiS Corp - Break the routines, code against the machines!
  411. ;------------------------------------------------------------------------------
  412.