• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

FFFTPのソースコードです。


Commit MetaInfo

Revisãoe08abbd46155921a7587cfdc1b173875891e410d (tree)
Hora2014-06-22 22:10:13
Autors_kawamoto <s_kawamoto@user...>
Commiters_kawamoto

Mensagem de Log

Enhance all settings encryption.
Enhance the algorithm for validating master password against Brute-force attack.

Mudança Sumário

Diff

Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
--- a/Resource/FFFTP.rc
+++ b/Resource/FFFTP.rc
@@ -1480,6 +1480,18 @@ BEGIN
14801480 LTEXT "(0〜999日; 0=毎回起動時に確認)",-1,45,49,168,8
14811481 END
14821482
1483+corruptsettings_dlg DIALOGEX 0, 0, 232, 64
1484+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION
1485+CAPTION "設定が破損しています"
1486+FONT 9, "MS Shell Dlg", 0, 0, 0x0
1487+BEGIN
1488+ LTEXT "暗号化された設定の破損または改竄が検出されました。\r\n読み込むと異常停止や設定の消失などの不具合が発生する可能性があります。",-1,7,7,217,36
1489+ DEFPUSHBUTTON "終了",IDCANCEL,8,42,50,14
1490+ PUSHBUTTON "全て消去",IDABORT,63,42,50,14
1491+ PUSHBUTTON "読み取り専用",IDRETRY,118,42,50,14
1492+ PUSHBUTTON "無視",IDIGNORE,173,42,50,14
1493+END
1494+
14831495
14841496 /////////////////////////////////////////////////////////////////////////////
14851497 //
@@ -2167,6 +2179,14 @@ BEGIN
21672179 TOPMARGIN, 7
21682180 BOTTOMMARGIN, 148
21692181 END
2182+
2183+ corruptsettings_dlg, DIALOG
2184+ BEGIN
2185+ LEFTMARGIN, 7
2186+ RIGHTMARGIN, 225
2187+ TOPMARGIN, 7
2188+ BOTTOMMARGIN, 57
2189+ END
21702190 END
21712191 #endif // APSTUDIO_INVOKED
21722192
--- a/Resource/resource.h
+++ b/Resource/resource.h
@@ -118,6 +118,7 @@
118118 #define opt_trmode4_dlg 195
119119 #define opt_disp2_dlg 196
120120 #define opt_updates_dlg 197
121+#define corruptsettings_dlg 198
121122 #define TRANS_TIME_BAR 1002
122123 #define TRANS_TEXT 1003
123124 #define TRANS_REMOTE 1003
@@ -657,7 +658,7 @@
657658 //
658659 #ifdef APSTUDIO_INVOKED
659660 #ifndef APSTUDIO_READONLY_SYMBOLS
660-#define _APS_NEXT_RESOURCE_VALUE 197
661+#define _APS_NEXT_RESOURCE_VALUE 199
661662 #define _APS_NEXT_COMMAND_VALUE 40182
662663 #define _APS_NEXT_CONTROL_VALUE 1227
663664 #define _APS_NEXT_SYMED_VALUE 101
--- a/Resource_eng/FFFTP-eng.rc
+++ b/Resource_eng/FFFTP-eng.rc
@@ -1518,6 +1518,18 @@ BEGIN
15181518 LTEXT "(0〜999days; 0=Every time at startup)",-1,45,49,168,8
15191519 END
15201520
1521+corruptsettings_dlg DIALOGEX 0, 0, 232, 64
1522+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION
1523+CAPTION "Settings are corrupted"
1524+FONT 9, "MS Shell Dlg", 0, 0, 0x0
1525+BEGIN
1526+ 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
1527+ DEFPUSHBUTTON "Quit",IDCANCEL,8,42,50,14
1528+ PUSHBUTTON "Clear All",IDABORT,63,42,50,14
1529+ PUSHBUTTON "Read only",IDRETRY,118,42,50,14
1530+ PUSHBUTTON "Ignore",IDIGNORE,173,42,50,14
1531+END
1532+
15211533
15221534 /////////////////////////////////////////////////////////////////////////////
15231535 //
@@ -2202,6 +2214,14 @@ BEGIN
22022214 TOPMARGIN, 7
22032215 BOTTOMMARGIN, 148
22042216 END
2217+
2218+ corruptsettings_dlg, DIALOG
2219+ BEGIN
2220+ LEFTMARGIN, 7
2221+ RIGHTMARGIN, 225
2222+ TOPMARGIN, 7
2223+ BOTTOMMARGIN, 57
2224+ END
22052225 END
22062226 #endif // APSTUDIO_INVOKED
22072227
--- a/Resource_eng/resource.h
+++ b/Resource_eng/resource.h
@@ -118,6 +118,7 @@
118118 #define opt_trmode4_dlg 195
119119 #define opt_disp2_dlg 196
120120 #define opt_updates_dlg 197
121+#define corruptsettings_dlg 198
121122 #define TRANS_TIME_BAR 1002
122123 #define TRANS_TEXT 1003
123124 #define TRANS_REMOTE 1003
@@ -657,7 +658,7 @@
657658 //
658659 #ifdef APSTUDIO_INVOKED
659660 #ifndef APSTUDIO_READONLY_SYMBOLS
660-#define _APS_NEXT_RESOURCE_VALUE 197
661+#define _APS_NEXT_RESOURCE_VALUE 199
661662 #define _APS_NEXT_COMMAND_VALUE 40182
662663 #define _APS_NEXT_CONTROL_VALUE 1227
663664 #define _APS_NEXT_SYMED_VALUE 101
--- a/common.h
+++ b/common.h
@@ -1383,7 +1383,7 @@ void CheckPortableVersion();
13831383 int AskPortableVersion(void);
13841384 // 全設定暗号化対応
13851385 int Restart();
1386-void RestartAndTerminate();
1386+void Terminate();
13871387 // タスクバー進捗表示
13881388 int LoadTaskbarList3();
13891389 void FreeTaskbarList3();
@@ -1856,6 +1856,8 @@ INT_PTR CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM
18561856 // 64ビット対応
18571857 //BOOL CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
18581858 INT_PTR CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
1859+// 全設定暗号化対応
1860+INT_PTR CALLBACK AnyButtonDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
18591861 void SetYenTail(char *Str);
18601862 void RemoveYenTail(char *Str);
18611863 void SetSlashTail(char *Str);
--- a/connect.c
+++ b/connect.c
@@ -238,22 +238,22 @@ void ConnectProc(int Type, int Num)
238238 switch(CurHost.CurNameKanjiCode)
239239 {
240240 case KANJI_SJIS:
241- SetTaskMsg(MSGJPN344, MSGJPN346);
241+ SetTaskMsg(MSGJPN343, MSGJPN345);
242242 break;
243243 case KANJI_JIS:
244- SetTaskMsg(MSGJPN344, MSGJPN347);
244+ SetTaskMsg(MSGJPN343, MSGJPN346);
245245 break;
246246 case KANJI_EUC:
247- SetTaskMsg(MSGJPN344, MSGJPN348);
247+ SetTaskMsg(MSGJPN343, MSGJPN347);
248248 break;
249249 case KANJI_UTF8N:
250- SetTaskMsg(MSGJPN344, MSGJPN349);
250+ SetTaskMsg(MSGJPN343, MSGJPN348);
251251 break;
252252 case KANJI_UTF8HFSX:
253- SetTaskMsg(MSGJPN344, MSGJPN350);
253+ SetTaskMsg(MSGJPN343, MSGJPN349);
254254 break;
255255 default:
256- SetTaskMsg(MSGJPN345);
256+ SetTaskMsg(MSGJPN344);
257257 break;
258258 }
259259 }
@@ -352,22 +352,22 @@ void QuickConnectProc(void)
352352 switch(CurHost.CurNameKanjiCode)
353353 {
354354 case KANJI_SJIS:
355- SetTaskMsg(MSGJPN344, MSGJPN346);
355+ SetTaskMsg(MSGJPN343, MSGJPN345);
356356 break;
357357 case KANJI_JIS:
358- SetTaskMsg(MSGJPN344, MSGJPN347);
358+ SetTaskMsg(MSGJPN343, MSGJPN346);
359359 break;
360360 case KANJI_EUC:
361- SetTaskMsg(MSGJPN344, MSGJPN348);
361+ SetTaskMsg(MSGJPN343, MSGJPN347);
362362 break;
363363 case KANJI_UTF8N:
364- SetTaskMsg(MSGJPN344, MSGJPN349);
364+ SetTaskMsg(MSGJPN343, MSGJPN348);
365365 break;
366366 case KANJI_UTF8HFSX:
367- SetTaskMsg(MSGJPN344, MSGJPN350);
367+ SetTaskMsg(MSGJPN343, MSGJPN349);
368368 break;
369369 default:
370- SetTaskMsg(MSGJPN345);
370+ SetTaskMsg(MSGJPN344);
371371 break;
372372 }
373373 }
@@ -561,22 +561,22 @@ void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode)
561561 switch(CurHost.CurNameKanjiCode)
562562 {
563563 case KANJI_SJIS:
564- SetTaskMsg(MSGJPN344, MSGJPN346);
564+ SetTaskMsg(MSGJPN343, MSGJPN345);
565565 break;
566566 case KANJI_JIS:
567- SetTaskMsg(MSGJPN344, MSGJPN347);
567+ SetTaskMsg(MSGJPN343, MSGJPN346);
568568 break;
569569 case KANJI_EUC:
570- SetTaskMsg(MSGJPN344, MSGJPN348);
570+ SetTaskMsg(MSGJPN343, MSGJPN347);
571571 break;
572572 case KANJI_UTF8N:
573- SetTaskMsg(MSGJPN344, MSGJPN349);
573+ SetTaskMsg(MSGJPN343, MSGJPN348);
574574 break;
575575 case KANJI_UTF8HFSX:
576- SetTaskMsg(MSGJPN344, MSGJPN350);
576+ SetTaskMsg(MSGJPN343, MSGJPN349);
577577 break;
578578 default:
579- SetTaskMsg(MSGJPN345);
579+ SetTaskMsg(MSGJPN344);
580580 break;
581581 }
582582 }
@@ -672,22 +672,22 @@ void HistoryConnectProc(int MenuCmd)
672672 switch(CurHost.CurNameKanjiCode)
673673 {
674674 case KANJI_SJIS:
675- SetTaskMsg(MSGJPN344, MSGJPN346);
675+ SetTaskMsg(MSGJPN343, MSGJPN345);
676676 break;
677677 case KANJI_JIS:
678- SetTaskMsg(MSGJPN344, MSGJPN347);
678+ SetTaskMsg(MSGJPN343, MSGJPN346);
679679 break;
680680 case KANJI_EUC:
681- SetTaskMsg(MSGJPN344, MSGJPN348);
681+ SetTaskMsg(MSGJPN343, MSGJPN347);
682682 break;
683683 case KANJI_UTF8N:
684- SetTaskMsg(MSGJPN344, MSGJPN349);
684+ SetTaskMsg(MSGJPN343, MSGJPN348);
685685 break;
686686 case KANJI_UTF8HFSX:
687- SetTaskMsg(MSGJPN344, MSGJPN350);
687+ SetTaskMsg(MSGJPN343, MSGJPN349);
688688 break;
689689 default:
690- SetTaskMsg(MSGJPN345);
690+ SetTaskMsg(MSGJPN344);
691691 break;
692692 }
693693 }
--- a/main.c
+++ b/main.c
@@ -453,9 +453,9 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
453453 {
454454 Sleep(1000);
455455 if(ApplyUpdates(UpdateDir, "updatebackup"))
456- MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK);
456+ MessageBox(NULL, MSGJPN358, "FFFTP", MB_OK);
457457 else
458- MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK | MB_ICONERROR);
458+ MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK | MB_ICONERROR);
459459 }
460460 }
461461 ImmediateExit = YES;
@@ -533,7 +533,7 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
533533 }
534534 }
535535 if(!Sts)
536- MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK | MB_ICONERROR);
536+ MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK | MB_ICONERROR);
537537 }
538538 return(Ret);
539539 }
@@ -631,7 +631,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
631631 {
632632 if(IsRegAvailable() == YES && IsIniAvailable() == NO)
633633 {
634- switch(MessageBox(GetMainHwnd(), MSGJPN351, "FFFTP", MB_YESNOCANCEL | MB_DEFBUTTON2))
634+ switch(MessageBox(GetMainHwnd(), MSGJPN350, "FFFTP", MB_YESNOCANCEL | MB_DEFBUTTON2))
635635 {
636636 case IDCANCEL:
637637 ReadOnlySettings = YES;
@@ -957,16 +957,16 @@ void DispWindowTitle(void)
957957 switch(AskCryptMode())
958958 {
959959 case CRYPT_NONE:
960- sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN352);
960+ sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN351);
961961 break;
962962 case CRYPT_FTPES:
963- sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN353);
963+ sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN352);
964964 break;
965965 case CRYPT_FTPIS:
966- sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN354);
966+ sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN353);
967967 break;
968968 case CRYPT_SFTP:
969- sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN355);
969+ sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN354);
970970 break;
971971 }
972972 }
@@ -3631,9 +3631,8 @@ int Restart()
36313631 return Sts;
36323632 }
36333633
3634-void RestartAndTerminate()
3634+void Terminate()
36353635 {
3636- Restart();
36373636 exit(1);
36383637 }
36393638
@@ -3728,7 +3727,7 @@ void UpdateSoftware(int Async, int NoError, int NoConfirm)
37283727 {
37293728 if(Version > RELEASE_VERSION_NUM)
37303729 {
3731- sprintf(Tmp, MSGJPN362, VER_STR, VersionString, Description);
3730+ sprintf(Tmp, MSGJPN361, VER_STR, VersionString, Description);
37323731 if(NoConfirm == YES || MessageBox(GetMainHwnd(), Tmp, "FFFTP", MB_YESNO) == IDYES)
37333732 {
37343733 strcpy(Tmp, TmpPath);
@@ -3737,18 +3736,18 @@ void UpdateSoftware(int Async, int NoError, int NoConfirm)
37373736 _mkdir(Tmp);
37383737 if(CheckForUpdates(TRUE, Tmp, &Version, VersionString, Description))
37393738 {
3740- MessageBox(GetMainHwnd(), MSGJPN365, "FFFTP", MB_OK);
3739+ MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);
37413740 ApplyUpdatesOnExit = YES;
37423741 }
37433742 else if(NoError == NO)
3744- MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);
3743+ MessageBox(GetMainHwnd(), MSGJPN362, "FFFTP", MB_OK | MB_ICONERROR);
37453744 }
37463745 }
37473746 else if(NoError == NO)
3748- MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);
3747+ MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK);
37493748 }
37503749 else if(NoError == NO)
3751- MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);
3750+ MessageBox(GetMainHwnd(), MSGJPN362, "FFFTP", MB_OK | MB_ICONERROR);
37523751 }
37533752 }
37543753 }
--- a/mesg-eng.h
+++ b/mesg-eng.h
@@ -341,29 +341,28 @@
341341 #define MSGJPN340 _Tu8("View2", "View2")
342342 #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.")
343343 #define MSGJPN342 _Tu8("Failed to turn on/off stateful FTP filtering.", "Failed to turn on/off stateful FTP filtering.")
344-#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")
345-#define MSGJPN344 _Tu8("Determination result of the filename Kanji code is %s.", "Determination result of the filename Kanji code is %s.")
346-#define MSGJPN345 _Tu8("Failed to determine the filename Kanji code.", "Failed to determine the filename Kanji code.")
347-#define MSGJPN346 _Tu8("Shift_JIS", "Shift_JIS")
348-#define MSGJPN347 _Tu8("JIS", "JIS")
349-#define MSGJPN348 _Tu8("EUC", "EUC")
350-#define MSGJPN349 _Tu8("UTF-8", "UTF-8")
351-#define MSGJPN350 _Tu8("UTF-8 HFS+", "UTF-8 HFS+")
352-#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.")
353-#define MSGJPN352 _Tu8("Warning: No encryption", "Warning: No encryption")
354-#define MSGJPN353 _Tu8("Encrypted: FTPES", "Encrypted: FTPES")
355-#define MSGJPN354 _Tu8("Encrypted: FTPIS", "Encrypted: FTPIS")
356-#define MSGJPN355 _Tu8("Encrypted: SFTP", "Encrypted: SFTP")
357-#define MSGJPN356 _Tu8("Move to &parent folder...", "Move to &parent folder...")
358-#define MSGJPN357 _Tu8("XML file\0*.xml\0All file\0*\0", "XML file\0*.xml\0All file\0*\0")
359-#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.")
360-#define MSGJPN359 _Tu8("Software update has been completed.", "Software update has been completed.")
361-#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.")
362-#define MSGJPN361 _Tu8("Updates", "Updates")
363-#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")
364-#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.")
365-#define MSGJPN364 _Tu8("Your version is already up-to-date.", "Your version is already up-to-date.")
366-#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.")
344+#define MSGJPN343 _Tu8("Determination result of the filename Kanji code is %s.", "Determination result of the filename Kanji code is %s.")
345+#define MSGJPN344 _Tu8("Failed to determine the filename Kanji code.", "Failed to determine the filename Kanji code.")
346+#define MSGJPN345 _Tu8("Shift_JIS", "Shift_JIS")
347+#define MSGJPN346 _Tu8("JIS", "JIS")
348+#define MSGJPN347 _Tu8("EUC", "EUC")
349+#define MSGJPN348 _Tu8("UTF-8", "UTF-8")
350+#define MSGJPN349 _Tu8("UTF-8 HFS+", "UTF-8 HFS+")
351+#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.")
352+#define MSGJPN351 _Tu8("Warning: No encryption", "Warning: No encryption")
353+#define MSGJPN352 _Tu8("Encrypted: FTPES", "Encrypted: FTPES")
354+#define MSGJPN353 _Tu8("Encrypted: FTPIS", "Encrypted: FTPIS")
355+#define MSGJPN354 _Tu8("Encrypted: SFTP", "Encrypted: SFTP")
356+#define MSGJPN355 _Tu8("Move to &parent folder...", "Move to &parent folder...")
357+#define MSGJPN356 _Tu8("XML file\0*.xml\0All file\0*\0", "XML file\0*.xml\0All file\0*\0")
358+#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.")
359+#define MSGJPN358 _Tu8("Software update has been completed.", "Software update has been completed.")
360+#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.")
361+#define MSGJPN360 _Tu8("Updates", "Updates")
362+#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")
363+#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.")
364+#define MSGJPN363 _Tu8("Your version is already up-to-date.", "Your version is already up-to-date.")
365+#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.")
367366 #if defined(HAVE_TANDEM)
368367 #define MSGJPN2000 _Tu8("NonStop Server", "NonStop Server")
369368 #define MSGJPN2001 _Tu8("OSS<->GUARDIAN Switch(&O)", "OSS<->GUARDIAN Switch(&O)")
--- a/mesg-jpn.h
+++ b/mesg-jpn.h
@@ -341,29 +341,28 @@
341341 #define MSGJPN340 _Tu8("表示2", "\xE8\xA1\xA8\xE7\xA4\xBA\x32")
342342 #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.")
343343 #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.")
344-#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.")
345-#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.")
346-#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.")
347-#define MSGJPN346 _Tu8("Shift_JIS", "Shift_JIS")
348-#define MSGJPN347 _Tu8("JIS", "JIS")
349-#define MSGJPN348 _Tu8("EUC", "EUC")
350-#define MSGJPN349 _Tu8("UTF-8", "UTF-8")
351-#define MSGJPN350 _Tu8("UTF-8 HFS+", "UTF-8 HFS+")
352-#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.")
353-#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")
354-#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")
355-#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")
356-#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")
357-#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)...")
358-#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")
359-#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.")
360-#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.")
361-#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.")
362-#define MSGJPN361 _Tu8("更新", "\xE6\x9B\xB4\xE6\x96\xB0")
363-#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.")
364-#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.")
365-#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.")
366-#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.")
344+#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.")
345+#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.")
346+#define MSGJPN345 _Tu8("Shift_JIS", "Shift_JIS")
347+#define MSGJPN346 _Tu8("JIS", "JIS")
348+#define MSGJPN347 _Tu8("EUC", "EUC")
349+#define MSGJPN348 _Tu8("UTF-8", "UTF-8")
350+#define MSGJPN349 _Tu8("UTF-8 HFS+", "UTF-8 HFS+")
351+#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.")
352+#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")
353+#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")
354+#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")
355+#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")
356+#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)...")
357+#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")
358+#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.")
359+#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.")
360+#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.")
361+#define MSGJPN360 _Tu8("更新", "\xE6\x9B\xB4\xE6\x96\xB0")
362+#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.")
363+#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.")
364+#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.")
365+#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.")
367366 #if defined(HAVE_TANDEM)
368367 #define MSGJPN2000 _Tu8("NonStop Server", "NonStop Server")
369368 #define MSGJPN2001 _Tu8("OSS<->GUARDIAN 切り替え(&O)", "OSS<->GUARDIAN \xE5\x88\x87\xE3\x82\x8A\xE6\x9B\xBF\xE3\x81\x88(&O)")
--- a/misc.c
+++ b/misc.c
@@ -262,6 +262,27 @@ INT_PTR CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LP
262262 }
263263
264264
265+// 全設定暗号化対応
266+// 何らかのボタンが押されたときに終了
267+INT_PTR CALLBACK AnyButtonDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
268+{
269+ switch (message)
270+ {
271+ case WM_INITDIALOG :
272+ return(TRUE);
273+
274+ case WM_COMMAND :
275+ switch(GET_WM_COMMAND_CMD(wParam, lParam))
276+ {
277+ case BN_CLICKED :
278+ EndDialog(hDlg, GET_WM_COMMAND_ID(wParam, lParam));
279+ break;
280+ }
281+ return(TRUE);
282+ }
283+ return(FALSE);
284+}
285+
265286 /*----- 文字列の最後に "\" を付ける -------------------------------------------
266287 *
267288 * Parameter
--- a/option.c
+++ b/option.c
@@ -431,7 +431,7 @@ void SetOption(int Start)
431431 psp[13].pszTemplate = MAKEINTRESOURCE(opt_updates_dlg);
432432 psp[13].pszIcon = NULL;
433433 psp[13].pfnDlgProc = UpdatesSettingProc;
434- psp[13].pszTitle = MSGJPN361;
434+ psp[13].pszTitle = MSGJPN360;
435435 psp[13].lParam = 0;
436436 psp[13].pfnCallback = NULL;
437437
--- a/registry.c
+++ b/registry.c
@@ -93,13 +93,17 @@ static int WriteBinaryToReg(void *Handle, char *Name, void *Bin, int Len);
9393 static int StrCatOut(char *Src, int Len, char *Dst);
9494 static int StrReadIn(char *Src, int Max, char *Dst);
9595
96-int CheckPasswordValidity( char* Password, int length, const char* HashStr );
97-void CreatePasswordHash( char* Password, int length, char* HashStr );
96+// 全設定暗号化対応
97+//int CheckPasswordValidity( char* Password, int length, const char* HashStr );
98+//void CreatePasswordHash( char* Password, int length, char* HashStr );
99+int CheckPasswordValidity( char* Password, int length, const char* HashStr, int StretchCount );
100+void CreatePasswordHash( char* Password, int length, char* HashStr, int StretchCount );
98101 void SetHashSalt( DWORD salt );
99102
100103 DWORD GetRandamDWRODValue(void);
101104
102105 // 全設定暗号化対応
106+void GetMaskWithHMACSHA1(DWORD IV, const char* Salt, int SaltLength, void* pHash);
103107 void MaskSettingsData(const char* Salt, int SaltLength, void* Data, DWORD Size, int EscapeZero);
104108 void UnmaskSettingsData(const char* Salt, int SaltLength, void* Data, DWORD Size, int EscapeZero);
105109 void CalculateSettingsDataChecksum(void* Data, DWORD Size);
@@ -302,12 +306,17 @@ int ValidateMasterPassword(void)
302306 if(i == FFFTP_SUCCESS){
303307 char checkbuf[48];
304308 int salt = 0;
309+ // 全設定暗号化対応
310+ int stretch = 0;
305311
306312 if( ReadIntValueFromReg(hKey3, "CredentialSalt", &salt)){
307313 SetHashSalt( salt );
308314 }
309315 if( ReadStringFromReg(hKey3, "CredentialCheck", checkbuf, sizeof( checkbuf )) == FFFTP_SUCCESS ){
310- switch( CheckPasswordValidity( SecretKey, SecretKeyLength, checkbuf ) ){
316+ // 全設定暗号化対応
317+// switch( CheckPasswordValidity( SecretKey, SecretKeyLength, checkbuf ) ){
318+ ReadIntValueFromReg(hKey3, "CredentialStretch", &stretch);
319+ switch( CheckPasswordValidity( SecretKey, SecretKeyLength, checkbuf, stretch ) ){
311320 case 0: /* not match */
312321 IsMasterPasswordError = PASSWORD_UNMATCH;
313322 break;
@@ -375,7 +384,18 @@ void SaveRegistry(void)
375384
376385 SetHashSalt( salt );
377386 /* save password hash */
378- CreatePasswordHash( SecretKey, SecretKeyLength, buf );
387+ // 全設定暗号化対応
388+// CreatePasswordHash( SecretKey, SecretKeyLength, buf );
389+ if(EncryptAllSettings == YES)
390+ {
391+ WriteIntValueToReg(hKey3, "CredentialStretch", 65535);
392+ CreatePasswordHash( SecretKey, SecretKeyLength, buf, 65535 );
393+ }
394+ else
395+ {
396+ WriteIntValueToReg(hKey3, "CredentialStretch", 0);
397+ CreatePasswordHash( SecretKey, SecretKeyLength, buf, 0 );
398+ }
379399 WriteStringToReg(hKey3, "CredentialCheck", buf);
380400
381401 // 全設定暗号化対応
@@ -804,13 +824,17 @@ int LoadRegistry(void)
804824 memset(&EncryptSettingsChecksum, 0, 20);
805825 if(strcmp(Buf, Buf2) != 0)
806826 {
807- switch(MessageBox(GetMainHwnd(), MSGJPN343, "FFFTP", MB_ABORTRETRYIGNORE | MB_DEFBUTTON2))
827+ switch(DialogBox(GetFtpInst(), MAKEINTRESOURCE(corruptsettings_dlg), GetMainHwnd(), AnyButtonDialogProc))
808828 {
829+ case IDCANCEL:
830+ Terminate();
831+ break;
809832 case IDABORT:
810833 CloseReg(hKey3);
811834 ClearRegistry();
812835 ClearIni();
813- RestartAndTerminate();
836+ Restart();
837+ Terminate();
814838 break;
815839 case IDRETRY:
816840 EncryptSettingsError = YES;
@@ -1204,13 +1228,17 @@ int LoadRegistry(void)
12041228 ReadBinaryFromReg(hKey3, "EncryptAllChecksum", &Checksum, 20);
12051229 if(memcmp(&Checksum, &EncryptSettingsChecksum, 20) != 0)
12061230 {
1207- switch(MessageBox(GetMainHwnd(), MSGJPN343, "FFFTP", MB_ABORTRETRYIGNORE | MB_DEFBUTTON2))
1231+ switch(DialogBox(GetFtpInst(), MAKEINTRESOURCE(corruptsettings_dlg), GetMainHwnd(), AnyButtonDialogProc))
12081232 {
1233+ case IDCANCEL:
1234+ Terminate();
1235+ break;
12091236 case IDABORT:
12101237 CloseReg(hKey3);
12111238 ClearRegistry();
12121239 ClearIni();
1213- RestartAndTerminate();
1240+ Restart();
1241+ Terminate();
12141242 break;
12151243 case IDRETRY:
12161244 EncryptSettingsError = YES;
@@ -3280,8 +3308,11 @@ static char *ScanValue(void *Handle, char *Name)
32803308 * 1: 一致
32813309 * 2: 異常
32823310 *----------------------------------------------------------------------------*/
3283-int CheckPasswordValidity( char* Password, int length, const char* HashStr )
3311+// 全設定暗号化対応
3312+//int CheckPasswordValidity( char* Password, int length, const char* HashStr )
3313+int CheckPasswordValidity( char* Password, int length, const char* HashStr, int StretchCount )
32843314 {
3315+ char Buf[MAX_PASSWORD_LEN + 32];
32853316 ulong hash1[5];
32863317 ulong hash2[5];
32873318
@@ -3310,6 +3341,12 @@ int CheckPasswordValidity( char* Password, int length, const char* HashStr )
33103341
33113342 /* Password をハッシュする */
33123343 sha_memory( Password, length, hash2 );
3344+ for(i = 0; i < StretchCount; i++)
3345+ {
3346+ memcpy(&Buf[0], &hash2, 20);
3347+ memcpy(&Buf[20], Password, length);
3348+ sha_memory(Buf, 20 + length, hash2);
3349+ }
33133350
33143351 if( memcmp( (char*)hash1, (char*)hash2, sizeof( hash1 )) == 0 ){
33153352 return 1;
@@ -3326,13 +3363,22 @@ int CheckPasswordValidity( char* Password, int length, const char* HashStr )
33263363 * Return Value
33273364 * None
33283365 *----------------------------------------------------------------------------*/
3329-void CreatePasswordHash( char* Password, int length, char* HashStr )
3366+// 全設定暗号化対応
3367+//void CreatePasswordHash( char* Password, int length, char* HashStr )
3368+void CreatePasswordHash( char* Password, int length, char* HashStr, int StretchCount )
33303369 {
3370+ char Buf[MAX_PASSWORD_LEN + 32];
33313371 ulong hash[5];
33323372 int i, j;
33333373 unsigned char *p = (unsigned char *)HashStr;
33343374
33353375 sha_memory( Password, length, hash );
3376+ for(i = 0; i < StretchCount; i++)
3377+ {
3378+ memcpy(&Buf[0], &hash, 20);
3379+ memcpy(&Buf[20], Password, length);
3380+ sha_memory(Buf, 20 + length, hash);
3381+ }
33363382
33373383 for( i = 0; i < 5; i++ ){
33383384 ulong rest = hash[i];
@@ -3426,31 +3472,54 @@ DWORD GetRandamDWRODValue(void)
34263472 }
34273473
34283474 // 全設定暗号化対応
3429-// 内部状態推定対策としてハッシュの160ビットのうち80ビットのみを鍵として使用
3475+void GetMaskWithHMACSHA1(DWORD Nonce, const char* Salt, int SaltLength, void* pHash)
3476+{
3477+ BYTE Key[FMAX_PATH*2+1];
3478+ ulong Hash[5];
3479+ DWORD i;
3480+ for(i = 0; i < 16; i++)
3481+ {
3482+ Nonce = ~Nonce;
3483+ Nonce *= 1566083941;
3484+ Nonce = _byteswap_ulong(Nonce);
3485+ memcpy(&Key[i * 4], &Nonce, 4);
3486+ }
3487+ memcpy(&Key[64], Salt, SaltLength);
3488+ memcpy(&Key[64 + SaltLength], SecretKey, SecretKeyLength);
3489+ sha_memory((char*)&Key, 64 + SaltLength + SecretKeyLength, Hash);
3490+ // sha.cはビッグエンディアンのため
3491+ for(i = 0; i < 5; i++)
3492+ Hash[i] = _byteswap_ulong(Hash[i]);
3493+ memcpy(&Key[0], &Hash, 20);
3494+ memset(&Key[20], 0, 44);
3495+ for(i = 0; i < 64; i++)
3496+ Key[i] ^= 0x36;
3497+ sha_memory((char*)&Key, 64, Hash);
3498+ // sha.cはビッグエンディアンのため
3499+ for(i = 0; i < 5; i++)
3500+ Hash[i] = _byteswap_ulong(Hash[i]);
3501+ memcpy(&Key[64], &Hash, 20);
3502+ for(i = 0; i < 64; i++)
3503+ Key[i] ^= 0x6a;
3504+ sha_memory((char*)&Key, 84, Hash);
3505+ // sha.cはビッグエンディアンのため
3506+ for(i = 0; i < 5; i++)
3507+ Hash[i] = _byteswap_ulong(Hash[i]);
3508+ memcpy(pHash, &Hash, 20);
3509+}
3510+
34303511 void MaskSettingsData(const char* Salt, int SaltLength, void* Data, DWORD Size, int EscapeZero)
34313512 {
3432- char Key[FMAX_PATH*2+1];
34333513 BYTE* p;
34343514 DWORD i;
3435- DWORD j;
3436- ulong Hash[5];
3437- BYTE Mask[10];
3438- memcpy(&Key[0], SecretKey, SecretKeyLength);
3439- memcpy(&Key[SecretKeyLength], Salt, SaltLength);
3515+ BYTE Mask[20];
34403516 p = (BYTE*)Data;
34413517 for(i = 0; i < Size; i++)
34423518 {
3443- if(i % 10 == 0)
3444- {
3445- memcpy(&Key[SecretKeyLength + SaltLength], &i, 4);
3446- sha_memory(Key, SecretKeyLength + SaltLength + 4, Hash);
3447- // sha.cはビッグエンディアンのため
3448- for(j = 0; j < 5; j++)
3449- Hash[j] = _byteswap_ulong(Hash[j]);
3450- memcpy(&Mask, &Hash, 10);
3451- }
3452- if(EscapeZero == NO || (p[i] != 0 && p[i] != Mask[i % 10]))
3453- p[i] ^= Mask[i % 10];
3519+ if(i % 20 == 0)
3520+ GetMaskWithHMACSHA1(i, Salt, SaltLength, &Mask);
3521+ if(EscapeZero == NO || (p[i] != 0 && p[i] != Mask[i % 20]))
3522+ p[i] ^= Mask[i % 20];
34543523 }
34553524 }
34563525
@@ -3540,7 +3609,7 @@ void SaveSettingsToFileZillaXml()
35403609 char* p1;
35413610 char* p2;
35423611 strcpy(Fname, "FileZilla.xml");
3543- if(SelectFile(GetMainHwnd(), Fname, MSGJPN286, MSGJPN357, "xml", OFN_EXTENSIONDIFFERENT | OFN_OVERWRITEPROMPT, 1) == TRUE)
3612+ if(SelectFile(GetMainHwnd(), Fname, MSGJPN286, MSGJPN356, "xml", OFN_EXTENSIONDIFFERENT | OFN_OVERWRITEPROMPT, 1) == TRUE)
35443613 {
35453614 if((f = fopen(Fname, "wt")) != NULL)
35463615 {
@@ -3703,7 +3772,7 @@ void SaveSettingsToFileZillaXml()
37033772 fclose(f);
37043773 }
37053774 else
3706- MessageBox(GetMainHwnd(), MSGJPN358, "FFFTP", MB_OK | MB_ICONERROR);
3775+ MessageBox(GetMainHwnd(), MSGJPN357, "FFFTP", MB_OK | MB_ICONERROR);
37073776 }
37083777 }
37093778
--- a/toolmenu.c
+++ b/toolmenu.c
@@ -1976,7 +1976,7 @@ void RemoteRbuttonMenu(int Pos)
19761976 AppendMenu(hMenu, MF_STRING | Flg1, MENU_SWITCH_OSS, MSGJPN2001);
19771977 #endif
19781978 // 上位のディレクトリへ移動対応
1979- AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_REMOTE_MOVE_UPDIR, MSGJPN356);
1979+ AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_REMOTE_MOVE_UPDIR, MSGJPN355);
19801980 AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
19811981 AppendMenu(hMenu, MF_STRING | Flg1, MENU_FILESIZE, MSGJPN272);
19821982 AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);