Quando il Worm inizia l'esecuzione nel main(), si preoccupa di fare
alcune inizializzazioni, alcune difese ed alcune pulizie. La prima cosa che
fa è cambiare il suo nome in sh. Ciò riduce la finestra di tempo
durante la quale il processo rimane visibile con un nome strano del tipo
x9834753. A questo punto inizializza un numero casuale utilizzando
l'orario di sistema corrente, disabilita il dump del core, e si
prepara a morire quando la connessione remota fallisce. Una volta fatto tutto
ciò processa la sua lista di parametri. Come prima cosa cerca
l'opzione -p $$, dove $$ rappresenta il process ID del processo padre;
questa opzione dice al Worm che in seguito si suiciderà. Procede poi a
leggere in memoria gli altri file che sono passati come argomento; li
rimuove dal disco non appena li ha letti. Se il Worm non trova il sorgente
del programma vettore come argomento esce silenziosamente; ciò
viene fatto probabilmente per frenare eventuali analisi del Worm da terze
persone. Nella fase di pulizia come prima cosa chiude i suoi file descriptor,
tagliandosi fuori temporaneamente dal Worm genitore sull'host remoto,
e cancellando alcuni file. Il Worm azzera la sua lista degli argomenti, per ingannare
il programma ps. Il prossimo passo è quello di inizializzare la
lista interna delle interfacce di rete; tali interfacce verranno usate per
testare le reti locali e trovare nomi alternativi per l'indirizzo dell'host
corrente. Infine, il Worm resetta il suo process group e killa il
processo che lo aveva aiutato a bootstrapare. L'ultima azione del Worm
nel main è quella di chiamare una funzione di nome doit(), che
contiene il loop principale del Worm stesso.
Dopo questo tentativo iniziale di infezione, il Worm chiama la routine checkother() per controllare la presenza di un altro Worm sulla stessa macchina locale. In questo controllo il Worm si comporta come un client verso un Worm esistente che si comporta come un server; si scambiano a questo punto un messaggio sul population control, dopo del quale, eventualmente, uno dei due Worm va in shutdown.
Appena prima di entrare nel loop principale il Worm chiama una strana routine. Abbiamo chiamato tale routine send_message(), ma in realtà non invia niente. Pare che il suo scopo fosse quello di mandare un datagram di 1 byte ogni 15 copie del Worm ad un porta ben definita dell'host ernie.berkeley.edu (come già detto in precedenza).
Il loop principale comincia con una chiamata alla funzione cracksome() per effettuare alcune operazione di password cracking. La password cracking è un'attività che il Worm svolge in modo costantemente crescente. Fa una pausa di 30 secondi alla ricerca di eventuali altre copie del Worm che stessero cercando di penetrare sull'host locale, e poi ritorna alla fase di cracking. Dopo questa parte, effetua una fork (crea un nuovo processo che gira con una copia della stessa immagine di codice eseguibile) e fà terminare il vecchio processo. A questo punto il Worm ritorna alla sua fase infettiva, tentando (in ordine di precedenza) con i gateway, gli host elencati nel file /etc/hosts.equiv, numeri di host scelti a caso dall'altro lato dei gateway e numeri di host scelti a caso sulla rete locale. Come prima, anche ora, non appena si ha successo nell'infettare un nuovo host, lo si marca come infettato nella lista interna degli host e si lascia la fase di infezione, per ritornarci in seguito. Dopo l'infezione il Worm si ferma per due minuti cercando nuovamente altre copie di se stesso sulla macchina locale; tutto ciò viene rifatto perché un host remoto protrebbe aver cercato nuovamente di infettare la macchina locale. Se sono trascorse 12 ore ed il Worm è ancora vivo, allora si suppone che la scelta degli host da infettare da parte del Worm sia stata sfortunata, e quindi si procede a ri-inizializzare la tabella degli host da infettare. Alla fine del loop principale il Worm controlla sia se lui stesso era stato schedulato a morire, e sia se avesse effettuato una quantità di lavoro sufficiente nella fase di password cracking. Se le due condizioni si verificano entrambe, allora termina l'esecuzione.