2014-12-24 13:37:31 +00:00
|
|
|
'''
|
|
|
|
|
|
|
|
This is the ftp client code
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
import os
|
|
|
|
import socket
|
|
|
|
import sys
|
|
|
|
from common import helpers
|
|
|
|
from ftplib import FTP
|
|
|
|
from ftplib import error_perm
|
|
|
|
|
|
|
|
|
|
|
|
class Client:
|
|
|
|
|
|
|
|
def __init__(self, cli_object):
|
|
|
|
self.protocol = "ftp"
|
|
|
|
self.remote_server = cli_object.ip
|
|
|
|
self.username = cli_object.username
|
|
|
|
self.password = cli_object.password
|
2015-12-03 19:30:23 +00:00
|
|
|
if cli_object.client_port is None:
|
|
|
|
self.port = 21
|
|
|
|
else:
|
|
|
|
self.port = cli_object.client_port
|
2015-05-16 02:11:21 +00:00
|
|
|
if cli_object.file is None:
|
|
|
|
self.file_transfer = False
|
|
|
|
else:
|
|
|
|
if "/" in cli_object.file:
|
|
|
|
self.file_transfer = cli_object.file.split("/")[-1]
|
|
|
|
else:
|
|
|
|
self.file_transfer = cli_object.file
|
2014-12-24 13:37:31 +00:00
|
|
|
|
|
|
|
def transmit(self, data_to_transmit):
|
|
|
|
|
|
|
|
try:
|
2015-12-03 19:30:23 +00:00
|
|
|
ftp = FTP()
|
|
|
|
ftp.connect(self.remote_server, self.port)
|
2014-12-24 13:37:31 +00:00
|
|
|
except socket.gaierror:
|
|
|
|
print "[*] Error: Cannot connect to FTP server. Checking provided ip!"
|
|
|
|
sys.exit()
|
|
|
|
|
|
|
|
try:
|
|
|
|
ftp.login(self.username, self.password)
|
|
|
|
except error_perm:
|
|
|
|
print "[*] Error: Username or password is incorrect! Please re-run."
|
|
|
|
sys.exit()
|
|
|
|
|
2015-05-16 02:11:21 +00:00
|
|
|
if not self.file_transfer:
|
|
|
|
ftp_file_name = helpers.writeout_text_data(data_to_transmit)
|
|
|
|
|
2015-12-03 20:16:09 +00:00
|
|
|
ftp.storbinary(
|
2015-05-16 02:11:21 +00:00
|
|
|
"STOR " + ftp_file_name, open(helpers.ea_path()
|
|
|
|
+ "/" + ftp_file_name))
|
|
|
|
os.remove(helpers.ea_path() + "/" + ftp_file_name)
|
|
|
|
else:
|
|
|
|
ftp.storbinary("STOR " + self.file_transfer, open(self.file_transfer))
|
2014-12-24 13:37:31 +00:00
|
|
|
|
|
|
|
ftp.quit()
|
|
|
|
print "[*] File sent!!!"
|