| v 0.1 gpk@onramp.net 3/27/99 |
| |
| I Intro |
| |
| This document covers the use of the modified "chat" program and its |
| adjunct "chatchat" to login using the Security Dynamics SecurID card |
| on a linux system. |
| |
| This set of files comprises a modified version of the chat program |
| (the one distributed with ppp-2.3.5) and a new program called chatchat |
| that allows you to supply data from the keyboard to the chat program. |
| |
| The SecurID card generates passwords that have a lifetime of one |
| minute and are used as a first layer in dial up security. The only |
| software I know of for this card is for windows, so I wrote my own. |
| This software allows you to type in the time-sensitive password right |
| when your chat script is asked to supply the passcode by the remote |
| system. |
| |
| |
| II How It Works |
| |
| This version of chat his an additional command that can be put into |
| its options that says "Don't reply with this string. Open this pipe, |
| read the contents, and reply with that instead." Chatchat creates a |
| pipe and lets you type your passcode into it, then chat picks that up |
| and sends it out just as though the passcode was hardcoded into the |
| options. |
| |
| |
| III Installation |
| |
| I've provided intel binaries and source code the the modified chat |
| program and the chatchat program. I'll recommend that you copy the |
| chat.c program into your ppp-2.3.5/chat directory (save your original |
| chat.c program first!) and re-make it using the Makefile that comes |
| with chat. Copy the new chat somewhere into your path. (On my system |
| chat lives in /usr/sbin/chat, so I've copied the modified one into |
| /usr/sbin/chat.new and changed my dial in script to call chat.new |
| instead of chat. |
| |
| Second, compile chatchat.c and install it somewhere in your path: |
| |
| gcc -g -o chatchat chatchat.c |
| cp chatchat /usr/sbin |
| |
| Third, modify your chat script to use the chatchat program. Mine |
| looks something like this: |
| |
| |
| -------------------- |
| |
| #!/bin/sh |
| # |
| # This is part 2 of the ppp-on script. It will perform the connection |
| # protocol for the desired connection. |
| # use atm0 to turn down the speaker volume on my sportster x2 voice modem |
| # gpk 11/2/97 |
| |
| exec /usr/sbin/chat.new -V -v \ |
| ABORT "BUSY" \ |
| ABORT "NO DIAL TONE" \ |
| ABORT "NO ANSWER" \ |
| TIMEOUT 50 \ |
| "" "atm0" \ |
| OK ATDT$TELEPHONE \ |
| CONNECT '' \ |
| name: \\da0xxxxxx \ |
| word: @/var/tmp/p \ |
| compress. '' |
| |
| |
| ----------------------- |
| |
| This is a standard chat script: |
| |
| * abort if the modem is busy, you don't get a dial tone, no one |
| answers, or 50 seconds elapses. |
| |
| * use atm0 to mute the modem |
| |
| * dial the modem, when it connects, wait to be asked for account name |
| |
| * when we see "name:" prompt, delay briefly then respond with your |
| account name (fill in your account name) |
| |
| Now we get to the new stuff: |
| |
| * when we see "word:" in the password prompt, instead of responding |
| with "@/var/tmp/p", the modified chat program will open the pipe |
| /var/tmp/p, read the passcode out of there, and send it |
| |
| * when we see "compress." (the last word before ppp starts), reply |
| with nothing. The script ends and we start ppp. |
| |
| Note: |
| |
| * Make sure there is some whitespace between the filename and the \. |
| |
| |
| IV Usage |
| |
| To use this install the modified chat and chatchat programs, and |
| modify your chat script similar to the above. Before you dial in, |
| start that chatchat program giving it the same pipe as in your config |
| file. In the above case: |
| |
| chatchat /var/tmp/p |
| |
| Wait until you have one or two tick marks left on your card's |
| current number, then start your dial up process that eventually calls |
| chat. When chat goes to open and read the pipe, chatchat will prompt: |
| |
| |
| type PIN into SecurID card and |
| enter resulting passcode: |
| |
| At that point, type your PIN number into your Securid card, press |
| the diamond, and type the resulting numbers in as your passcode. If |
| you've left the -V -v options on your chat command you'll see |
| everything so out, otherwise it works silently. |
| |
| If you type the number wrong or run out of time, the server will |
| respond with an authentication failure. In that case you will have to |
| hang up and start again. I don't know how to build a conditional script |
| that says either expect "compress" next, but if you see "name:" again, |
| do this instead. |
| |
| |
| V Additional Information |
| |
| You can obtain additional information about chat and ppp from the |
| man pages for chat and pppd, as well as the PPP-HOWTO. |
| |