Index: /trunk/doc/manual/en_US/user_VBoxManage.xml
===================================================================
--- /trunk/doc/manual/en_US/user_VBoxManage.xml	(revision 40713)
+++ /trunk/doc/manual/en_US/user_VBoxManage.xml	(revision 40714)
@@ -1064,9 +1064,13 @@
             given, then the teleporting request will only succeed if the
             source machine specifies the same password as the one given with
-            this command.<note>
-                <para>Currently, the password is stored without encryption
-                (i.e. in clear text) in the XML machine configuration
-                file.</para>
-              </note></para>
+            this command.</para>
+          </listitem>
+
+          <listitem>
+            <para><computeroutput>--teleporterpasswordfrom
+            &lt;password&gt;</computeroutput>: if this optional argument is
+            given, then the teleporting request will only succeed if the
+            source machine specifies the same password as the one specified
+            in the file give with this command.</para>
           </listitem>
 
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 40713)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 40714)
@@ -321,4 +321,5 @@
                      "                            [--teleporteraddress <address|empty>\n"
                      "                            [--teleporterpassword <password>]\n"
+                     "                            [--teleporterpasswordfrom  <file>]\n"
                      "                            [--tracing-enabled on|off]\n"
                      "                            [--tracing-config <config-string>]\n"
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 40713)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 40714)
@@ -30,4 +30,6 @@
 
 #include <iprt/cidr.h>
+#include <iprt/ctype.h>
+#include <iprt/file.h>
 #include <iprt/param.h>
 #include <iprt/path.h>
@@ -164,4 +166,5 @@
     MODIFYVM_TELEPORTER_ADDRESS,
     MODIFYVM_TELEPORTER_PASSWORD,
+    MODIFYVM_TELEPORTER_PASSWORD_FROM,
     MODIFYVM_TRACING_ENABLED,
     MODIFYVM_TRACING_CONFIG,
@@ -302,4 +305,5 @@
     { "--teleporteraddress",        MODIFYVM_TELEPORTER_ADDRESS,        RTGETOPT_REQ_STRING },
     { "--teleporterpassword",       MODIFYVM_TELEPORTER_PASSWORD,       RTGETOPT_REQ_STRING },
+    { "--teleporterpasswordfrom",   MODIFYVM_TELEPORTER_PASSWORD_FROM,  RTGETOPT_REQ_STRING },
     { "--tracing-enabled",          MODIFYVM_TRACING_ENABLED,           RTGETOPT_REQ_BOOL_ONOFF },
     { "--tracing-config",           MODIFYVM_TRACING_CONFIG,            RTGETOPT_REQ_STRING },
@@ -2210,4 +2214,25 @@
             }
 
+            case MODIFYVM_TELEPORTER_PASSWORD_FROM:
+            {
+                size_t cbFile;
+                char *pszFileBuf;
+                int vrc = RTFileReadAll(ValueUnion.psz, (void**)&pszFileBuf, &cbFile);
+                if (RT_SUCCESS(vrc))
+                {
+                    char szPasswd[512];
+                    for (unsigned i = 0;
+                            i < cbFile
+                         && i < sizeof(szPasswd)-1
+                         && !RT_C_IS_CNTRL(pszFileBuf[i]); i++)
+                        szPasswd[i] = pszFileBuf[i];
+
+                    CHECK_ERROR(machine, COMSETTER(TeleporterPassword)(Bstr(szPasswd).raw()));
+                }
+                else
+                    errorArgument("Cannot open password file '%s' (%Rrc)", ValueUnion.psz, vrc);
+                break;
+            }
+
             case MODIFYVM_TRACING_ENABLED:
             {
