FTP special character in password?

I am trying to log in to the ftp server. Using the following code in C #.

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp-server"); request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; // This example assumes the FTP site uses anonymous logon. //request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequired; request.Credentials = new NetworkCredential("userName", "password!#Β£"); FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

However, the login fails when the password contains some special characters. for example ('!' or 'Β£')? I get the following exception.

 Unhandled Exception: System.Net.WebException: The remote server returned an error: (530) Not logged in. at System.Net.FtpWebRequest.SyncRequestCallback(Object obj) at System.Net.FtpWebRequest.RequestCallback(Object obj) at System.Net.CommandStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.IO.Stream.Dispose() at System.Net.ConnectionPool.Destroy(PooledStream pooledStream) at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Bo ean canReuse) at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage) at System.Net.FtpWebRequest.GetResponse() at FtpClientTest.Program.FtpWebRequest() 

I do not get an exception when the password does not contain any special characters.

+4
source share
1 answer

what ftp server is this? can you use other programs? if so, use wireshark to compare what goes through the wire.

So this is probably just ANSI encoding, so try

 var secureString = new SecureString(); foreach (var b in Encoding.Default.GetBytes("password!#Β£")) secureString.AppendChar((char)b); request.Credentials = new NetworkCredential("userName", secureString); 
+1
source

Source: https://habr.com/ru/post/1384099/


All Articles