Wardialer for Unix ------------------ Shok Serial programming for U. Well Unix is known for its special device files. The modem is just a special file you can open(), read(), and write() to...for that reason this program can be used on all unix systems. The functions are all primitive or POSIX. The only thing different that you would really need/want to change, would be the: #define MODEMPORT "/dev/modem" and make a softlink from your modem serial file to "/dev/modem" (known as a COM in MSDOS/Windows), because most unix operating systems have their own modem serial file. For example /dev/ttyS? which is COM1, would be /dev/ttym? in IRIX. See teh README for more details. Now once this program opens the modem (via serial/special file) for reading/writing, it will write() to it, and send it standard modem instructions like +++ATH, ATZ etc....this comes before any dialing to get the modem ready....I used two functions for error checking: One to check for "OK" (checkok()), and the other to make sure we wrote all the bytes we were expecting to (check_for_error(), pardon the name :) that all is well. You send the modem "\r" to finish a command. If you look through the code...you'll see I seperated their jobs into functions. Such as open_port(), init_modem(), dial_number(), hangup(), etc.I used ScanMin++ to increase the number for sequential scanning...it compared itself to ScanMax to make sure it wasn't done etc. It read()'s from the modem, and checks for "CONNECT", if it is found, a few variables are set, and it is logged. That's about all there is to say. I commented a lot of the source, so I suggest you look through it, you shouldn't have any problem understanding it. That's about all there really is to say about the technical stuff about it. I included comments all over the source...so you would want to look at that. I used ANSI color codes to make it look more user friendly I suppose. I will add a gui sometime in the future. When it connects, it looks for the string "CONNECT" returned from the modem serial file. You won't get this message from faxes as you will only get this message when the connection is complete, so this will only return *** CONNECT *** if it was a modem. It will both output to the screen and logfile *** CONNECT *** to 1-xxx-xxx-xxxx. You can use local or long distance, although international numbers haven't been added at this time (not hard to do just didn't care to add an extra scanf and an extra CountryCode variable ;) About ShokDial -------------- This supports random scanning (pseudorandom to be honest, heh) and sequential (the range you specified and up) scanning. You can give it a range too but that still does under sequential scanning. To use random scanning use 'shokdial -r', otherwise it will by default use sequential scanning. For the other options type 'shokdial -h'. You want to keep track of the version because I'd almsot guarntee this program is going to continue changing. I need to add some ncurses GUI effects (heh) and a function to resume scanning for those of you who are too lazy to even look at the (by default) wardialer.log and get the last number it dialed (assuming you used sequential scanning) and entering that as the Scan number to begin on! It will output to wardialer.log if no config file is specified, but you can specify the logfile with -L, or change: #define LOGFILE "wardial.log", to change the default. If you define BEEP in the Makefile, it will beep when it connects to a carrier. That's about all I really have to say about it. I don't actually use war dialers (really), so I haven't actually tested this (sorry if there are any problems but there shouldn't be). If you do however find a problem, please let me know! I will fix it and send out a patched version. You can get all of them from http://www.w00w00.org. Enjoy ;) If the -d (daemon mode) option is given, it will run in the background, so you could go about doing other things. It will still log to the screen with -d however, it is just writing to /dev/tty. The -c (config file) option causes ShokDial to read from a configuration file. This can have any format and will not be checked to allow you to use multiple formats and various strings use as "5551234,,,,1,#" for pagers. The -S (stdin) option causes ShokDial to read numbers from stdin until it receives a "." on an empty line. The -s and -l options work together. Use -s to specify you wish to send a string to the carrier, and the -l specifies that you want to read the response from the server. These will also be logged to the log file. Shok, shok@dataforce.net http://www.w00w00.org