Dh Key Too Small (Python3 FTP) on Whonix

I am trying to upload files to a server from within the Whonix operating system. I was able to do it successfully using Filezilla from within Whonix, so I’m not really sure why the Python code isn’t working.

from ftplib import FTP, FTP_TLS
import os

ftp = FTP_TLS()
ftp.connect('ftp.server.com', 21)
ftp.login('Username', 'Password')
item_name = 'myfile.mp4'
item_path = os.path.abspath(item_name)

fp = open(item_path, 'rb')
ftp.storbinary('STOR {}'.format(item_name), fp, 8192)

Does anybody know how I should change the Python code to be able to upload the file succesfully from within Whonix? For reference, the Python code works when I run it directly from within Windows. It only fails when I try it from within Whonix, and I don’t know why.

This is the error I get, and I don’t understand it:

*get* '220-This is a private system - No anonymous login\n'
*get* '220-IPv6 connections are also welcome on this server.\n'
*get* '220 You will be disconnected after 30 minutes of inactivity.\n'
*resp* '220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------\n220-You are user number 17 of 50 allowed.\n220-Local time is now 01:28. Server port: 21.\n220-This is a private system - No anonymous login\n220-IPv6 connections are also welcome on this server.\n220 You will be disconnected after 30 minutes of inactivity.'
*cmd* 'AUTH TLS'
*put* 'AUTH TLS\r\n'
*get* '234 AUTH TLS OK.\n'
*resp* '234 AUTH TLS OK.'
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    ftp.login('Username', 'Password')
  File "/usr/lib/python3.7/ftplib.py", line 749, in login
  File "/usr/lib/python3.7/ftplib.py", line 761, in auth
  File "/usr/lib/python3.7/ssl.py", line 412, in wrap_socket
  File "/usr/lib/python3.7/ssl.py", line 853, in _create
  File "/usr/lib/python3.7/ssl.py", line 1117, in do_handshake
ssl.SSLError: [SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1056)

This isn’t a coding help forum. If Filezilla works why switch?

1 Like

I need the process automated. The code works in Windows but not in Whonix, so I don’t understand what is fundamentally different.

Probably some missing dependency library. Should be resolved as per:

Free Support for Whonix ™