<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: obfuscation of SAS code in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88092#M289381</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Great references &lt;A __default_attr="149594" __jive_macro_name="user" class="jive_macro jive_macro_user" href="https://communities.sas.com/" modifiedtitle="true" title="Art297"&gt;&lt;/A&gt;.&amp;nbsp; &lt;A __default_attr="230995" __jive_macro_name="user" class="jive_macro jive_macro_user" href="https://communities.sas.com/" modifiedtitle="true" title="Chris@SAS"&gt;&lt;/A&gt; suggested two things:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;compile a &lt;A href="http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#macro-stmt.htm"&gt;macro with the SECURE option&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;To protect IP, you could put key algorithms in &lt;A href="http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a003262745.htm"&gt;FCMP and compile to a library&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 18 Apr 2012 14:52:07 GMT</pubDate>
    <dc:creator>reneeharper</dc:creator>
    <dc:date>2012-04-18T14:52:07Z</dc:date>
    <item>
      <title>obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88085#M289374</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Someone asked me this on Twitter.&amp;nbsp; I have no idea how to answer, but would love to point him to the wealth of knowledge shared here.&amp;nbsp; His question is:&lt;/P&gt;&lt;P&gt;" Is there any way or tools to obfuscation of SAS code...I'm talking Base 9.2"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Because I can't add any details to the question, I'm going to refer him to this discussion just as soon as I complete the post.&amp;nbsp; Hope you guys can help hi&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 12:46:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88085#M289374</guid>
      <dc:creator>reneeharper</dc:creator>
      <dc:date>2012-04-18T12:46:34Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88086#M289375</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Are you kidding?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Most programmers I know seem to go out of their way to do this.&amp;nbsp; We call it "job security code" - written so complex that only they can read (and thus- support) it. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Multiple macros with the same name in the same program, using format definitions that no on has heard of, run-on lines of code so long they don't fit in a standard editor, writing code to an output file and then including it to execute - I've seen it all and more.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And let's not forget the best one of all - not a single comment !&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 13:33:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88086#M289375</guid>
      <dc:creator>OS2Rules</dc:creator>
      <dc:date>2012-04-18T13:33:00Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88087#M289376</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;By obfuscation, you mean a sort of data step code encryption? &lt;/P&gt;&lt;P&gt;If so, try the stored program facility:&lt;/P&gt;&lt;P&gt;libname source 'c:\temp';&lt;/P&gt;&lt;P&gt;data class / pgm=source.class (alter=mypw);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set sashelp.class;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; F=(sex='F');&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data pgm=source.class;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; *describe;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; execute;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 13:38:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88087#M289376</guid>
      <dc:creator>Alfredo</dc:creator>
      <dc:date>2012-04-18T13:38:39Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88088#M289377</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Renee: Point him toward some of Art Carpenter's papers on the topic:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.lexjansen.com/sugi/sugi21/tu/291-21.pdf" title="http://www.lexjansen.com/sugi/sugi21/tu/291-21.pdf"&gt;http://www.lexjansen.com/sugi/sugi21/tu/291-21.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www2.sas.com/proceedings/sugi23/Training/p275.pdf" title="http://www2.sas.com/proceedings/sugi23/Training/p275.pdf"&gt;http://www2.sas.com/proceedings/sugi23/Training/p275.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.lexjansen.com/pharmasug/2005/technicaltechniques/tt05.pdf" title="http://www.lexjansen.com/pharmasug/2005/technicaltechniques/tt05.pdf"&gt;http://www.lexjansen.com/pharmasug/2005/technicaltechniques/tt05.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: links corrected 10:47am 18APR2012&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 13:39:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88088#M289377</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-04-18T13:39:57Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88089#M289378</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Art,&lt;/P&gt;&lt;P&gt;when I click the links I got the "&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" width="730"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD align="left" id="mainTitleAlign" width="*"&gt;&lt;H1 id="mainTitle"&gt;The webpage cannot be found&lt;/H1&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="errorCodeAndDivider" id="http404Align"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;" message. Maybe it just happened to my computer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks - Linlin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: Linlin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 13:59:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88089#M289378</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-04-18T13:59:04Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88090#M289379</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt; using format definitions that no on has heard of&lt;/PRE&gt;&lt;P&gt;What does that mean?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;writing code to an output file and then including it to execute&lt;/PRE&gt;&lt;P&gt;I use this technique often.&amp;nbsp; When the data used to gen code is large it is more logical to keep that data in SAS date set and usedata step to gen code.&amp;nbsp; You can take advantage of BY group processing and all the other features that make a data step a powerful programming language.&amp;nbsp; This makes much more sense than working with lots of macro arrays or scanning and parsing multiple macro variables.&amp;nbsp;&amp;nbsp;&amp;nbsp; Plus you can print the file to the log and see exactly what code is being written, before it is executed..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 14:30:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88090#M289379</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2012-04-18T14:30:25Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88091#M289380</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Linlin: try them now.&amp;nbsp; They somehow got mingled the way I had originally pasted them&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 14:48:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88091#M289380</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-04-18T14:48:43Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88092#M289381</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Great references &lt;A __default_attr="149594" __jive_macro_name="user" class="jive_macro jive_macro_user" href="https://communities.sas.com/" modifiedtitle="true" title="Art297"&gt;&lt;/A&gt;.&amp;nbsp; &lt;A __default_attr="230995" __jive_macro_name="user" class="jive_macro jive_macro_user" href="https://communities.sas.com/" modifiedtitle="true" title="Chris@SAS"&gt;&lt;/A&gt; suggested two things:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;compile a &lt;A href="http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#macro-stmt.htm"&gt;macro with the SECURE option&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;To protect IP, you could put key algorithms in &lt;A href="http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a003262745.htm"&gt;FCMP and compile to a library&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 14:52:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88092#M289381</guid>
      <dc:creator>reneeharper</dc:creator>
      <dc:date>2012-04-18T14:52:07Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88093#M289382</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm not saying that these techniques do not have value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I'm saying is that I have seen some programs where these methods, and more, have been used intentionally to make the programs so complex that only the originator could hope to support them. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"If builders built buildings the way programmers write computer programs, then the first stiff breeze would destroy civilization".&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 14:53:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88093#M289382</guid>
      <dc:creator>OS2Rules</dc:creator>
      <dc:date>2012-04-18T14:53:56Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88094#M289383</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would be extremely reluctant to use any SAS program that I was not able to look at "if I wanted or needed to".&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 15:00:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88094#M289383</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2012-04-18T15:00:27Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88095#M289384</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;(over)use of complex and/or nested SQL statements can go a long way to obfuscate what's happening - especially if your trying to obfuscate programs from SAS programmers who may not be as technically sound with SQL.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 15:43:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88095#M289384</guid>
      <dc:creator>JasonDiVirgilio</dc:creator>
      <dc:date>2012-04-18T15:43:27Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88096#M289385</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I saw his video, that was hilarious. From my personal experience ( which is not much btw), using as much as PRX is a good way for obfuscation (of course not for toby dunn). I find it is impossible even to read my own PRX code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Haikuo &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 15:52:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88096#M289385</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-04-18T15:52:29Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88097#M289386</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Those Art Carpenter papers are priceless. Evil, but priceless. I especially like the section about using (obvious) variable names for anything other than what they look like (WEIGHT = height of the patient.)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 16:09:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88097#M289386</guid>
      <dc:creator>JasonDiVirgilio</dc:creator>
      <dc:date>2012-04-18T16:09:32Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88098#M289387</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As the original OP of the question Renne on Twitter (@colmsmyth) please let me clarify more what I meant.&amp;nbsp; This is kind of for IP protection but also just to be a bit fancy really.&amp;nbsp; Is there a way that you could open a *.sas program and the code is already garbled or obfuscated etc, this would have been done via a saved macro or something like that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, I would then also want the ability to de-scramble it again by calling a save macro perhaps from saved shortcut button on the tool bar, perhaps prompting for a password before the de-scrambling happens.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So you know when you get a file in a particular format and you try to open it with the wrong application, it opens but it looks like webdings basically....thats kinda what i want&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Apr 2012 14:51:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88098#M289387</guid>
      <dc:creator>ColmSmyth</dc:creator>
      <dc:date>2012-04-19T14:51:51Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88099#M289388</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt; I took a stab at this.&amp;nbsp; It's rudimentary, but hopefully it's enough to get you going. It reads a SAS program one line at a time, and converts each character using a "key" which can be changed to your liking. It then writes each character out to an output file (obfuscated, if you will). You can call the same macro with an inverse (?) of the key to un-obfuscate it to another output file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; filename testfile '/&amp;lt;some path&amp;gt;/&amp;lt;some original program&amp;gt;.sas';&lt;BR /&gt; filename fileout1 '/&amp;lt;some path&amp;gt;/&amp;lt;some obfuscated program&amp;gt;.sas';&lt;/P&gt;&lt;P&gt; filename fileout2 '/&amp;lt;some path&amp;gt;/&amp;lt;un-obfuscated program&amp;gt;.sas';&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro obfuscate(key=,filein=testfile, fileout=fileout1);&lt;BR /&gt; data garble1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; infile &amp;amp;filein truncover length=linesize;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; file &amp;amp;fileout ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; length record $80. asc_char_in varylen key 8.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; varylen=80;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; key = &amp;amp;key; ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; input record $varying. varylen;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i = 1 to linesize;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asc_char_in=rank(substr(record,i,1));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char_out= byte(asc_char_in + key);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put char_out $1. @;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put;&lt;BR /&gt;run;&lt;BR /&gt;%mend;&lt;BR /&gt;%obfuscate(key=_n_+7);&lt;BR /&gt;%obfuscate(key=0-(_n_+7), filein=fileout1, fileout=fileout2);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Apr 2012 14:50:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88099#M289388</guid>
      <dc:creator>JasonDiVirgilio</dc:creator>
      <dc:date>2012-04-24T14:50:34Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88100#M289389</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jason,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Great stuff....tried this out and works quite well, reversing did not quite bring back all the code identically especially for commented portions of the source code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now, further to my original post, my ideal situation is that write code, its validated, stored somewhere safe, then its obfuscated, and that obfuscated program would be recognized by SAS and would be run-able.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However I dont think SAS can do this other than with PWENCODE, i.e it knows what that scrambled code is as its a built in function etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thoughts ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline; color: #ff0000;"&gt;&lt;STRONG&gt;EDIT&lt;/STRONG&gt;&lt;/SPAN&gt;: In fact if SAS could use the Oracle dbms_obfuscation_toolkit.DESDecrypt feature you could obfuscate the entire program, then read in the scrambled program and decrypt it on the fly to a self deleting temporary file for example which is run during the process...if that makes sense&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Apr 2012 14:17:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88100#M289389</guid>
      <dc:creator>ColmSmyth</dc:creator>
      <dc:date>2012-04-30T14:17:10Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88101#M289390</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm fairly certain with a little tweaking, you could make the "key" idea a bit more robust. I hope it was sufficient to give an idea of how it could work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The PWENCODE procedure seems to only work for passwords, not entire program files.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your Oracle obfuscation tookit idea looks like it could work, albeit with a bit of pl/sql coding that is out of my league - but it's a great idea if you don't mind storing the code in an Oracle table.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Apr 2012 15:48:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88101#M289390</guid>
      <dc:creator>JasonDiVirgilio</dc:creator>
      <dc:date>2012-04-30T15:48:24Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88102#M289391</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;
&lt;P&gt;OS2Rules wrote:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;"If builders built buildings the way programmers write computer programs, then the first stiff breeze would destroy civilization".&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;I learned this as "the first woodpecker" back aboutn 1977...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Apr 2012 16:08:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88102#M289391</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2012-04-30T16:08:05Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88103#M289392</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In PROC FCMP you will also need to use the ENCRYPT option or the compiled code can be easily retrieved and viewed.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Apr 2012 18:39:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88103#M289392</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2012-04-30T18:39:52Z</dc:date>
    </item>
    <item>
      <title>Re: obfuscation of SAS code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88104#M289393</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I really don't agree with hiding your code on purpose.&amp;nbsp; You will generate more actual problems than any potential problems you would have from just leaving the code in plain text.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But what is the problem with using compiled macros, compiled data datasets, etc?&amp;nbsp; What is it that you want to hide that you cannot hide that way?&amp;nbsp; Not really much different than shipping compiled binaries without source code in terms of hiding.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Apr 2012 21:22:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/obfuscation-of-SAS-code/m-p/88104#M289393</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2012-04-30T21:22:55Z</dc:date>
    </item>
  </channel>
</rss>

