Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <stdio.h>
- using namespace std;
- BYTE buffer[65535], key[] = "BitDefender Test\0";
- DWORD bRead, bWrite, size, seed, functions[] = { 1, 2, 3, 1, 4 };
- DWORD getRandom() {
- DWORD nr = seed;
- nr *= 214013;
- nr += 2531011;
- seed = nr;
- nr >>= 16;
- nr &= 32767;
- return nr;
- }
- BYTE ROR(BYTE ch, BYTE key) {
- return (ch >> key) | (ch << (8 - key));
- }
- BYTE f1(BYTE ch, DWORD keyIndex, BYTE prec) {
- return ROR(ch, (key[keyIndex] + prec) % 8);
- }
- BYTE f2(BYTE ch, DWORD keyIndex, BYTE prec) {
- return (ch ^ key[keyIndex]) - prec;
- }
- BYTE f3(BYTE ch, DWORD keyIndex, BYTE prec) {
- return (ch - key[keyIndex]) + prec;
- }
- BYTE f4(BYTE ch, DWORD keyIndex, BYTE prec) {
- return (ch - key[keyIndex]) ^ prec;
- }
- int main() {
- BYTE prec;
- DWORD i, random1, random2, aux, keyIndex;
- HANDLE hFileR, hFileW;
- hFileR = CreateFile("out.txt", GENERIC_READ, 0, 0, 3, 0, 0);
- size = GetFileSize(hFileR, 0);
- ReadFile(hFileR, buffer, size, &bRead, 0);
- buffer[size] = 0;
- CloseHandle(hFileR);
- for (i = 0; i < 20; ++i) {
- random1 = getRandom() % 5;
- random2 = getRandom() % 5;
- aux = functions[random1];
- functions[random1] = functions[random2];
- functions[random2] = aux;
- }
- for (i = 0; i < 5; ++i)
- printf("%d ", functions[i]);
- // ordinea functiilor pentru decriptare: 1 4 2 3 1
- keyIndex = 0;
- for (i = size; i > 0; --i) {
- prec = buffer[i - 1];
- buffer[i] = f1(buffer[i], keyIndex, prec);
- buffer[i] = f3(buffer[i], keyIndex, prec);
- buffer[i] = f2(buffer[i], keyIndex, prec);
- buffer[i] = f4(buffer[i], keyIndex, prec);
- buffer[i] = f1(buffer[i], keyIndex, prec);
- ++keyIndex;
- if (!key[keyIndex])
- keyIndex = 0;
- }
- prec = 0;
- buffer[i] = f1(buffer[i], keyIndex, prec);
- buffer[i] = f3(buffer[i], keyIndex, prec);
- buffer[i] = f2(buffer[i], keyIndex, prec);
- buffer[i] = f4(buffer[i], keyIndex, prec);
- buffer[i] = f1(buffer[i], keyIndex, prec);
- hFileW = CreateFile("in.txt", GENERIC_WRITE, 0, 0, 2, 0, 0);
- WriteFile(hFileW, buffer, size, 0, 0);
- CloseHandle(hFileW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement