On Thursday, January 08, 2015 at 10:44 AM. Johnny Billquist wrote:
On 2015-01-08 17:57, Mark Pizzolato - Info Comm wrote:
I did the Wireshark trace and doing a GET there is an initial exchange of
STRU O VMS and if the comes back with a "200 OK" the client knows that the
server is VMS and probably viceversa. Then the data delivered in the RETR
(separate TCP session as normal) is prefixed with a binary blob of data. The
format of that blob is important. I recalled that MadGoat FTP also
implemented this functionality (and interoperated with it - Matt Madison (of
MadGoat) ended up working for the MultiNet folks for a while). In any case,
over the years MGFTP became completely open source and is still
maintained by Hunter Goatley (the Goat part of MadGoat). The source is
available, but digging through the bliss code seemed a little harder than
asking Hunter Goatley directly which I've done. I'll let you know what he
says.
Aha! That is really good information. Now I just wonder if it always tries this
trick, or only if the other side identifies itself as a VMS system. Could you do
the same test against a Unix system and see if it tries the STRU command
there too?
The binary blob is what I need to figure out next...
As of now, Text transfers to and from RSX works fine, and I've extended the
directory output a little. I'm wondering if I should bother trying to fool things
like web browsers next, as they also tries to be clever and tries to
understand a Unix-style directory output.
What I see is that the VMS FTP client sends the "STRU O VMS" command immediately
after the connection is established (BEFORE the login is established).
Here is a conversation with a VMS (MultiNet) FTP client talking to a VMS (Multinet) FTP
Server:
<<< 220
vs4000.infocomm.com MultiNet FTP Server Process V5.4(17) at Thu
8-Jan-2015 12:26PM-PST
STRU O VMS
<<< 200 Stru O VMS ok.
USER mark
<<< 331 User name (mark) ok. Password, please.
PASS password
<<< 230 User MARK logged into $DISK3:[MARK] at Thu 8-Jan-2015 12:26PM-PST, job
20204ea7.
STRU F
<<< 200 Stru F ok.
PASV
<<< 227 Entering passive mode; use PORT (192,168,60,3,18,103)
LIST
<<< 150 List started.
<<< 226 Transfer completed.
STRU O VMS
<<< 200 Stru O VMS ok.
PASV
<<< 227 Entering passive mode; use PORT (192,168,60,3,18,137)
RETR xremote.patch
<<< 150 VMS retrieve of $DISK3:[MARK]XREMOTE.PATCH;1 (3550 bytes) started.
<<< 226 Transfer completed. 2642 (8) bytes transferred.
PASV
<<< 227 Entering passive mode; use PORT (192,168,60,3,18,207)
STOR xremote.patch
<<< 150 VMS Store of $DISK3:[MARK]XREMOTE.PATCH;2 started.
<<< 226 Transfer completed. 2642 (8) bytes transferred.
QUIT
<<< 221 QUIT command received. Goodbye.
The transfers in both directions had a 48 byte binary blob preceding the file data.
A conversation between the same MultiNet FTP client and a Unix host looks like:
<<< 220
ftp.NetBSD.org FTP server (NetBSD-ftpd 20100320) ready.
STRU O VMS
<<< 530 Please login with USER and PASS.
USER anonymous
<<< 331 Guest login ok, type your name as password.
PASS mickey at
mouse.com
<<< 230-
<<< The NetBSD Project FTP Server located in San Jose, CA, USA
<<< 1 Gbps connectivity
<<<
WELCOME! /( )`
<<<
\ \___ / |
<<< +--- Currently Supported Platforms ----+
/- _ `-/ '
<<< | acorn[26,32], algor, alpha, amd64, |
(/\/ \ \ /\
<<< | amiga[,ppc], arc, atari, bebox, |
/ / | ` \
<<< | cats, cesfic, cobalt, dreamcast, |
O O ) / |
<<< | evb[arm,mips,ppc,sh3], hp[300,700], |
`-^--'`< '
<<< | hpc[arm,mips,sh], i386, |
(_.) _ ) /
<<< | ibmnws, iyonix, luna68k, |
.___/` /
<<< | mac[m68k,ppc], mipsco, mmeye, |
`-----' /
<<< | mvme[m68k,ppc], netwinders, | <----.
__ / __ \
<<< | news[m68k,mips], next68k, ofppc, |
<----|====O)))==) \) /====
<<< | playstation2, pmax, prep, sandpoint, | <----'
`--' `.__,' \
<<< | sbmips, sgimips, shark, sparc[,64], |
| |
<<< | sun[2,3], vax, x68k, xen |
\ /
<<< +--------------------------------------+
______( (_ / \_____
<<< See our website at
http://www.NetBSD.org/ ,'
,-----' | \
<<< We log all FTP transfers and commands.
`--{__________) (FL) \/
<<< 230-
<<< EXPORT NOTICE
<<<
<<< Please note that portions of this FTP site contain cryptographic
<<< software controlled under the Export Administration Regulations
(EAR).
<<<
<<< None of this software may be downloaded or otherwise exported or
<<< re-exported into (or to a national or resident of) Cuba, Iran,
Sudan,
<<< North Korea, Syria or any other country to which the U.S. has
<<< embargoed goods.
<<<
<<< By downloading or using said software, you are agreeing to the
<<< foregoing and you are representing and warranting that you are not
<<< located in, under the control of, or a national or resident of any
<<< such country or on any such list.
<<< 230 Guest login ok, access restrictions apply.
PASV
<<< 227 Entering Passive Mode (199,233,217,249,251,196)
LIST
<<< 150 Opening ASCII mode data connection for '/bin/ls'.
<<< 226 Transfer complete.
PASV
<<< 227 Entering Passive Mode (199,233,217,249,251,197)
RETR robots.txt
<<< 150 Opening ASCII mode data connection for 'robots.txt' (77 bytes).
<<< 226 Transfer complete.
QUIT
<<< 221-
<<< Data traffic for this session was 82 bytes in 1 file.
<<< Total traffic for this session was 3171 bytes in 2 transfers.
<<< 221 Thank you for using the FTP service on
ftp.NetBSD.org.
- Mark