2

ここ数日、.Net経由でアクセスしようとしている「CCC」コマンドを必要とするFTPSサーバーで苦労してきました

AlexFTPS ライブラリを使用しています。AUTH TLS に接続してネゴシエートできます。ディレクトリを変更することもできますが、ディレクトリを一覧表示したり、ファイルをダウンロードしようとすると、サーバーが「CCC」コマンドを要求します。「CCC」コマンドを送信すると、「200 CCC Context Enabled」という応答が返されますが、サーバー タイムアウト例外が発生するたびに、それ以外のものを送信できません。

さらにテストを行いました:

  • WS_FTP : [SSL 認証後に暗号化されていないコマンド チャネルを使用する] オプションをオンにすると機能します
  • Filezilla : ログイン後のコマンドとして「CCC」を追加しても機能しません
  • http://www.componentpro.com/ftp.net/ : 動作しますが、オープン ソースではありません

どんな助けでも大歓迎です...申し訳ありませんが、私はFTPに堪能ではありません...

これが私のコードです:

    Using Client As New AlexPilotti.FTPS.Client.FTPSClient

        AddHandler Client.LogCommand, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogCommandEventArgs)
                                          Console.WriteLine(args.CommandText)
                                      End Sub

        AddHandler Client.LogServerReply, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogServerReplyEventArgs)
                                              Console.WriteLine(args.ServerReply)
                                          End Sub

        Dim cred = New Net.NetworkCredential("login", "password")
        Client.Connect("ftps.server.com", cred, AlexPilotti.FTPS.Client.ESSLSupportMode.CredentialsRequired)

        Client.SendCustomCommand("SYST")
        Client.SendCustomCommand("PBSZ 0")
        Client.SendCustomCommand("PROT P")
        Client.SendCustomCommand("FEAT")
        Client.SendCustomCommand("PWD")
        Client.SendCustomCommand("TYPE A")
        Client.SendCustomCommand("PASV")
        Client.SendCustomCommand("CCC")
        Client.SendCustomCommand("LIST")

        Console.ReadKey()

    End Using

ありがとう !

4

1 に答える 1

1

CCC (「Clear Command Channel」) は、接続を SSL (で始まるAUTH TLS) から再び暗号化されていない状態にダウングレードする特別なコマンドです。そのため、確立された制御接続で送信されるカスタム コマンドとして宣言するだけでは十分ではありませんAUTH TLS。コマンドの実行後に TLS ダウングレードが発生するように、FTPS ライブラリと同様に処理する必要があります。

于 2014-02-21T18:39:01.060 に答える