diff --git a/ExtractCargo.cpp b/ExtractCargo.cpp index 115e2b4..3d1398a 100644 --- a/ExtractCargo.cpp +++ b/ExtractCargo.cpp @@ -147,9 +147,10 @@ void ExtractCargo::ExtractingFilesFromCargo() std::cout << dir.string() << std::endl; std::ofstream file(dir, std::ios::binary); - cargoFile.seekg(fh.offset); + XXH64_reset(xxhState, 0); + // Strumień wyciągający if (fh.flag == flag::raw) { @@ -159,6 +160,7 @@ void ExtractCargo::ExtractingFilesFromCargo() std::vector buffer(streamChunk); cargoFile.read(buffer.data(), streamChunk); + XXH64_update(xxhState, buffer.data(), buffer.size()); file.write(reinterpret_cast(buffer.data()), streamChunk); } } @@ -199,11 +201,18 @@ void ExtractCargo::ExtractingFilesFromCargo() rawBuffer = eman.decrypt(buffer); } + XXH64_update(xxhState, rawBuffer.data(), rawBuffer.size()); file.write(reinterpret_cast(rawBuffer.data()), chunkSize); } } file.close(); + + if (XXH64_digest(xxhState) != fh.crc) + { + std::cerr << dir.string() << " Error: Corrupted data integration CRC" << std::endl; + + } } std::cout << "Unpacking complete!" << std::endl;