PEACE

和平

管理

main.cpp

 1 #include <iostream>
 2 #include <fstream>
 3 #include <stdlib.h>
 4 #include <windows.h>
 5 
 6 using namespace std;
 7 
 8 int main ( int argc, char* argv[] ) {
 9     if ( argc != 4 ) {
10         cout << "Usage: ft <File> <Off> <Data>" << endl;
11         return -1;
12     }
13     fstream file ( argv[1], ios::in | ios::out | ios::binary | ios::ate );
14     if ( file.is_open() ) {
15         long long fileSize = static_cast<long long> ( file.tellg() );
16         cout << "Size: " << fileSize << " bytes" << endl;
17         long int yPos = strtol ( argv[2], NULL, 16 );
18         long int yData = strtol ( argv[3], NULL, 16 );
19         unsigned char sData = static_cast<unsigned char> ( yData );
20         if ( yPos < 0 || yPos >= fileSize ) {
21             cout << "Overflow. [0 ~ " << fileSize - 1 << "]" << endl;
22             return -1;
23         }
24         std::ios_base::seekdir sPos = static_cast<std::ios_base::seekdir> ( yPos );
25         file.seekg ( sPos );
26         char oldCbit[8], newCbit[8];
27         itoa ( file.get(), oldCbit, 16 );
28         itoa ( yData, newCbit, 16 );
29         cout << "Data: " << oldCbit << " --> " << newCbit << endl;
30         file.seekg ( sPos );
31         file << sData;
32         file.close();
33         while ( file.is_open() )
34             Sleep ( 1 );
35         cout << "Tampering successfully." << endl;
36         return 0;
37     } else {
38         cout << "Can not open file." << endl;
39         return -1;
40     }
41 }

附件1

posted on 2019-05-15 14:39  614616185  阅读(166)  评论(0编辑  收藏  举报