เจฎเฉเจ เจฌเจฟเจจเจพเจ เจเจฟเจธเฉ เจฐเฉเจเจพเจตเจ เจฆเฉ เจธเจผเฉเจฐเฉ เจเจฐเจพเจเจเจพ, เจเฉฑเจ เจตเจพเจฐ เจเจฆเฉเจ เจฎเฉเจจเฉเฉฐ เจเฉฑเจ เจเฉเจฒเจพเจธเจพ เจนเฉเจเจ (เจเฉฐเจเฉ เจคเจฐเฉเจนเจพเจ, เจฌเจนเฉเจค เจธเจผเจเจคเฉเจธเจผเจพเจฒเฉ เจจเจนเฉเจ, เจเจฎเจพเจจเจฆเจพเจฐ เจนเฉเจฃ เจฒเจ) เจ เจคเฉ เจตเจฟเจเจพเจฐ เจเฉฑเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจเจพเจชเจฃ เจฒเจ เจชเฉเจฆเจพ เจนเฉเจเจ เจเฉ เจเฉฑเจ เจเจฒเจพเจเฉฐเจ เจคเฉเจ เจเฉฑเจ เจธเจฐเจตเจฐ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฟเฉฑเจคเจฐ เจจเฉเฉฐ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเจฆเจพ เจนเฉ. เจธเจงเจพเจฐเจจ เจเจพเจซเจผเฉ เจธเจนเฉ? เจเฉเจฐ, เจเฉฑเจ เจคเจเจฐเจฌเฉเจเจพเจฐ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฐ เจฒเจ, เจเจน เจ เจเจฟเจนเจพ เจนเฉเจตเฉเจเจพ. เจธเจผเจฐเจคเจพเจ เจธเจงเจพเจฐเจจ เจนเจจ - เจคเฉเจเฉ-เจงเจฟเจฐ เจฆเฉเจเจ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจพ เจเจฐเฉเฅค เจธเจฟเจงเจพเจเจคเจ เจคเฉเจฐ 'เจคเฉ, เจเจน เจฅเฉเฉเจพ เจนเฉเจฐ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉ, เจชเจฐ เจเจน เจฆเจฟเฉฑเจคเจพ เจเจฟเจ เจนเฉ เจเจฟ เจคเฉเจนเจพเจจเฉเฉฐ เจเจธเจฆเจพ เจชเจคเจพ เจฒเจเจพเจเจฃเจพ เจชเจเจเจพ เจ เจคเฉ เจเจฆเจพเจนเจฐเจฃเจพเจ เจฆเฉ เจญเจพเจฒ เจเจฐเจจเฉ เจชเจตเฉเจเฉ, เจ เฉเจ เจนเฉ, เจ เจเจฟเจนเจพ เจเจฟเฉฑเจคเจพ. เจฎเฉเจ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ เจเจฟ เจเจน เจเฉฐเจฎ เจฎเฉเจฐเฉ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจพ เจนเฉเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจน เจซเจพเจเจฆเฉเจฎเฉฐเจฆ เจนเฉ เจเจฟ เจเจพเจซเจผเฉ เจเฉเจก เจนเฉเจตเฉ เจคเจพเจ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจฎเจฆเจฆ เจฆเฉ เจฒเฉเฉ เจชเฉเจฃ 'เจคเฉ เจเจธ เจจเฉเฉฐ เจซเฉเจฐเจฎ 'เจคเฉ เจชเฉเจธเจ เจเฉเจคเจพ เจเจพ เจธเจเฉเฅค เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ, เจฎเฉเจฐเฉ เจจเจเจผเจฐ FTP 'เจคเฉ เจชเจ, เจคเจฐเฉเจเฉ เจจเจพเจฒ, เจเจเจธ เจเจฟเจธ เจตเจฟเฉฑเจ เจตเจฟเฉฐเจกเฉเจเจผ เจจเฉเฉฐ เจตเจฟเจเจธเจค เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ. FTP เจฆเจพ เจซเจพเจเจฆเจพ เจเจน เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจจเจพ เจธเจฟเจฐเจซ เจเฉฑเจ เจเจฟเฉฑเจคเจฐ, เจฌเจฒเจเจฟ เจเจธเจฆเฉ เจฆเฉเจเจฐเจพ เจเฉเจ เจตเฉ เจซเจพเจเจฒ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ. เจซเจพเจเจฒเจเจผเจฟเจฒเจพ เจธเจฐเจตเจฐ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจเฉฑเจ เจชเจพเจธเจตเจฐเจก เจจเจพเจฒ เจเฉฑเจ เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจชเฉเฉเจนเจจ / เจฒเจฟเจเจฃ เจ เจคเฉ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉฑเจ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจจเฉเฉฐ เจธเจพเจเจเจพ เจเจฐเจจเจพ, เจฎเฉเจ เจซเจพเจเจฒเจเจผเจฟเจฒเจพ เจเจฒเจพเจเฉฐเจ เจจเจพเจฒ เจเฉเฉเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเฉเจคเฉ, เจธเจญ เจเฉเจ เจเฉฐเจฎ เจเฉเจคเจพ. เจฎเฉเจ C/C++ เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจเฉเจก เจเจฆเจพเจนเจฐเจจ เจฌเจฃเจพเจ เจนเฉ:
#include <iostream>
void main()
{
FILE* fs;
fopen_s(&fs, "1.txt", "w");
if (fs)
{
fwrite("userrnpasswordrnsend D:\share\1.txtrnbye", 1, sizeof("userrnpasswordrnsend D:\share\1.txtrnbye"), fs);
fwrite(" 00", 1, sizeof(" 00"), fs);
fclose(fs);
}
system("ftp -s:1.txt 127.0.0.1");
}เจเฉ เจฎเฉเจฐเฉ เจฎเฉเจฎเฉเจฐเฉ เจฎเฉเจฐเฉ เจธเฉเจตเจพ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจธเจญ เจเฉเจ เจฒเฉเจเจฒเจนเฉเจธเจ 'เจคเฉ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ, เจ เจคเฉ เจเจฆเฉเจ เจจเฉเฉฑเจเจตเจฐเจ 'เจคเฉ เจธเฉฐเจเจพเจฐเจฟเจค เจนเฉเฉฐเจฆเจพ เจนเฉ, เจคเจพเจ เจญเฉเจเจฃ เจฆเฉ เจจเจพเจฒ เจฒเจพเจเจจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฒเจคเฉ เจเจ เจนเฉ. เจเฉฑเจฅเฉ เจเฉ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจนเฉ a) เจธเฉฐเจเฉเจช เจตเจฟเฉฑเจ b) เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจเจฒเจพเจเฉฐเจ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจจเจนเฉเจ เจนเฉ, เจชเจฐ Microsoft เจคเฉเจ ftp เจฒเจ เจชเจนเจฟเจฒเจพเจ เจคเฉเจ เจนเฉ เจฌเจฟเจฒเจ-เจเจจ เจเฉเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเฅค เจนเจพเจฒเจพเจเจเจฟ เจฎเฉเจฐเฉ เจฐเจพเจ เจตเจฟเฉฑเจ เจเจน เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจ เจคเฉ เจญเจพเจเจพเจ เจฆเฉเจเจฐเจพ เจเจฟเจฐเจฟเจเจธเจผเฉเจฒ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ. เจเฉ เจคเฉเจธเฉเจ เจเจน เจธเจฎเจเจฆเฉ เจนเฉ เจเจฟ เจเจธ เจตเจฟเจงเฉ เจฆเฉ เจธเจฎเฉฑเจธเจฟเจ เจเฉ เจนเฉ เจ เจคเฉ เจเจฟเฉฑเจชเจฃเฉเจเจ เจตเจฟเฉฑเจ เจฒเจฟเจเฉ, เจคเจพเจ เจเจน เจฌเจนเฉเจค เจตเจงเฉเจ เจนเฉเจตเฉเจเจพ.
เจเจ เจซเฉเจฐเจฎเจพเจ 'เจคเฉ เจเจตเจพเจฌ เจจเจพ เจฒเฉฑเจญเจฃ เจคเฉเจ เจฌเจพเจ เจฆ, เจฎเฉเจ เจเจธ เจเฉเจก เจจเฉเฉฐ เจเฉฑเจก เจฆเจฟเฉฑเจคเจพ เจ เจคเฉ เจเฉฑเจ เจธเจพเจเจ เจจเฉเฉฑเจเจตเจฐเจ เจเฉฐเจเจฐเจซเฉเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพเฅค เจฎเฉเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉฑเจ เจเจพเจฐ เจเจฐเฉ เจจเฉเฉฐ เจฆเฉเจเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจตเจฟเฉฑเจ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเจจ เจฆเจพ เจคเจเจฐเจฌเจพ เจธเฉเฅค เจคเจฐเฉเจเฉ เจจเจพเจฒ, เจคเฉเจธเฉเจ เจเฉเจฐเจพเจเจธเจชเฉเจฐเจ เจฒเฉเจ เจฐ 'เจคเฉ เจเฉเจจเฉเจจเจฌเฉเจฎ เจฆเฉ "เจเฉฐเจชเจฟเจเจเจฐ เจจเฉเฉฑเจเจตเจฐเจ" เจ เจงเจฟเจเจ เจจเฉเฉฐ เจชเฉเฉเจน เจธเจเจฆเฉ เจนเฉเฅค เจเฉฑเจ เจเจฒเจพเจเฉฐเจ เจ เจคเฉ เจธเจฐเจตเจฐ เจฆเฉ เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจนเฉ, เจนเจพเจฒเจพเจเจเจฟ "เจเฉฑเจ เจธเจฐเจตเจฐ เจคเฉเจ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจเจฒเจพเจเฉฐเจ" เจเจจเฉเจเจธเจผเจจ เจฒเจ เจจเจนเฉเจ, เจชเจฐ เจธเจฟเจฐเจซ "เจเฉฑเจ เจเจฒเจพเจเฉฐเจ เจคเฉเจ เจเฉฑเจ เจธเจฐเจตเจฐ" เจฒเจเฅค เจเจฟเจเจเจเจฟ เจเฉเจฐเจพเจเจธเจฎเจฟเจธเจผเจจ เจเฉฐเจเจฐเจจเฉเจ 'เจคเฉ เจนเฉ, เจเจธ เจฒเจ เจกเฉเจเจพ เจจเฉเฉฐ เจเจฟเจธเฉ เจคเจฐเฉเจนเจพเจ เจเจจเจเฉเจฐเจฟเจชเจ เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉเฅค เจเจธเจฆเฉ เจฒเจ เจเฉฑเจ เจฌเจฒเจพเจ เจธเจพเจเจซเจฐ - เจเฉฑเจ เจซเฉเจธเจเจฒ เจจเฉเฉฑเจเจตเจฐเจ - เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเฉฑเจ เจชเจฒเฉฑเจธ เจธเจฐเจตเจฐ เจธเจพเจจเฉเฉฐ เจเจ เจเจฒเจพเจเฉฐเจ (เจเฉฑเจ เจคเฉเจ เจตเฉฑเจง) เจฌเจฃเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจเจธเจฆเฉ เจฒเจ, เจ เจธเฉเจ เจฅเฉเจฐเฉเฉฑเจกเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจพเจเจเฉเฅค เจเฉเจฐเจพเจเจธเจซเจฐ เจเฉเจคเฉ เจเจพเจฃ เจตเจพเจฒเฉ เจคเจธเจตเฉเจฐ เจเจฒเจพเจเฉฐเจ เจคเฉเจ เจเฉฑเจ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจ เจนเฉเจตเฉเจเฉ, เจเจจเจเฉเจฐเจฟเจชเจ เจเฉเจคเฉ เจเจพเจตเฉเจเฉ, เจ เจคเฉ เจธเจฐเจตเจฐ เจคเฉ เจญเฉเจเฉ เจเจพเจตเฉเจเฉ, เจเจฟเฉฑเจฅเฉ เจเจธเจจเฉเฉฐ เจกเฉเจเฉเจฐเจฟเจชเจ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ เจ เจคเฉ *.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();
}เจธเฉฐเจเฉเจช เจตเจฟเฉฑเจ, เจเฉฑเจ เจ เจจเฉฐเจค เจฒเฉเจช เจตเจฟเฉฑเจ, เจนเจฐเฉเจ เจเจฒเจพเจเฉฐเจ เจฒเจ เจฅเฉเจฐเฉเฉฑเจก เจฌเจฃเจพเจ เจเจพเจเจฆเฉ เจนเจจ เจ เจคเฉ เจเจฒเจพเจเฉฐเจเจธ เจฆเฉ เจเฉเฉเจจ เจฆเฉ เจเจกเฉเจ เจเจฐเจฆเฉ เจนเจจเฅค เจซเจฟเจฐ, WaitForSingleObject เจเจนเจจเจพเจ เจฆเฉเจเจฐเจพ เจธเจญ เจเฉเจ เจธเฉฐเจเจพเจฐเจฟเจค เจเจฐเจจ เจฆเฉ เจเจกเฉเจ เจเจฐเจฆเจพ เจนเฉเฅค เจนเจฐเฉเจ เจเจฒเจพเจเฉฐเจ เจฆเจพ เจเจชเจฃเจพ เจธเจพเจเจ เจ เจคเฉ เจเจชเจฃเจพ เจเฉเจฐเจพเจเจธเจฎเจฟเจ เจฌเจซเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจฏเจพเจจเฉ, เจธเจฐเจตเจฐ M+1 เจธเจพเจเจ, เจเจฟเฉฑเจฅเฉ M เจเจฒเจพเจเฉฐเจเจธ เจฆเฉ เจเจฟเจฃเจคเฉ เจนเฉเฅค เจธเจพเจฐเฉ เจเฉเจฐเจพเจเจธเจซเจฐ เจชเฉเจฐเฉ เจนเฉเจฃ เจคเฉเจ เจฌเจพเจ เจฆ, เจธเจญ เจเฉเจ เจฆเฉเจนเจฐเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค
เจนเฉเจฃ เจเจพเจนเจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐเฉ:
#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 เจตเจฟเจงเฉเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจเจน เจธเฉฐเจญเจต เจคเฉเจฐ 'เจคเฉ เจฌเจฟเจนเจคเจฐ เจเจจเจเฉเจฐเจฟเจชเจ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ, เจเจฎเจพเจจเจฆเจพเจฐ เจนเฉเจฃ เจฒเจ, เจฎเฉเจ เจเจธ เจฆเฉ เจเจพเจเจ เจจเจนเฉเจ เจเฉเจคเฉ.
เจคเฉเจนเจพเจกเฉ เจงเจฟเจเจจ เจฒเจ เจงเฉฐเจจเจตเจพเจฆ!
เจธเจฐเฉเจค: www.habr.com
