%
% RCS data:
% $Date: 2004/08/31 17:58:28 $
% $Revision: 1.6 $
% $Source: /cvsroot/fpwdman/fpwdman/README.txt,v $ % $Id: README.txt,v 1.6 2004/08/31 17:58:28 bwise Exp $ % $RCSfile: README.txt,v $
%
%
% Copyright by Ben Paul Wise.
%
% ------------------------------------------- % This program is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation; either version 2 of the License, or % (at your option) any later version.
%
% This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. %
% You should have received a copy of the GNU General Public License % along with this program; if not, write to the Free Software % Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
This document is the README file for thesource code to fpwdman, a password manager for Unix and Windows. This file describes how to build and install fpwdman. The HTML documentation starts at 'index.html' in the 'fpwdman/doc' subdirectory.
FPwdMan manages a file of passwords, pwdman.dat.sbc The passwords are normally SBC encrypted, but they may be saved unencrypted (for immediate encryption by an independent program like GPG) in pwdman.dat.txt. Each password is in a site-entry of URL, user ID, password, and explanatory comments. You can put any text in any of the four fields - no particular format is required.
FPwdMan uses the libSBC encryption library and the FLTK widget set for cross-platform portability.
FPwdMan can open and save different files, with arbitrary names (ending in .sbc) and locations. It is recommended that the number of such files be kept to a minimum - after all, the whole purpose of FPwdMan is to centralize scattered information! Nevertheless, making or retrieving dated archive copies of the password file is a nice backup.
The majority of the documentation can be found by following fpwdman/doc/index.html with a browser that supports frames.
There you will find a user manual, instructions on downloading and compiling, technical documentation, and so on.
The password on the small.tmp.sbc file is "asdf" (w/o quotes). It gives a bunch of examples of usage.
The password on the example.dat.sbc file is "qwerty" (w/o quotes). It's just a bunch of random stuff - but sorted for easy access.
The 'pwdman.dat.txt' file is the plain text version that gets exported by fpwdman.
more user documentation is available in the doc/ directory in index.html
Compiling under Unix:
Make sure FLTK 1.1.xx is installed. See http://www.fltk.org/ for instructions, source code, and so on.
FLTK includes a GUI-builder called 'fluid'. For building fpwdman, you must set the Edit -> Project Settings so that the generated header files end in .h and the generated source files end in .cpp
Compile both libAAA and libSBC. That's simple: 'make all' in the fpwdman directory will compile the two libraries, and fpwdman itself. It will auto-generate brt.h and brt.cpp from brt.fl, compile everything, and link it together.
If you want to install libAAA and libSBC for system-wide use,
'make install' in each directory. You'll need root privileges
for the final copying into /usr/local/lib and /usr/local/include.
That's when it does this:
to copy aaa's *.h files into /usr/local/include/aaa,
to copy sbc's *.h files into /usr/local/include/sbc,
to copy libAAA.a into /usr/local/lib/aaa, and
to copy libSBC.a into /usr/local/lib/sbc.
Lacking root privileges, you can copy them into the corresponding directories (ala the Windows instructions below).. You'd have to modify the Makefiles in the obvious ways to change the INCLUDE and LIBRARY variables.
Go to the fpwdman directory, and type 'make'.
This will auto-generate brt.h and brt.cxx from brt.fl, compile everything, and link it together.
To install fpwdman for everyone to use, type 'make install'. This will compile fpwdman, strip out debugging information, and copy the executable to /usr/local/bin.
To build this under Windows, you need to install gcc 3.2.0 or higher, and FLTK (http://www.fltk.org).
You could just use Cygwin, or MinGW and MSYS 2.0, to make a unix-like environment, and then pretty much follow the same approach as a straight Unix compilation (see above).
On Windows, an effective and no-cost approach is to install Dev-C++ 4.9.8.3, then the FLTK DevPak 1.1.4
That sounds hard, but it goes pretty easily. Download and install Dev-C++ from http://www.bloodshed.net Then go back to the Bloodshed site, find the 'Packages' subdirectory, and download the FLTK DevPak. Then start up Dev-C++ and install the DevPak so that Dev-C++ can link against it, invoke fluid, and so on.
In Dev-C++, you should use Tools -> Configure Tools --> Add to make fluid available through the 'Tools' button.
Again, it is handy to set fluid's Edit -> Project Settings so that the generated header files end in .h and the generated source files end in .cpp
Uncompress the directory into some convenient place, such as C:/Program Files/Accessories/fpwdman/. If you can't do that, you will have to modify the INCLUDE and LIBRARY 'Project Options' in Dev-C++.
Go to fpwdman/aaa and build the libAAA.dev stuff.
You might want to build sbcref.dev to make sure it works. This program runs only from the command line.
Go to fpwdman/sbc and build the libSBC.dev stuff.
The distribution of fpwdman does not include the autogenerated files brt.cpp and brt.h. They come from 'fluid', the FLTK User Interface Designer, which comes in the FLTK DevPak. Use fluid to auto-generate the brt.cpp and brt.h files BEFORE trying to compile fpwdman.
Then, you should be able to to right to fpwdman.dev and click on that to start Dev-C++. Then, you can just build the project from inside Dev-C++.
Then, the FPwdMan.exe executable can be invoked merely by double-clicking, in the usual Windows manner. To merely use it (not compile it), apparently MinGW, Dev-C++ and FLTK are not needed on the host machine.
There is no installer, registry modification, spyware, or any such nonsense.
There are many improvements that could be made to this program.
First, you could make sure that it never uses virtual memory (which could leave sensitive information in the swap file). However, I know of no portable way to do this under Unix and Windows.
Second, you could implement the 'Change SBC' function. This requires changing the input/output format to actually record the SBC parameters used on output, then read and use them on input. Currently, it just always using the defaults.
Right now, there is a low-level way to reformat files:
examine the source code to verify the old parameters.
edit the source code to set read encrypted to be 'true', and write encrypted to be 'false'. recompile, and run to read in the old-format file, but output it as unencrypted, radix64.
edit the source code to use the new parameters.
edit the source code to set read encrypted to be 'false', and write encrypted to be 'true'. recompile, and run to read in the unencrypted, radix64 file, but output it in the new format.
edit the source code to set read encrypted to be 'true', and write encrypted to be 'true'. This will restore the normal mode of operation - but only in the new format.
Ugly, but effective.
Third, good documentation is always nice to have and hard to provide.
The name stands for 'FLTK Password Manager'. It was proceeded by XPwdMan that used Xaw widgets, and by GPwdMan, that used gtkmm widgets.
I settled on FLTK as the best blend of portability, ease of coding, and aesthetics.
Minor legalese:
FPWDMAN is based in part on the work of the FLTK project (http://www.fltk.org), because it uses FLTK for the graphical user interface.
FPwdMan comes with no warranties of any kind. Do not use FPwdMan for any sensitive, valuable, etc. data. Use it entirely at your own risk.
The concept of SBC en/de-cryption was invented by Ben P. Wise
All source code, data files, and documentation are copyright Ben P. Wise and distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
---------------------------------------------------------------------------
