Brief changes that i noted in netscript: 1.7.1 * Added -@, to switch netscript to the UDP protocol. * Added -^, to switch the route host to the UDP protocol. * Added -_, to switch the console display to ncurses. * Added -=, to define alternate button tabs for the (ncurses) gui. * Added new example rulesets. (udp/ncurses demonstration rulesets) * Added socket option(s). to be forced to run, even if not defined. to have netscript run smoother. * Changed the nsansi example module, to support ncurses properly. (will not be active if ncurses is) * Changed --list, to not evaluate while in privileged mode. * Fixed some minor bugs, barely worth noting. 1.7.0 * Added a (modified) cygwin/windows binary, based off the netscript.c source. * Changed syslog priority level, to apply to different standards. * Changed the local display of error printing, will use less space per line. * Fixed bug with use of -M(chroot support), forcing -R(route support). * Fixed a pre-compiled #ifdef bug, where code was misplaced. 1.6.9 * Added -W, to automatically start the (non-generic) gui pulled down. * Added -#, to set the gui foreground (text) color to a defined hex triplet. * Added -+, to change the length of the (non-generic) pulled down gui. * Added reading of the $EDITOR environmental variable, which is applied to the -f option. * Added -f, to use a third party editor. to make, and use temporary/regular rulesets. (temporary files will be deleted after used) * Changed the manual page. fixed some text/etc errors, and additions. * Fixed some minor text/physical bugs. 1.6.8 * Added reading of ~/.nsrc, to precurse any other interactive commands. (only applied if in interactive mode) * Added --interactive, interactive mode. also, is used when no arguments are supplied. * Added --list, to list (ruleset) files in a defined/default direcory. * Added $NS_PATH, which does the same as the --list command line option, in environment form. * Added -K, to define alternate button labels for the gui. * Added -Q, to use user supplied socket options. * Added $", to send only if a specified time has passed. (in seconds) * Added $\, to send supplied/modified data to the route host. (variable) * Added -R, to connect to a route host. this will passover information that occurs on the main socket to the defined route socket. virtual host support (-q option) is included for this option. * Added -k, to set a (non-default) port to connect to on the route host. * Added -j, to disable routed sending of outgoing data. * Added -J, to disable routed sending of incoming data. * Added a manual page, for quick accessible information. * Added MD5SUM file, as a checklist for validity. * Changed a couple rulesets to comply with the version changes. (additions) * Changed some display methods. * Fixed minor bugs, some of which could crash netscript locally under certain nullified situations. (if could not access stdin, still attempted to close the stream, crashing the program) 1.6.7 * Added -O, to use an alternate shell to execute third party programs. * Added -o, to omit socket reading of supplied character(s). * Added -m, to change the current working directory of netscript. * Added -M, to change the root directory of netscript. (superuser only, for use only under special circumstances) * Added $', to change the current working directory via the ruleset. * Changed standard reading of input to check for the tty name, instead of the generic /dev/tty. it will resort to it if it fails, still. * Changed some example rulesets to comply with the new version changes. * Changed all related third party executions to use $SHELL. if it exists, and is executable. * Changed some display/text visualizations. * Fixed segmentation fault introduced in the previous version, when using -u with a user name that doesn't exist. (null int placement, security un-affected) * Fixed some referenced subjects in netscript that do not exist anymore. 1.6.6 * Changed -u, will now apply the supplementary groups to the id change. also, if no group id is specified, will apply the group id of the user id. * Changed the ns_exit() module function to pass the type of exit, which would either be 0(main) or 1(branch). * Changed the make/compile procedure, slighty. * Added -Z. system logging support, for when netscript is running at a syslog accessible level. this will log initialization, execution of third party programs, reading of files, writing to files, ip/port, id changes, and exit notification. (only if accessible. to disable totally, compile with the option -DDISABLE_SYSLOG) * Changed the $` execution comparision variable, to be more like $=. (execution dump, handling wise) * Changed minor handling of command line arguments. * Fixed some minor bugs, mostly visualization. * Added some error notifications, where there were just passings before. 1.6.5 * Fixed (the first real) security issue with -H, and -D. a potential security issue has been dormant since the addition of these options. under the right circumstances, with the use of -H/-D, it could be possible to run arbitrary code. but, this is slightly probable(in remote use), due to the fact it would relies on a specific ruleset. the security risk occurs when the -H/-D is used, and the remote host sends high value characters(ie. 0xff), or has the ability to make high value characters occur, and the handling of the -H option would, in essence, loop over. expanding a single byte into more than one. (in other words, i forgot to put an 'unsigned' -- shows what a quick audit can find) * Changed --hist. now only adds to the history file, if it does not already exist. (exact match, saves history space) * Added $`. (dumps executed data to the input line, to be compared in other rules to come) 1.6.4 * Added $;. (reverse/negative match rule, for use with input rules) * Fixed a long existing bug that could make netscript hang under special circumstances. (it was never noticed until recently, because of its hard to (re)produce nature) * Changed the ns_init() module function to pass the number of arguments, and arguments. * Changed the ns_connect() module function to pass the ip value, and the port as well. * Added -a, to allow interactive use of third party programs. * Changed program dumping to just pass ctrl-c requests to the third party program, locally. (will not exit netscript if in a third party program) * Changed -x to comply with the changed program dumping. * Changed -e program dumping. (now using duplication method instead of popen()) * Added an example module directory. (nsansi, and nssound) * Added -B, to send netscript to the background. * Added -G, to change the title of the gui. * Added -g. GTK+ frontend to netscript, initializes when launched successfully. (use twice for the more generic gui) 1.6.3 * Changed support of parsing remote data, to not parse dynamic variables. this will remove some funcationality. but, it is much more of a security risk to disclose, or use dynamic variables via remote input. * Fixed support on some platforms. (better supported) * Fixed some memory leak possibilities. * Fixed minor text related bugs. * Added the $REPEAT variable, for use with repeated rules. (both input, and output) 1.6.2 * Added some minor security measures, for the minimal security needed. (this will take effect when the uid/gid is not equal to effective uid/gid. limiting the functionality of netscript. added mainly do to the new addition of the -u option) also, added security measures in off-by-one buffer allocation possibilities. * Fixed compatibility issue with some os/dists, OpenBSD to name one. related to module support. * Fixed a bundle of minor, and more important bugs. mostly minor. * Changed some designed aspects of netscript. * Changed some compiler definitions, confliction problems. * Added --hist. lists, and uses data stored to the netscript history file. (command line usage only. use $20/$032's to avoid issues with multi-space arguments, when using netscript in general) * Added -q, virtual hosting support. ($NS_HOST environmental variable too) * Added -I support to -b. which means binding can be used forever instead of just once. (do not know why i just had it allowing one time connections) * Added -L for displaying the value of each line. (forces the -w option) * Added a couple more examples. (examples/ subdir of the packaged netscript) * Added support of /etc/services for -p. (lookup method) * Added the -u option for setting the permission id values of netscript. (takes effect right after connecting in/out. but, before taking any incoming data, or sending any outgoing data) 1.6.1 * Added -S, and -U for process delaying. (-S for seconds, -U for useconds. can be used in conjunction with eachother) * Changed command line option handling. also, all argument supplied options now support netscript dynamic variables, and character replacement. (helps for internal argument supplied rulesets by using $20/$032 for multiple parameters, and unprintable characters) * Added the -E option for optional pre-header to dump with. (used with -e) * Added command line variable support. (-# options, #=0-9) * Added dynamic variable support for input, and output. (${#}, #=0-9) * Changed handling to support $# better. (#=0-9) * Added $.. (for disabling other rules in the ruleset) * Added $|. (for formatting server data) * Added $/, $,, $[, and $] variables. (related to server data truncation) * Added dash support for input->output variables. (example: $1- will dump everything after the first argument) 1.6.0b * Fixed a very very minor cast. 1.6.0 * Extended cleaning of warnings, more operating systems. some still left for compatibility. * Fixed general buffer compatibility. * Changed some buffer storage methods. (non-security related) * Changed logging format. to support the newly added -y, and -Y. * Added -y, and -Y to fix the output of the broken segment problem with telnet. (this will only change the appearance of the output, and not the handling of the data) * Fixed possible bug with the $@ variable, and the reconnection option combined. * Added ns_incoming_char(), and ns_incoming_raw() for module support. * Added $^, and $: variables. (mainly, for sequence uses) 1.5.9 * Changed code to be cleaner, generally cleaned up my lazy coding. (should eliminate warnings) 1.5.8 * Added module support. * Changed log time method, also avoids a bug. * Fixed text/display errors. 1.5.7 * Fixed some bugs. (not too descriptive) 1.5.6 * Added "?" for initial send. 1.5.5 * Added $_ raw variable. * Added -C, and -A for disabled displays. 1.5.4 * Removed -f command line argument. no ethical purpose of it. 1.5.3 * Fixed file dump variable for zero byte(s). (write() was hanging) * Changed some variable names. 1.5.2 * Changed handling, and assigns. 1.5.1 * Added $= exec variable. 1.5.0 * Added $<, $>, and $+ variables. * Fixed minor functional bug in the matching routine. 1.4.9 * Added IRIX support. 1.4.8 * Added $% display variable. 1.4.7 * Added $##### sleep/delay variable option. * Added extended support for $!, and $@ as well. 1.4.6 * Added extended support for $~. (the alternate reason option) 1.4.5 * Added small function binding to shrink the source size. 1.4.4 * Cleaned. * Added make, automake scripts, and examples directory. 1.4.3 * Changed standard input handling, systems disagreed with the former way. 1.4.2 * Changed $- variable, for null send situations. * Changed +x file handling. now uses "#?". 1.4.1 * Added $- variable. * Fixed hex bug replacement conflicting length variable. * Added support for SunOS. 1.4.0 * Began documenting changes. 1.3.9, and below * Unreleased, publically. so, changes were not documented.