Skip to content

A TFTP/PXE tool suite written in Python

License

Notifications You must be signed in to change notification settings

CoderLambert/ptftpd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pTFTPd - A pure-Python TFTP tool suite
======================================

pTFTPd is a collection of tools related to TFTP. It includes a TFTP
server, a TFTP client, and a complete PXE solution based on this TFTP
server and a micro-DHCP or BOOTP server. All these tools are written in
Python and designed to be fast, RFC compliant and easy to use.

Available tools include:

  - bootpd : a BOOTP server (RFC951 and RFC1497 compliant)
  - dhcpd  : a simple, stripped-down DHCP server.
  - ptftpd : the TFTP server (RFC1350, 2347, 2348 and 2349 compliant)
  - pxed   : a one-call PXE server using dhcpd and ptftpd.
  - ptftp  : a simple TFTP client (RFC1350, 2347, 2348 and 2349
             compliant and capable)

They all support the --help option to present the usage summary to the
user.

All tools also understand the --rfc1350 option, which forces them in
basic TFTP RFC1350 compliance mode, disabling all TFTP extensions for
increased compatibility would you encouter any problem with your target
system.

Note: if you use the pTFTPd tool suite outside of a standard
distribution installation, you may need to specify the Python module
search path with PYTHONPATH before executing the binaries:

  $ export PYTHONPATH=./python-path
  $ bin/ptftp.py
  Connected to localhost:69.

  tftp>

TFTP server and client
^^^^^^^^^^^^^^^^^^^^^^

The TFTP server, pTFTPd, fully supports the TFTP specification as
defined in RFC1350. It also supports the TFTP Option Extension protocol
(per RFC2347), the block size option as defined in RFC2348 and the
transfer size option from RFC2349.

For help on how to use pTFTPd, type:

  $ ./bin/ptftpd.py --help

The port used can be changed using the -p option. The root path is given
as a simple argument. For example, to serve /var/lib/tftp on port 6969:

  $ ./bin/ptftpd.py -p 6969 /var/lib/tftp

The TFTP client is an interactive client, just launch it and type 'help'
to see the available commands:

  $ ./bin/ptftp.py
  tftp> help
  ...

PXE solution
^^^^^^^^^^^^

The PXE system is also very easy to use. It takes three arguments: the
network interface to listen on, the TFTP root path from which to serve
files, and the PXE boot filename. It will automatically start a TFTP
server and a DHCP server to serve hosts on the given interface. See
--help for more details:

  $ ./bin/pxed.py --help

Mechanics for using pxed.py with the BOOTP server are not yet in place,
but such a solution can easily be constructed manually by starting the
BOOTP server and the TFTP server manually:

  $ ./bin/bootpd.py <interface> <PXE boot file> &
  $ ./bin/ptftpd.py

About

A TFTP/PXE tool suite written in Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%