ABSTRACT ------------------------------------------------------------------------------ OCCPS stands for Online Credit Card Processing System. This is actually a fairly popular PPE used by a lot of systems who have credit card registration. However, besides the fact that it just looks UGLY with it's glaring colours, it's pretty useless. This wasn't even worth the 30 seconds it took to decompile, edit (crack), and then recompile everything, but I decided to do this because shareware CRAP like this annoys me. It's one thing to be asking people to pay and/or register for GOOD software, whether it's shareware or not, but it's another thing to ask for money for junk like this. So hence, with the glorious aid of the wonderful decompiler, the registration garbage has been removed. PRELIMINARY ------------------------------------------------------------------------------ Here is the low down: The registration number is generated simply from your BBS name (line 1 in OCCPS.CFG) and the text string "OCCPS", which is a mandatory requirement for line 2 in OCCPS.CFG. I don't understand the redundancy of doing such a ploy, as the system name can be read from PCBOARD.DAT and the string OCCPS as line 2 is simply a waste of time and space. So unless you change your system name frequently, there's no point to any of this. So the decompiled code for generating this registration number looks like this: LET VAR002=PPEPATH()+"OCCPS.CFG" LET VAR003=READLINE(VAR002,1) LET VAR004=READLINE(VAR002,2) LET VAR005=READLINE(VAR002,3) LET VAR007=ASC(MID(VAR003,1,1))+ASC(MID(VAR003,2,1))+\ ASC(MID(VAR003,3,1))+ASC(MID(VAR003,4,1))+ASC(MID(VAR003,5,1))+\ ASC(MID(VAR003,6,1))+ASC(MID(VAR003,7,1))+ASC(MID(VAR003,8,1))+\ ASC(MID(VAR003,9,1))+ASC(MID(VAR003,10,1)) LET VAR008=ASC(MID(VAR004,1,1))+ASC(MID(VAR004,2,1))+\ ASC(MID(VAR004,3,1))+ASC(MID(VAR004,4,1))+ASC(MID(VAR004,5,1))+\ ASC(MID(VAR004,6,1))+ASC(MID(VAR004,7,1))+ASC(MID(VAR004,8,1)) LET VAR009=ASC(MID(VAR003,11,1))+ASC(MID(VAR003,12,1))+\ ASC(MID(VAR003,13,1))+ASC(MID(VAR003,14,1))+ASC(MID(VAR003,15,1))+\ ASC(MID(VAR003,16,1))+ASC(MID(VAR003,17,1))+ASC(MID(VAR003,18,1))+\ ASC(MID(VAR003,19,1))+ASC(MID(VAR003,20,1)) LET VAR006=STRING(VAR007)+STRING(VAR008)+STRING(VAR009) (Obviously, each of those LET statements should be one long line, but I broke them up and delimited them with backslashes so you can read it.) SOLUTION ------------------------------------------------------------------------------ As you can see, it looks like a fairly elaborate scheme to generate this registration number. Unfortunately for the code, it is only protected by simple statements such as this: IF (!(VAR006=VAR005)) GOTO LABEL001 So all I did was go through the code with a nice "search" of VAR005 and commented out all the lines that looked like that. Whoopdeedoo. Then recompile, and voila -- no more registration number checks. The decompiled code is included, so you can take a look at how simple it really was. ADDENUM ------------------------------------------------------------------------------ Now that all of that has been said and done, I questioned myself if this was even worth a "real" release. The answer: NO. But I am releasing it not because it *could* be a release, but for two reasons: 1. As a message to all those other groups who have been "cracking" (and have "cracked") these ppe's and releasing them as if it was a big deal. Let me just say that it is NOT a big deal. You could have the IQ of a slug and use the decompiler on these things. But hey, don't let me stop you from "cracking" more of these ppe's. It's amusing to see all the silly shareware ppe's with their pro- tection removed. Just please don't make a big deal about it. 2. Perhaps someone out there who doesn't know much about programming can learn from this. If more people learn some quick basics, it might decrease the demand for simple "cracks" like this and thus, reduce the occurance of #1. (I put the words "cracked", "cracking", and "crack" in quotes as I don't even consider this to be REAL cracking. This is just like hex-editing... something I was able to do when I first discovered COPY II PLUS and hex-edited tons of stuff back on my old Apple //e.) CONCLUSION ------------------------------------------------------------------------------ Where's that new decompiler?! The beta that's been going around does not recognize any PPL 3.0 specific commands. It is only able to decompile PPL 2.0 code that has been compiled with PPLC 3.0 (something that a lot of schmucks have been doing lately). This is a good start and all, as it indicates that the format of the "encryption" is breakable, but let's have the rest of it! Peace, --Drew 11-12-94