4Q <paul_zest@hushmail.com> Thou incompetent tardy son. Thou putrid
notorious-bawd. Thou despicable anointed sovereign of sighs and groans.
Thou musty mannish coward. Ye nagged and ye squawked:

> 4Q wrote:
>> Dustin Cook wrote:
>>> On Feb 23, 11:44 pm, "4Q"

>
> *fixup* for the archive
>
> <quote> childish bASIC
>
> randomize
> a=rnd(0)
> a=a mod 1
> b=rnd(0)
> b=b mod 23
> death=b
> b=rnd(0)
> b=b mod 23
> runy=b
> b=rnd(0)
> b=b mod 23
>
> if death=runy then
> a=rnd(0)
> a=a mod 23
> runy=a
> endif
> ent$=chr$(13)
> print"Viral Anticipation... Here is a chance for you to run the
> program!"
> print"special greetings to Nick Fitzgerald (**** you!) and Graham
> Cluley"
> print"of Sophos (www.sophos.com); You ****in lardass."
> print""
> print"Use your arrows (left & right) to select a square below."
> print"One of the squares has been set to allow your program"
> print"to continue running, While another will destroy your file."
> print"And the remaining ones? They do nothing. Make your decision."
> print"Press <enter> to record it. Good-Luck <Evil Grin>"
> print""
> print"UA:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A :A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:?"
> print"^3 Are you of a gambling nature? Muaha ^3"
> print"AA:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A :A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:A:U"
> for y=1 to 24
> a$=a$+"+-"
> next y
> print a$;
> zone=csrlin
> rem setup where the key door and bombs are, There are only 4 bombs
> rem to make the game not impossible.
> rem K is left, M is right
>
> local=b
> locate zone,local
> print"U";
> while exitflag=0
> a$=inkey$
> if a$="K" then
> if local=0 then
> beep
> else
> gosub check:
> local=local-1
> locate zone,local
> print"U";
> endif
> endif
> if a$="M" then
> if local=23 then
> beep
> else
> gosub check:
> local=local+1
> locate zone,local
> print"U";
> endif
> endif
> if a$=ent$ then
> exitflag=1
> ar=local
> endif
> gosub die_cursor:
> wend
> print"th"
> print""
> print"A choice has been made... So what shall become of the program?"
> print""
> print"Will the program continue running? ";
> if ar<> runy then
> print"hah, Nope."
> print"has the program been lost to the depths of electronic noise? "
> if ar=death then
> print"Hah, Yes Cluley's lardass squished it flat. "
> else
> print"Nope. The file moved out of the way as the lardass fell."
> endif
> else
> print"Why yes... yes it will."
> endif
> end
>
> check:
> for x=0 to 22
> locate zone,local
> print"+-";
> next x
> return
>
> die_cursor:
> rem off with the damn cursor
> REM turn crsr off by positioning off screen
> REM ASIC leaves it on for some reaosn ALL the time!
> AX=&HEX0200
> BX=0
> DX=25*256
> INT86 (&HEX10,AX,BX,NA,DX,NA,NA,NA,NA,NA)
> return
>
> </quote> childish code. No wonder they
> call it BASIC (read: code for children)


These days, with .NET there is no fundamental difference between BASIC, C#
and J#, et al. Real differences lie only in how the code is required to be
structured by the precompiler. Only a very short copy/paste manoeuvre is
needed to convert .NET-based C# to Visual Basic or Visual Java, and back
again.

Anyway, that aside, I have often witnessed Dustfart bragging about his "1337
skillz" in coding. I almost had a fit from laughing at the tripe up there.
If he were an employee of mine and showed as much unworthy pride in his awful
scribblings as he has displayed on usenet, I'd fire his ****ing arse, on the
spot, and no two ways about it. I've seen better scribblings in Indonesia;
made with daubed faeces by captive orang-utans bored ****less from nothing
else to do except swing in the trees and eat an endless supply of bananas.

"That's a simple programming thing tho"
http://groups.google.com.au/group/al...e=source&hl=en

The emphasis is on simple.

"I do all kinds of programming. I'm not the ignorant pissant you wish I was.
and your fixing to learn that, albeit the hard way."
http://groups.google.com.au/group/24...e=source&hl=en

Looks like a disguised k0oKTHREAT to me, that does. Ah... here is one of the
many Dustfart k0oKTHREATS that never happened:

"You foolishly imagine that I don't maintain contact with my former
associates. You really should do yourself a favor before you get
yourself involved in something that has reach far beyond usenet and
your little auk home. DDoSing is a very real and very harmful sport
some of my comrades are still into, only they do it with thousands of
zombie computers. Thousands son. "

And in the very same post...

"One final comment, "Pity the fool who doesn't understand programming.""

http://groups.google.com.au/group/al...e=source&hl=en

That last one cracked me up. I could hardly breathe from laughing at him.

So, on to a really rough and quick but professional critique of the code
above... I was a professional software developer, now in management, though
I still cut a lot of code just to keep up with the latest advancements...

> randomize
> a=rnd(0)
> a=a mod 1
> b=rnd(0)
> b=b mod 23
> death=b

^^^^^^^^^^
> b=rnd(0)
> b=b mod 23
> runy=b
> b=rnd(0)
> b=b mod 23


The variable named "death" indicates that the language is capable of
supporting variable names other than simple a, b, c. Code should make use of
extended variable names with the intent of increasing the code's ability to
self-document.

As another example of the woefully poor exploitation of variable names...

> ar=local


ar might be short for "AR AR ME 'ARTIES!!!"

Perhaps Dustfart fancies himself as a pirate on the high seas or something.

> b=rnd(0)
> b=b mod 23
> death=b


Three lines of code are used to do what can be done in one line...

death = rnd(0) mod 23

The results are the same but the process is not. Dustfart's amateurish and
woefully inefficient code requires values to be moved left, right and
centre, then all the way back again before a result is obtained. I use the
word "amateurish" reservedly. I am bereft of sufficient one-word
superlatives to convey the idea of complete rubbish born of his artless
bumbling.

> gosub check:


Subroutines should only be used where there is a need to eliminate repeated
_larger_ segments of code. The subroutine named "check" is called from only
two places in the entire ...ahem... "program", and it will cause the
compiler/run environment to beat on the processor; see a little later about
strings. Given what I say a later about strings inside loops, the "check"
subroutine is not just entirely superfluous, it is detrimental to the
efficient execution of the code.

> b=b mod 23
> death=b
> b=rnd(0)
> b=b mod 23
> runy=b
> b=rnd(0)
> b=b mod 23
>
> if death=runy then
> a=rnd(0)
> a=a mod 23


Some variable modulus 23 is used 4 times in 10 lines. Setting aside that the
code segments use 3 lines where one line will do, the whole rnd(x) mod 23
should have been a candidate for conversion into a subroutine, then
discarded as a candidate because it would probably require just as many
processor cycles to jump and return as it would to calculate the modulus of
two simple numbers inline. I doubt Dustfart's capacity to have ever
considered that at all. I suppose soon enough we'll see if his hindsight
is operating at a perfect 20-20.

> for y=1 to 24
> a$=a$+"+-"
> next y


The code is very badly written and grossly inefficient. Any programmer worth
the designation of "programmer" should know that strings are, more often
than not, immutable in BASIC, which means that once a value has been
assigned a string variable the value cannot be extended without moving the
original to a new place, destroying the original variable then moving the
new value from its temporary place and into a newly reserved block in
memory.

In the loop above, the compiler (I assume compiler, surely he's not daft
enough to use interpreted BASIC. Is he?), is forced to move the contents of
the variable into a transient location, free up the formerly reserved memory
location, create a new reserved location, then move the contents from
transient storage to the new location no less than 24 times in a row. Each
of the twenty four executions are repeated for every time the code loops
through the controlling while/wend construct. It is utter ****e; it is not
code.

It would have been far more efficient to simply declare a variable with...

SomeVar$ = "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-..."

But I suppose that would deny Dustfart the bragging rights on knowing how to
execute a simple For...Next loop.

> if a$="K" then
> ...
> endif


Still on the subject of sloppy, inneficient coding; at compile time, the
compiler will not be able to work out how or where to allocate a home for
the simple "K" string literal. The job will therefore be left to runtime,
where, of course, execution will be slowed while the run environment works
out what to do with it. A far more efficient and elegant method would be...

SomeVar$ = "K"
...
...
If SomeOtherVar$ = SomeVar$ Then
...
EndIf

In fact...

If NOT ((SomeOtherVar$ <> SomeVar$) AND (SomeOtherVar$ <> YetAnotherVar$))
Then
...
EndIf

...would be just as quick as, if not actually quicker than, the mess
Dustfart made; the correct word is wrote but his crap is not worthy of such
a word. A not equal operation requires less processor cycles than an equal
operation. With a properly structured If...Then clause, there would be no
need for the dog's breakfast below:

> if a$="K" then
> if local=0 then
> beep
> else
> gosub check:
> local=local-1
> locate zone,local
> print"U";
> endif
> endif
> if a$="M" then
> if local=23 then
> beep
> else
> gosub check:
> local=local+1
> locate zone,local


As an alternative to checking "if a$="K" then", to avoid ****ing about with
literals entirely...

If SomeOtherVar$ = Chr$(70) Then
...
EndIf

There is no sign in the code whatsoever that Dustfart knows what Boolean
notation is or does in BASIC. I may have been inclined to be a little less
critical had I seen something, anything, along the lines of...

If -1 * ((a$ <> k$) + (a$ <> m$)) Then
...
EndIf

Alas, there's nothing. No sign of Boolean notation in a chunk of crap
that cries out for it.

> if a$="K" then
> if local=0 then
> beep
> else
> gosub check:
> local=local-1
> locate zone,local
> print"U";
> endif
> endif


Horrible, horrible, horrible. Bloody horrible. Unreadable tripe is what
Dustfart has created. It can not reasonably be labelled "code".

If X Then
If Y Then
...
Else
...
EndIf
EndIf

> wend


You need at least four pairs of eyes to find the controlling while
statement.

> die_cursor:
> rem off with the damn cursor
> REM turn crsr off by positioning off screen
> REM ASIC leaves it on for some reaosn ALL the time!
> AX=&HEX0200
> BX=0
> DX=25*256
> INT86 (&HEX10,AX,BX,NA,DX,NA,NA,NA,NA,NA)
> return


It's supposedly a payload for a virus, so who the **** cares if the cursor
is on or off? What was he doing here? Bragging that he knows how to call
int86? Why the **** would he bother with int86 video routines? Why isn't
he showing off his 1337 skillz and calling int13 to make the low-level
disk services sing and dance?

> 4Q
> http://fourq.host.sk/INFO/


"Pity the fool who doesn't understand programming."

The conclusion is ironic... the fool doesn't understand programming.

Two things in closing...

1. I typed this into google...

'REM turn crsr off by positioning off screen"

I wanted to see if there were any other sources for the exact same string of
text. As you can see, the opening quote is a single not a double quote, a
typo on my part. The typo caused results to be found and the first link that
came up showed this...

Touring the Commodore 128 Keyboard10 PRINT CHR$(147):REM CLEAR SCREEN 20
CHAR,14,11,"OFF THE TOP" 30 CHAR,12,12 ... Turn on your C-128, hold down the
CONTROL key, and press G. Surprise!

Coming up with that result in top place from a line in Dustfart's code is an
insult to to the VIC-20, let alone the Commodore 128. Primary school children
write better code than Dustfart.

2. Please feel free to use this quick review on your website. Source
credited, please. I'd be happy to have my name alongside some text that rips
apart the atrocious mess he makes and has the unmitigated cheek to call
"code".

Oh, as an addendum, I've rewritten Dustfart's virus payload in pseudocode...

Do some fancy bull**** with modulus to make me look reely, reely good
In amongst all the fnacy bull****, pick a number, any number
Print some ****witted, geeky message on the screen
Force the user to pick a key
If the user picked this key and I picked a certain number then
Call a subroutine to spray some **** on the screen
Call a reely 1337 DOS interrupt a few times to make me look reely k00l
Print another ****witted, geeky message on the screen
Don't do anything else, just exit
End if
If the user picked that key and I picked a different number then
Call a subroutine to spray some **** on the screen
Call a reely 1337 DOS interrupt a few times to make me look reely k00l
Print another ****witted, geeky message on the screen
Don't do anything else, just exit
End if

If you look at the code closely, that is exactly what it does.

print"th"
print""
print"A choice has been made... So what shall become of the program?"
print""
print"Will the program continue running? ";
if ar<> runy then
print"hah, Nope."
print"has the program been lost to the depths of electronic noise? "
if ar=death then
print"Hah, Yes Cluley's lardass squished it flat. "
else
print"Nope. The file moved out of the way as the lardass fell."
endif
else
print"Why yes... yes it will."
endif
end
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BWAHAHAHAHAHAHAHAH! LMAO

<snort>

****ing "virus writer" my arse.

--
alt.usenet.kooks - Pierre Salinger Memorial Hook, Line & Sinker:
September 2005, April 2006, January 2007.

"Now I know what it is. Now I know what it means when an
alt.usenet.kook x-post shows up."
AOK in news:ermdlu$nli$1@registered.motzarella.org