Compare commits

...

3 Commits

Author SHA1 Message Date
Syping ad13b411d1 improve Start End output 2020-10-25 19:16:08 +01:00
Syping 1523aff981 Fix 2x return 2020-10-25 19:07:36 +01:00
Syping 74f4478c32 show partial bruteforce 2020-10-25 17:30:29 +01:00
5 changed files with 11 additions and 11 deletions

View File

@ -20,7 +20,7 @@
#include <QTextStream>
#include "brutethread.h"
brutethread::brutethread(const QByteArray &fileContent, quint64 length, QVector<checksum*> checksum_vector, QVector<QByteArray> checksums, bool strictMatch) : checksum_vector(checksum_vector), checksums(checksums), fileContent(fileContent), strictMatch(strictMatch), length(length) {}
brutethread::brutethread(const QByteArray &fileContent, quint64 length, quint64 begin, QVector<checksum*> checksum_vector, QVector<QByteArray> checksums, bool strictMatch) : checksum_vector(checksum_vector), checksums(checksums), fileContent(fileContent), strictMatch(strictMatch), length(length), begin(begin) {}
void brutethread::run()
{
@ -31,11 +31,11 @@ void brutethread::run()
const QByteArray generatedHash = generator->generateChecksum(content);
for (const QByteArray &hash : checksums) {
if (!strictMatch && generatedHash.left(hash.length()) == hash) {
QTextStream(stdout) << "MATCH: " << generator->formatName() << " Checksum " << hash << " Start " << seek << " End " << seek+length << Qt::endl;
QTextStream(stdout) << "MATCH: " << generator->formatName() << " Checksum " << hash << " Start " << begin+seek << " End " << begin+seek+length << Qt::endl;
emit matched();
}
else if (strictMatch && generatedHash.length() == hash.length() && generatedHash == hash) {
QTextStream(stdout) << "MATCH: " << generator->formatName() << " Checksum " << hash << " Start " << seek << " End " << seek+length << Qt::endl;
QTextStream(stdout) << "MATCH: " << generator->formatName() << " Checksum " << hash << " Start " << begin+seek << " End " << begin+seek+length << Qt::endl;
emit matched();
}
}

View File

@ -33,7 +33,7 @@ class brutethread : public QThread
{
Q_OBJECT
public:
explicit brutethread(const QByteArray &fileContent, quint64 length, QVector<checksum*> checksum_vector, QVector<QByteArray> checksums, bool strictMatch);
explicit brutethread(const QByteArray &fileContent, quint64 length, quint64 begin, QVector<checksum*> checksum_vector, QVector<QByteArray> checksums, bool strictMatch);
void run();
private:
@ -42,6 +42,7 @@ private:
QByteArray fileContent;
bool strictMatch;
quint64 length;
quint64 begin;
signals:
void matched();

View File

@ -44,13 +44,11 @@ QByteArray checksum_lib::generateChecksum(const QByteArray &data)
const u_int32_t hash = hash32Func(udata, size);
free(udata);
return QByteArray::number((quint32)hash, 16);
return QByteArray();
}
else {
const u_int64_t hash = hash64Func(udata, size);
free(udata);
return QByteArray::number((quint64)hash, 16);
return QByteArray();
}
}

View File

@ -36,7 +36,7 @@ int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
a.setApplicationName("checkbrute");
a.setApplicationVersion("0.3.1");
a.setApplicationVersion("0.3.3");
QCommandLineParser commandLineParser;
commandLineParser.addHelpOption();

View File

@ -142,9 +142,10 @@ mainthread::mainthread(const QString &bruteforceFile, const QString &checksumsFi
}
// Clear unneeded bytes
if (begin != 0 && end != (quint64)fileContent.size()) {
if (begin != 0 || end != (quint64)fileContent.size()) {
fileContent = fileContent.mid(begin, end - begin);
fileContent.squeeze();
QTextStream(stderr) << "INFO: Bruteforce Start " << begin << " End " << end << Qt::endl;
}
if (!lenghts_str.isEmpty()) {
@ -267,7 +268,7 @@ void mainthread::run()
if (threads >= mthreads)
eventLoop.exec();
QTextStream(stderr) << "[" << std::distance(lengths.constBegin(), it) + 1 << "/" << lengthsCount << "] [" << min << "/" << max << "] Bruteforcing...\r";
brutethread *thread = new brutethread(fileContent, min, checksum_vector, checksums, strictHash);
brutethread *thread = new brutethread(fileContent, min, begin, checksum_vector, checksums, strictHash);
QObject::connect(thread, &QThread::finished, this, &mainthread::threadFinished);
QObject::connect(thread, &brutethread::matched, this, &mainthread::matched);
thread->start(QThread::LowPriority);
@ -278,7 +279,7 @@ void mainthread::run()
if (threads >= mthreads)
eventLoop.exec();
QTextStream(stderr) << "[" << std::distance(lengths.constBegin(), it) + 1 << "/" << lengthsCount << "] [" << clength << "/" << max << "] Bruteforcing...\r";
brutethread *thread = new brutethread(fileContent, clength, checksum_vector, checksums, strictHash);
brutethread *thread = new brutethread(fileContent, clength, begin, checksum_vector, checksums, strictHash);
QObject::connect(thread, &QThread::finished, this, &mainthread::threadFinished);
QObject::connect(thread, &brutethread::matched, this, &mainthread::matched);
thread->start(QThread::LowPriority);
@ -290,7 +291,7 @@ void mainthread::run()
if (threads >= mthreads)
eventLoop.exec();
QTextStream(stderr) << "[" << std::distance(lengths.constBegin(), it) + 1 << "/" << lengthsCount << "] [" << clength << "/" << max << "] Bruteforcing...\r";
brutethread *thread = new brutethread(fileContent, clength, checksum_vector, checksums, strictHash);
brutethread *thread = new brutethread(fileContent, clength, begin, checksum_vector, checksums, strictHash);
QObject::connect(thread, &QThread::finished, this, &mainthread::threadFinished);
QObject::connect(thread, &brutethread::matched, this, &mainthread::matched);
thread->start(QThread::LowPriority);