Dial 2.03d by Garrett Jost - Feb 17, 1988 ----------------------------------------- The purpose of this program is to hack out long distance codes from various telephone services. It can also be used as a WarGames type of dialer. As of now, this program should work with any long distance service and with any Hayes compatible modem. The only reason I wrote this program was for the challenge; I do not personally use or endorse its use. Since there is a great demand for a program such as this, I decided to release it. I hold no responsibility in its use. LET THE USER BEWARE! The way this program works is simple: a service number is called and it is given a random code and a test number. If the code is proven good, it is tried again for verification and then it is recorded. Either way, the program hangs up the phone, waits a specified amount of time (now 1.2 seconds), and redials. The test number is important for this program to work correctly. One must figure out what phone number to use as a test number. The two popular ones are discussed below: 1. Your own phone number. If your modem can detect busy signals, this can be one of the best choices. Setting the test type to string and filling in a key word or two from the modem return string for busy in the Compare String gadget will enable the program to use your phone number as a test number. Note: Sometimes, phone lines with call waiting will not come up with a busy signal. It's best to try this out first if you have it. 2. A number with a computer on the other end. This way will work if you have call waiting or your modem cannot detect a busy signal. Be sure to use a number that will not be busy; this could cost you a few codes. All that needs to be done is set the test type to Carrier and make sure the baud rate is correctly set. With the three new gadgets added in version 2.03a (2nd "C", "F", and "String: No Code" gadgets), you can set the program in a variety of ways to cut down on calling time. With these gadgets, you can sense a bad code now before the delay goes out. All you have to do is figure out if a string or carrier is sensed by the modem when bad codes are found and if it does, then you can set the program to hang up when these are sensed. There are many options and parameters that can or need to be set. They are discussed fully in the gadget section below. Gadgets ------- The gadgets are as follows, starting from the top of the first column (all gadgets marked with a '*' have a special meaning with the Now and Max gadgets): 1st "On/Off" gadget: Turns on and off the modem dialing. *Sequential/Random dots gadget: Selects sequential or random code selection. 2nd "On/Off" gadget: Turns on and off the modem speaker (if there is one). "Skip" gadget: Hangs up phone and tries the next code, or another code in the case of random codes. This is useful if you are watching the program and need a code in a hurry. *"C/S" gadget: The test type selector. "C" is for carrier type of testing. "S" is for string type. *2nd "C/S" gadget: The test type selector for sensing bad codes. If a bad code is sensed, then the program will hangup immediately. It is the same as above, except that is "C" is set for both gadgets, then a carrier will mean it is a good code. *"LD Number" gadget: The long distance service number goes here. *"AC" & "Test Number" gadgets: Holds the area code and number to the test number. *"Starting Code" & "Ending Code" gadgets: Holds the starting and ending codes for both sequential and random dialing. For random dialing, the range is ignored if either gadget is cleared (i.e. no characters; a "0" won't do it). WARNING: For random dialing, if you are dealing with large codes and small ranges (ex. a range of 600000000 to 600000999), then use a prefix (will be implemented more fully later) or constant in the Order gadget and decrease the code size. Otherwise, it can take minutes or even hours for the program to make a code. Baud rate gadgets: Selects the baud rate. Remember, this also affects how fast the commands are sent and strings read, for those of you trying to shave milliseconds. "Code File Name" gadget: The file name of a text file that holds or will hold the newly found codes. If the file exists, the codes are appended, otherwise a new file is created. Both the service number and code are output to this file. It is legal to enter a device, such as "prt:", instead. *"Length" gadget: Number of digits in the code. *"Delay" gadget: How long to wait for each dial before hanging up and trying a new code. This period of time starts when the dial command is issued to the modem. *"F" gadget: Toggles whether the completion of the delay will mean that a code is good or bad. Normally, if the time passed equals the delay time, the program will hang up and try a new code. If set, then it will consider the code good instead. "Modem Command" gadget: Any string here is echoed directly to the modem. This is the way you can change modem-specific parameters. Consult your modem manual for commands. *"Order" gadget: Important to fill out properly! The format for dialing is normally: ATDTxxxxxxx where xxxxxxx is the service number. This will not do much, if you want to find codes. The Order gadget is the only gadget that adds to the dialing string. Any character, except for three, are added directly to the dialing string. For example, putting in digits will allow a constant number to be included in the dial string. It is these other three that make the dialing string useful. They are as follows: 'a' - area code of test number 'n' - test number 'c' - code Also remember that pauses are necessary for the dialing to work. Now that you are thoroughly confused, let me show you a few examples (a = 818; n = 5551111; c = 615273; service # = 555- 2222): "Wcan": the standard string. This is what works with most services. If your modem does not have the "W" command, use commas instead. It will dial the service number, wait until it hears a secondary dial tone, and dial out the code, area code, and test number. The modem string would come out as: "ATDT555-2222W6152738185551111" "Wan,c": used by another popular phone service. Dials the service number, waits for the second tone, dials the area code and test number, waits two seconds, and dials the code. The string would be: "ATDT555-2222W818555-1111,5552222" *"String: Code" gadget: Only used if in test type is string. The program sees if the string in this gadget is in any strings sent back to the modem, such as "NO CARRIER". If there is a match, the code is recorded as valid. There is a variation that can be used with either string gadget. If the gadget is empty, and the appropriate "C/S" gadget is set to "S", then the program will consider the first CR sent by the modem as a match. This shortcut works with many long distance services, allowing any modem string sent back as a condition being met. *"String: No Code" gadget: Used if bad code test type is string. If this string is sensed, then it will immediately hang up and try a new code. "Now" & "Max" gadgets: These gadgets manipulate the different nodes for dialing. Max sets the number of nodes that will be used (can only be up to 5; if you want more, tell me) and Now sets the present node. The nodes allow you to dial more than one service in a session. If you only need to dial one service at a time, do not worry about these gadgets. Note all the gadgets marked with a '*' are the gadgets with data that can be different with each node. Gadgets like the Speaker gadget do not change because it is unnecessary for the speaker to change because of the service it is dialing. If you think there should be other gadgets included which aren't already, tell me. To use more than one node, increase the Max gadget until you have the number of nodes you need (one per service). Then enter in the data for each service, increasing the Now gadget when you need move on to the next service. When you are done, just turn on the dialing; it's that simple! Note that you can edit any of the nodes at any time by changing the Now gadget, but if you change the Now gadget during dialing, the next dial the program makes will be the one proceeding the present node. Display ------- "Present Code": displays present code dialing "Time Passed": shows how much time has passed since start of dial "Last Code Found": displays last code found "Count": displays how many tries have been made; can be reset by hitting the word "Count" with the mouse Variations - WarGames Dialer ---------------------------- There are two ways that can be used to use this program as a WarGames type dialer. Either way, make sure the "LD Number" gadget is empty and set the test type to "C"arrier. The first way would be to use sequential dialing. Put the beginning and ending phone numbers in the "Starting Code" and "Ending Code" gadgets, respectively. Set the length to the size of the phone number (usually 7). The order string should just have the letter "c" in it, plus any other characters or numbers you wish to add, which should not be necessary. Then start dialing. The other way is to use random dialing. Most likely, you will not want to make the whole number random, since it might come up with many toll numbers. The best way would be to have the prefix constant and the rest random. Assuming you are using a 7 digit number, the length would be set to 4. Then the order string would be set to something like "555c", where 555 is the prefix. Bugs Fixed and Changes Made! ---------------------------- 2.03d: THIS IS THE LAST VERSION IN THE DIAL2 SERIES! I am rewriting it, and will make it much better than this version. Expect it around summer. But for now, I will correct any bugs on this version, but no modifications. 1. The CR string detection was the only string detection that worked. Now both the normal and CR detection work. 2.03c: 1. Implemented CR string detection. 2. Fixed bug with verification. It would not verify codes when using multiple nodes, in effect recording no codes, even if they were good. 3. Cleaned up serial I/O. 2.03b: 1. Added code verification. 2. Added random range option. 3. Fixed default of carrier detect to good code if both "C" gadgets are set to "C"arrier. 4. Now gives the command ATE0 at startup to eliminate the unneccessary echo of the dialing string. This way, a compare string of short result codes (ex. "2") will not match with a digit from the dialing string, resulting (no pun intended) in an erroneous code detection. 2.03a: 1. Addition of 2nd "C", "F", and "String: No Code" gadgets. 2.03: 1. The sequential dialing did not work! I eliminated floats, the math library, and a function (the double to string function did not work properly), plus added others. Now it works smoothly. 2. Sometimes, when the program read in a result code from the user, it would be longer than the buffer. The program would overwrite the buffer, killing other data! This has been fixed. 3. Sometimes, after a dial, the program will hang when trying to dial the next code. This has to do with the wait time between hanging up and dialing. It is now set for 1 second. If it takes longer than 1 second for the modem to print out a result code after hang up, the serial routines will hang trying to write the next dialing sequence to the modem. Solution: put in ATV0 (or equivalent) in the Modem Command gadget to have numeric result codes. I will add in a gadget to change the wait time in the next version (I found this out the day before I released it). 4. I added the "Now" and "Max" gadgets. I hope you found this text and program useful. If you have any questions, comments, or suggestions (on both the program and these docs), contact me. Or if you have not registered with me, you can send me $10, which will guarantee you a disk with the next major update sent to your home, plus the new docs. I keep in contact with all registered users about updates. If you happened to send $5 and wanted the next major update sent to you, you can either send me a disk in a SASE or send me another $5. I will also personally send the new updates over the phone, if you like. If having the honor of being a registered user sounds interesting to you, send your name, address, phone number, and, of course, money (A wise old mailman told me one day, "Don't send cash!") to: Garrett Jost 565 Oxford Cir. #323 (this address will only work through 6/88) Davis, CA 95616 I can also be reached at my UC Davis dorm at (916) 753-2419. I usually can be found on the AmigaBoard at (503) 284-0443. My account # is 53. If you wish to contact me after 6/10/88, write me at this address: 12226 Eagle Ridge Way (my home address, as of 3/2/88) Northridge, CA 95616 Feel free to distribute this program, as long as the .arc file is not altered in any way.