1 #ifndef PACKETPP_FTP_LAYER     2 #define PACKETPP_FTP_LAYER    30         static bool isFtpPort(uint16_t port) { 
return port == 21; }
    67             ABOR = (
'A') | (
'B' << 8) | (
'O' << 16) | (
'R' << 24),
    69             ACCT = (
'A') | (
'C' << 8) | (
'C' << 16) | (
'T' << 24),
    71             ADAT = (
'A') | (
'D' << 8) | (
'A' << 16) | (
'T' << 24),
    73             ALLO = (
'A') | (
'L' << 8) | (
'L' << 16) | (
'O' << 24),
    75             APPE = (
'A') | (
'P' << 8) | (
'P' << 16) | (
'E' << 24),
    77             AUTH = (
'A') | (
'U' << 8) | (
'T' << 16) | (
'H' << 24),
    79             AVBL = (
'A') | (
'V' << 8) | (
'B' << 16) | (
'L' << 24),
    81             CCC = (
'C') | (
'C' << 8) | (
'C' << 16),
    83             CDUP = (
'C') | (
'D' << 8) | (
'U' << 16) | (
'P' << 24),
    85             CONF = (
'C') | (
'O' << 8) | (
'N' << 16) | (
'F' << 24),
    87             CSID = (
'C') | (
'S' << 8) | (
'I' << 16) | (
'D' << 24),
    89             CWD  = (
'C') | (
'W' << 8) | (
'D' << 16),
    91             DELE = (
'D') | (
'E' << 8) | (
'L' << 16) | (
'E' << 24),
    93             DSIZ = (
'D') | (
'S' << 8) | (
'I' << 16) | (
'Z' << 24),
    95             ENC  = (
'E') | (
'N' << 8) | (
'C' << 16),
    97             EPRT = (
'E') | (
'P' << 8) | (
'R' << 16) | (
'T' << 24),
    99             EPSV = (
'E') | (
'P' << 8) | (
'S' << 16) | (
'V' << 24),
   101             FEAT = (
'F') | (
'E' << 8) | (
'A' << 16) | (
'T' << 24),
   103             HELP = (
'H') | (
'E' << 8) | (
'L' << 16) | (
'P' << 24),
   105             HOST = (
'H') | (
'O' << 8) | (
'S' << 16) | (
'T' << 24),
   107             LANG = (
'L') | (
'A' << 8) | (
'N' << 16) | (
'G' << 24),
   109             LIST = (
'L') | (
'I' << 8) | (
'S' << 16) | (
'T' << 24),
   111             LPRT = (
'L') | (
'P' << 8) | (
'R' << 16) | (
'T' << 24),
   113             LPSV = (
'L') | (
'P' << 8) | (
'S' << 16) | (
'V' << 24),
   115             MDTM = (
'M') | (
'D' << 8) | (
'T' << 16) | (
'M' << 24),
   117             MFCT = (
'M') | (
'F' << 8) | (
'C' << 16) | (
'T' << 24),
   119             MFF  = (
'M') | (
'F' << 8) | (
'F' << 16),
   121             MFMT = (
'M') | (
'F' << 8) | (
'M' << 16) | (
'T' << 24),
   123             MIC  = (
'M') | (
'I' << 8) | (
'C' << 16),
   125             MKD  = (
'M') | (
'K' << 8) | (
'D' << 16),
   127             MLSD = (
'M') | (
'L' << 8) | (
'S' << 16) | (
'D' << 24),
   129             MLST = (
'M') | (
'L' << 8) | (
'S' << 16) | (
'T' << 24),
   131             MODE = (
'M') | (
'O' << 8) | (
'D' << 16) | (
'E' << 24),
   133             NLST = (
'N') | (
'L' << 8) | (
'S' << 16) | (
'T' << 24),
   135             NOOP = (
'N') | (
'O' << 8) | (
'O' << 16) | (
'P' << 24),
   137             OPTS = (
'O') | (
'P' << 8) | (
'T' << 16) | (
'S' << 24),
   139             PASS = (
'P') | (
'A' << 8) | (
'S' << 16) | (
'S' << 24),
   141             PASV = (
'P') | (
'A' << 8) | (
'S' << 16) | (
'V' << 24),
   143             PBSZ = (
'P') | (
'B' << 8) | (
'S' << 16) | (
'Z' << 24),
   145             PORT = (
'P') | (
'O' << 8) | (
'R' << 16) | (
'T' << 24),
   147             PROT = (
'P') | (
'R' << 8) | (
'O' << 16) | (
'T' << 24),
   149             PWD  = (
'P') | (
'W' << 8) | (
'D' << 16),
   151             QUIT = (
'Q') | (
'U' << 8) | (
'I' << 16) | (
'T' << 24),
   153             REIN = (
'R') | (
'E' << 8) | (
'I' << 16) | (
'N' << 24),
   155             REST = (
'R') | (
'E' << 8) | (
'S' << 16) | (
'T' << 24),
   157             RETR = (
'R') | (
'E' << 8) | (
'T' << 16) | (
'R' << 24),
   159             RMD  = (
'R') | (
'M' << 8) | (
'D' << 16),
   161             RMDA = (
'R') | (
'M' << 8) | (
'D' << 16) | (
'A' << 24),
   163             RNFR = (
'R') | (
'N' << 8) | (
'F' << 16) | (
'R' << 24),
   165             RNTO = (
'R') | (
'N' << 8) | (
'T' << 16) | (
'O' << 24),
   167             SITE = (
'S') | (
'I' << 8) | (
'T' << 16) | (
'E' << 24),
   169             SIZE = (
'S') | (
'I' << 8) | (
'Z' << 16) | (
'E' << 24),
   171             SMNT = (
'S') | (
'M' << 8) | (
'N' << 16) | (
'T' << 24),
   173             SPSV = (
'S') | (
'P' << 8) | (
'S' << 16) | (
'V' << 24),
   175             STAT = (
'S') | (
'T' << 8) | (
'A' << 16) | (
'T' << 24),
   177             STOR = (
'S') | (
'T' << 8) | (
'O' << 16) | (
'R' << 24),
   179             STOU = (
'S') | (
'T' << 8) | (
'O' << 16) | (
'U' << 24),
   181             STRU = (
'S') | (
'T' << 8) | (
'R' << 16) | (
'U' << 24),
   183             SYST = (
'S') | (
'Y' << 8) | (
'S' << 16) | (
'T' << 24),
   185             THMB = (
'T') | (
'H' << 8) | (
'M' << 16) | (
'B' << 24),
   187             TYPE = (
'T') | (
'Y' << 8) | (
'P' << 16) | (
'E' << 24),
   189             USER = (
'U') | (
'S' << 8) | (
'E' << 16) | (
'R' << 24),
   191             XCUP = (
'X') | (
'C' << 8) | (
'U' << 16) | (
'P' << 24),
   193             XMKD = (
'X') | (
'M' << 8) | (
'K' << 16) | (
'D' << 24),
   195             XPWD = (
'X') | (
'P' << 8) | (
'W' << 16) | (
'D' << 24),
   197             XRCP = (
'X') | (
'R' << 8) | (
'C' << 16) | (
'P' << 24),
   199             XRMD = (
'X') | (
'R' << 8) | (
'M' << 16) | (
'D' << 24),
   201             XRSQ = (
'X') | (
'R' << 8) | (
'S' << 16) | (
'Q' << 24),
   203             XSEM = (
'X') | (
'S' << 8) | (
'E' << 16) | (
'M' << 24),
   205             XSEN = (
'X') | (
'S' << 8) | (
'E' << 16) | (
'N' << 24)
   240         std::string getCommandString() 
const;
   247         bool setCommandOption(
const std::string &value);
   254         std::string getCommandOption(
bool removeEscapeCharacters = 
true) 
const;
   261         static std::string getCommandInfo(
FtpCommand code);
   268         static std::string getCommandAsString(
FtpCommand code);
   293             RESTART_MARKER = 110,
   295             SERVICE_READY_IN_MIN = 120,
   297             DATA_ALREADY_OPEN_START_TRANSFER = 125,
   303             COMMAND_NOT_IMPLEMENTED_SUPERFLUOUS = 202,
   313             NAME_SYSTEM_TYPE = 215,
   315             SERVICE_READY_FOR_USER = 220,
   317             SERVICE_CLOSING_CONTROL = 221,
   319             DATA_OPEN_NO_TRANSFER = 225,
   323             ENTERING_PASSIVE = 227,
   325             ENTERING_EXTENDED_PASSIVE = 229,
   327             USER_LOG_IN_PROCEED = 230,
   329             USER_LOG_IN_AUTHORIZED = 232,
   331             SEC_DATA_EXCHANGE_COMPLETE = 234,
   333             SEC_DATA_EXCHANGE_COMPLETE_SUCCESS = 235,
   335             REQ_FILE_OK_COMPLETE = 250,
   337             PATHNAME_CREATED = 257,
   339             USER_OK_NEED_PASSWORD = 331,
   343             REQ_SEC_MECHANISM_OK = 334,
   345             SEC_IS_ACCEPTABLE = 335,
   347             USER_OK_NEED_PASS_CHALLENGE = 336,
   349             FILE_PENDING_ACTION = 350,
   351             SERVICE_NOT_AVAILABLE = 421,
   353             CANT_OPEN_DATA_CONNECTION = 425,
   355             CONNECTION_CLOSED = 426,
   357             NEED_UNAVAILABLE_RESOURCE_TO_SEC = 431,
   359             REQ_FILE_ACTION_NOT_TAKEN = 450,
   361             REQ_ACTION_ABORTED = 451,
   363             REQ_ACTION_NOT_TAKEN = 452,
   365             SYNTAX_ERROR_COMMAND_UNRECOGNIZED = 500,
   367             SYNTAX_ERROR_PARAMETER_OR_ARGUMENT = 501,
   369             COMMAND_NOT_IMPLEMENTED = 502,
   371             BAD_SEQUENCE_COMMANDS = 503,
   373             COMMAND_NOT_IMPLEMENTED_FOR_PARAMETER = 504,
   375             NETWORK_PROTOCOL_NOT_SUPPORTED = 522,
   379             NEED_ACCOUNT_FOR_STORE_FILE = 532,
   381             COMMAND_PROTECTION_DENIED = 533,
   383             REQUEST_DENIED = 534,
   385             FAILED_SEC_CHECK = 535,
   387             REQ_PROT_LEVEL_NOT_SUPPORTED = 536,
   389             COMMAND_PROTECTION_LEVEL_NOT_SUPPORTED = 537,
   391             FILE_UNAVAILABLE = 550,
   393             PAGE_TYPE_UNKNOWN = 551,
   395             EXCEED_STORAGE_ALLOCATION = 552,
   397             FILENAME_NOT_ALLOWED = 553,
   399             INTEGRITY_PROTECTED = 631,
   401             CONFIDENTIALITY_AND_INTEGRITY_PROTECTED = 632,
   403             CONFIDENTIALITY_PROTECTED = 633
   438         std::string getStatusCodeString() 
const;
   445         bool setStatusOption(
const std::string &value);
   452         std::string getStatusOption(
bool removeEscapeCharacters = 
true) 
const;
   459         static std::string getStatusCodeAsString(
FtpStatusCode code);
 FtpResponseLayer(const FtpStatusCode &code, const std::string &option="")
Definition: FtpLayer.h:419
The main namespace for the PcapPlusPlus lib. 
OsiModelLayer
Definition: ProtocolType.h:298
size_t getHeaderLen() const
Definition: FtpLayer.h:40
static bool isFtpPort(uint16_t port)
Definition: FtpLayer.h:30
Definition: SingleCommandTextProtocol.h:19
FtpRequestLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: FtpLayer.h:214
Definition: ProtocolType.h:313
Definition: FtpLayer.h:18
FtpRequestLayer(const FtpCommand &command, const std::string &option="")
Definition: FtpLayer.h:221
FtpResponseLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: FtpLayer.h:412
FtpStatusCode
Definition: FtpLayer.h:288
void parseNextLayer()
FTP is the always last so does nothing for this layer. 
Definition: FtpLayer.h:35
Definition: FtpLayer.h:281
FtpCommand
Definition: FtpLayer.h:62
virtual std::string toString() const =0
const ProtocolType FTP
Definition: ProtocolType.h:268
void computeCalculateFields()
Does nothing for this layer. 
Definition: FtpLayer.h:43
OsiModelLayer getOsiModelLayer() const
Definition: FtpLayer.h:48
Definition: FtpLayer.h:55