/** * @file shred.h * @brief shred drive * @author hendrik schutter * @date 03.05.2020 */ #ifndef SHRED_H_ #define SHRED_H_ #include "reHDD.h" #include #include #include #include #include #include #define CHUNK_SIZE 1024*1024*2 //amount of bytes that are overwritten at once #define SHRED_ITERATIONS 3 //overwrite the drive multiple times, last time with zeros //#define DEMO_DRIVE_SIZE 1024*1024*256 // 256MB typedef int fileDescriptor; class Shred { protected: public: Shred(); ~Shred(); int shredDrive(Drive* drive, int* ipSignalFd); private: fileDescriptor randomSrcFileDiscr; fileDescriptor driveFileDiscr; unsigned char caChunk[CHUNK_SIZE]; unsigned long ulDriveByteSize; unsigned long ulDriveByteOverallCount = 0; //all bytes shredded in all iterations + checking -> used for progress calculation double d32Percent = 0.0; double d32TmpPercent = 0.0; inline double calcProgress(); int iRewindDrive(fileDescriptor file); unsigned long getDriveSizeInBytes(fileDescriptor file); unsigned int uiCalcChecksum(fileDescriptor file, Drive* drive, int* ipSignalFd); void cleanup(); }; #endif // SHRED_H_