私はGuildFTPd FTPサーバーがポート21上で実行されている私のPythonコードはこれまでのところ、このようになっていることを信じるようにNmapのをだますことができるソフトウェアの一部を書いていますが偽造:は、FTPサービス
import socket
s = socket.socket()
s.bind(('', 21))
s.listen(1)
conn, addr = s.accept()
conn.send("220-GuildFTPd FTP Server (c) 1997-2002\r\n220-Version 0.999.14")
conn.close()
Nmapの正規表現についてこの特定のサービスをマッチングすることである:私はNmapにしてスクリプトを実行しているホストをスキャンするとき
match ftp m|^220-GuildFTPd FTP Server \(c\) \d\d\d\d(-\d\d\d\d)?\r\n220-Version (\d[-.\w]+)\r\n| p/Guild ftpd/ v/$2/ o/Windows/
しかし結果は以下のとおりです。
21/tcp open ftp?
これはどのようにすることができますか? Nmapで実際のサービスをスキャンすると、サービスが正しく識別されます。
:ここ
は、Nmapのを欺くために十分である、シーケンシャル接続を処理(しかし平行でない)ことができ、あなたのスクリプトの非常に基本的な適応です。 nmapに応答を与えて、そのポートにプログラム*があることを知らせます。しかし、コマンドセットが正しくないので、実際にはftpサーバーかどうかはわかりません。 –
私はWiresharkを使って実際のアプリケーションを盗聴しました。私はまだ困惑しているので、余分な情報を送るようには思われません。 –
誰にも分かりませんか? –