Add option to show hashes as hex instead of base64. Siggen already provided this.

This commit is contained in:
Brian Cox 2016-04-09 16:36:39 -07:00
parent 1d8ab16d00
commit da16d91146
10 changed files with 68 additions and 2 deletions

View File

@ -273,6 +273,7 @@ lbw(1.2i) lb.
-x \fIsection\fP --section \fIsection\fP -x \fIsection\fP --section \fIsection\fP
-M --email-report -M --email-report
-t \fR{ 0|1|2|3|4 }\fP --email-report-level \fR{ 0|1|2|3|4 }\fP -t \fR{ 0|1|2|3|4 }\fP --email-report-level \fR{ 0|1|2|3|4 }\fP
-h --hexadecimal
.TE .TE
.RI "[ " object1 " [ " object2... " ]]" .RI "[ " object1 " [ " object2... " ]]"
.RE .RE
@ -369,6 +370,9 @@ EMAILREPORTLEVEL variable in the configuration file. \fIlevel\fR must
be a number from 0\ to\ 4. be a number from 0\ to\ 4.
Valid only with (\fB\(hyM\fP). Valid only with (\fB\(hyM\fP).
.TP .TP
.BR \(hyh ", " --hexadecimal
Display hash values as hexadecimal in email reports
.TP
.RI "[ " object1 " [ " object2... " ]]" .RI "[ " object1 " [ " object2... " ]]"
List of files and directories that should be integrity checked. List of files and directories that should be integrity checked.
Default is all files. If files are specified for checking, the Default is all files. If files are specified for checking, the

View File

@ -53,6 +53,7 @@ lbw(1.2i) lb.
-m r --print-report -m r --print-report
-v --verbose -v --verbose
-s --silent\fR,\fP --quiet -s --silent\fR,\fP --quiet
-h --hexadecimal
-c \fIcfgfile\fP --cfgfile \fIcfgfile\fP -c \fIcfgfile\fP --cfgfile \fIcfgfile\fP
-r \fIreport\fP --twrfile \fIreport\fP -r \fIreport\fP --twrfile \fIreport\fP
-L \fIlocalkey\fP --local-keyfile \fIlocalkey\fP -L \fIlocalkey\fP --local-keyfile \fIlocalkey\fP
@ -69,6 +70,9 @@ Verbose output mode. Mutually exclusive with (\fB\(hys\fR).
.BR \(hys ", " --silent ", " --quiet .BR \(hys ", " --silent ", " --quiet
Silent output mode. Mutually exclusive with (\fB\(hyv\fR). Silent output mode. Mutually exclusive with (\fB\(hyv\fR).
.TP .TP
.BR \(hyh ", " --hexadecimal
Display hash values as hexadecimal.
.TP
.BI \(hyc " cfgfile\fR, " --cfgfile " cfgfile" .BI \(hyc " cfgfile\fR, " --cfgfile " cfgfile"
Use the specified configuration file. Use the specified configuration file.
.TP .TP
@ -92,6 +96,7 @@ lbw(1.2i) lb.
-m d --print-dbfile -m d --print-dbfile
-v --verbose -v --verbose
-s --silent\fR,\fP --quiet -s --silent\fR,\fP --quiet
-h --hexadecimal
-c \fIcfgfile\fP --cfgfile \fIcfgfile\fP -c \fIcfgfile\fP --cfgfile \fIcfgfile\fP
-d \fIdatabase\fP --dbfile \fIdatabase\fP -d \fIdatabase\fP --dbfile \fIdatabase\fP
-L \fIlocalkey\fP --local-keyfile \fIlocalkey\fP -L \fIlocalkey\fP --local-keyfile \fIlocalkey\fP
@ -108,6 +113,9 @@ Verbose output mode. Mutually exclusive with (\fB\(hys\fR).
.BR \(hys ", " --silent ", " --quiet .BR \(hys ", " --silent ", " --quiet
Silent output mode. Mutually exclusive with (\fB\(hyv\fR). Silent output mode. Mutually exclusive with (\fB\(hyv\fR).
.TP .TP
.BR \(hyh ", " --hexadecimal
Display hash values as hexadecimal.
.TP
.BI \(hyc " cfgfile\fR, " --cfgfile " cfgfile" .BI \(hyc " cfgfile\fR, " --cfgfile " cfgfile"
Use the specified configuration file. Use the specified configuration file.
.TP .TP

View File

@ -97,6 +97,7 @@ iFCOProp::CmpResult iSignature::Compare(const iFCOProp* rhs, Op op) const
return (op == iFCOProp::OP_NE) ? iFCOProp::CMP_TRUE : iFCOProp::CMP_FALSE; return (op == iFCOProp::OP_NE) ? iFCOProp::CMP_TRUE : iFCOProp::CMP_FALSE;
} }
bool cArchiveSigGen::mHex = false;
void cArchiveSigGen::AddSig( iSignature* pSig ) void cArchiveSigGen::AddSig( iSignature* pSig )
{ {
@ -129,6 +130,16 @@ void cArchiveSigGen::CalculateSignatures( cArchive& a )
mSigList[i]->Finit(); mSigList[i]->Finit();
} }
bool cArchiveSigGen::Hex()
{
return mHex;
}
void cArchiveSigGen::SetHex(bool hex)
{
mHex = hex;
}
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// btob64 -- convert arbitrary bits to base 64 string // btob64 -- convert arbitrary bits to base 64 string
// //
@ -399,6 +410,9 @@ void cCRC32Signature::Finit()
// mCRC // mCRC
TSTRING cCRC32Signature::AsString() const TSTRING cCRC32Signature::AsString() const
{ {
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret; TSTRING ret;
char *ps_signature; char *ps_signature;
char buf[100]; char buf[100];
@ -505,6 +519,9 @@ void cMD5Signature::Finit()
// AsString -- Converts to Base64 representation and returns a TSTRING // AsString -- Converts to Base64 representation and returns a TSTRING
TSTRING cMD5Signature::AsString() const TSTRING cMD5Signature::AsString() const
{ {
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret; TSTRING ret;
char buf[24]; char buf[24];
int length; int length;
@ -626,6 +643,9 @@ void cSHASignature::Finit()
#ifdef HAVE_OPENSSL_SHA_H #ifdef HAVE_OPENSSL_SHA_H
TSTRING cSHASignature::AsString(void) const TSTRING cSHASignature::AsString(void) const
{ {
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret; TSTRING ret;
char* ps_signature; char* ps_signature;
char buf[100]; char buf[100];
@ -704,6 +724,9 @@ bool cSHASignature::IsEqual(const iSignature& rhs) const
TSTRING cSHASignature::AsString(void) const TSTRING cSHASignature::AsString(void) const
{ {
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret; TSTRING ret;
char* ps_signature; char* ps_signature;
char buf[100]; char buf[100];
@ -812,6 +835,9 @@ void cHAVALSignature::Finit()
// AsString -- Returns Base64 representation of mSignature in a TSTRING // AsString -- Returns Base64 representation of mSignature in a TSTRING
TSTRING cHAVALSignature::AsString() const TSTRING cHAVALSignature::AsString() const
{ {
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret; TSTRING ret;
char buf[24]; char buf[24];
int length; int length;

View File

@ -75,6 +75,8 @@
// TODO: figure out a way to do this without including these headers. // TODO: figure out a way to do this without including these headers.
// pool of objects? // pool of objects?
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// class iSignatrue -- Interface all signatures will implement. // class iSignatrue -- Interface all signatures will implement.
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -145,6 +147,9 @@ public:
// produces signature of archive for all signatures in the list // produces signature of archive for all signatures in the list
// remember to rewind archive! // remember to rewind archive!
static bool Hex();
static void SetHex(bool);
private: private:
// don't let C++ create these functions // don't let C++ create these functions
cArchiveSigGen( const cArchiveSigGen& ); cArchiveSigGen( const cArchiveSigGen& );
@ -152,6 +157,8 @@ private:
typedef std::vector< iSignature* > container_type; typedef std::vector< iSignature* > container_type;
container_type mSigList; container_type mSigList;
static bool mHex;
}; };

View File

@ -89,6 +89,7 @@ TSS_BeginStringtable( cTripwire )
_T(" -m c --check\n") _T(" -m c --check\n")
_T(" -I --interactive\n") _T(" -I --interactive\n")
_T(" -v --verbose\n") _T(" -v --verbose\n")
_T(" -h --hexadecimal\n")
_T(" -s --silent, --quiet\n") _T(" -s --silent, --quiet\n")
_T(" -c cfgfile --cfgfile cfgfile\n") _T(" -c cfgfile --cfgfile cfgfile\n")
_T(" -p polfile --polfile polfile\n") _T(" -p polfile --polfile polfile\n")

View File

@ -66,6 +66,7 @@
#include <set> #include <set>
#include "fco/parsergenreutil.h" // this is needed to figure out if a path is fully qualified for the current genre. #include "fco/parsergenreutil.h" // this is needed to figure out if a path is fully qualified for the current genre.
#include "tw/fcodatabasefile.h" #include "tw/fcodatabasefile.h"
#include "fco/signature.h"
#include "fco/genreswitcher.h" #include "fco/genreswitcher.h"
#include "generatedb.h" #include "generatedb.h"
#include "integritycheck.h" #include "integritycheck.h"
@ -826,7 +827,8 @@ void cTWModeIC::InitCmdLineParser(cCmdLineParser& cmdLine)
cmdLine.AddArg(cTWCmdLine::RULE_NAME, TSTRING(_T("R")), TSTRING(_T("rule-name")), cCmdLineParser::PARAM_ONE); cmdLine.AddArg(cTWCmdLine::RULE_NAME, TSTRING(_T("R")), TSTRING(_T("rule-name")), cCmdLineParser::PARAM_ONE);
cmdLine.AddArg(cTWCmdLine::GENRE_NAME, TSTRING(_T("x")), TSTRING(_T("section")), cCmdLineParser::PARAM_ONE); cmdLine.AddArg(cTWCmdLine::GENRE_NAME, TSTRING(_T("x")), TSTRING(_T("section")), cCmdLineParser::PARAM_ONE);
cmdLine.AddArg(cTWCmdLine::PARAMS, TSTRING(_T("")), TSTRING(_T("")), cCmdLineParser::PARAM_MANY); cmdLine.AddArg(cTWCmdLine::PARAMS, TSTRING(_T("")), TSTRING(_T("")), cCmdLineParser::PARAM_MANY);
cmdLine.AddArg(cTWCmdLine::HEXADECIMAL, TSTRING(_T("h")), TSTRING(_T("hexadecimal")), cCmdLineParser::PARAM_NONE);
// multiple levels of reporting // multiple levels of reporting
cmdLine.AddArg(cTWCmdLine::REPORTLEVEL, TSTRING(_T("t")), TSTRING(_T("email-report-level")), cCmdLineParser::PARAM_ONE); cmdLine.AddArg(cTWCmdLine::REPORTLEVEL, TSTRING(_T("t")), TSTRING(_T("email-report-level")), cCmdLineParser::PARAM_ONE);
@ -835,6 +837,8 @@ void cTWModeIC::InitCmdLineParser(cCmdLineParser& cmdLine)
cmdLine.AddArg(cTWCmdLine::USE_GMMS, TSTRING(_T("g")), TSTRING(_T("gmms")), cCmdLineParser::PARAM_NONE); cmdLine.AddArg(cTWCmdLine::USE_GMMS, TSTRING(_T("g")), TSTRING(_T("gmms")), cCmdLineParser::PARAM_NONE);
cmdLine.AddArg(cTWCmdLine::GMMS_VERBOSITY, TSTRING(_T("b")), TSTRING(_T("gmms-verbosity")), cCmdLineParser::PARAM_ONE); cmdLine.AddArg(cTWCmdLine::GMMS_VERBOSITY, TSTRING(_T("b")), TSTRING(_T("gmms-verbosity")), cCmdLineParser::PARAM_ONE);
#endif #endif
// mutual exclusion... // mutual exclusion...
// you can't specify any of these 3 things together... // you can't specify any of these 3 things together...
@ -964,6 +968,10 @@ bool cTWModeIC::Init(const cConfigFile& cf, const cCmdLineParser& cmdLine)
ASSERT(iter.NumParams() > 0); ASSERT(iter.NumParams() > 0);
mpData->mGenreName = iter.ParamAt(0); mpData->mGenreName = iter.ParamAt(0);
break; break;
case cTWCmdLine::HEXADECIMAL:
cArchiveSigGen::SetHex(true);
break;
case cTWCmdLine::PARAMS: case cTWCmdLine::PARAMS:
{ {
// pack all of these onto the files to check list... // pack all of these onto the files to check list...

View File

@ -137,7 +137,8 @@ public:
SITE_PASSPHRASE, SITE_PASSPHRASE,
TEST_EMAIL, TEST_EMAIL,
REPORTLEVEL, REPORTLEVEL,
HEXADECIMAL,
#ifdef GMMS #ifdef GMMS
USE_GMMS, USE_GMMS,
GMMS_VERBOSITY, GMMS_VERBOSITY,

View File

@ -66,6 +66,8 @@
#include "fco/twfactory.h" #include "fco/twfactory.h"
#include "fco/fcospeclist.h" // cFCOSpecList #include "fco/fcospeclist.h" // cFCOSpecList
#include "fco/fcopropdisplayer.h" #include "fco/fcopropdisplayer.h"
#include "fco/signature.h"
#include <set> #include <set>
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -118,6 +120,9 @@ static void InitCmdLineCommon(cCmdLineParser& parser)
// unattended operation // unattended operation
parser.AddArg(cTWPrintCmdLine::PASSPHRASE, TSTRING(_T("P")), TSTRING(_T("passphrase")), cCmdLineParser::PARAM_ONE); parser.AddArg(cTWPrintCmdLine::PASSPHRASE, TSTRING(_T("P")), TSTRING(_T("passphrase")), cCmdLineParser::PARAM_ONE);
parser.AddArg(cTWPrintCmdLine::HEXADECIMAL, TSTRING(_T("h")), TSTRING(_T("hexadecimal")), cCmdLineParser::PARAM_NONE);
// the paramters to the command line ... for now, this will take "many", even though in some // the paramters to the command line ... for now, this will take "many", even though in some
// modes, this is not valid to do... // modes, this is not valid to do...
@ -276,6 +281,9 @@ static void FillOutCmdLineInfo(cTWPrintModeCommon* pModeInfo, const cCmdLinePars
ASSERT(iter.NumParams() > 0); // should be caught by cmd line parser ASSERT(iter.NumParams() > 0); // should be caught by cmd line parser
pModeInfo->mSiteKeyFile = iter.ParamAt(0); pModeInfo->mSiteKeyFile = iter.ParamAt(0);
break; break;
case cTWPrintCmdLine::HEXADECIMAL:
cArchiveSigGen::SetHex(true);
break;
case cTWPrintCmdLine::PASSPHRASE: case cTWPrintCmdLine::PASSPHRASE:
{ {
// this bites! I have to make sure it is a narrow char string // this bites! I have to make sure it is a narrow char string

View File

@ -89,6 +89,7 @@ public:
PASSPHRASE, PASSPHRASE,
REPORTLEVEL, REPORTLEVEL,
HEXADECIMAL,
PARAMS, // the final parameters PARAMS, // the final parameters

View File

@ -56,6 +56,7 @@ TSS_BeginStringtable( cTWPrint )
_T("Print Database mode:\n") _T("Print Database mode:\n")
_T(" -m d --print-dbfile\n") _T(" -m d --print-dbfile\n")
_T(" -v --verbose\n") _T(" -v --verbose\n")
_T(" -h --hexadecimal\n")
_T(" -s --silent, --quiet\n") _T(" -s --silent, --quiet\n")
_T(" -c cfgfile --cfgfile cfgfile\n") _T(" -c cfgfile --cfgfile cfgfile\n")
_T(" -d database --dbfile database\n") _T(" -d database --dbfile database\n")
@ -70,6 +71,7 @@ TSS_BeginStringtable( cTWPrint )
_T("Print Report mode:\n") _T("Print Report mode:\n")
_T(" -m r --print-report\n") _T(" -m r --print-report\n")
_T(" -v --verbose\n") _T(" -v --verbose\n")
_T(" -h --hexadecimal\n")
_T(" -s --silent, --quiet\n") _T(" -s --silent, --quiet\n")
_T(" -c cfgfile --cfgfile cfgfile\n") _T(" -c cfgfile --cfgfile cfgfile\n")
_T(" -r report --twrfile report\n") _T(" -r report --twrfile report\n")