diff --git a/src/sftp/sftp.props b/src/sftp/sftp.props
new file mode 100644
index 0000000000000000000000000000000000000000..f081c11fd9c5adf13aa77a43c2bc5f913f6d728e
--- /dev/null
+++ b/src/sftp/sftp.props
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ImportGroup Label="PropertySheets" />
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_PropertySheetDisplayName>SSH File Transfer Protocol Library</_PropertySheetDisplayName>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup />
+</Project>
\ No newline at end of file
diff --git a/src/sftp/sftp.vcxproj b/src/sftp/sftp.vcxproj
new file mode 100644
index 0000000000000000000000000000000000000000..432358d1fcfd255b7584e7b7d8862654e3a47fbb
--- /dev/null
+++ b/src/sftp/sftp.vcxproj
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4C69A1D2-182A-45D3-AD33-54A8A91B387D}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v141_xp</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v141_xp</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
+    <Import Project="..\xpdev\xpdev.props" />
+    <Import Project="..\conio\conio.props" />
+    <Import Project="..\build\target_ia32.props" />
+    <Import Project="..\build\undeprecate.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
+    <Import Project="..\xpdev\xpdev.props" />
+    <Import Project="..\conio\conio.props" />
+    <Import Project="..\build\target_ia32.props" />
+    <Import Project="..\build\undeprecate.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\msvc.win32.debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\msvc.win32.debug\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\msvc.win32.release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\msvc.win32.release\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\conio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\msvc.win32.debug/sftp.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\msvc.win32.debug/</AssemblerListingLocation>
+      <ObjectFileName>.\msvc.win32.debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\msvc.win32.debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>.\msvc.win32.debug\sftp.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\msvc.win32.debug/sftp.bsc</OutputFile>
+    </Bscmake>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\conio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\msvc.win32.release/sftp.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\msvc.win32.release/</AssemblerListingLocation>
+      <ObjectFileName>.\msvc.win32.release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\msvc.win32.release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>.\msvc.win32.release\sftp.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\msvc.win32.release/sftp.bsc</OutputFile>
+    </Bscmake>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="sftp_client.c" />
+    <ClCompile Include="sftp_pkt.c" />
+    <ClCompile Include="sftp_str.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/src/syncterm/SyncTERM.sln b/src/syncterm/SyncTERM.sln
index b523d483f1941ab343bd01be86e332c0eb5dfb54..aa60cc84995366774056fb2d0beb8820b64bf4db 100644
--- a/src/syncterm/SyncTERM.sln
+++ b/src/syncterm/SyncTERM.sln
@@ -1,18 +1,20 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
+# Visual Studio Version 17
+VisualStudioVersion = 17.7.34031.279
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SyncTERM", "SyncTERM.vcxproj", "{0B215B36-6C49-4743-B76E-7ACD698889A9}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xpdev_mt", "..\xpdev\xpdev_mt.vcxproj", "{AEED3A81-3A47-4953-BE51-FD5E08283890}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conio", "..\conio\conio_sdl.vcxproj", "{84592E48-27CA-48A6-B9C6-243D2347A578}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conio_sdl", "..\conio\conio_sdl.vcxproj", "{8E3CE9E8-447A-452A-9306-2587FE3154A4}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uifc", "..\uifc\uifc.vcxproj", "{7BFB9820-0E57-4BE4-9BE9-E0A687874E19}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "comio", "..\comio\comio.vcxproj", "{79CF784E-4438-4FCC-9B7A-10ACB716C948}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sftp", "..\sftp\sftp.vcxproj", "{4C69A1D2-182A-45D3-AD33-54A8A91B387D}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32
@@ -27,10 +29,10 @@ Global
 		{AEED3A81-3A47-4953-BE51-FD5E08283890}.Debug|Win32.Build.0 = Debug|Win32
 		{AEED3A81-3A47-4953-BE51-FD5E08283890}.Release|Win32.ActiveCfg = Release|Win32
 		{AEED3A81-3A47-4953-BE51-FD5E08283890}.Release|Win32.Build.0 = Release|Win32
-		{84592E48-27CA-48A6-B9C6-243D2347A578}.Debug|Win32.ActiveCfg = Debug|Win32
-		{84592E48-27CA-48A6-B9C6-243D2347A578}.Debug|Win32.Build.0 = Debug|Win32
-		{84592E48-27CA-48A6-B9C6-243D2347A578}.Release|Win32.ActiveCfg = Release|Win32
-		{84592E48-27CA-48A6-B9C6-243D2347A578}.Release|Win32.Build.0 = Release|Win32
+		{8E3CE9E8-447A-452A-9306-2587FE3154A4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8E3CE9E8-447A-452A-9306-2587FE3154A4}.Debug|Win32.Build.0 = Debug|Win32
+		{8E3CE9E8-447A-452A-9306-2587FE3154A4}.Release|Win32.ActiveCfg = Release|Win32
+		{8E3CE9E8-447A-452A-9306-2587FE3154A4}.Release|Win32.Build.0 = Release|Win32
 		{7BFB9820-0E57-4BE4-9BE9-E0A687874E19}.Debug|Win32.ActiveCfg = Debug|Win32
 		{7BFB9820-0E57-4BE4-9BE9-E0A687874E19}.Debug|Win32.Build.0 = Debug|Win32
 		{7BFB9820-0E57-4BE4-9BE9-E0A687874E19}.Release|Win32.ActiveCfg = Release|Win32
@@ -39,6 +41,10 @@ Global
 		{79CF784E-4438-4FCC-9B7A-10ACB716C948}.Debug|Win32.Build.0 = Debug|Win32
 		{79CF784E-4438-4FCC-9B7A-10ACB716C948}.Release|Win32.ActiveCfg = Release|Win32
 		{79CF784E-4438-4FCC-9B7A-10ACB716C948}.Release|Win32.Build.0 = Release|Win32
+		{4C69A1D2-182A-45D3-AD33-54A8A91B387D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4C69A1D2-182A-45D3-AD33-54A8A91B387D}.Debug|Win32.Build.0 = Debug|Win32
+		{4C69A1D2-182A-45D3-AD33-54A8A91B387D}.Release|Win32.ActiveCfg = Release|Win32
+		{4C69A1D2-182A-45D3-AD33-54A8A91B387D}.Release|Win32.Build.0 = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/src/syncterm/SyncTERM.vcxproj b/src/syncterm/SyncTERM.vcxproj
index 89d190838818c0c175ebdf0326feefb15084b764..97eb0fab7ea0e0f9e46d26dbd7c80fcc2991b9cd 100644
--- a/src/syncterm/SyncTERM.vcxproj
+++ b/src/syncterm/SyncTERM.vcxproj
@@ -46,6 +46,7 @@
     <Import Project="..\encode\encode.props" />
     <Import Project="..\hash\hash.props" />
     <Import Project="..\..\3rdp\win32.release\cryptlib\cryptlib.props" />
+    <Import Project="..\sftp\sftp.props" />
   </ImportGroup>
   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
@@ -60,6 +61,7 @@
     <Import Project="..\encode\encode.props" />
     <Import Project="..\hash\hash.props" />
     <Import Project="..\..\3rdp\win32.release\cryptlib\cryptlib.props" />
+    <Import Project="..\sftp\sftp.props" />
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -75,7 +77,7 @@
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <PreprocessorDefinitions>WIN32;TELNET_NO_DLL;_DEBUG;_WINDOWS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\sbbs3;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\sbbs3</AdditionalIncludeDirectories>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
     </ClCompile>
     <Link>
@@ -93,7 +95,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <PreprocessorDefinitions>WIN32;TELNET_NO_DLL;NDEBUG;_WINDOWS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\sbbs3;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\sbbs3;</AdditionalIncludeDirectories>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
     </ClCompile>
     <Link>
@@ -144,6 +146,9 @@
     <ProjectReference Include="..\conio\conio_sdl.vcxproj">
       <Project>{84592e48-27ca-48a6-b9c6-243d2347a578}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\sftp\sftp.vcxproj">
+      <Project>{4c69a1d2-182a-45d3-ad33-54a8a91b387d}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\uifc\uifc.vcxproj">
       <Project>{7bfb9820-0e57-4be4-9be9-e0a687874e19}</Project>
     </ProjectReference>
@@ -154,4 +159,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file