Attualmente sto usando Sulley per confondere il mio server FTP, ma sto avendo problemi. Voglio specificare il comando STRU, che ha una sintassi:
STRU [<SP> F|R|P] <CRLF>
Ho provato a specificare gli argomenti F, R, P opzionali nel comando STRU come segue:
s_initialize('DataSTRU')
s_static('STRU ')
s_group('struv', values=['F', 'R', 'P'])
s_block_start('strub', group='struv')
s_block_end()
s_repeat('strub', min_reps=0, max_reps=1, fuzzable=True)
s_static('\r\n')
Questo invia i comandi giusti al server FTP (STRU F; STRU R; STRU P), ma il problema è che è così. Non cerca di omettere il personaggio o lo sfocato, che vorrei anche. So che posso solo specificare l'argomento di fuzz, ma vorrei sfocare l'argomento e modificare gli argomenti validi. Qualche idea su come applicare l'argomento facoltativo + fuzzable al codice precedente?
Un altro problema è che non so come posso controllare quale comando è attualmente in uso - sto usando i comandi all'interno di s_block_start e sto scorrendo l'elemento s_group come segue:
s_initialize('DataSet')
s_group('commands', values=['MODE', 'PROT', 'STRU'])
s_block_start('DataBlock', group='commands')
s_delim(' ')
// TODO: how to check whether:
// if [current_command == 'MODE'] do this
// elif [current_command == 'PROT'] do this
// else [current_command == 'STRU'] do this
s_static('\r\n')
s_block_end()
Questo è tutto. Tutte le idee e le raccomandazioni sono benvenute. Grazie