á¡áá áºá¡áá±á«á·áááŸááá² á ááá¯ááºááẠá ááœáá·áºááœáá·áºáááºážáááºážááŒá±á¬áááẠ(áá±á¬ááºážááá¯ááºáá¬á ááááºáá±á¬á·áá¡á¬ážáá±á¬ááºážáá«áá°ážá ááá¯ážááá¯ážáá¬ážáá¬ážááŒá±á¬ááááº) áá²á· client áá áºáá¯ááá± áá¯á¶áá áºáá¯á¶ááᯠáá¬áá¬áá áºáá¯áá®ááᯠááŒá±á¬ááºážáá±ážáá²á· áááá¯ááááºáá áºáá¯ááᯠprint áá¯ááºááá¯á· á áááºáá°ážáá±á«áºáá¬áááºá ááá¯ážááŸááºážáá±á¬ááºááẠááá¯ááºáá¬áž? áá±á¬ááºážááŒá®á á¡ááœá±á·á¡ááŒá¯á¶ááŸááá²á· áááá¯ááááºáá¬áá áºáá±á¬ááºá¡ááœááºááá±á¬á· áá®ááá¯áá«áá²á á¡ááŒá±á¡áá±áá»á¬ážááẠááá¯ážááŸááºážááẠ- ááŒááºáá¡ááœá²á·á¡á ááºáž á á¬ááŒáá·áºááá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážáááŒá¯áá«ááŸáá·áºá áá°á¡áá áááºážááẠá¡áááºážáááºááá¯á ááŸá¯ááºááœá±ážáá±á¬áºáááºážá áááºážááᯠááœááºáá»ááºááŒá®áž á¥ááá¬áá»á¬ážááᯠááŸá¬ááœá±ááẠááá¯á¡ááºáá±á¬ááŒá±á¬áá·áºá áá±á¬ááºážá áœá¬á ááá¯áá²á·ááá¯á·áá±á¬ á¡áá¯ááºá¡ááá¯ááºáá áºáá¯ááŒá áºáááºá áá®áá¬áááºá áá«á·á¡ááœááºáá²ááá¯á· áá¯á¶ážááŒááºááá¯ááºáááºá ááá¯á·á¡ááŒááºá áááºá¡áá°á¡áá®ááá¯á¡ááºáá«á ááá¯áááºáá±á«áºááœáẠáááºááá¯ááºá á±ááẠáá¯ááºá¡áá¯á¶á¡áá±á¬ááºááŸáááẠááá¯áá¬ážáá«áááºá ááááŠážá áœá¬á áá»áœááºá¯ááºááẠWindows ááá¯áá®ááœááºáá±áá±á¬ OS ááᯠFTP ááá¯ááŒáá·áºáá²á·áááºá FTP á á¡á¬ážáá¬áá»ááºááŸá¬ áá¯á¶áá áºáá¯á¶áá¬áá áááºááá·áºááá¯ááºááá¯áááᯠááœáŸá²ááŒá±á¬ááºážáá±ážááá¯ááºáááºá Filezilla Server ááá¯áá±á«ááºážáá¯ááºááœá²ááŒá®ážáá±á¬ááºá á á¬áááºááŒááºáž/áá±ážáá¬ážááŒááºážá¡ááœáẠáááºážááœáŸááºáá áºáá¯áá»áŸáá±ááŒá®áž á¡áá¯á¶ážááŒá¯áá°áá áºáŠážá¡á¬áž á áá¬ážááŸááºáá áºáá¯áááºáá®ážáᬠFilezilla Client ááá¯áá»áááºáááºáááºááŒáá¯ážá á¬ážáá²á·áá¬ááœáẠá¡áá¬á¡á¬ážáá¯á¶ážá¡áááºááŒá±ááœá¬ážáá²á·áááºá áá« C/C++ ááœáẠááá¯ážááŸááºážáá±á¬ áá¯ááºááá°áá¬áá áºáá¯ááᯠáááºáá®ážáá²á·áááº
#include <iostream>
void main()
{
FILE* fs;
fopen_s(&fs, "1.txt", "w");
if (fs)
{
fwrite("userrnpasswordrnsend D:\share.txtrnbye", 1, sizeof("userrnpasswordrnsend D:\share.txtrnbye"), fs);
fwrite("00", 1, sizeof("00"), fs);
fclose(fs);
}
system("ftp -s:1.txt 127.0.0.1");
}
áá»áœááºá¯ááºáááŸááºáá¬ááºááẠáá»áœááºá¯ááºá¡á¬áž áááºáá±á¬ááºááŸá¯áá±ážáááºááá¯áá«áá ááá¯á·áá±á¬ááºááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠlocalhost ááœáẠá¡áá¯ááºáá¯ááºááŒá®áž ááœááºáááºáá±á«áºááœáẠáá¯ááºááœáŸáá·áºááá·áºá¡áá«á áá±ážááá¯á·ááá·áºááá¯ááºážááœáẠá¡ááŸá¬ážáá áºáᯠááŒá áºááœá¬ážáá²á·áááºá áá®áá±áá¬ááŸá¬ á¡áááºááŒá±áá¬á a) á¡ááá¯áá»á¯áẠb) client áá áºáá¯ááᯠinstall áá¯ááºááẠáááá¯á¡ááºáá² Microsoft á០ftp á¡ááœáẠáá«ááŒá®ážáá¬áž tool ááᯠá¡áá¯á¶ážááŒá¯áá«á áá»áœááºáá±á¬á·áºá¡ááŒááºá¡ááá±á¬á· áááºážááᯠáááá¯ááááºáá»á¬ážááŸáá·áº á¡á áááºá¡ááá¯ááºážáá»á¬ážááŸáá áºááá·áº activated ááŒá áºááá«áááºá áá®áááºážáááºážáá²á· ááŒá¿áá¬á áá¬áá²ááá¯áᬠá¡ááŒá±ááŸá¬ááŒá®áž comment ááŸá¬ áá±ážáá±ážááẠá¡áááºážáá±á¬ááºážáá«áááºá
ááá¯áááºáá»á¬ážá áœá¬ááœáẠá¡ááŒá±ááá¯áááœá±á·áááŒáá·áº á€áá¯ááºááá¯áá¬ážáá²á·áᬠsocket ááœááºáááºáá»á¬ážá¡ááœáẠá¡ááºáá¬áá±á·á áºááᯠá¡áá¯á¶ážááŒá¯ááẠáá¯á¶ážááŒááºáá²á·áááºá áá»áœááºá¯ááºááẠá¡ááŒá¬ážáááá¯ááááºáá áºáá¯ááá¯á· chars áá»á¬ážááᯠááŒááºáááºážááŒááºážá¡ááœá±á·á¡ááŒá¯á¶ááŸáááŒá®ážáá¬ážááŒá áºáááºá á áá¬ážáá ááºá áááºáá°ááá¯á·áá±á¬ááºáá±ážá¡ááœáŸá¬ááŸáá·áºáááºáááºááá·áºá¡áááºážááœáẠTanenbaumá ááœááºáá»á°áá¬ááœááºáááºáá»á¬ážá០áááºáááºááá¯ááºáááºá "áá±á¬ááºáááºáá»á¬ážá áœá¬ - áá¬áá¬áá áºáá¯" áá»áááºáááºááŸá¯á¡ááœááºááá¯ááºáá±á¬áºáááºážá áá±á¬ááºáááºááŸáá·áºáá¬áá¬áá áºáá¯áá¥ááá¬áá áºáá¯ááŸááá±á¬áºáááºáž "áá±á¬ááºáááºáá áºáᯠ- áá¬áá¬áá áºáá¯" áá¬ááŸááááºá áá¯ááºááœáŸáá·áºááŸá¯ááẠá¡ááºáá¬áááºáá±á«áºááœáẠááŸááá±áá±á¬ááŒá±á¬áá·áºá áááºááẠáá±áá¬ááᯠáá áºáááºážáááºážááŒáá·áº á á¬ááŸááºáá¬ážááẠááá¯á¡ááºáááºá áááºážá¡ááœááºá ááá±á¬áẠcipher ááᯠFeistel ááœááºáááºááᯠá¡áá¯á¶ážááŒá¯áááºá ááá¯á·á¡ááŒáẠáá¬áá¬ááœáẠáá±á¬ááºáááºáá»á¬ážá áœá¬ (Client áá áºáá¯áááºááá¯áá±á¬) client áá»á¬ážááŒá¯áá¯ááºááẠááá¯á¡ááºáá«áááºá ááá¯ááá¯á·áá¯ááºáá±á¬ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠThreads ááá¯á¡áá¯á¶ážááŒá¯áááºááŒá áºááŒá®ážá áá¯ááºááœáŸáá·áºááŸá¯á¡ááœáẠáá¯ááºáá¯á¶ááẠclient ááŸá ááááºáá¯á¶áá áºáá¯á¶ááá¯áá°áááºááŒá áºááŒá®ážá áá¯ááºááŸááºááŒá®áž áá¬áá¬ááá¯á· áá±ážááá¯á·áááºááŒá áºááŒá®ážá áááºážááá¯ááœáá·áºáááºá¡ááœáẠáá°áááºážáááá¯ááááºááŸáá áºááá·áº áááºáá¬ážááŒááºáá±á«áºááœáẠáá»ááºáá»ááºážááŒáááœá¬ážáááºááŒá áºáááºá .tga áá¯á¶áá»á¬ážá
áá¬áá¬áá¯ááº-
#include <iostream>
#include <WinSock.h>
#pragma comment (lib,"WS2_32.lib")
#include <fstream>
#include <algorithm>
#include <string>
#include <iterator>
#include <vector>
void error(const char* msg)
{
//perror(msg);
std::cout<<'n'<<WSAGetLastError();
WSACleanup();
std::cin.ignore();
exit(1);
}
void bzero(char*buf, int l)
{
for (int i = 0; i < l; i++)
buf[i] = '';
}
struct arg_s
{
unsigned char* buffer2;
bool exit;
};
char** buffer;
struct arg_sa
{
struct arg_s* lalk;
int current;
};
#define type struct arg_sa
int sockfd, * newsockfd;//ÑлÑÑаÑÑОй О ЌаÑÑОв клОеМÑÑкОÑ
ÑПкеÑПв
int buflen2 = 10292000;//ЌакÑОЌалÑÐœÑй ÑÐ°Ð·ÐŒÐµÑ ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ Ð² байÑаÑ
ÐŽÐ»Ñ RGBA*Width*Height
struct sockaddr_in *cli_addr;
int* clilen;
int currentclient,cc;//ÑÑ-ÐºÐ»ÐžÐµÐœÑ Ð¿ÐŸ ÑÑеÑÑ(ÐŽÐ»Ñ Ð·Ð°Ð¿ÐžÑО ОМкÑеЌеМÑа ОЌеМО Ñайла клОеМÑа ОзПбÑажеМОÑ)
typedef unsigned long long uint64_t;
typedef unsigned int uint32_t;
#define N 8//ÑÐ°Ð·ÐŒÐµÑ Ð±Ð»ÐŸÐºÐ°
#define F32 0xFFFFFFFF
uint32_t RK[N];//ÑаÑМЎПвÑе клÑÑО
#define size64 sizeof(uint64_t)
#define ROR(x,n,xsize)((x>>n)|(x<<(xsize-n)))
#define ROL(x,n,xsize)((x<<n)|(x>>(xsize-n)))
#define RKEY(r)((ROR(K,r*3,size64*8))&F32)
const uint64_t K = 0x96EA704CFB1CF671;//клÑÑ ÑОÑÑПваМОÑ
struct hostent* server;
uint32_t F(uint32_t subblk, uint32_t key)
{
return subblk + key;//ÑÑМкÑÐžÑ ÑОÑÑПваМОÑ
}
void createRoundKeys()
{
for (int i = 0; i < N; i++)
RK[i] = (ROR(K, i * 8, size64 * 8)) & F32;
}
uint64_t decrypt(uint64_t c_block)//ÑаÑÑОÑÑПвка блПкПв ÑеÑÑÑ ÑейÑÑелÑ
{
//select subblocks
uint32_t left = (c_block >> 32) & F32;
uint32_t right = c_block & F32;
uint32_t left_, right_;//subblock in the end of round
for (int r = N - 1; r >= 0; r--)
{
uint32_t fk = F(left, RK[r]);
left_ = left;
right_ = right ^ fk;
if (r > 0)//swap places to next round
{
left = right_;
right = left_;
}
else //last round not swap
{
left = left_;
right = right_;
}
}
//collect subblock in block
uint64_t block = left;
block = (block << 32) | (right & F32);
return block;
}
void session_(LPVOID args)//ÑÑМкÑÐžÑ Ð¿ÐŸÑПка Ð»Ñ ÐºÐ°Ð¶ÐŽÐŸÐ³ÐŸ клОеМÑа
{
int current = currentclient++;
bzero((char*)&(cli_addr[current]), sizeof(&(cli_addr[current])));
newsockfd[current] = accept(sockfd, (struct sockaddr*)&(cli_addr[current]), &(clilen[current]));
if (newsockfd[current] < 0)
{
error("Error on acceptn");
}
char* s = new char[100];
int n = recv(newsockfd[current], s, 100, 0);
int buflen2 = atoi(s);//пПлÑÑаеЌ ÑОÑлП байÑПв ОзПбÑажеМОÑ
FILE* f;
std::string name = "Screen";
cc++;
_itoa_s(cc, s, 100, 10);
name += s;
name += ".tga";
fopen_s(&f,name.c_str(), "wb");//ÑПзЎаеЌ Ñайл ОзПбÑÐ°Ð¶ÐµÐœÐžÑ Ñ ÑвелОÑОваеÑОЌÑÑ ÐœÐ° 1 ОЌеМеЌ, ÑÑÐŸÐ±Ñ ÐœÐµ пеÑезапОÑаÑÑ
if (f != NULL)
{
unsigned char tgaHeader[12] = { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
unsigned char header[6];
n = recv(newsockfd[current], buffer[current], sizeof(tgaHeader), 0);
fwrite((unsigned char*)buffer[current], 1, sizeof(tgaHeader), f);
bzero(buffer[current], buflen2);
n = recv(newsockfd[current], buffer[current],sizeof(header), 0);
fwrite((unsigned char*)buffer[current], 1, sizeof(header), f);//запОÑалО Ñ
ОЎеÑÑ
bzero(buffer[current], buflen2);
n = recv(newsockfd[current], buffer[current], buflen2, 0);//пПлÑÑОлО байÑÑ ÑаЌПгП ОзПбÑажеМОÑ
//
//ÑаÑÑОÑÑПвка байÑПв
createRoundKeys();
unsigned long long id;
std::vector<uint64_t>* plaintext = new std::vector<uint64_t>();
int i = 0;
while (i<buflen2)
{
memcpy(&id, (buffer[current]) + i, N);
plaintext->push_back(decrypt(id));
i += 8;
}
std::cout << "i=" << i << std::endl;
i = 0;
char str_[N + 1];
memset(str_, 0, N);
str_[N] = '';
for (std::vector<uint64_t>::iterator it = plaintext->begin(); it != plaintext->end(); ++it)
{
memcpy(str_, &*it, N);
fwrite((unsigned char*)str_, sizeof(unsigned char), N/*strlen(str_)*/, f);
i += 8;
}
std::cout << "i=" << i << std::endl;
//ÐºÐŸÐœÐµÑ ÑаÑОÑÑПвкО байÑПв
//fwrite((unsigned char*)buffer[current], sizeof(char), buflen2, f);
fclose(f);
}
system(name.c_str());//ПÑкÑÑваеЌ ОзПбÑажеМОе *.tga вÑÑÑПеММÑÐŒ ÑеЎакÑПÑПЌ
}
int main()
{
cc = 0;
WSADATA ws = { 0 };
if (WSAStartup(MAKEWORD(2, 2), &ws) == 0)
{
currentclient = 0;
int maxclients = 2;//ЌакÑОЌалÑМПе ÑОÑлП клОеМÑПв
cli_addr = new struct sockaddr_in[maxclients];
clilen = new int[maxclients];
buffer = new char* [maxclients];
for (int i = 0; i < maxclients; i++)
{
clilen[i] = sizeof(cli_addr[i]);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);//tcp ÑПкеÑ
if (sockfd < 0)
error("ERROR opening socket");
struct sockaddr_in serv_addr;
bzero((char*)&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
int port = 30000;//пПÑÑ
serv_addr.sin_port = htons(port);
if (bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
error("ERROR on binding");
if (listen(sockfd, 10) < 0)
error("ERROR listen");
HANDLE* thread;//ЌаÑÑОв пПÑПкПв ÐŽÐ»Ñ ÐºÐ°Ð¶ÐŽÐŸÐ³ÐŸ клОеМÑа ПÑЎелÑÐœÑй
struct arg_sa* args;
while (true)
{
newsockfd = new int[maxclients];
thread = (HANDLE*)malloc(sizeof(HANDLE) * maxclients);
args = new struct arg_sa[maxclients];
for (int i = 0; i < maxclients; i++)
{
args[i].lalk = new struct arg_s();
buffer[i] = new char[buflen2];
}
int i = -1;
while (++i < maxclients)
{
Sleep(1);
args[i].current = i;
args[i].lalk->exit = false;
thread[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)(session_), args, 0, 0);
}
for (int i = 0; i < maxclients; i++)
WaitForSingleObject(thread[i], INFINITE);//жЎеЌ завеÑÑÐµÐœÐžÑ Ð²ÑеÑ
пПÑПкПв
i = -1;
while (++i < maxclients)
{
shutdown(newsockfd[i], 0);
TerminateThread(thread[i], 0);
}
//delete[] newsockfd;
//free(thread);
currentclient = 0;
for (int i = 0; i < maxclients; i++)
{
//delete args[i].lalk;
//delete[] args[i].lalk->buffer;
}
//delete[] args;
}
shutdown(sockfd, 0);
WSACleanup();
return 0;
}
std::cin.ignore();
}
á¡ááá¯áá»á¯ááºá¡á¬ážááŒáá·áºá áá¬ááááœááºážáááºáá áºáá¯ááœááºá ááá¯ááºážáá»á¬ážááᯠclient áá áºáá¯á á®á¡ááœáẠáááºáá®ážáá¬ážááŒá®áž client áá»á¬ážáá»áááºáááºáááºá¡áá áááºáá¶áááºá á±á¬áá·áºááá¯ááºážáá«á ááá¯á·áá±á¬áẠWaitForSingleObject á¡á¬ážáá¯á¶ážáá»á±á¬áºááœá¬ážáááºá¡áá á á±á¬áá·áºáááºá client áá áºáá¯á á®ááœáẠáááºážáááá¯ááºááá¯áẠsocket ááŸáá·áº áááºážáááá¯ááºááá¯áẠsend buffer ááŸááááºá ááá¯ááá¯áááºááŸá¬á áá¬áá¬áá±á«áºááœáẠM+1 socket áá»á¬ážááŸáááŒá®áž M ááẠclient á¡áá±á¡ááœááºááŒá áºáááºá ááœáŸá²ááŒá±á¬ááºážááŸá¯á¡á¬ážáá¯á¶áž ááŒá®ážá á®ážááŒá®ážáá±á¬ááºá á¡áá¬á¡á¬ážáá¯á¶áž ááŒááºá áááºá
ááᯠclient ááá¯á ááºážá á¬ážáá«á
#include <iostream>
#include <WinSock.h>
#include <vector>
#pragma comment (lib,"WS2_32.lib")
void error(const char* msg)
{
//perror(msg);
std::cout << 'n' << WSAGetLastError();
WSACleanup();
std::cin.ignore();
exit(1);
}
void bzero(char* buf, int l)
{
for (int i = 0; i < l; i++)
buf[i] = '';
}
typedef unsigned long long uint64_t;
typedef unsigned int uint32_t;
#define N 8
#define F32 0xFFFFFFFF
uint32_t RK[N];//ÑаÑМЎПвÑе клÑÑО
#define size64 sizeof(uint64_t)
#define ROR(x,n,xsize)((x>>n)|(x<<(xsize-n)))
#define ROL(x,n,xsize)((x<<n)|(x>>(xsize-n)))
#define RKEY(r)((ROR(K,r*3,size64*8))&F32)
const uint64_t K = 0x96EA704CFB1CF671;//клÑÑ ÑОÑÑПваМОÑ
void createRoundKeys()
{
for (int i = 0; i < N; i++)
RK[i] = (ROR(K, i * 8, size64 * 8)) & F32;
}
uint32_t F(uint32_t subblk, uint32_t key)
{
return subblk + key;//ÑÑМкÑÐžÑ ÑОÑÑПваМОÑ
}
uint64_t encrypt(uint64_t block)//заÑОÑÑПвка блПкПв ÑеÑÑÑ Ð€ÐµÐ¹ÑÑелÑ
{
//select subblocks
uint32_t left = (block >> 32) & F32;
uint32_t right = block & F32;
uint32_t left_, right_;//subblock in the end of round
for (int r = 0; r < N; r++)
{
uint32_t fk = F(left, RK[r]);
left_ = left;
right_ = right ^ fk;
if (r < N - 1)//swap places to next round
{
left = right_;
right = left_;
}
else//last round not swap
{
left = left_;
right = right_;
}
}
//collect subblock in block
uint64_t c_block = left;
c_block = (c_block << 32) | (right & F32);
return c_block;
}
int main()
{
keybd_event(VK_LWIN, 0, 0, 0);
keybd_event('M', 0, 0, 0);
keybd_event('M', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);//ÑÑО ÑÑÑПкО ÑвПÑаÑОваÑÑ Ð²Ñе пÑОлПжеМОÑ
Sleep(1000);//ÑÑÐŸÐ±Ñ ÑЎелаÑÑ ÑкÑОМÑÐŸÑ ÑабПÑегП ÑÑПла
WSADATA ws = { 0 };
if (WSAStartup(MAKEWORD(2, 2), &ws) == 0)
{
int sockfd;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in serv_addr, cli_addr;
bzero((char*)&serv_addr, sizeof(serv_addr));
bzero((char*)&cli_addr, sizeof(cli_addr));
serv_addr.sin_family = AF_INET;
const char* add = "127.0.0.1";//аЎÑÐµÑ ÑеÑвеÑа
serv_addr.sin_addr.s_addr = inet_addr(add);
int port = 30000;//пПÑÑ
serv_addr.sin_port = htons(port);
int servlen = sizeof(serv_addr);
int n = connect(sockfd, (struct sockaddr*)&serv_addr, servlen);
//МОже кПЎ ÐŽÐµÐ»Ð°ÐµÑ ÑкÑОМÑПÑ
HDC ScreenDC = GetDC(0);
HDC MemoryDC = CreateCompatibleDC(ScreenDC);
int ScreenHeight = GetSystemMetrics(SM_CYSCREEN);
int ScreenWidth = GetSystemMetrics(SM_CXSCREEN);
ScreenWidth = ((ScreenWidth - 1) / 4 + 1) * 4;
BITMAPINFO BMI;
BMI.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
BMI.bmiHeader.biWidth = ScreenWidth;
BMI.bmiHeader.biHeight = ScreenHeight;
BMI.bmiHeader.biSizeImage = ScreenWidth * ScreenHeight * 3;
BMI.bmiHeader.biCompression = BI_RGB;
BMI.bmiHeader.biBitCount = 24;
BMI.bmiHeader.biPlanes = 1;
DWORD ScreenshotSize;
ScreenshotSize = BMI.bmiHeader.biSizeImage;
unsigned char* ImageBuffer;
HBITMAP hBitmap = CreateDIBSection(ScreenDC, &BMI, DIB_RGB_COLORS, (void**)&ImageBuffer, 0, 0);
SelectObject(MemoryDC, hBitmap);
BitBlt(MemoryDC, 0, 0, ScreenWidth, ScreenHeight, ScreenDC, 0, 0, SRCCOPY);
DeleteDC(MemoryDC);
ReleaseDC(NULL, ScreenDC);
FILE* sFile = 0;
unsigned char tgaHeader[12] = { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
unsigned char header[6];
unsigned char tempColors = 0;
fopen_s(&sFile, "S.tga", "wb");
if (!sFile) {
exit(1);
}
header[0] = ScreenWidth % 256;
header[1] = ScreenWidth / 256;
header[2] = ScreenHeight % 256;
header[3] = ScreenHeight / 256;
header[4] = BMI.bmiHeader.biBitCount;
header[5] = 0;
fwrite(tgaHeader, 1, sizeof(tgaHeader), sFile);
fwrite(header, sizeof(header), 1, sFile);
//ÐºÐŸÐœÐµÑ Ð·Ð°Ð¿ÐžÑалО ОзПбÑажеМОе в Ñайл
//ÑОÑÑÑеЌ блПкаЌО пПлезМÑÑ ÐœÐ°Ð³ÑÑÐ·ÐºÑ ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ ÐºÑПЌе Ñ
ОЎеÑПв
createRoundKeys();
std::vector<uint64_t>* msg = new std::vector<uint64_t>(),*crpt = new std::vector<uint64_t>();
unsigned long long id;
int i = 0;
while (i < BMI.bmiHeader.biSizeImage)
{
memcpy(&id, (ImageBuffer + i), N);
msg->push_back(id);
i += 8;
}
std::cout << "i=" << i << std::endl;
uint64_t cipher;
i = 0;
char str_[N + 1];
memset(str_, 0, N);
str_[N] = '';
for (std::vector<uint64_t>::iterator it = msg->begin(); it != msg->end(); ++it)
{
cipher = encrypt(*it);
memcpy(str_, &cipher, N);
fwrite((unsigned char*)str_, sizeof(unsigned char), N, sFile);
i += 8;
}
std::cout << "i=" << i << std::endl;
//
//fwrite(ImageBuffer, BMI.bmiHeader.biSizeImage, 1, sFile);
std::cout << BMI.bmiHeader.biSizeImage << std::endl;
fclose(sFile);
DeleteObject(hBitmap);
FILE* f;
fopen_s(&f, "S.tga", "rb");
int count = 0;
if (f != NULL)
{
while (getc(f) != EOF)
count++;//ÑÑОÑаеЌ байÑÑ ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ Ð² ÑÑеÑÑОк ÑÑÐŸÐ±Ñ Ð¿ÐŸÑПЌ пеÑеЎаÑÑ
fclose(f);
}
count -= 18;
std::cout << count<< std::endl;
char* s = new char[100];
_itoa_s(count, s, 100, 10);
n = send(sockfd, s, 100, 0);//пеÑеЎаеЌ ÑÑеÑÑОк
char* buffer = new char[count];
fopen_s(&f, "S.tga", "rb");
size_t bytes;
if (f != NULL)
{
memcpy(buffer, tgaHeader, sizeof(tgaHeader));
n = send(sockfd, buffer, sizeof(tgaHeader), 0);
bzero(buffer, count);
memcpy(buffer, header, sizeof(header));
n = send(sockfd, buffer, sizeof(header), 0);
bzero(buffer, count);//пеÑеЎаеЌ Ñ
ОЎеÑÑ
for(int i=0;i<18;i++)
fgetc(f);
bzero(buffer, count);
bytes = fread(buffer, sizeof(unsigned char), count, f);
n = send(sockfd,buffer, count, 0);//пеÑеЎаеЌ ÑОÑÑПваММÑе байÑÑ ÐžÐ·ÐŸÐ±ÑажеМОÑ
fclose(f);
}
Sleep(1000);
shutdown(sockfd, 0);
WSACleanup();
//system("del S.tga");
delete[] buffer,s;
return 0;
}
//std::cin.ignore();
}
á€áááºááŸá¬ áá¯ááºááŸááºáá¬ážáá±á¬ áá¯á¶ážá áœá²áá°áá¡áá¯ááºá S.tga áááºáá¬ážááŒááºááá¯áẠááá¯ááºáááááºááŒá áºáááºá
áááºážááẠáááºá áºáá±á¬á·áá¯á¶ááŒá áºáááºá
á€áááºááŸá¬ áá¬áá¬ááá¯á· ááŒá±á¬ááºážááœáŸá±á·ááŒá®áž Screen.tga á០áá¯ááºáá¯ááºáá¬ážáá±á¬ ááááºááŒá áºáááºá
áááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºážá áá¯á¶ááŸáẠFeistel ááœááºáááºááẠáá¯ááºááŸááºááŒááºážá¡ááœáẠáááá·áºáá»á±á¬áºáá±á¬áºáááºážá áááºááẠCBC ááŸáá·áº CFB áááºážáááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®ážá áááºážááẠáá»áŸáá¯á·ááŸááºáá¯ááºááŸááºááŒááºážááŒá áºáá±á¬ááºážááŒá áºááá¯ááºáááºá ááá¯ážááá¯ážáá¬ážáá¬ážááŒá±á¬ááá»áŸááºá áá»áœááºá¯ááºáá á áºáá±ážáá²á·áá«á
СпаÑОбПзавМОЌаМОе!
source: www.habr.com