The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
.
google unix.com



High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here.

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-28-2002
PxT's Avatar
PxT PxT is offline Forum Advisor  
Registered User
  
 

Join Date: Oct 2000
Location: Sacramento, CA
Posts: 909
Thumbs up Obfuscated C

Well this year i decided to enter the International Obfuscated C Code Contest. This was my first attempt at writing obfuscated C (at least purposely), so I am sure that this is kids-stuff for the real obfuscation gurus. Anyway, the results are out, and I am not a finalist (I wasn't expecting to be), so I figured I would share my code with you all, just for fun. If anyone else made an entry this year, please share them!


Here are the remarks included with my entry:

This program grew out of a non-obfuscated utility that I threw
together a while ago. I use it as a reference from time to
time since different architectures produce different results (at
least, the output is different on my HP-UX box than it is on my
Intel box). It simply outputs a nicely formatted ascii character
table. It is run with no arguments and produces its report on
the standard out. I achieved obfuscation by using a couple of
levels of recursion, plus some confusingly named variables and
functions. I also included some additional code which does
absolutley nothing just to confuse things a little more.

I strived for "-Wall" cleanness. As a result I had to give up
a couple minor obfuscations, but I think it is still sufficiently
convoluted. This is my first attempt at obfuscated C -- it was
written over the course of several weeks as a diversion. By
the end it became very difficult to improve as I could no longer
understand how it worked without a serious amount of thought!

The code is neatly arranged in the form of my initials.



Code:
#  include  <stdio.h>
#          define d (
#          define I1 1<<
#          define b )
#          define Il(l) \
           return(l)
#          define lI \
I*((I1 3)-1)+(I*(I1\
1))-(I-\
(I1 4))
#define \
_l(l)  \
ll_l(l)
#define \
ll(l) l
#define \
l1 main(

long i,l,ll(I)=d(I1 5)-(I1 1)b;int _l(l)
{putchar d ll(l)b;Il(l);}int II(l,L){_l(
(l/L)+48);l-=((l/L)*L);d L/=10 b?II(l,L)
          :0;Il(l);}int l1 
          b{*d d l b?&I:&l
          b=I;if d l>(I1 8
          b b Il(I1 0);_l(
          32);_l(I1 5);II(
          l,25<<2);_l(58);
          _l(I1 5);_l(ll(l
          ));l%(I1 2)?0:_l
          ((I1 3)+(ll(I1 1)
          )b;l++;Il(l1 l));
}
  #2 (permalink)  
Old 03-29-2002
LivinFree's Avatar
LivinFree LivinFree is offline Forum Advisor  
Goober Extraordinaire
  
 

Join Date: Jul 2001
Location: Portland, OR, USA
Posts: 1,584
Hey, I like that!
I've moved it to $HOME/bin since it is a lot better than "man ascii"...
Here's one of my favorites:
Code:
 main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
It was written by David Korn, and won Best One-Liner in 1987.
Another one I think is awesome is thadgavin.c, a winner in 2000 (source too long to post here).

Also, a stongly suggested entry to look at in jarijyrki.c in 2000. I've actually used that program before for work purposes!

Lookin' good PxT!
  #3 (permalink)  
Old 04-03-2002
sharuvman sharuvman is offline
Registered User
  
 

Join Date: Mar 2002
Location: Bangalore,Karnataka State,India
Posts: 18
One liner is not working!!!! by david korn

That one liner is not working.
What include files should I have in the code ?

thank you,
sharath chandra
  #4 (permalink)  
Old 04-03-2002
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9,119
Dr. Korn's one liner seems to have been written in the days of K&R C. LivinFree uses HP-UX. HP-UX includes a old K&R C compiler for free as part of the OS. I am sure that he is using this compiler to compile the one liner.

The old C preprocessor seems to set the symbol "unix" to be "1" for some odd reason. And I guess that ansi cleaned up the name space. I never noticed this before and now I wonder what old C compilers did on, say, an old IBM pc. Set unix to 0? Or leave unix undefined and set ms-dos to 1?

In any event, I got the one liner to work with ansi C by adding a line "#define unix 1".
  #5 (permalink)  
Old 04-03-2002
LivinFree's Avatar
LivinFree LivinFree is offline Forum Advisor  
Goober Extraordinaire
  
 

Join Date: Jul 2001
Location: Portland, OR, USA
Posts: 1,584
I also got it compiled on a Linux machine with gcc.
I checked the Makefile, and I didn't see any extra options either that may be needed on some systems. I also checked the hint file again to see if some compilers didn't like it... The commands I used were:
$ gcc -o korn korn.c
$ ./korn
unix

What system are you using to compile? What compiler?
  #6 (permalink)  
Old 04-03-2002
sharuvman sharuvman is offline
Registered User
  
 

Join Date: Mar 2002
Location: Bangalore,Karnataka State,India
Posts: 18
Nice

Hi,
It was nice and could't trace how it is printing.

Awesome..................

thank you,
K.S.SHARATH CHANDRA
Closed Thread

Bookmarks

Tags
linux, linux commands

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 07:08 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0