OSDN Git Service

Enhance all settings encryption.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Sun, 22 Jun 2014 13:10:13 +0000 (22:10 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Sun, 22 Jun 2014 13:10:13 +0000 (22:10 +0900)
Enhance the algorithm for validating master password against Brute-force attack.

15 files changed:
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
Resource/FFFTP.rc
Resource/resource.h
Resource_eng/FFFTP-eng.rc
Resource_eng/resource.h
common.h
connect.c
main.c
mesg-eng.h
mesg-jpn.h
misc.c
option.c
registry.c
toolmenu.c

index 2f56fcc..8114b7b 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index 0c0c1f1..1b76941 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 68cfb98..4340e1c 100644 (file)
@@ -1480,6 +1480,18 @@ BEGIN
     LTEXT           "\81i0\81`999\93ú; 0=\96\88\89ñ\8bN\93®\8e\9e\82É\8am\94F\81j",-1,45,49,168,8\r
 END\r
 \r
+corruptsettings_dlg DIALOGEX 0, 0, 232, 64\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION\r
+CAPTION "\90Ý\92è\82ª\94j\91¹\82µ\82Ä\82¢\82Ü\82·"\r
+FONT 9, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+    LTEXT           "\88Ã\8d\86\89»\82³\82ê\82½\90Ý\92è\82Ì\94j\91¹\82Ü\82½\82Í\89üâ\82\82ª\8c\9f\8fo\82³\82ê\82Ü\82µ\82½\81B\r\n\93Ç\82Ý\8d\9e\82Þ\82Æ\88Ù\8fí\92â\8e~\82â\90Ý\92è\82Ì\8fÁ\8e¸\82È\82Ç\82Ì\95s\8bï\8d\87\82ª\94­\90\82·\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B",-1,7,7,217,36\r
+    DEFPUSHBUTTON   "\8fI\97¹",IDCANCEL,8,42,50,14\r
+    PUSHBUTTON      "\91S\82Ä\8fÁ\8b\8e",IDABORT,63,42,50,14\r
+    PUSHBUTTON      "\93Ç\82Ý\8eæ\82è\90ê\97p",IDRETRY,118,42,50,14\r
+    PUSHBUTTON      "\96³\8e\8b",IDIGNORE,173,42,50,14\r
+END\r
+\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 //\r
@@ -2167,6 +2179,14 @@ BEGIN
         TOPMARGIN, 7\r
         BOTTOMMARGIN, 148\r
     END\r
+\r
+    corruptsettings_dlg, DIALOG\r
+    BEGIN\r
+        LEFTMARGIN, 7\r
+        RIGHTMARGIN, 225\r
+        TOPMARGIN, 7\r
+        BOTTOMMARGIN, 57\r
+    END\r
 END\r
 #endif    // APSTUDIO_INVOKED\r
 \r
index 4604f8c..be0b49e 100644 (file)
 #define opt_trmode4_dlg                 195\r
 #define opt_disp2_dlg                   196\r
 #define opt_updates_dlg                 197\r
+#define corruptsettings_dlg             198\r
 #define TRANS_TIME_BAR                  1002\r
 #define TRANS_TEXT                      1003\r
 #define TRANS_REMOTE                    1003\r
 // \r
 #ifdef APSTUDIO_INVOKED\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
-#define _APS_NEXT_RESOURCE_VALUE        197\r
+#define _APS_NEXT_RESOURCE_VALUE        199\r
 #define _APS_NEXT_COMMAND_VALUE         40182\r
 #define _APS_NEXT_CONTROL_VALUE         1227\r
 #define _APS_NEXT_SYMED_VALUE           101\r
index 4798cdb..27e0bec 100644 (file)
@@ -1518,6 +1518,18 @@ BEGIN
     LTEXT           "\81i0\81`999days; 0=Every time at startup\81j",-1,45,49,168,8\r
 END\r
 \r
+corruptsettings_dlg DIALOGEX 0, 0, 232, 64\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION\r
+CAPTION "Settings are corrupted"\r
+FONT 9, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+    LTEXT           "A corruption or tampering of the encrypted settings is detected.\r\nProblems such as settings loss or abnormal stop may occur if they are loaded.",-1,7,7,217,36\r
+    DEFPUSHBUTTON   "Quit",IDCANCEL,8,42,50,14\r
+    PUSHBUTTON      "Clear All",IDABORT,63,42,50,14\r
+    PUSHBUTTON      "Read only",IDRETRY,118,42,50,14\r
+    PUSHBUTTON      "Ignore",IDIGNORE,173,42,50,14\r
+END\r
+\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 //\r
@@ -2202,6 +2214,14 @@ BEGIN
         TOPMARGIN, 7\r
         BOTTOMMARGIN, 148\r
     END\r
+\r
+    corruptsettings_dlg, DIALOG\r
+    BEGIN\r
+        LEFTMARGIN, 7\r
+        RIGHTMARGIN, 225\r
+        TOPMARGIN, 7\r
+        BOTTOMMARGIN, 57\r
+    END\r
 END\r
 #endif    // APSTUDIO_INVOKED\r
 \r
index 259894e..be0d991 100644 (file)
 #define opt_trmode4_dlg                 195\r
 #define opt_disp2_dlg                   196\r
 #define opt_updates_dlg                 197\r
+#define corruptsettings_dlg             198\r
 #define TRANS_TIME_BAR                  1002\r
 #define TRANS_TEXT                      1003\r
 #define TRANS_REMOTE                    1003\r
 // \r
 #ifdef APSTUDIO_INVOKED\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
-#define _APS_NEXT_RESOURCE_VALUE        197\r
+#define _APS_NEXT_RESOURCE_VALUE        199\r
 #define _APS_NEXT_COMMAND_VALUE         40182\r
 #define _APS_NEXT_CONTROL_VALUE         1227\r
 #define _APS_NEXT_SYMED_VALUE           101\r
index 76f7225..8a687b0 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1383,7 +1383,7 @@ void CheckPortableVersion();
 int AskPortableVersion(void);\r
 // 全設定暗号化対応\r
 int Restart();\r
-void RestartAndTerminate();\r
+void Terminate();\r
 // タスクバー進捗表示\r
 int LoadTaskbarList3();\r
 void FreeTaskbarList3();\r
@@ -1856,6 +1856,8 @@ INT_PTR CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM
 // 64ビット対応\r
 //BOOL CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
 INT_PTR CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+// 全設定暗号化対応\r
+INT_PTR CALLBACK AnyButtonDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
 void SetYenTail(char *Str);\r
 void RemoveYenTail(char *Str);\r
 void SetSlashTail(char *Str);\r
index d81d866..8d947b4 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -238,22 +238,22 @@ void ConnectProc(int Type, int Num)
                                        switch(CurHost.CurNameKanjiCode)\r
                                        {\r
                                        case KANJI_SJIS:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN346);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN345);\r
                                                break;\r
                                        case KANJI_JIS:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN347);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN346);\r
                                                break;\r
                                        case KANJI_EUC:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN348);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN347);\r
                                                break;\r
                                        case KANJI_UTF8N:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN349);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN348);\r
                                                break;\r
                                        case KANJI_UTF8HFSX:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN350);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN349);\r
                                                break;\r
                                        default:\r
-                                               SetTaskMsg(MSGJPN345);\r
+                                               SetTaskMsg(MSGJPN344);\r
                                                break;\r
                                        }\r
                                }\r
@@ -352,22 +352,22 @@ void QuickConnectProc(void)
                                        switch(CurHost.CurNameKanjiCode)\r
                                        {\r
                                        case KANJI_SJIS:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN346);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN345);\r
                                                break;\r
                                        case KANJI_JIS:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN347);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN346);\r
                                                break;\r
                                        case KANJI_EUC:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN348);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN347);\r
                                                break;\r
                                        case KANJI_UTF8N:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN349);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN348);\r
                                                break;\r
                                        case KANJI_UTF8HFSX:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN350);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN349);\r
                                                break;\r
                                        default:\r
-                                               SetTaskMsg(MSGJPN345);\r
+                                               SetTaskMsg(MSGJPN344);\r
                                                break;\r
                                        }\r
                                }\r
@@ -561,22 +561,22 @@ void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode)
                                switch(CurHost.CurNameKanjiCode)\r
                                {\r
                                case KANJI_SJIS:\r
-                                       SetTaskMsg(MSGJPN344, MSGJPN346);\r
+                                       SetTaskMsg(MSGJPN343, MSGJPN345);\r
                                        break;\r
                                case KANJI_JIS:\r
-                                       SetTaskMsg(MSGJPN344, MSGJPN347);\r
+                                       SetTaskMsg(MSGJPN343, MSGJPN346);\r
                                        break;\r
                                case KANJI_EUC:\r
-                                       SetTaskMsg(MSGJPN344, MSGJPN348);\r
+                                       SetTaskMsg(MSGJPN343, MSGJPN347);\r
                                        break;\r
                                case KANJI_UTF8N:\r
-                                       SetTaskMsg(MSGJPN344, MSGJPN349);\r
+                                       SetTaskMsg(MSGJPN343, MSGJPN348);\r
                                        break;\r
                                case KANJI_UTF8HFSX:\r
-                                       SetTaskMsg(MSGJPN344, MSGJPN350);\r
+                                       SetTaskMsg(MSGJPN343, MSGJPN349);\r
                                        break;\r
                                default:\r
-                                       SetTaskMsg(MSGJPN345);\r
+                                       SetTaskMsg(MSGJPN344);\r
                                        break;\r
                                }\r
                        }\r
@@ -672,22 +672,22 @@ void HistoryConnectProc(int MenuCmd)
                                        switch(CurHost.CurNameKanjiCode)\r
                                        {\r
                                        case KANJI_SJIS:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN346);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN345);\r
                                                break;\r
                                        case KANJI_JIS:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN347);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN346);\r
                                                break;\r
                                        case KANJI_EUC:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN348);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN347);\r
                                                break;\r
                                        case KANJI_UTF8N:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN349);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN348);\r
                                                break;\r
                                        case KANJI_UTF8HFSX:\r
-                                               SetTaskMsg(MSGJPN344, MSGJPN350);\r
+                                               SetTaskMsg(MSGJPN343, MSGJPN349);\r
                                                break;\r
                                        default:\r
-                                               SetTaskMsg(MSGJPN345);\r
+                                               SetTaskMsg(MSGJPN344);\r
                                                break;\r
                                        }\r
                                }\r
diff --git a/main.c b/main.c
index 1a0652e..a1eafc5 100644 (file)
--- a/main.c
+++ b/main.c
@@ -453,9 +453,9 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
                                        {\r
                                                Sleep(1000);\r
                                                if(ApplyUpdates(UpdateDir, "updatebackup"))\r
-                                                       MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK);\r
+                                                       MessageBox(NULL, MSGJPN358, "FFFTP", MB_OK);\r
                                                else\r
-                                                       MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK | MB_ICONERROR);\r
+                                                       MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK | MB_ICONERROR);\r
                                        }\r
                                }\r
                                ImmediateExit = YES;\r
@@ -533,7 +533,7 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
                        }\r
                }\r
                if(!Sts)\r
-                       MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK | MB_ICONERROR);\r
+                       MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK | MB_ICONERROR);\r
        }\r
        return(Ret);\r
 }\r
@@ -631,7 +631,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                {\r
                        if(IsRegAvailable() == YES && IsIniAvailable() == NO)\r
                        {\r
-                               switch(MessageBox(GetMainHwnd(), MSGJPN351, "FFFTP", MB_YESNOCANCEL | MB_DEFBUTTON2))\r
+                               switch(MessageBox(GetMainHwnd(), MSGJPN350, "FFFTP", MB_YESNOCANCEL | MB_DEFBUTTON2))\r
                                {\r
                                        case IDCANCEL:\r
                                                ReadOnlySettings = YES;\r
@@ -957,16 +957,16 @@ void DispWindowTitle(void)
                switch(AskCryptMode())\r
                {\r
                case CRYPT_NONE:\r
-                       sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN352);\r
+                       sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN351);\r
                        break;\r
                case CRYPT_FTPES:\r
-                       sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN353);\r
+                       sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN352);\r
                        break;\r
                case CRYPT_FTPIS:\r
-                       sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN354);\r
+                       sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN353);\r
                        break;\r
                case CRYPT_SFTP:\r
-                       sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN355);\r
+                       sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN354);\r
                        break;\r
                }\r
        }\r
@@ -3631,9 +3631,8 @@ int Restart()
        return Sts;\r
 }\r
 \r
-void RestartAndTerminate()\r
+void Terminate()\r
 {\r
-       Restart();\r
        exit(1);\r
 }\r
 \r
@@ -3728,7 +3727,7 @@ void UpdateSoftware(int Async, int NoError, int NoConfirm)
                        {\r
                                if(Version > RELEASE_VERSION_NUM)\r
                                {\r
-                                       sprintf(Tmp, MSGJPN362, VER_STR, VersionString, Description);\r
+                                       sprintf(Tmp, MSGJPN361, VER_STR, VersionString, Description);\r
                                        if(NoConfirm == YES || MessageBox(GetMainHwnd(), Tmp, "FFFTP", MB_YESNO) == IDYES)\r
                                        {\r
                                                strcpy(Tmp, TmpPath);\r
@@ -3737,18 +3736,18 @@ void UpdateSoftware(int Async, int NoError, int NoConfirm)
                                                _mkdir(Tmp);\r
                                                if(CheckForUpdates(TRUE, Tmp, &Version, VersionString, Description))\r
                                                {\r
-                                                       MessageBox(GetMainHwnd(), MSGJPN365, "FFFTP", MB_OK);\r
+                                                       MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);\r
                                                        ApplyUpdatesOnExit = YES;\r
                                                }\r
                                                else if(NoError == NO)\r
-                                                       MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);\r
+                                                       MessageBox(GetMainHwnd(), MSGJPN362, "FFFTP", MB_OK | MB_ICONERROR);\r
                                        }\r
                                }\r
                                else if(NoError == NO)\r
-                                       MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);\r
+                                       MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK);\r
                        }\r
                        else if(NoError == NO)\r
-                               MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);\r
+                               MessageBox(GetMainHwnd(), MSGJPN362, "FFFTP", MB_OK | MB_ICONERROR);\r
                }\r
        }\r
 }\r
index d93e2dc..a1d7863 100644 (file)
 #define MSGJPN340              _Tu8("View2", "View2")\r
 #define MSGJPN341              _Tu8("Enable or disable stateful FTP filtering of Windows Firewall.\nIt works only on Windows Vista or later.\nEnabling or disabling may improve communication conditions.\nChoose 'Yes' to enable or 'No' to disable it.", "Enable or disable stateful FTP filtering of Windows Firewall.\nIt works only on Windows Vista or later.\nEnabling or disabling may improve communication conditions.\nChoose 'Yes' to enable or 'No' to disable it.")\r
 #define MSGJPN342              _Tu8("Failed to turn on/off stateful FTP filtering.", "Failed to turn on/off stateful FTP filtering.")\r
-#define MSGJPN343              _Tu8("A corruption or tampering of the settings is detected.\nProblems such as settings loss or abnormal stop may occur if this is ignored to load.\nChoose 'Abort' to discard all settings.\nChoose 'Retry' to load settings as read only.\nChoose 'Ignore' to ignore this and load settings", "A corruption or tampering of the settings is detected.\nProblems such as settings loss or abnormal stop may occur if this is ignored to load.\nChoose 'Abort' to discard all settings.\nChoose 'Retry' to load settings as read only.\nChoose 'Ignore' to ignore this and load settings")\r
-#define MSGJPN344              _Tu8("Determination result of the filename Kanji code is %s.", "Determination result of the filename Kanji code is %s.")\r
-#define MSGJPN345              _Tu8("Failed to determine the filename Kanji code.", "Failed to determine the filename Kanji code.")\r
-#define MSGJPN346              _Tu8("Shift_JIS", "Shift_JIS")\r
-#define MSGJPN347              _Tu8("JIS", "JIS")\r
-#define MSGJPN348              _Tu8("EUC", "EUC")\r
-#define MSGJPN349              _Tu8("UTF-8", "UTF-8")\r
-#define MSGJPN350              _Tu8("UTF-8 HFS+", "UTF-8 HFS+")\r
-#define MSGJPN351              _Tu8("The settings of a newer version are detected.\nThe settings may not be read correctly, or they will be changed when they are overwritten for this version.\nChoose 'Yes' to overwrite settings for this version.\nChoose 'No' to save settings to the INI file.\nChoose 'Cancel' to load settings as read only.", "The settings of a newer version are detected.\nThe settings may not be read correctly, or they will be changed when they are overwritten for this version.\nChoose 'Yes' to overwrite settings for this version.\nChoose 'No' to save settings to the INI file.\nChoose 'Cancel' to load settings as read only.")\r
-#define MSGJPN352              _Tu8("Warning: No encryption", "Warning: No encryption")\r
-#define MSGJPN353              _Tu8("Encrypted: FTPES", "Encrypted: FTPES")\r
-#define MSGJPN354              _Tu8("Encrypted: FTPIS", "Encrypted: FTPIS")\r
-#define MSGJPN355              _Tu8("Encrypted: SFTP", "Encrypted: SFTP")\r
-#define MSGJPN356              _Tu8("Move to &parent folder...", "Move to &parent folder...")\r
-#define MSGJPN357              _Tu8("XML file\0*.xml\0All file\0*\0", "XML file\0*.xml\0All file\0*\0")\r
-#define MSGJPN358              _Tu8("Failed to export the settings.\nPlease change saving path or format.", "Failed to export the settings.\nPlease change saving path or format.")\r
-#define MSGJPN359              _Tu8("Software update has been completed.", "Software update has been completed.")\r
-#define MSGJPN360              _Tu8("Failed to update the software.\nPlease get the latest version from our web site and update it manually.", "Failed to update the software.\nPlease get the latest version from our web site and update it manually.")\r
-#define MSGJPN361              _Tu8("Updates", "Updates")\r
-#define MSGJPN362              _Tu8("There is a new version.\n\nCurrent version: %s\nNew version: %s\n%s\n\nIt takes a few minutes to download the updates.\nDo you want to update now?\n", "There is a new version.\n\nCurrent version: %s\nNew version: %s\n%s\n\nIt takes a few minutes to download the updates.\nDo you want to update now?\n")\r
-#define MSGJPN363              _Tu8("Failed to update the software.\nCannot connect to the server or the data is corrupted.", "Failed to update the software.\nCannot connect to the server or the data is corrupted.")\r
-#define MSGJPN364              _Tu8("Your version is already up-to-date.", "Your version is already up-to-date.")\r
-#define MSGJPN365              _Tu8("Preparing for the software update has been completed.\nIt will be applied on exit.", "Preparing for the software update has been completed.\nIt will be applied on exit.")\r
+#define MSGJPN343              _Tu8("Determination result of the filename Kanji code is %s.", "Determination result of the filename Kanji code is %s.")\r
+#define MSGJPN344              _Tu8("Failed to determine the filename Kanji code.", "Failed to determine the filename Kanji code.")\r
+#define MSGJPN345              _Tu8("Shift_JIS", "Shift_JIS")\r
+#define MSGJPN346              _Tu8("JIS", "JIS")\r
+#define MSGJPN347              _Tu8("EUC", "EUC")\r
+#define MSGJPN348              _Tu8("UTF-8", "UTF-8")\r
+#define MSGJPN349              _Tu8("UTF-8 HFS+", "UTF-8 HFS+")\r
+#define MSGJPN350              _Tu8("The settings of a newer version are detected.\nThe settings may not be read correctly, or they will be changed when they are overwritten for this version.\nChoose 'Yes' to overwrite settings for this version.\nChoose 'No' to save settings to the INI file.\nChoose 'Cancel' to load settings as read only.", "The settings of a newer version are detected.\nThe settings may not be read correctly, or they will be changed when they are overwritten for this version.\nChoose 'Yes' to overwrite settings for this version.\nChoose 'No' to save settings to the INI file.\nChoose 'Cancel' to load settings as read only.")\r
+#define MSGJPN351              _Tu8("Warning: No encryption", "Warning: No encryption")\r
+#define MSGJPN352              _Tu8("Encrypted: FTPES", "Encrypted: FTPES")\r
+#define MSGJPN353              _Tu8("Encrypted: FTPIS", "Encrypted: FTPIS")\r
+#define MSGJPN354              _Tu8("Encrypted: SFTP", "Encrypted: SFTP")\r
+#define MSGJPN355              _Tu8("Move to &parent folder...", "Move to &parent folder...")\r
+#define MSGJPN356              _Tu8("XML file\0*.xml\0All file\0*\0", "XML file\0*.xml\0All file\0*\0")\r
+#define MSGJPN357              _Tu8("Failed to export the settings.\nPlease change saving path or format.", "Failed to export the settings.\nPlease change saving path or format.")\r
+#define MSGJPN358              _Tu8("Software update has been completed.", "Software update has been completed.")\r
+#define MSGJPN359              _Tu8("Failed to update the software.\nPlease get the latest version from our web site and update it manually.", "Failed to update the software.\nPlease get the latest version from our web site and update it manually.")\r
+#define MSGJPN360              _Tu8("Updates", "Updates")\r
+#define MSGJPN361              _Tu8("There is a new version.\n\nCurrent version: %s\nNew version: %s\n%s\n\nIt takes a few minutes to download the updates.\nDo you want to update now?\n", "There is a new version.\n\nCurrent version: %s\nNew version: %s\n%s\n\nIt takes a few minutes to download the updates.\nDo you want to update now?\n")\r
+#define MSGJPN362              _Tu8("Failed to update the software.\nCannot connect to the server or the data is corrupted.", "Failed to update the software.\nCannot connect to the server or the data is corrupted.")\r
+#define MSGJPN363              _Tu8("Your version is already up-to-date.", "Your version is already up-to-date.")\r
+#define MSGJPN364              _Tu8("Preparing for the software update has been completed.\nIt will be applied on exit.", "Preparing for the software update has been completed.\nIt will be applied on exit.")\r
 #if defined(HAVE_TANDEM)\r
 #define MSGJPN2000             _Tu8("NonStop Server", "NonStop Server")\r
 #define MSGJPN2001             _Tu8("OSS<->GUARDIAN Switch(&O)", "OSS<->GUARDIAN Switch(&O)")\r
index fd41d9b..67cef17 100644 (file)
 #define MSGJPN340              _Tu8("表示2", "\xE8\xA1\xA8\xE7\xA4\xBA\x32")\r
 #define MSGJPN341              _Tu8("WindowsファイアウォールのステートフルFTPフィルタの有効無効を設定します.\nこれはWindows Vista以降でのみ動作します.\n有効化または無効化することで通信状態が改善されることがあります.\n有効化するには「はい」,無効化するには「いいえ」を選択してください.", "Windows\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x82\xA2\xE3\x82\xA6\xE3\x82\xA9\xE3\x83\xBC\xE3\x83\xAB\xE3\x81\xAE\xE3\x82\xB9\xE3\x83\x86\xE3\x83\xBC\xE3\x83\x88\xE3\x83\x95\xE3\x83\xAB\x46TP\xE3\x83\x95\xE3\x82\xA3\xE3\x83\xAB\xE3\x82\xBF\xE3\x81\xAE\xE6\x9C\x89\xE5\x8A\xB9\xE7\x84\xA1\xE5\x8A\xB9\xE3\x82\x92\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99.\n\xE3\x81\x93\xE3\x82\x8C\xE3\x81\xAFWindows Vista\xE4\xBB\xA5\xE9\x99\x8D\xE3\x81\xA7\xE3\x81\xAE\xE3\x81\xBF\xE5\x8B\x95\xE4\xBD\x9C\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99.\n\xE6\x9C\x89\xE5\x8A\xB9\xE5\x8C\x96\xE3\x81\xBE\xE3\x81\x9F\xE3\x81\xAF\xE7\x84\xA1\xE5\x8A\xB9\xE5\x8C\x96\xE3\x81\x99\xE3\x82\x8B\xE3\x81\x93\xE3\x81\xA8\xE3\x81\xA7\xE9\x80\x9A\xE4\xBF\xA1\xE7\x8A\xB6\xE6\x85\x8B\xE3\x81\x8C\xE6\x94\xB9\xE5\x96\x84\xE3\x81\x95\xE3\x82\x8C\xE3\x82\x8B\xE3\x81\x93\xE3\x81\xA8\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\xE6\x9C\x89\xE5\x8A\xB9\xE5\x8C\x96\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\xAF\xE3\x81\x84\xE3\x80\x8D,\xE7\x84\xA1\xE5\x8A\xB9\xE5\x8C\x96\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\x84\xE3\x81\x84\xE3\x81\x88\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
 #define MSGJPN342              _Tu8("ステートフルFTPフィルタを設定できませんでした.", "\xE3\x82\xB9\xE3\x83\x86\xE3\x83\xBC\xE3\x83\x88\xE3\x83\x95\xE3\x83\xAB\x46TP\xE3\x83\x95\xE3\x82\xA3\xE3\x83\xAB\xE3\x82\xBF\xE3\x82\x92\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F.")\r
-#define MSGJPN343              _Tu8("設定の破損または改竄が検出されました.\n無視して読み込むと異常停止や設定の消失などの不具合が発生する可能性があります.\n全ての設定を破棄するには「中止」を選択してください.\n読み取り専用で設定を読み込むには「再試行」を選択してください.\n無視して設定を読み込むには「無視」を選択してください.", "\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xAE\xE7\xA0\xB4\xE6\x90\x8D\xE3\x81\xBE\xE3\x81\x9F\xE3\x81\xAF\xE6\x94\xB9\xE7\xAB\x84\xE3\x81\x8C\xE6\xA4\x9C\xE5\x87\xBA\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE7\x84\xA1\xE8\xA6\x96\xE3\x81\x97\xE3\x81\xA6\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x82\x80\xE3\x81\xA8\xE7\x95\xB0\xE5\xB8\xB8\xE5\x81\x9C\xE6\xAD\xA2\xE3\x82\x84\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xAE\xE6\xB6\x88\xE5\xA4\xB1\xE3\x81\xAA\xE3\x81\xA9\xE3\x81\xAE\xE4\xB8\x8D\xE5\x85\xB7\xE5\x90\x88\xE3\x81\x8C\xE7\x99\xBA\xE7\x94\x9F\xE3\x81\x99\xE3\x82\x8B\xE5\x8F\xAF\xE8\x83\xBD\xE6\x80\xA7\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE7\xA0\xB4\xE6\xA3\x84\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE8\xAA\xAD\xE3\x81\xBF\xE5\x8F\x96\xE3\x82\x8A\xE5\xB0\x82\xE7\x94\xA8\xE3\x81\xA7\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x82\x80\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE5\x86\x8D\xE8\xA9\xA6\xE8\xA1\x8C\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE7\x84\xA1\xE8\xA6\x96\xE3\x81\x97\xE3\x81\xA6\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x82\x80\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE7\x84\xA1\xE8\xA6\x96\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
-#define MSGJPN344              _Tu8("ファイル名の漢字コードの判別結果は%sです.", "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAE\xE5\x88\xA4\xE5\x88\xA5\xE7\xB5\x90\xE6\x9E\x9C\xE3\x81\xAF%s\xE3\x81\xA7\xE3\x81\x99.")\r
-#define MSGJPN345              _Tu8("ファイル名の漢字コードを判別できませんでした.", "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE5\x88\xA4\xE5\x88\xA5\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F.")\r
-#define MSGJPN346              _Tu8("Shift_JIS", "Shift_JIS")\r
-#define MSGJPN347              _Tu8("JIS", "JIS")\r
-#define MSGJPN348              _Tu8("EUC", "EUC")\r
-#define MSGJPN349              _Tu8("UTF-8", "UTF-8")\r
-#define MSGJPN350              _Tu8("UTF-8 HFS+", "UTF-8 HFS+")\r
-#define MSGJPN351              _Tu8("新しいバージョンの設定が検出されました.\nこのバージョンでは一部の設定が正しく読み込まれない,またはこのバージョンで設定を上書きすると設定が変化する可能性があります.\nこのバージョン用に設定を上書きして保存するには「はい」を選択してください.\n設定をレジストリではなくINIファイルに保存するには「いいえ」を選択してください.\n読み取り専用で設定を読み込むには「キャンセル」を選択してください.", "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE6\xA4\x9C\xE5\x87\xBA\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xA7\xE3\x81\xAF\xE4\xB8\x80\xE9\x83\xA8\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE6\xAD\xA3\xE3\x81\x97\xE3\x81\x8F\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x81\xBE\xE3\x82\x8C\xE3\x81\xAA\xE3\x81\x84,\xE3\x81\xBE\xE3\x81\x9F\xE3\x81\xAF\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xA7\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xA8\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE5\xA4\x89\xE5\x8C\x96\xE3\x81\x99\xE3\x82\x8B\xE5\x8F\xAF\xE8\x83\xBD\xE6\x80\xA7\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE7\x94\xA8\xE3\x81\xAB\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D\xE3\x81\x97\xE3\x81\xA6\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\xAF\xE3\x81\x84\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE3\x83\xAC\xE3\x82\xB8\xE3\x82\xB9\xE3\x83\x88\xE3\x83\xAA\xE3\x81\xA7\xE3\x81\xAF\xE3\x81\xAA\xE3\x81\x8FINI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAB\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\x84\xE3\x81\x84\xE3\x81\x88\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE8\xAA\xAD\xE3\x81\xBF\xE5\x8F\x96\xE3\x82\x8A\xE5\xB0\x82\xE7\x94\xA8\xE3\x81\xA7\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x82\x80\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x82\xAD\xE3\x83\xA3\xE3\x83\xB3\xE3\x82\xBB\xE3\x83\xAB\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
-#define MSGJPN352              _Tu8("警告: 暗号化されていません", "\xE8\xAD\xA6\xE5\x91\x8A: \xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93")\r
-#define MSGJPN353              _Tu8("暗号化されています: FTPES", "\xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99: FTPES")\r
-#define MSGJPN354              _Tu8("暗号化されています: FTPIS", "\xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99: FTPIS")\r
-#define MSGJPN355              _Tu8("暗号化されています: SFTP", "\xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99: SFTP")\r
-#define MSGJPN356              _Tu8("一つ上のフォルダへ移動(&P)...", "\xE4\xB8\x80\xE3\x81\xA4\xE4\xB8\x8A\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x81\xB8\xE7\xA7\xBB\xE5\x8B\x95(&P)...")\r
-#define MSGJPN357              _Tu8("XMLファイル\0*.xml\0全てのファイル\0*\0", "XML\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.xml\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*\0")\r
-#define MSGJPN358              _Tu8("設定のエクスポートに失敗しました.\n保存する場所や形式を変更してください.", "\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xAE\xE3\x82\xA8\xE3\x82\xAF\xE3\x82\xB9\xE3\x83\x9D\xE3\x83\xBC\xE3\x83\x88\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE5\xA0\xB4\xE6\x89\x80\xE3\x82\x84\xE5\xBD\xA2\xE5\xBC\x8F\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
-#define MSGJPN359              _Tu8("ソフトウェアの更新が完了しました.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x8C\xE5\xAE\x8C\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.")\r
-#define MSGJPN360              _Tu8("ソフトウェアの更新に失敗しました.\nWebサイトから最新版を入手して手動で更新してください.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\nWeb\xE3\x82\xB5\xE3\x82\xA4\xE3\x83\x88\xE3\x81\x8B\xE3\x82\x89\xE6\x9C\x80\xE6\x96\xB0\xE7\x89\x88\xE3\x82\x92\xE5\x85\xA5\xE6\x89\x8B\xE3\x81\x97\xE3\x81\xA6\xE6\x89\x8B\xE5\x8B\x95\xE3\x81\xA7\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
-#define MSGJPN361              _Tu8("更新", "\xE6\x9B\xB4\xE6\x96\xB0")\r
-#define MSGJPN362              _Tu8("新しいバージョンがあります.\n\n現在のバージョン: %s\n新しいバージョン: %s\n%s\n\n更新のダウンロードには数分間かかります.\n今すぐ更新しますか.", "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\n\xE7\x8F\xBE\xE5\x9C\xA8\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3: %s\n\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3: %s\n%s\n\n\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAE\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAB\xE3\x81\xAF\xE6\x95\xB0\xE5\x88\x86\xE9\x96\x93\xE3\x81\x8B\xE3\x81\x8B\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\xE4\xBB\x8A\xE3\x81\x99\xE3\x81\x90\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99\xE3\x81\x8B.")\r
-#define MSGJPN363              _Tu8("ソフトウェアの更新に失敗しました.\nサーバーに接続できないかデータが破損しています.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xAA\xE3\x81\x84\xE3\x81\x8B\xE3\x83\x87\xE3\x83\xBC\xE3\x82\xBF\xE3\x81\x8C\xE7\xA0\xB4\xE6\x90\x8D\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99.")\r
-#define MSGJPN364              _Tu8("お使いのバージョンはすでに最新です.", "\xE3\x81\x8A\xE4\xBD\xBF\xE3\x81\x84\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xAF\xE3\x81\x99\xE3\x81\xA7\xE3\x81\xAB\xE6\x9C\x80\xE6\x96\xB0\xE3\x81\xA7\xE3\x81\x99.")\r
-#define MSGJPN365              _Tu8("ソフトウェアの更新の準備が完了しました.\nFFFTPの終了時に更新が適用されます.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAE\xE6\xBA\x96\xE5\x82\x99\xE3\x81\x8C\xE5\xAE\x8C\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\nFFFTP\xE3\x81\xAE\xE7\xB5\x82\xE4\xBA\x86\xE6\x99\x82\xE3\x81\xAB\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x8C\xE9\x81\xA9\xE7\x94\xA8\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x99.")\r
+#define MSGJPN343              _Tu8("ファイル名の漢字コードの判別結果は%sです.", "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAE\xE5\x88\xA4\xE5\x88\xA5\xE7\xB5\x90\xE6\x9E\x9C\xE3\x81\xAF%s\xE3\x81\xA7\xE3\x81\x99.")\r
+#define MSGJPN344              _Tu8("ファイル名の漢字コードを判別できませんでした.", "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE5\x88\xA4\xE5\x88\xA5\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F.")\r
+#define MSGJPN345              _Tu8("Shift_JIS", "Shift_JIS")\r
+#define MSGJPN346              _Tu8("JIS", "JIS")\r
+#define MSGJPN347              _Tu8("EUC", "EUC")\r
+#define MSGJPN348              _Tu8("UTF-8", "UTF-8")\r
+#define MSGJPN349              _Tu8("UTF-8 HFS+", "UTF-8 HFS+")\r
+#define MSGJPN350              _Tu8("新しいバージョンの設定が検出されました.\nこのバージョンでは一部の設定が正しく読み込まれない,またはこのバージョンで設定を上書きすると設定が変化する可能性があります.\nこのバージョン用に設定を上書きして保存するには「はい」を選択してください.\n設定をレジストリではなくINIファイルに保存するには「いいえ」を選択してください.\n読み取り専用で設定を読み込むには「キャンセル」を選択してください.", "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE6\xA4\x9C\xE5\x87\xBA\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xA7\xE3\x81\xAF\xE4\xB8\x80\xE9\x83\xA8\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE6\xAD\xA3\xE3\x81\x97\xE3\x81\x8F\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x81\xBE\xE3\x82\x8C\xE3\x81\xAA\xE3\x81\x84,\xE3\x81\xBE\xE3\x81\x9F\xE3\x81\xAF\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xA7\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xA8\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE5\xA4\x89\xE5\x8C\x96\xE3\x81\x99\xE3\x82\x8B\xE5\x8F\xAF\xE8\x83\xBD\xE6\x80\xA7\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE7\x94\xA8\xE3\x81\xAB\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D\xE3\x81\x97\xE3\x81\xA6\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\xAF\xE3\x81\x84\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE3\x83\xAC\xE3\x82\xB8\xE3\x82\xB9\xE3\x83\x88\xE3\x83\xAA\xE3\x81\xA7\xE3\x81\xAF\xE3\x81\xAA\xE3\x81\x8FINI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAB\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\x84\xE3\x81\x84\xE3\x81\x88\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE8\xAA\xAD\xE3\x81\xBF\xE5\x8F\x96\xE3\x82\x8A\xE5\xB0\x82\xE7\x94\xA8\xE3\x81\xA7\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x82\x80\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x82\xAD\xE3\x83\xA3\xE3\x83\xB3\xE3\x82\xBB\xE3\x83\xAB\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
+#define MSGJPN351              _Tu8("警告: 暗号化されていません", "\xE8\xAD\xA6\xE5\x91\x8A: \xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93")\r
+#define MSGJPN352              _Tu8("暗号化されています: FTPES", "\xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99: FTPES")\r
+#define MSGJPN353              _Tu8("暗号化されています: FTPIS", "\xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99: FTPIS")\r
+#define MSGJPN354              _Tu8("暗号化されています: SFTP", "\xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99: SFTP")\r
+#define MSGJPN355              _Tu8("一つ上のフォルダへ移動(&P)...", "\xE4\xB8\x80\xE3\x81\xA4\xE4\xB8\x8A\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x81\xB8\xE7\xA7\xBB\xE5\x8B\x95(&P)...")\r
+#define MSGJPN356              _Tu8("XMLファイル\0*.xml\0全てのファイル\0*\0", "XML\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.xml\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*\0")\r
+#define MSGJPN357              _Tu8("設定のエクスポートに失敗しました.\n保存する場所や形式を変更してください.", "\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xAE\xE3\x82\xA8\xE3\x82\xAF\xE3\x82\xB9\xE3\x83\x9D\xE3\x83\xBC\xE3\x83\x88\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE5\xA0\xB4\xE6\x89\x80\xE3\x82\x84\xE5\xBD\xA2\xE5\xBC\x8F\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
+#define MSGJPN358              _Tu8("ソフトウェアの更新が完了しました.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x8C\xE5\xAE\x8C\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.")\r
+#define MSGJPN359              _Tu8("ソフトウェアの更新に失敗しました.\nWebサイトから最新版を入手して手動で更新してください.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\nWeb\xE3\x82\xB5\xE3\x82\xA4\xE3\x83\x88\xE3\x81\x8B\xE3\x82\x89\xE6\x9C\x80\xE6\x96\xB0\xE7\x89\x88\xE3\x82\x92\xE5\x85\xA5\xE6\x89\x8B\xE3\x81\x97\xE3\x81\xA6\xE6\x89\x8B\xE5\x8B\x95\xE3\x81\xA7\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
+#define MSGJPN360              _Tu8("更新", "\xE6\x9B\xB4\xE6\x96\xB0")\r
+#define MSGJPN361              _Tu8("新しいバージョンがあります.\n\n現在のバージョン: %s\n新しいバージョン: %s\n%s\n\n更新のダウンロードには数分間かかります.\n今すぐ更新しますか.", "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\n\xE7\x8F\xBE\xE5\x9C\xA8\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3: %s\n\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3: %s\n%s\n\n\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAE\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAB\xE3\x81\xAF\xE6\x95\xB0\xE5\x88\x86\xE9\x96\x93\xE3\x81\x8B\xE3\x81\x8B\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\xE4\xBB\x8A\xE3\x81\x99\xE3\x81\x90\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99\xE3\x81\x8B.")\r
+#define MSGJPN362              _Tu8("ソフトウェアの更新に失敗しました.\nサーバーに接続できないかデータが破損しています.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xAA\xE3\x81\x84\xE3\x81\x8B\xE3\x83\x87\xE3\x83\xBC\xE3\x82\xBF\xE3\x81\x8C\xE7\xA0\xB4\xE6\x90\x8D\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99.")\r
+#define MSGJPN363              _Tu8("お使いのバージョンはすでに最新です.", "\xE3\x81\x8A\xE4\xBD\xBF\xE3\x81\x84\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xAF\xE3\x81\x99\xE3\x81\xA7\xE3\x81\xAB\xE6\x9C\x80\xE6\x96\xB0\xE3\x81\xA7\xE3\x81\x99.")\r
+#define MSGJPN364              _Tu8("ソフトウェアの更新の準備が完了しました.\nFFFTPの終了時に更新が適用されます.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAE\xE6\xBA\x96\xE5\x82\x99\xE3\x81\x8C\xE5\xAE\x8C\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\nFFFTP\xE3\x81\xAE\xE7\xB5\x82\xE4\xBA\x86\xE6\x99\x82\xE3\x81\xAB\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x8C\xE9\x81\xA9\xE7\x94\xA8\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x99.")\r
 #if defined(HAVE_TANDEM)\r
 #define MSGJPN2000             _Tu8("NonStop Server", "NonStop Server")\r
 #define MSGJPN2001             _Tu8("OSS<->GUARDIAN 切り替え(&O)", "OSS<->GUARDIAN \xE5\x88\x87\xE3\x82\x8A\xE6\x9B\xBF\xE3\x81\x88(&O)")\r
diff --git a/misc.c b/misc.c
index 8cdc436..02355e3 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -262,6 +262,27 @@ INT_PTR CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LP
 }\r
 \r
 \r
+// 全設定暗号化対応\r
+// 何らかのボタンが押されたときに終了\r
+INT_PTR CALLBACK AnyButtonDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+{\r
+       switch (message)\r
+       {\r
+               case WM_INITDIALOG :\r
+                       return(TRUE);\r
+\r
+               case WM_COMMAND :\r
+                       switch(GET_WM_COMMAND_CMD(wParam, lParam))\r
+                       {\r
+                               case BN_CLICKED :\r
+                                       EndDialog(hDlg, GET_WM_COMMAND_ID(wParam, lParam));\r
+                                       break;\r
+                       }\r
+                       return(TRUE);\r
+       }\r
+    return(FALSE);\r
+}\r
+\r
 /*----- 文字列の最後に "\" を付ける -------------------------------------------\r
 *\r
 *      Parameter\r
index 9b22034..208efcf 100644 (file)
--- a/option.c
+++ b/option.c
@@ -431,7 +431,7 @@ void SetOption(int Start)
        psp[13].pszTemplate = MAKEINTRESOURCE(opt_updates_dlg);\r
        psp[13].pszIcon = NULL;\r
        psp[13].pfnDlgProc = UpdatesSettingProc;\r
-       psp[13].pszTitle = MSGJPN361;\r
+       psp[13].pszTitle = MSGJPN360;\r
        psp[13].lParam = 0;\r
        psp[13].pfnCallback = NULL;\r
 \r
index fb8a8d3..b80c17c 100644 (file)
@@ -93,13 +93,17 @@ static int WriteBinaryToReg(void *Handle, char *Name, void *Bin, int Len);
 static int StrCatOut(char *Src, int Len, char *Dst);\r
 static int StrReadIn(char *Src, int Max, char *Dst);\r
 \r
-int CheckPasswordValidity( char* Password, int length, const char* HashStr );\r
-void CreatePasswordHash( char* Password, int length, char* HashStr );\r
+// 全設定暗号化対応\r
+//int CheckPasswordValidity( char* Password, int length, const char* HashStr );\r
+//void CreatePasswordHash( char* Password, int length, char* HashStr );\r
+int CheckPasswordValidity( char* Password, int length, const char* HashStr, int StretchCount );\r
+void CreatePasswordHash( char* Password, int length, char* HashStr, int StretchCount );\r
 void SetHashSalt( DWORD salt );\r
 \r
 DWORD GetRandamDWRODValue(void);\r
 \r
 // 全設定暗号化対応\r
+void GetMaskWithHMACSHA1(DWORD IV, const char* Salt, int SaltLength, void* pHash);\r
 void MaskSettingsData(const char* Salt, int SaltLength, void* Data, DWORD Size, int EscapeZero);\r
 void UnmaskSettingsData(const char* Salt, int SaltLength, void* Data, DWORD Size, int EscapeZero);\r
 void CalculateSettingsDataChecksum(void* Data, DWORD Size);\r
@@ -302,12 +306,17 @@ int ValidateMasterPassword(void)
        if(i == FFFTP_SUCCESS){\r
                char checkbuf[48];\r
                int salt = 0;\r
+               // 全設定暗号化対応\r
+               int stretch = 0;\r
 \r
                if( ReadIntValueFromReg(hKey3, "CredentialSalt", &salt)){\r
                        SetHashSalt( salt );\r
                }\r
                if( ReadStringFromReg(hKey3, "CredentialCheck", checkbuf, sizeof( checkbuf )) == FFFTP_SUCCESS ){\r
-                       switch( CheckPasswordValidity( SecretKey, SecretKeyLength, checkbuf ) ){\r
+                       // 全設定暗号化対応\r
+//                     switch( CheckPasswordValidity( SecretKey, SecretKeyLength, checkbuf ) ){\r
+                       ReadIntValueFromReg(hKey3, "CredentialStretch", &stretch);\r
+                       switch( CheckPasswordValidity( SecretKey, SecretKeyLength, checkbuf, stretch ) ){\r
                        case 0: /* not match */\r
                                IsMasterPasswordError = PASSWORD_UNMATCH;\r
                                break;\r
@@ -375,7 +384,18 @@ void SaveRegistry(void)
                \r
                SetHashSalt( salt );\r
                /* save password hash */\r
-               CreatePasswordHash( SecretKey, SecretKeyLength, buf );\r
+               // 全設定暗号化対応\r
+//             CreatePasswordHash( SecretKey, SecretKeyLength, buf );\r
+               if(EncryptAllSettings == YES)\r
+               {\r
+                       WriteIntValueToReg(hKey3, "CredentialStretch", 65535);\r
+                       CreatePasswordHash( SecretKey, SecretKeyLength, buf, 65535 );\r
+               }\r
+               else\r
+               {\r
+                       WriteIntValueToReg(hKey3, "CredentialStretch", 0);\r
+                       CreatePasswordHash( SecretKey, SecretKeyLength, buf, 0 );\r
+               }\r
                WriteStringToReg(hKey3, "CredentialCheck", buf);\r
 \r
                // 全設定暗号化対応\r
@@ -804,13 +824,17 @@ int LoadRegistry(void)
                                memset(&EncryptSettingsChecksum, 0, 20);\r
                                if(strcmp(Buf, Buf2) != 0)\r
                                {\r
-                                       switch(MessageBox(GetMainHwnd(), MSGJPN343, "FFFTP", MB_ABORTRETRYIGNORE | MB_DEFBUTTON2))\r
+                                       switch(DialogBox(GetFtpInst(), MAKEINTRESOURCE(corruptsettings_dlg), GetMainHwnd(), AnyButtonDialogProc))\r
                                        {\r
+                                       case IDCANCEL:\r
+                                               Terminate();\r
+                                               break;\r
                                        case IDABORT:\r
                                                CloseReg(hKey3);\r
                                                ClearRegistry();\r
                                                ClearIni();\r
-                                               RestartAndTerminate();\r
+                                               Restart();\r
+                                               Terminate();\r
                                                break;\r
                                        case IDRETRY:\r
                                                EncryptSettingsError = YES;\r
@@ -1204,13 +1228,17 @@ int LoadRegistry(void)
                                ReadBinaryFromReg(hKey3, "EncryptAllChecksum", &Checksum, 20);\r
                                if(memcmp(&Checksum, &EncryptSettingsChecksum, 20) != 0)\r
                                {\r
-                                       switch(MessageBox(GetMainHwnd(), MSGJPN343, "FFFTP", MB_ABORTRETRYIGNORE | MB_DEFBUTTON2))\r
+                                       switch(DialogBox(GetFtpInst(), MAKEINTRESOURCE(corruptsettings_dlg), GetMainHwnd(), AnyButtonDialogProc))\r
                                        {\r
+                                       case IDCANCEL:\r
+                                               Terminate();\r
+                                               break;\r
                                        case IDABORT:\r
                                                CloseReg(hKey3);\r
                                                ClearRegistry();\r
                                                ClearIni();\r
-                                               RestartAndTerminate();\r
+                                               Restart();\r
+                                               Terminate();\r
                                                break;\r
                                        case IDRETRY:\r
                                                EncryptSettingsError = YES;\r
@@ -3280,8 +3308,11 @@ static char *ScanValue(void *Handle, char *Name)
 *                      1: 一致\r
 *                      2: 異常\r
 *----------------------------------------------------------------------------*/\r
-int CheckPasswordValidity( char* Password, int length, const char* HashStr )\r
+// 全設定暗号化対応\r
+//int CheckPasswordValidity( char* Password, int length, const char* HashStr )\r
+int CheckPasswordValidity( char* Password, int length, const char* HashStr, int StretchCount )\r
 {\r
+       char Buf[MAX_PASSWORD_LEN + 32];\r
        ulong hash1[5];\r
        ulong hash2[5];\r
        \r
@@ -3310,6 +3341,12 @@ int CheckPasswordValidity( char* Password, int length, const char* HashStr )
        \r
        /* Password をハッシュする */\r
        sha_memory( Password, length, hash2 );\r
+       for(i = 0; i < StretchCount; i++)\r
+       {\r
+               memcpy(&Buf[0], &hash2, 20);\r
+               memcpy(&Buf[20], Password, length);\r
+               sha_memory(Buf, 20 + length, hash2);\r
+       }\r
        \r
        if( memcmp( (char*)hash1, (char*)hash2, sizeof( hash1 )) == 0 ){\r
                return 1;\r
@@ -3326,13 +3363,22 @@ int CheckPasswordValidity( char* Password, int length, const char* HashStr )
 *      Return Value\r
 *              None\r
 *----------------------------------------------------------------------------*/\r
-void CreatePasswordHash( char* Password, int length, char* HashStr )\r
+// 全設定暗号化対応\r
+//void CreatePasswordHash( char* Password, int length, char* HashStr )\r
+void CreatePasswordHash( char* Password, int length, char* HashStr, int StretchCount )\r
 {\r
+       char Buf[MAX_PASSWORD_LEN + 32];\r
        ulong hash[5];\r
        int i, j;\r
        unsigned char *p = (unsigned char *)HashStr;\r
 \r
        sha_memory( Password, length, hash );\r
+       for(i = 0; i < StretchCount; i++)\r
+       {\r
+               memcpy(&Buf[0], &hash, 20);\r
+               memcpy(&Buf[20], Password, length);\r
+               sha_memory(Buf, 20 + length, hash);\r
+       }\r
 \r
        for( i = 0; i < 5; i++ ){\r
                ulong rest = hash[i];\r
@@ -3426,31 +3472,54 @@ DWORD GetRandamDWRODValue(void)
 }\r
 \r
 // 全設定暗号化対応\r
-// 内部状態推定対策としてハッシュの160ビットのうち80ビットのみを鍵として使用\r
+void GetMaskWithHMACSHA1(DWORD Nonce, const char* Salt, int SaltLength, void* pHash)\r
+{\r
+       BYTE Key[FMAX_PATH*2+1];\r
+       ulong Hash[5];\r
+       DWORD i;\r
+       for(i = 0; i < 16; i++)\r
+       {\r
+               Nonce = ~Nonce;\r
+               Nonce *= 1566083941;\r
+               Nonce = _byteswap_ulong(Nonce);\r
+               memcpy(&Key[i * 4], &Nonce, 4);\r
+       }\r
+       memcpy(&Key[64], Salt, SaltLength);\r
+       memcpy(&Key[64 + SaltLength], SecretKey, SecretKeyLength);\r
+       sha_memory((char*)&Key, 64 + SaltLength + SecretKeyLength, Hash);\r
+       // sha.cはビッグエンディアンのため\r
+       for(i = 0; i < 5; i++)\r
+               Hash[i] = _byteswap_ulong(Hash[i]);\r
+       memcpy(&Key[0], &Hash, 20);\r
+       memset(&Key[20], 0, 44);\r
+       for(i = 0; i < 64; i++)\r
+               Key[i] ^= 0x36;\r
+       sha_memory((char*)&Key, 64, Hash);\r
+       // sha.cはビッグエンディアンのため\r
+       for(i = 0; i < 5; i++)\r
+               Hash[i] = _byteswap_ulong(Hash[i]);\r
+       memcpy(&Key[64], &Hash, 20);\r
+       for(i = 0; i < 64; i++)\r
+               Key[i] ^= 0x6a;\r
+       sha_memory((char*)&Key, 84, Hash);\r
+       // sha.cはビッグエンディアンのため\r
+       for(i = 0; i < 5; i++)\r
+               Hash[i] = _byteswap_ulong(Hash[i]);\r
+       memcpy(pHash, &Hash, 20);\r
+}\r
+\r
 void MaskSettingsData(const char* Salt, int SaltLength, void* Data, DWORD Size, int EscapeZero)\r
 {\r
-       char Key[FMAX_PATH*2+1];\r
        BYTE* p;\r
        DWORD i;\r
-       DWORD j;\r
-       ulong Hash[5];\r
-       BYTE Mask[10];\r
-       memcpy(&Key[0], SecretKey, SecretKeyLength);\r
-       memcpy(&Key[SecretKeyLength], Salt, SaltLength);\r
+       BYTE Mask[20];\r
        p = (BYTE*)Data;\r
        for(i = 0; i < Size; i++)\r
        {\r
-               if(i % 10 == 0)\r
-               {\r
-                       memcpy(&Key[SecretKeyLength + SaltLength], &i, 4);\r
-                       sha_memory(Key, SecretKeyLength + SaltLength + 4, Hash);\r
-                       // sha.cはビッグエンディアンのため\r
-                       for(j = 0; j < 5; j++)\r
-                               Hash[j] = _byteswap_ulong(Hash[j]);\r
-                       memcpy(&Mask, &Hash, 10);\r
-               }\r
-               if(EscapeZero == NO || (p[i] != 0 && p[i] != Mask[i % 10]))\r
-                       p[i] ^= Mask[i % 10];\r
+               if(i % 20 == 0)\r
+                       GetMaskWithHMACSHA1(i, Salt, SaltLength, &Mask);\r
+               if(EscapeZero == NO || (p[i] != 0 && p[i] != Mask[i % 20]))\r
+                       p[i] ^= Mask[i % 20];\r
        }\r
 }\r
 \r
@@ -3540,7 +3609,7 @@ void SaveSettingsToFileZillaXml()
        char* p1;\r
        char* p2;\r
        strcpy(Fname, "FileZilla.xml");\r
-       if(SelectFile(GetMainHwnd(), Fname, MSGJPN286, MSGJPN357, "xml", OFN_EXTENSIONDIFFERENT | OFN_OVERWRITEPROMPT, 1) == TRUE)\r
+       if(SelectFile(GetMainHwnd(), Fname, MSGJPN286, MSGJPN356, "xml", OFN_EXTENSIONDIFFERENT | OFN_OVERWRITEPROMPT, 1) == TRUE)\r
        {\r
                if((f = fopen(Fname, "wt")) != NULL)\r
                {\r
@@ -3703,7 +3772,7 @@ void SaveSettingsToFileZillaXml()
                        fclose(f);\r
                }\r
                else\r
-                       MessageBox(GetMainHwnd(), MSGJPN358, "FFFTP", MB_OK | MB_ICONERROR);\r
+                       MessageBox(GetMainHwnd(), MSGJPN357, "FFFTP", MB_OK | MB_ICONERROR);\r
        }\r
 }\r
 \r
index 82415f7..3298f56 100644 (file)
@@ -1976,7 +1976,7 @@ void RemoteRbuttonMenu(int Pos)
                        AppendMenu(hMenu, MF_STRING | Flg1, MENU_SWITCH_OSS, MSGJPN2001);\r
 #endif\r
                // 上位のディレクトリへ移動対応\r
-               AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_REMOTE_MOVE_UPDIR, MSGJPN356);\r
+               AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_REMOTE_MOVE_UPDIR, MSGJPN355);\r
                AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);\r
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_FILESIZE, MSGJPN272);\r
                AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);\r