Mercurial > public > ostc_companion
view o3pack.cpp @ 1:0b3630a29ad8
Initial version based on previous repository.
Project was ported to QT6 and in now cmake based.
| author | Ideenmodellierer <tiefenrauscher@web.de> |
|---|---|
| date | Thu, 27 Nov 2025 18:40:28 +0100 |
| parents | |
| children |
line wrap: on
line source
#include <QApplication> #include <QDir> #include <QProgressBar> #include <QProgressDialog> #include <QtDebug> #include "HexFile.h" ////////////////////////////////////////////////////////////////////////////// static unsigned char frogSecretKey[16] = { 111, 85, 190, 69, 108,254, 242, 19, 231, 49, 248,255, 233, 48, 176,241 }; static unsigned char ostc3SecretKey[16] = { 241,233, 176, 48, 69,111, 190, 85, 255,231, 248, 49, 19,108, 242,254 }; int main(int argc, char *argv[]) { QApplication app(argc, argv); app.processEvents(); //---- Parse parameters -------------------------------------------------- QString in, out; QDir current; bool force = false; bool ostc3 = true; if( argc < 2 ) goto Usage; if( QString(argv[1]).toLower() == "-frog" ) { ostc3 = false; argc--, argv++; } else if( QString(argv[1]).toLower() == "-ostc3" ) { ostc3 = true; argc--, argv++; } in = QDir::cleanPath(current.absoluteFilePath(argv[1])); out = QDir::cleanPath(current.absoluteFilePath(argv[2])); if( argv[2] == QString("-f") && argc >= 3 ) { out = QDir::cleanPath(current.absoluteFilePath(argv[3])); force = true; } //---- Check parameters consistency -------------------------------------- { QFileInfo fi(in); if( ! fi.exists() || ! fi.isReadable() ) { qWarning().nospace() << "Cannot read input file " << in; goto Usage; } } { QFileInfo fo(out); if( fo.exists() ) { if( !force ) { qWarning().nospace() << "File " << out << " exists. Use -f to force overwrite."; goto Usage; } if( !fo.isWritable() ) { qWarning().nospace() << "Cannot write to " << out << ". Protected file ?"; goto Usage; } current.remove(out); } } //---- Load the HEX file ------------------------------------------------- { QProgressBar* progress = new QProgressBar(0); progress->setFormat("Loading %p%"); progress->show(); try { HexFile hex; hex.allocate(0x20000); hex.load(in, progress); hex.sqwiz(0x1E000); char sum[10]; sprintf(sum, "%08X", hex.checksum()); qDebug() << "Checksum " << sum; //---- Save encrypted HEX file ------------------------------------------- progress->setFormat("Saving %p%"); hex.saveEncrypted(out, (ostc3 ? ostc3SecretKey : frogSecretKey), progress); } catch(const char* msg) { qWarning() << "Failed: " << msg; } delete progress; } //---- End -------------------------------------------------------------- return 0; Usage: qWarning() << "Usage:" << endl << " " << QString(app.arguments()[0]).section('/', -1).section('\\',-1) << "[-frog|-ostc3]" << " input.hex [-f] output.hex"; exit(-1); }
