Как стать автором
Обновить

Комментарии 22

На Plugring'е фара можно давно уже скачать програмку, которая выдает все пароли far manager.
p.s. Хранить пароли в любом файл-менеджере небезопасно. (с) Всегда Ваш, КО
*можно скачать
А можно плагин сделать для шифрованного хранения или Far не предоставляет такого интерфейса для плагинов?
Это не нужно. Для SSH уже проработано всё необходимое, чтобы не хранить пароли в каждой отдельно взятой программе.
Я тоже пользовался фаром, но ребята, это было стопиццот лет назад. Ну неужели альтернативы не устраивают?

Ну щас адепты закидают тапками…
А зачем они? Что, не красиво?)
«Одно выше, другое — ниже. Неаккуратненько.»
Альтернативы — это круто. Я сам на них перейду, когда меня Фар перестанет устраивать.
А про FileZilla я вообще молчу. Все в чистом виде.
Как то с месяц назад прочитал на хабре статью про воровство паролей из браузеров. Сменил несколько десятков паролей на разные и поставил KeePass.
Вы извращенец.

svn co farmanager.com/svn/trunk/plugins plugins
открываем \plugins\ftp\Crypt.inc

void MakeCryptPassword(LPCSTR Src,BYTE Dest[FTP_PWD_LEN])
{
	BYTE    *CurDest;
	clock_t  Random = clock();
	BYTE     XorMask;
	int      Done;
	//Log(( "MakeCryptPassword: [%s]",Src ));
	memset(Dest,0,sizeof(Dest));

	if(!Src || !Src[0])
		return;

	for(int I=0; I < (int)sizeof(Dest); I++)
	{
		CurDest = Dest;
		CurDest[0] = (BYTE)((Random+I)|0x80);
		CurDest[1] = (BYTE)((Random>>8)|0x80);
		strcpy(((char*)CurDest)+2,Src);
		XorMask  = (CurDest[0]^CurDest[1])|80;
		CurDest += 2;
		Done     = TRUE;

		while(*CurDest)
		{
			*CurDest^=XorMask;

			if(*CurDest == 0)
			{
				Done=FALSE;
				break;
			}

			CurDest++;
		}

		if(Done) break;
	}

	//Log(( "MakeCryptPassword: %02X %02X %02X %02X %02X %02X",Dest[0],Dest[1],Dest[2],Dest[3],Dest[4],Dest[5] ));
}

void DecryptPassword(BYTE Src[FTP_PWD_LEN],char *_Dest)
{
	BYTE XorMask = (Src[0]^Src[1]) | 80;
	int  n;
	char *Dest = _Dest;
	//Log(( "DecryptPassword: %02X %02X %02X %02X %02X %02X",Src[0],Src[1],Src[2],Src[3],Src[4],Src[5] ));

	if(Src[0] && Src[1] && Src[2])
		for(n = 2; n < FTP_PWD_LEN; n++,Dest++)
		{
			*Dest = Src[n] ^ XorMask;

			if(*Dest == 0 ||
			        *Dest == XorMask)
				break;
		}

	*Dest = 0;
	//Log(( "DecryptPassword: [%s]",_Dest ));
}

Ну, так не интересно :)
Far-ом перестал пользоваться в прошлом году, когда троян обошел все мои web-сайты из ftp-плагина Far-а и разместил там свой код.
Надо просто антивирусом еще пользоваться своевременно :)))
Странно, аутентификацию же по ключу надо делать, плагин это поддерживает. В чём проблема — не понятно.
Я конечно понимаю, что бывает без ftp обойтись невозможно, но на всем своем орудую по ssh и только с ключом. пароли везде запрещены…

Сложно сказать, что это метод, и вообще может я не прав, но как-то спокойней )))
А Total Commander начиная с какой-то там версии 7.x, пароли можно хранить в зашифрованном виде безопасно. По крайней мере не тупым XOR, а более стойким алгоритмом. Все пароли защищаются главным паролем, который надо ввести при первом подключении к ftp после открытия программы.
Как бы пароли не хранились — если их может расшифровать программа, значит может и расшифровать пользователь, ибо ключ обязан либо генерироваться по четко заданному алгоритму, либо храниться где либо.
Я уже писал статью про хром и DPAPI в Windows. Даже такой мощный комплекс всё равно спокойно расшифровывается при доступе к машине и к учетной записи пользователя и антивирус(любой) молчит в тряпочку, так как действия, выполняемые зловредом — легальные, с точки зрения безопасности. Да, там есть энтропия, но это уже другая опера.
Я не пользуюсь ftp клиентом, но тут не важно — браузер, или фтп — они хранят пароли. Хотите полной безопасности — ищите программу, которая будет запрашивать мастер-пароль и следите за своим антивирусным ПО, чтобы не допускал троянов и кейлоггеров. Ну и за спину смотрите, если есть такая необходимость. Можно поиграться и с физическими ключами.

За статью спасибо. Интересно и познавательно!
на линуксах давно сделаны брелки для паролей, разблокируемые после ввода мастерпароля
SaveSettings.cmd и RestoreSettings.cmd позволяют получить доспук к ftp не озадачиваясь ни узнаванием паролей, ни местом их хранения в реестре, ни методами шифрования :+)
А habracut специально так вставлен что получилось «И я решил читать далее ->»? Особенно эффект проявился в гугл-ридере. Кажется я разгадал easter egg в статье!

Подниму тему. Понадобилось вспомнить пароль, который я ввёл год назад в Far NetBox. Как оказалось, шифрование там ещё хуже - тупо побайтовый ксор с фиксированной константой. Ну, и ещё чуток мусора добавляется вокруг, но его отлично визуально видно.
Вот тут всё понятно: https://github.com/FarGroup/Far-NetBox/blob/d64ef80a04a239d8d0b9c0277620c13533991c95/src/core/WinSCPSecurity.cpp#L62-L88 (внимание! индексация массовов - в паскаль-стиле, начиная с единички).

std::string FarNetBoxDecrypt(std::string pass)
{
    auto decryptChar = [](std::string& pass)
    {
        static const std::string hex = "0123456789ABCDEF";
        if (pass.length() < 2) return '\0';
        char res = (hex.find(pass[0]) << 4) + (hex.find(pass[1]) << 0);
        res ^= 0x5C;
        pass = pass.substr(2);
        return res;
    };

    std::string res;
    while (pass.length() >= 2)
        res += decryptChar(pass);
    return res;
}

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории