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
-M --email-report
-t \fR{ 0|1|2|3|4 }\fP --email-report-level \fR{ 0|1|2|3|4 }\fP
-h --hexadecimal
.TE
.RI "[ " object1 " [ " object2... " ]]"
.RE
@ -369,6 +370,9 @@ EMAILREPORTLEVEL variable in the configuration file. \fIlevel\fR must
be a number from 0\ to\ 4.
Valid only with (\fB\(hyM\fP).
.TP
.BR \(hyh ", " --hexadecimal
Display hash values as hexadecimal in email reports
.TP
.RI "[ " object1 " [ " object2... " ]]"
List of files and directories that should be integrity checked.
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
-v --verbose
-s --silent\fR,\fP --quiet
-h --hexadecimal
-c \fIcfgfile\fP --cfgfile \fIcfgfile\fP
-r \fIreport\fP --twrfile \fIreport\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
Silent output mode. Mutually exclusive with (\fB\(hyv\fR).
.TP
.BR \(hyh ", " --hexadecimal
Display hash values as hexadecimal.
.TP
.BI \(hyc " cfgfile\fR, " --cfgfile " cfgfile"
Use the specified configuration file.
.TP
@ -92,6 +96,7 @@ lbw(1.2i) lb.
-m d --print-dbfile
-v --verbose
-s --silent\fR,\fP --quiet
-h --hexadecimal
-c \fIcfgfile\fP --cfgfile \fIcfgfile\fP
-d \fIdatabase\fP --dbfile \fIdatabase\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
Silent output mode. Mutually exclusive with (\fB\(hyv\fR).
.TP
.BR \(hyh ", " --hexadecimal
Display hash values as hexadecimal.
.TP
.BI \(hyc " cfgfile\fR, " --cfgfile " cfgfile"
Use the specified configuration file.
.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;
}
bool cArchiveSigGen::mHex = false;
void cArchiveSigGen::AddSig( iSignature* pSig )
{
@ -129,6 +130,16 @@ void cArchiveSigGen::CalculateSignatures( cArchive& a )
mSigList[i]->Finit();
}
bool cArchiveSigGen::Hex()
{
return mHex;
}
void cArchiveSigGen::SetHex(bool hex)
{
mHex = hex;
}
///////////////////////////////////////////////////////////////////////////////
// btob64 -- convert arbitrary bits to base 64 string
//
@ -399,6 +410,9 @@ void cCRC32Signature::Finit()
// mCRC
TSTRING cCRC32Signature::AsString() const
{
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret;
char *ps_signature;
char buf[100];
@ -505,6 +519,9 @@ void cMD5Signature::Finit()
// AsString -- Converts to Base64 representation and returns a TSTRING
TSTRING cMD5Signature::AsString() const
{
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret;
char buf[24];
int length;
@ -626,6 +643,9 @@ void cSHASignature::Finit()
#ifdef HAVE_OPENSSL_SHA_H
TSTRING cSHASignature::AsString(void) const
{
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret;
char* ps_signature;
char buf[100];
@ -704,6 +724,9 @@ bool cSHASignature::IsEqual(const iSignature& rhs) const
TSTRING cSHASignature::AsString(void) const
{
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret;
char* ps_signature;
char buf[100];
@ -812,6 +835,9 @@ void cHAVALSignature::Finit()
// AsString -- Returns Base64 representation of mSignature in a TSTRING
TSTRING cHAVALSignature::AsString() const
{
if (cArchiveSigGen::Hex())
return AsStringHex();
TSTRING ret;
char buf[24];
int length;

View File

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

View File

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

View File

@ -66,6 +66,7 @@
#include <set>
#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 "fco/signature.h"
#include "fco/genreswitcher.h"
#include "generatedb.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::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::HEXADECIMAL, TSTRING(_T("h")), TSTRING(_T("hexadecimal")), cCmdLineParser::PARAM_NONE);
// multiple levels of reporting
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::GMMS_VERBOSITY, TSTRING(_T("b")), TSTRING(_T("gmms-verbosity")), cCmdLineParser::PARAM_ONE);
#endif
// mutual exclusion...
// 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);
mpData->mGenreName = iter.ParamAt(0);
break;
case cTWCmdLine::HEXADECIMAL:
cArchiveSigGen::SetHex(true);
break;
case cTWCmdLine::PARAMS:
{
// pack all of these onto the files to check list...

View File

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

View File

@ -66,6 +66,8 @@
#include "fco/twfactory.h"
#include "fco/fcospeclist.h" // cFCOSpecList
#include "fco/fcopropdisplayer.h"
#include "fco/signature.h"
#include <set>
///////////////////////////////////////////////////////////////////////////////
@ -118,6 +120,9 @@ static void InitCmdLineCommon(cCmdLineParser& parser)
// unattended operation
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
// 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
pModeInfo->mSiteKeyFile = iter.ParamAt(0);
break;
case cTWPrintCmdLine::HEXADECIMAL:
cArchiveSigGen::SetHex(true);
break;
case cTWPrintCmdLine::PASSPHRASE:
{
// this bites! I have to make sure it is a narrow char string

View File

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

View File

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