home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / T / THICDROM.ZIP / CDROM.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-12-05  |  5KB  |  352 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.1O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN002
  20.     Boolean  BOOLEAN003
  21.     Integer  INTEGER012
  22.     Integer  INTEGER013
  23.     Integer  INTEGER014
  24.     Integer  INTEGER015
  25.     Integer  INTEGER016
  26.     Integer  INTEGER017
  27.     Integer  INTEGER018
  28.     Integer  INTEGER019
  29.     Integer  INTEGER020
  30.     Integer  INTEGER021
  31.     Integer  INTEGER022
  32.     Integer  INTEGER023
  33.     String   STRING004
  34.     String   STRING005
  35.     String   STRING006
  36.     String   STRING007
  37.     String   STRING008
  38.     String   STRING009
  39.     String   STRING010
  40.     String   STRING011
  41.     String   STRING012
  42.     String   STRING013
  43.     String   STRING014
  44.     String   STRING015
  45.     String   STRING016
  46.     String   STRING017
  47.     BigStr   TBIGSTR001(3)
  48.     Declare  Function FUNCTION001(Integer INTEGER001, Integer INTEGER002, Integer INTEGER003, Integer INTEGER004, Integer INTEGER005, Integer INTEGER006, Integer INTEGER007, Integer INTEGER008) String
  49.     Declare  Function FUNCTION002(Boolean BOOLEAN001, Integer INTEGER009, Integer INTEGER010, Integer INTEGER011, String STRING001, String STRING002, String STRING003) String
  50.  
  51. ;------------------------------------------------------------------------------
  52.  
  53.     If (1 == 2) Gosub LABEL004
  54.     Goto LABEL002
  55.     End
  56.  
  57. ;------------------------------------------------------------------------------
  58.  
  59.     Function FUNCTION001(Integer INTEGER001, Integer INTEGER002, Integer INTEGER003, Integer INTEGER004, Integer INTEGER005, Integer INTEGER006, Integer INTEGER007, Integer INTEGER008) String
  60.  
  61.     Boolean  BOOLEAN001
  62.  
  63.     DoIntr 47, INTEGER001, INTEGER002, INTEGER003, INTEGER004, INTEGER005, INTEGER006, RegF(), INTEGER007, INTEGER008
  64.  
  65.     EndFunc
  66.  
  67.  
  68. ;------------------------------------------------------------------------------
  69.  
  70.     Function FUNCTION002(Boolean BOOLEAN001, Integer INTEGER009, Integer INTEGER010, Integer INTEGER011, String STRING001, String STRING002, String STRING003) String
  71.  
  72.     String   STRING005
  73.     String   STRING006
  74.     Integer  INTEGER012
  75.     BigStr   TBIGSTR001(3)
  76.  
  77.     AnsiPos INTEGER010, INTEGER011
  78.     Print STRING003
  79.     INTEGER010 = GetX()
  80.     Print Left(" ", INTEGER009) + ")"
  81.     AnsiPos INTEGER010 - 1, INTEGER011
  82.     Print "("
  83.     AnsiPos INTEGER010, INTEGER011
  84.     STRING005 = ""
  85.     INTEGER012 = 0
  86.     While ((STRING006 <> Chr(13)) && (INTEGER012 < INTEGER009)) Do
  87.         STRING006 = ""
  88.         While (STRING006 == "") Do
  89.             STRING006 = Inkey()
  90.             If ((BOOLEAN001 && (STRING006 == Chr(13))) && (INTEGER012 == 0)) STRING006 = ""
  91.             If (Abort()) ResetDisp
  92.         EndWhile
  93.         If ((STRING006 >= " ") && (InStr(STRING001, STRING006) > 0)) Then
  94.             STRING005 = STRING005 + STRING006
  95.             AnsiPos INTEGER010 + Len(STRING005) - 1, INTEGER011
  96.             If (STRING002 == " ") Then
  97.                 Print STRING006
  98.                 Goto LABEL001
  99.             Endif
  100.             Print STRING002
  101.         Endif
  102.         :LABEL001
  103.         If ((STRING006 == Chr(8)) && (Len(STRING005) > 0)) Then
  104.             AnsiPos INTEGER010 + Len(STRING005) - 1, INTEGER011
  105.             Print " "
  106.             STRING005 = Left(STRING005, Len(STRING005) - 1)
  107.             AnsiPos INTEGER010 + Len(STRING005), INTEGER011
  108.         Endif
  109.         INTEGER012 = Len(STRING005)
  110.     EndWhile
  111.     AnsiPos 1, INTEGER011 + 1
  112.     FUNCTION002 = STRING005
  113.  
  114.     EndFunc
  115.  
  116.     :LABEL002
  117.     GetUser
  118.     FOpen 1, PPEPath() + "cdrom.cfg", 0, 1
  119.     INTEGER023 = 1
  120.     While (INTEGER023 <> 0) Do
  121.         FGet 1, INTEGER023
  122.         If (INTEGER023 > 0) Then
  123.             If (ConfSel(INTEGER023)) ConfUnflag INTEGER023, 4
  124.             If (ConfSys(INTEGER023)) ConfUnflag INTEGER023, 8
  125.             If (ConfReg(INTEGER023)) ConfUnflag INTEGER023, 1
  126.             If (ConfMW(INTEGER023)) ConfUnflag INTEGER023, 16
  127.             If (ConfExp(INTEGER023)) ConfUnflag INTEGER023, 2
  128.             ConfFlag INTEGER023, 2
  129.         Endif
  130.     EndWhile
  131.     FClose 1
  132.     PutUser
  133.     STRING017 = ""
  134.     For INTEGER018 = 32 To 255
  135.         STRING017 = STRING017 + Chr(INTEGER018)
  136.     Next
  137.     TBIGSTR001(1) = Space(2048)
  138.     TBIGSTR001(2) = Space(2048)
  139.     VarSeg TBIGSTR001(1), INTEGER015
  140.     VarOff TBIGSTR001(1), INTEGER016
  141.     If (Exist(PPEPath() + "cdbase.dat")) Goto LABEL003
  142.     FCreate 1, PPEPath() + "cdbase.dat", 1, 1
  143.     FClose 1
  144.     :LABEL003
  145.     Cls
  146.     PrintLn "@POFF@@X0FCD@X08-@X0FROM @X07Searcher @X08- Coded by Pedro J S Correia - @X071995 @X0FTHI"
  147.     PrintLn 
  148.     Eval FUNCTION001(5376, 0, RegCX(), RegDX(), RegSI(), RegDI(), RegDS(), RegES())
  149.     INTEGER017 = RegCX()
  150.     INTEGER020 = RegBX()
  151.     For INTEGER019 = 0 To INTEGER020 - 1
  152.         PrintLn "@X08Scanning CDROM " + Chr(INTEGER017 + INTEGER019 + 65) + ":"
  153.         BOOLEAN002 = Exist(Chr(INTEGER017 + INTEGER019 + 65) + ":\THI.CHK")
  154.         Eval FUNCTION001(5384, INTEGER016, INTEGER017, 1, 0, 16, RegDS(), INTEGER015)
  155.         STRING007 = Trim(Mid(TBIGSTR001(1), 41, 32), " ")
  156.         STRING008 = Trim(Mid(TBIGSTR001(1), 319, 128), " ")
  157.         STRING009 = Trim(Mid(TBIGSTR001(1), 447, 128), " ")
  158.         STRING010 = Trim(Mid(TBIGSTR001(1), 575, 128), " ")
  159.         INTEGER021 = Crc32(0, TBIGSTR001(1))
  160.         Eval FUNCTION001(5384, INTEGER016, INTEGER017, 1, 0, 56, RegDS(), INTEGER015)
  161.         INTEGER022 = Crc32(0, TBIGSTR001(1))
  162.         FOpen 1, PPEPath() + "cdbase.dat", 0, 1
  163.         INTEGER013 = 1
  164.         BOOLEAN002 = 0
  165.         While ((INTEGER013 <> 0) && (BOOLEAN002 == 0)) Do
  166.             FGet 1, STRING015
  167.             FGet 1, STRING016
  168.             FGet 1, STRING011
  169.             FGet 2, STRING012
  170.             FGet 1, STRING013
  171.             FGet 1, STRING014
  172.             FGet 1, INTEGER013
  173.             FGet 1, INTEGER014
  174.             FGet 1, INTEGER023
  175.             If (Left(STRING015, 1) == " ") INTEGER013 = 0
  176.             If ((INTEGER013 == INTEGER021) && (INTEGER014 == INTEGER022)) Then
  177.                 BOOLEAN002 = 1
  178.             Endif
  179.         EndWhile
  180.         FClose 1
  181.         If (BOOLEAN002) Then
  182.             PrintLn "@X08CD Name@X07.......:@X0F " + STRING015
  183.             PrintLn "@X08Subject@X07.......:@X0F " + STRING016
  184.             If (INTEGER023 > 0) Then
  185.                 PrintLn "@X08Enabling@X07......:@X0F Conference@X0E " + Trim(String(INTEGER023), " ")
  186.                 ConfUnflag INTEGER023, 2
  187.                 ConfFlag INTEGER023, 1
  188.             Endif
  189.             PrintLn 
  190.             Continue
  191.         Endif
  192.         If (SysopSec() <= U_Sec) Then
  193.             PrintLn "@X08Volume@X07........:@X0F @X0F@X0F" + STRING007
  194.             PrintLn "@X08Publisher@X07.....:@X0F " + STRING008
  195.             PrintLn "@X08Preparer@X07......:@X0F " + STRING009
  196.             STRING015 = FUNCTION002(1, 63, 1, GetY(), STRING017, " ", "@X08CD Name@X07.......:@X0F ")
  197.             STRING016 = FUNCTION002(1, 63, 1, GetY(), STRING017, " ", "@X08CD Subject@X07....:@X0F ")
  198.             INTEGER023 = S2I(FUNCTION002(1, 5, 1, GetY(), "0123456789", " ", "@X08Conference@X07....:@X0F "), 10)
  199.             PrintLn 
  200.             FAppend 1, PPEPath() + "cdbase.dat", 1, 1
  201.             FPutLn 1, STRING015
  202.             FPutLn 1, STRING016
  203.             FPutLn 1, STRING007
  204.             FPutLn 2, STRING008
  205.             FPutLn 1, STRING009
  206.             FPutLn 1, STRING010
  207.             FPutLn 1, INTEGER021
  208.             FPutLn 1, INTEGER022
  209.             FPutLn 1, INTEGER023
  210.             FClose 1
  211.             Continue
  212.         Endif
  213.         PrintLn "@X84CD-ROM Not found in Database!"
  214.         PrintLn 
  215.     Next
  216.     Wait
  217.     Return
  218.     PrintLn BOOLEAN003
  219.     :LABEL004
  220.     Cls
  221.     PrintLn "INVIOLABLE"
  222.     Wait
  223.     Cls
  224.     PrintLn 
  225.     PrintLn "INVIOLABLE"
  226.     PrintLn "@X4FProtected with PPP THI INTERNAL The PPL Protector from THI@X07"
  227.     PrintLn "@X4F               Coded by CAPTAIN HOOK (c) 1995             @X07"
  228.     PrintLn "@X4F         Dedicated to all PPL PIRATES: FUCK YOU LAME      @X07"
  229.     PrintLn 
  230.     PrintLn "INVIOLABLE"
  231.     Wait
  232.     Return
  233.  
  234. ;------------------------------------------------------------------------------
  235. ;
  236. ; Usage report (before postprocessing)
  237. ;
  238. ; ■ Statements used :
  239. ;
  240. ;    1       End
  241. ;    3       Cls
  242. ;    3       Wait
  243. ;    25      Goto 
  244. ;    35      Let 
  245. ;    6       Print 
  246. ;    22      PrintLn 
  247. ;    24      If 
  248. ;    2       ConfFlag 
  249. ;    6       ConfUnflag 
  250. ;    1       FCreate 
  251. ;    2       FOpen 
  252. ;    1       FAppend 
  253. ;    4       FClose 
  254. ;    10      FGet 
  255. ;    9       FPutLn 
  256. ;    1       ResetDisp
  257. ;    1       GetUser
  258. ;    1       PutUser
  259. ;    1       Gosub 
  260. ;    2       Return
  261. ;    1       DoIntr 
  262. ;    1       VarSeg 
  263. ;    1       VarOff 
  264. ;    7       AnsiPos 
  265. ;    2       EndFunc
  266. ;    3       Eval 
  267. ;
  268. ;
  269. ; ■ Functions used :
  270. ;
  271. ;    27      +
  272. ;    6       -
  273. ;    10      ==
  274. ;    3       <>
  275. ;    3       <
  276. ;    3       <=
  277. ;    4       >
  278. ;    5       >=
  279. ;    15      !
  280. ;    11      &&
  281. ;    2       ||
  282. ;    6       Len(
  283. ;    4       Mid()
  284. ;    3       Left()
  285. ;    2       Space()
  286. ;    6       Chr()
  287. ;    1       InStr()
  288. ;    1       Abort()
  289. ;    5       Trim()
  290. ;    1       Inkey()
  291. ;    1       String()
  292. ;    5       PPEPath()
  293. ;    1       SysopSec()
  294. ;    1       RegBX()
  295. ;    2       RegCX()
  296. ;    1       RegDX()
  297. ;    1       RegSI()
  298. ;    1       RegDI()
  299. ;    1       RegF()
  300. ;    3       RegDS()
  301. ;    1       RegES()
  302. ;    2       Exist()
  303. ;    1       S2I()
  304. ;    1       GetX()
  305. ;    3       GetY()
  306. ;    1       ConfReg()
  307. ;    1       ConfExp()
  308. ;    1       ConfSel()
  309. ;    1       ConfSys()
  310. ;    1       ConfMW()
  311. ;    2       Crc32()
  312. ;
  313. ;------------------------------------------------------------------------------
  314. ;
  315. ; Analysis flags : FWIs
  316. ;
  317. ; F - Change conference flags status ■ 2
  318. ;     This may be normal for a SELECT replacement but it may also be
  319. ;     a way to get access to conferences a user is not allowed to.
  320. ;     ■ Search for : CONFFLAG, CONFUNFLAG
  321. ;
  322. ; W - Write user ■ 5
  323. ;     Program writes a user record. Although this may be normal for a
  324. ;     User Editor, it may also be a way to modify an account level.
  325. ;     ■ Search for : PUTUSER
  326. ;
  327. ; I - Interrupt call ■ 5
  328. ;     This is rare in PPE... Although it may be a way to replace a PPE
  329. ;     command by its fast interrupt equivalent. Be aware that an
  330. ;     interrupt call may do anything... nasty (formating HD, rebooting,...)
  331. ;     or usefull (fast screen i/o, hardware ressource access,...). Check!
  332. ;     ■ Search for : DOINTR
  333. ;
  334. ; s - Sysop level access ■ 5
  335. ;     Program is reading the sysop access level, this may be normal
  336. ;     but still it is very suspect. It is the best way to give a user
  337. ;     all priviledges. Check!
  338. ;     ■ Search for : SYSOPSEC()
  339. ;
  340. ;------------------------------------------------------------------------------
  341. ;
  342. ; Postprocessing report
  343. ;
  344. ;    2       For/Next
  345. ;    4       While/EndWhile
  346. ;    8       If/Then or If/Then/Else
  347. ;    0       Select Case
  348. ;
  349. ;------------------------------------------------------------------------------
  350. ;                 AEGiS Corp - Break the routines, code against the machines!
  351. ;------------------------------------------------------------------------------
  352.