FileZilla FTP Client guarda las contraseñas en plano

Hace tiempo que uso FileZilla FTP Client y lo cierto es que estoy bastante contento con él. Sin embargo ayer tuve que acceder desde otro ordenador a uno de mis FTPs habituales… y no recordaba la contraseña.

Se me ocurrió echar un vistazo al cifrado que usa FileZilla para las contraseñas almacenada y me llevé una gran sorpresa al descubrir ¡que no usaba ninguno!

El fichero en cuestión está en %APPDATA%\FileZilla\sitemanager.xml y por si estáis muy vagos, aquí os dejo el código que realiza un listado de todas las cuentas existentes y también un mandato PowerShell y Bash que hacen casi lo mismo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Linq;

namespace FileZillaPasswordRevealer
{
    class Revealer
    {

        private Revealer()
        {
            if (SiteManagerIsPresent())
                PrintResults(ParseSiteManager());
        }

        private void PrintResults(dynamic results)
        {
            foreach (var result in results)
                Console.WriteLine("**********************\n" +
                    "Host = {0}\n" +
                    "User = {1}\n" +
                    "Password = {2}\n" +
                    "**********************\n",
                    result.Host, result.User, result.Password);
        }

        private dynamic ParseSiteManager()
        {
            XDocument doc = XDocument.Load(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\FileZilla\sitemanager.xml");
            return from x in doc.Descendants("Server")
                   select new
                   {
                       User = x.Descendants("User").SingleOrDefault().Value,
                       Password = x.Descendants("Pass").SingleOrDefault().Value,
                       Host = x.Descendants("Host").SingleOrDefault().Value
                   };
        }

        private bool SiteManagerIsPresent()
        {
            var folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            return File.Exists(folder + @"\FileZilla\sitemanager.xml");
        }

        static void Main(string[] args)
        {
            new Revealer();
        }
    }
}

PowerShell:

more $HOME\AppData\Roaming\FileZilla\sitemanager.xml | select-string "Host>|User>|Pass>"

Bash:

less $HOME/.filezilla/sitemanager.xml | egrep '(User>|Pass>|Host>)'

Por Carballude

Me llamo Pablo Carballude González, soy graduado en computación con master en HCI y Seguridad Informática. Actualmente trabajo para Amazon en Seattle como Software Developer Engineer. Soy de esas personas que no saben si los textos autobiográficos deben ser en primera o tercera persona. Lo intenté en segunda, pero no le entendí nada :P

3 comentarios

  1. Pingback: Bitacoras.com
  2. I’m simply interested to learn, have you undertaken any sort of unique optimization for the images? They are really smoking speedy to render. Or is it’s only that you’ve a very powerful internet hosting service. In any case, let me tell you it makes a huge difference on my sluggish connection. Many thanks.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *