āĻāĻŽāĻŋ āĻā§āĻ¨āĻ āĻŦāĻžāĻ§āĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻļā§āĻ°ā§ āĻāĻ°āĻŦ, āĻāĻāĻŦāĻžāĻ° āĻāĻŽāĻžāĻ° āĻāĻāĻāĻŋ āĻāĻĻā§āĻāĻžāĻāĻ¨ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ (āĻāĻžāĻ˛, āĻā§āĻŦ āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ āĻ¨āĻ¯āĻŧ, āĻ¸ā§ āĻšāĻ¤ā§) āĻāĻŦāĻ āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĻā§āĻā§āĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¯āĻž āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°ā§āĨ¤ āĻ¯āĻĨā§āĻˇā§āĻ āĻ¸āĻšāĻ āĻĄāĻžāĻ¨? āĻāĻžāĻ˛, āĻāĻāĻāĻ¨ āĻ āĻāĻŋāĻā§āĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻŋ āĻ¤āĻžāĻ āĻšāĻŦā§āĨ¤ āĻļāĻ°ā§āĻ¤āĻā§āĻ˛āĻŋ āĻ¸āĻšāĻ - āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻĒāĻā§āĻˇā§āĻ° āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻ¨ā§āĻ¤āĻŋāĻāĻ¤āĻāĻžāĻŦā§, āĻāĻāĻŋ āĻāĻāĻā§ āĻŦā§āĻļāĻŋ āĻāĻāĻŋāĻ˛, āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻŋ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻāĻžāĻ˛, āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻĒā§āĻļāĻžāĨ¤ āĻāĻŽāĻŋ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻ¯ā§ āĻāĻ āĻāĻžāĻāĻāĻŋ āĻāĻŽāĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻ¯āĻĨā§āĻˇā§āĻ āĻā§āĻĄ āĻĨāĻžāĻāĻž āĻŦāĻžāĻā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ˛ā§ āĻāĻāĻŋ āĻĢā§āĻ°āĻžāĻŽā§ āĻĒā§āĻ¸ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻŽāĻžāĻ° āĻā§āĻ āĻāĻĢāĻāĻŋāĻĒāĻŋāĻ¤ā§ āĻĒāĻĄāĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻžāĻāĻšā§āĻ, āĻ¯ā§ āĻāĻāĻ¸ā§ āĻāĻāĻ¨ā§āĻĄā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤ FTP-āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ˛ āĻāĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻŦāĻŋāĻ āĻ¨āĻ¯āĻŧ, āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¯ā§āĻā§āĻ¨ā§ āĻĢāĻžāĻāĻ˛ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨āĨ¤ āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ˛āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻĒāĻĄāĻŧāĻžāĻ° / āĻ˛ā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ˛āĻž āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻāĻŋ, āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°ā§āĻā§āĨ¤ āĻāĻŽāĻŋ 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");
}
āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻ° āĻŽā§āĻŽāĻ°āĻŋ āĻāĻŽāĻžāĻā§ āĻĒāĻ°āĻŋāĻŦā§āĻļāĻ¨ āĻāĻ°ā§, āĻ¤āĻŦā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ˛ā§āĻāĻžāĻ˛āĻšā§āĻ¸ā§āĻā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻĒā§āĻ°ā§āĻ°āĻŖā§āĻ° āĻ˛āĻžāĻāĻ¨ā§ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻāĻā§āĻā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻāĻāĻŋ) āĻ¸āĻāĻā§āĻˇā§āĻĒā§ āĻ) āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ, āĻ¤āĻŦā§ āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻĢā§āĻ āĻĨā§āĻā§ āĻāĻĢāĻāĻŋāĻĒāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤ āĻ¯āĻĻāĻŋāĻ āĻāĻŽāĻžāĻ° āĻŽāĻ¤ā§ āĻāĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻŦāĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻŦā§āĻ° āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§ āĻ˛āĻŋāĻā§āĻ¨ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻšāĻŦā§āĨ¤
āĻāĻāĻā§āĻā§āĻ āĻĢā§āĻ°āĻžāĻŽā§ āĻāĻ¤ā§āĻ¤āĻ° āĻ¨āĻž āĻĒā§āĻ¯āĻŧā§, āĻāĻŽāĻŋ āĻāĻ āĻā§āĻĄāĻāĻŋ āĻā§āĻĄāĻŧā§āĻāĻŋ āĻāĻŦāĻ āĻ¸āĻā§āĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻŽāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ āĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻ āĻā§āĻˇāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻ āĻāĻŋāĻā§āĻāĻ¤āĻž āĻāĻŋāĻ˛āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻĒāĻ¨āĻŋ āĻā§āĻ¨ā§āĻ¨āĻŦāĻžāĻāĻŽ, āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ° āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ, āĻĒāĻ°āĻŋāĻŦāĻšāĻ¨ āĻ¸ā§āĻ¤āĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ āĻ§ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻĒāĻĄāĻŧāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¯āĻĻāĻŋāĻ "āĻ āĻ¨ā§āĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ - āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°" āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° "āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ - āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°"āĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨āĻāĻŋ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻ¨āĻāĻāĻžāĻŦā§ āĻĄā§āĻāĻž āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻāĻŋ āĻŦā§āĻ˛āĻ āĻ¸āĻžāĻāĻĢāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ - āĻĢāĻŋāĻ¸ā§āĻā§āĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻāĻžāĻ§āĻŋāĻ (āĻāĻā§āĻ° āĻŦā§āĻļāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ) āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻĨā§āĻ°ā§āĻĄāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ, āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ°ā§āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨āĻļāĻ āĻ¨ā§āĻŦā§, āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻŦā§, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻāĻŋ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨ā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§ * .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 āĻĻā§āĻŦāĻžāĻ°āĻž āĻĄāĻŋāĻā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨, āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻĢāĻŋāĻ¸ā§āĻā§āĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŋāĻŦāĻŋāĻ¸āĻŋ āĻāĻŦāĻ āĻ¸āĻŋāĻāĻĢāĻŦāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻ°āĻ āĻāĻžāĻ˛ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻšāĻŦā§, āĻ¸āĻ¤ā§āĻ¯ āĻāĻĨāĻž āĻŦāĻ˛āĻ¤ā§, āĻāĻŽāĻŋ āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋāĻ¨āĻŋāĨ¤
āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻ¨ā§āĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ!
āĻāĻ¤ā§āĻ¸: www.habr.com