āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ•ā§āĻ°āĻžāĻš āĻ‰āĻĒāĻ° āĻĒā§āĻ°āĻžāĻšā§€āĻ¨ āĻ•ā§āĻ°āĻžāĻš

āĻ†āĻŽāĻŋ āĻ•ā§‹āĻ¨āĻ“ āĻŦāĻžāĻ§āĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŦ, āĻāĻ•āĻŦāĻžāĻ° āĻ†āĻŽāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻā§āĻ˜āĻžāĻŸāĻ¨ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ (āĻ­āĻžāĻ˛, āĻ–ā§āĻŦ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻ¨āĻ¯āĻŧ, āĻ¸ā§Ž āĻšāĻ¤ā§‡) āĻāĻŦāĻ‚ āĻ§āĻžāĻ°āĻŖāĻžāĻŸāĻŋ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĻā§āĻ­ā§‚āĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻšāĻŋāĻ¤ā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ¸āĻšāĻœ āĻĄāĻžāĻ¨? āĻ­āĻžāĻ˛, āĻāĻ•āĻœāĻ¨ āĻ…āĻ­āĻŋāĻœā§āĻž āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻŸāĻŋ āĻ¤āĻžāĻ‡ āĻšāĻŦā§‡āĨ¤ āĻļāĻ°ā§āĻ¤āĻ—ā§āĻ˛āĻŋ āĻ¸āĻšāĻœ - āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻĒāĻ•ā§āĻˇā§‡āĻ° āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤ āĻ¨ā§€āĻ¤āĻŋāĻ—āĻ¤āĻ­āĻžāĻŦā§‡, āĻāĻŸāĻŋ āĻāĻ•āĻŸā§ āĻŦā§‡āĻļāĻŋ āĻœāĻŸāĻŋāĻ˛, āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻŸāĻŋ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ­āĻžāĻ˛, āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻĒā§‡āĻļāĻžāĨ¤ āĻ†āĻŽāĻŋ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¯ā§‡ āĻāĻ‡ āĻ•āĻžāĻœāĻŸāĻŋ āĻ†āĻŽāĻžāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ•ā§‹āĻĄ āĻĨāĻžāĻ•āĻž āĻŦāĻžāĻžā§āĻ›āĻ¨ā§€āĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ˛ā§‡ āĻāĻŸāĻŋ āĻĢā§‹āĻ°āĻžāĻŽā§‡ āĻĒā§‹āĻ¸ā§āĻŸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻŽāĻžāĻ° āĻšā§‹āĻ– āĻāĻĢāĻŸāĻŋāĻĒāĻŋāĻ¤ā§‡ āĻĒāĻĄāĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¯ā§‡ āĻ“āĻāĻ¸ā§‡ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ 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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨