Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
BITTWISTE(1)		     General Commands Manual		    BITTWISTE(1)

NAME
     bittwiste -- pcap capture file editor

SYNOPSIS
     bittwiste [ -I input ] [ -O output ] [ -L layer ] [ -X payload ]
	       [ -C ] [ -M linktype ] [ -D offset ] [ -R range ]
	       [ -S timeframe ] [ -N repeat ] [ -G gaprange ] [ -P seed ]
	       [ -T header ] [ header-specific-options ] [ -h ]

DESCRIPTION
     This document describes the bittwiste program, the pcap(3) capture file ed-
     itor.  Bittwiste  is  designed  to work only with Ethernet frame, e.g. link
     type DLT_EN10MB in pcap(3), with a maximum frame size of 1514  bytes  which
     is equivalent to an MTU of 1500 bytes, 14 bytes for Ethernet header.

     Bittwiste	can  currently	edit  Ethernet,  VLAN,	ARP, IPv4, IPv6, ICMPv4,
     ICMPv6, TCP, and UDP headers. IPv6 packets with extension headers	or  next
     header  field not matching ICMPv6, TCP, or UDP are not supported; bittwiste
     will simply write such packets as is to output trace file as it  encounters
     them in the input trace file.

     If  run  with the -X flag, you can append your own payload after any of the
     supported headers; specified using the -L and -T flag. Bittwiste  will,  if
     not  run  with  the  -C  flag,  recalculate the checksums for IPv4, ICMPv4,
     ICMPv6, TCP, and UDP headers, except for the last fragment of a  fragmented
     IPv4 datagram; bittwiste does not currently support checksum correction for
     the last fragment of a fragmented IPv4 datagram.

     While parsing the packets in an input trace file, bittwiste will skip, i.e.
     write  to	output	trace  file as is, any truncated packet, for example, an
     ICMPv4 packet with a captured length of 25  bytes	(we  need  at  least  28
     bytes;  14 bytes for Ethernet header, minimum 20 bytes for IP header, and 4
     bytes for ICMPv4 header) does not give enough  information  on  its  ICMPv4
     header  for  bittwiste to read and modify it. In this case, you can utilize
     the -L and -T flag to copy the original packet up to its IP header and  ap-
     pend  your  customized  ICMPv4  header  and data to the packet using the -X
     flag. When specifying payload that covers the ICMPv4, ICMPv6, TCP,  or  UDP
     header and its data, you can use zeros, e.g. 0000 for 2 bytes of zeros, for
     the header checksum which is then corrected automatically by bittwiste.

     In order to simplify the way options are specified, you can only edit pack-
     ets  of  a specific type supplied to the -T flag per execution of bittwiste
     on an input trace file. In addition, the -T flag must appear last among the
     general options which are the -I, -O, -L, -X, -C, -M, -D, -R, -S,	-N,  -G,
     and -P flag.

OPTIONS
     -I input
	    Input  pcap based trace file. Typically, input should be a file path
	    to a pcap based trace file. However, for convenience, the  following
	    template  names are also accepted to load trace file from one of the
	    built-in templates:

	    eth    : Ethernet header
	    vlan   : VLAN header
	    arp    : ARP header
	    ip	   : IPv4 header
	    ip6    : IPv6 header
	    icmp   : ICMPv4 header
	    icmp6  : ICMPv6 header
	    tcp    : IPv4 TCP header
	    ip6tcp : IPv6 TCP header
	    udp    : IPv4 UDP header
	    ip6udp : IPv6 UDP header

	    Example: -I icmp

     -O output
	    Output trace file.

     -L layer
	    Copy up to the specified layer and discard the remaining data. Value
	    for layer must be either 2, 3, or 4 where 2 for Ethernet and VLAN, 3
	    for ARP, IPv4, or IPv6, and 4 for ICMPv4, ICMPv6, TCP, or UDP.

     -X payload or range or range:payload
	    Append payload in hex digits to the end of each packet. If range  is
	    specified,	e.g.  0-1000, a random payload with a size between 0 and
	    1000 bytes	(inclusive)  will  be  generated  for  each  packet.  If
	    range:payload  is specified, e.g. 0-1000:0302aad1, a payload of ran-
	    dom size between 0 to 1000 bytes will be generated, containing a re-
	    peated sequence of the specified  bytes  (0x0302aad1).  The  maximum
	    payload size is 65535 bytes.

	    Examples:
	    -X 0302aad1
	    -X 0-1000
	    -X 20-20
	    -X 0-1000:00
	    -X 0-1000:ff
	    -X 0-1000:0302aad1

	    -X flag is ignored if -L and -T flag are not specified.

     -C     Specify  this  flag to disable checksum correction. Checksum correc-
	    tion is applicable for non-fragmented supported packets only.

     -M linktype
	    Replace the linktype stored in  the  pcap  file  header.  Typically,
	    value for linktype is 1 for Ethernet.
	    Example: -M 12 (for raw IP), -M 51 (for PPPoE)

	    For the complete list, see:
	    https://www.tcpdump.org/linktypes.html

     -D offset
	    Delete the specified byte offset from each packet.
	    First byte (starting from link layer header) starts from 1.
	    -L, -X, -C and -T flag are ignored if -D flag is specified.
	    Example: -D 15-40, -D 10, or -D 18-9999

     -R range
	    Save only the specified range of packets.
	    Example: -R 5-21 or -R 9

     -S timeframe
	    Save only the packets within the specified timeframe with up to one-
	    second  resolution using DD/MM/YYYY,HH:MM:SS as the format for start
	    and end time in timeframe.
	    Example: -S 22/10/2006,21:47:35-24/10/2006,13:16:05
	    -S flag is evaluated after -R flag.

     -N repeat
	    Duplicate packets from the input trace file repeat times.  Use  this
	    flag to create a stream of packets, each with, for example, a random
	    tcp sequence number, from a 1-packet trace file.
	    Example: -N 100000
	    -N flag is evaluated after -R and -S flag.

     -G gaprange
	    Apply  inter-packet  gap  between  packets in microseconds from 0 to
	    (2^31 - 1). Values in gaprange are inclusive and selected  randomly.
	    A single value implies a fixed gap.
	    Example: -G 1000-10000 or -G 1000
	    -G flag is evaluated after -R, -S, and -N flag.

     -P seed
	    Positive integer (0 to 2^32 - 1) to seed the random number generator
	    (RNG)  used,  for example, to generate random port number. If unset,
	    current timestamp will be used as the RNG seed.

	    bittwiste uses Mersenne Twister for high-speed uniformly distributed
	    random number generation.

     -T header
	    Edit only the specified header. Possible keywords  for  header  are,
	    eth,  vlan, arp, ip, ip6, icmp, icmp6, tcp, or udp. -T flag must ap-
	    pear last among the general options.

     -h     Print version information and usage.

     header-specific-options
	    Each packet that matches the type supplied to the -T flag  is  modi-
	    fied based on the options described below:

	    Options for eth (RFC 894):

	    -d dmac or omac,nmac
		   Destination	MAC address. If omac and nmac are specified, any
		   instances of omac in the destination MAC address  field  will
		   be replaced with nmac. You can also use the string 'rand' for
		   a random MAC address.

		   Examples:
		   -d 00:08:55:64:65:6a
		   -d rand
		   -d 00:08:55:64:65:6a,rand

	    -s smac or omac,nmac
		   Source  MAC	address. If omac and nmac are specified, any in-
		   stances of omac in the source MAC address field will  be  re-
		   placed  with  nmac.	You can also use the string 'rand' for a
		   random MAC address.

		   Examples:
		   -s 00:13:20:3e:ab:cf
		   -s rand
		   -s 00:13:20:3e:ab:cf,rand

	    -t type or ot,nt
		   EtherType in integer value between 0 to 65535 or  hexadecimal
		   value  between  0x0000  to  0xffff (16-bit). If ot and nt are
		   specified, any instances of ot in the EtherType field will be
		   replaced with nt. You can use the string 'rand' for a  random
		   EtherType. Following keywords are also accepted:

		   vlan : 0x8100 (802.1Q VLAN)
		   ctag : 0x8100 (802.1ad VLAN C-TAG for Q-in-Q)
		   stag : 0x88a8 (802.1ad VLAN S-TAG for Q-in-Q)
		   ip	: 0x0800
		   ip6	: 0x86dd
		   arp	: 0x0806

		   Examples:
		   -t ip
		   -t 0x0800
		   -t rand
		   -t 0x0800,rand

		   For the complete list, see:
		   https://www.iana.org/assignments/ieee-802-numbers

	    Options for vlan (IEEE 802.1Q, 802.1ad):

	    -i id or oi,ni
		   VLAN  ID in integer value between 0 to 4095. If oi and ni are
		   specified, any instances of oi in the VLAN ID field	will  be
		   replaced  with ni. You can use the string 'rand' for a random
		   VLAN ID. This option can be repeated up to 4  times	to  edit
		   stacked VLAN headers, i.e. Q-in-Q.

		   Examples:
		   -i 2000
		   -i rand
		   -i 1000,rand
		   -i 100 -i 200 (outer S-TAG = 100, inner C-TAG = 200)

	    -d dei or od,nd
		   VLAN  DEI  (drop  eligible  indicator;  also known as CFI for
		   canonical format indicator). Value must be 0 or 1. If od  and
		   nd  are  specified, any instances of od in the VLAN DEI field
		   will be replaced with nd. You can use the string 'rand' for a
		   random VLAN DEI. This option can be repeated up to 4 times to
		   edit stacked VLAN headers, i.e. Q-in-Q.

		   Examples:
		   -d 0
		   -d rand
		   -d 1,rand
		   -d 0 -d 1

	    -p pcp or op,np
		   VLAN PCP (priority code point) in integer value between 0  to
		   7.  If  op  and  np are specified, any instances of op in the
		   VLAN PCP field will be replaced with  np.  You  can	use  the
		   string  'rand'  for a random VLAN PCP. This option can be re-
		   peated up to 4 times to edit stacked VLAN headers, i.e. Q-in-
		   Q.

		   Mapping of pcp value from IEEE P802.1p:

		   0 : Best effort
		   1 : Background
		   2 : Excellent effort
		   3 : Critical applications
		   4 : Video, < 100 ms latency and jitter
		   5 : Voice, < 10 ms latency and jitter
		   6 : Internetwork control
		   7 : Network control

		   Examples:
		   -p 2
		   -p rand
		   -p 3,rand
		   -p 7 -p 0

	    -t type or ot,nt
		   Encapsulated EtherType in integer value between 0 to 65535 or
		   hexadecimal value between 0x0000 to 0xffff  (16-bit).  If  ot
		   and nt are specified, any instances of ot in the encapsulated
		   EtherType  field  will  be  replaced with nt. You can use the
		   string 'rand' for a random encapsulated EtherType.  Following
		   keywords are also accepted:

		   vlan : 0x8100 (802.1Q VLAN)
		   ctag : 0x8100 (802.1ad VLAN C-TAG for Q-in-Q)
		   stag : 0x88a8 (802.1ad VLAN S-TAG for Q-in-Q)
		   ip	: 0x0800
		   ip6	: 0x86dd
		   arp	: 0x0806

		   This  option  can  be  repeated up to 4 times to edit stacked
		   VLAN headers, i.e. Q-in-Q.

		   Examples:
		   -t ip
		   -t 0x0800
		   -t rand
		   -t 0x0800,rand
		   -t ctag -t ip

		   For the complete list, see:
		   https://www.iana.org/assignments/ieee-802-numbers

	    Options for arp (RFC 826):

	    -o opcode
		   Operation code in integer value between 0 to 65535. For exam-
		   ple, you can set opcode to 1 for ARP request, 2 for	ARP  re-
		   ply.

	    -s smac or omac,nmac
		   Sender  MAC	address. If omac and nmac are specified, any in-
		   stances of omac in the sender MAC address field will  be  re-
		   placed  with  nmac.	You can also use the string 'rand' for a
		   random MAC address.

		   Examples:
		   -s 00:13:20:3e:ab:cf
		   -s rand
		   -s 00:13:20:3e:ab:cf,rand

	    -p sip or oip,nip
		   Sender IP address. Example: -p 192.168.0.1
		   If oip and nip are specified, any instances	of  oip  in  the
		   sender IP address field will be replaced with nip.

	    -t tmac or omac,nmac
		   Target  MAC	address. If omac and nmac are specified, any in-
		   stances of omac in the target MAC address field will  be  re-
		   placed  with  nmac.	You can also use the string 'rand' for a
		   random MAC address.

		   Examples:
		   -t 00:08:55:64:65:6a
		   -t rand
		   -t 00:08:55:64:65:6a,rand

	    -q tip or oip,nip
		   Target IP address. Example: -q 192.168.0.2
		   If oip and nip are specified, any instances	of  oip  in  the
		   target IP address field will be replaced with nip.

	    Options for ip (RFC 791):

	    -c ds_field
		   6-bit DS field (first 6-bit of 8-bit type of service field).

		   Some of the service class name mapping to ds_field value from
		   RFC 4594:

		   0  : Standard (CS0)
		   8  : Low-priority data (CS1)
		   16 : OAM (CS2)
		   24 : Broadcast video (CS3)
		   32 : Real-time interactive (CS4)

		   Example:  -c  16 or -c 0x10 (to classify packet for operation
		   and management of the network)

		   For more information on DS field, see RFC 2474 and RFC 4594.

	    -e ecn_field
		   2-bit ECN field (last 2-bit of 8-bit type of service field).

		   ecn_field can be set to one of the 4 values below:

		   0 : Not-ECT
		   1 : ECT(1)
		   2 : ECT(0)
		   3 : CE

		   Example: -e 3 or -e 0x03 (to indicate congestion to	the  end
		   hosts)

		   For more information on ECN field, see RFC 3168.

	    -i id or oi,ni
		   Identification in integer value between 0 to 65535. If oi and
		   ni  are  specified, any instances of oi in the identification
		   field will be replaced with ni. You can also use  the  string
		   'rand' for a random identification.

		   Example: -i 2000, -i rand, or -i 1000,rand

	    -f flags
		   Control flags. Possible characters for flags are:

		   - : remove all flags
		   r : set the reserved flag
		   d : set the don't fragment flag
		   m : set the more fragment flag

		   Example: -f d
		   If  any of the flags is specified, all original flags are re-
		   moved automatically.

	    -o offset
		   Fragment offset in integer value between 0 to 7770. Value for
		   offset represents the number of 64-bit segments contained  in
		   earlier fragments which must not exceed 7770 (62160 bytes).

	    -t ttl or ot,nt
		   Time  to  live  in  integer value between 0 to 255 (millisec-
		   onds). If ot and nt are specified, any instances of ot in the
		   time to live field will be replaced with nt. You can also use
		   the string 'rand' for a random time to live.

		   Example: -t 64, -i rand, or -i 64,rand

	    -p proto or op,np
		   Protocol number in integer value between 0 to 255. If op  and
		   np  are specified, any instances of op in the protocol number
		   field will be replaced with np. You can also use  the  string
		   'rand'  for	a  random  protocol number. Some common protocol
		   numbers are:

		   1  : Internet Control Message (ICMP)
		   6  : Transmission Control (TCP)
		   17 : User Datagram (UDP)

		   For the complete list, see:
		   https://www.iana.org/assignments/protocol-numbers

	    -s sip or oip,nip
		   Source IP address. If oip and  nip  are  specified,	any  in-
		   stances  of	oip  in  the source IP address field will be re-
		   placed with nip. If CIDR notation (RFC  4632)  is  specified,
		   e.g. 192.168.0.0/16, an IP address will be selected at random
		   from the range.

		   Examples:
		   -s 192.168.0.1
		   -s 127.0.0.1,192.168.0.0/16
		   -s 0.0.0.0/0 (random IPv4 throughout the entire range)

	    -d dip or oip,nip
		   Destination IP address. If oip and nip are specified, any in-
		   stances  of	oip  in the destination IP address field will be
		   replaced with nip. If CIDR notation (RFC 4632) is  specified,
		   e.g. 192.168.0.0/16, an IP address will be selected at random
		   from the range.

		   Examples:
		   -d 192.168.0.2
		   -d 127.0.0.2,192.168.0.0/16
		   -d 0.0.0.0/0 (random IPv4 throughout the entire range)

	    Options for ip6 (RFC 8200):

	    -c ds_field
		   6-bit DS field (first 6-bit of 8-bit traffic class field).

		   Some of the service class name mapping to ds_field value from
		   RFC 4594:

		   0  : Standard (CS0)
		   8  : Low-priority data (CS1)
		   16 : OAM (CS2)
		   24 : Broadcast video (CS3)
		   32 : Real-time interactive (CS4)

		   Example:  -c  16 or -c 0x10 (to classify packet for operation
		   and management of the network)

		   For more information on DS field, see RFC 2474 and RFC 4594.

	    -e ecn_field
		   2-bit ECN field (last 2-bit of 8-bit traffic class field).

		   ecn_field can be set to one of the 4 values below:

		   0 : Not-ECT
		   1 : ECT(1)
		   2 : ECT(0)
		   3 : CE

		   Example: -e 3 or -e 0x03 (to indicate congestion to	the  end
		   hosts)

		   For more information on ECN field, see RFC 3168.

	    -f flow_label
		   Flow label in integer value between 0 to 1048575 or hexadeci-
		   mal value between 0x00000 to 0xfffff (20-bit).
		   Example: -f 0

		   Value  of 0 is to indicate that the packet does not belong to
		   any flow. For more information, see RFC 6437.

	    -n next_header or on,nn
		   Next header number in integer value between 0 to 255.  If  on
		   and	nn are specified, any instances of on in the next header
		   field will be replaced with nn. You can also use  the  string
		   'rand'  for	a  random  next  header  number. Example of next
		   header numbers:

		   0  : IPv6 Hop-by-Hop Option (HOPOPT)
		   6  : Transmission Control (TCP)
		   17 : User Datagram (UDP)
		   50 : Encap Security Payload (ESP)
		   51 : Authentication Header (AH)
		   58 : ICMP for IPv6 (IPv6-ICMP)

		   For the complete list, see:
		   https://www.iana.org/assignments/protocol-numbers

	    -h hop_limit or oh,nh
		   Hop limit in integer value between 0 to 255. If oh and nh are
		   specified, any instances of oh in the hop limit field will be
		   replaced with nh. You can also use the string  'rand'  for  a
		   random  hop	limit.	Destination  host  should  not discard a
		   packet with hop limit equal to 0.

	    -s sip or oip,nip
		   Source IP address. If oip and  nip  are  specified,	any  in-
		   stances  of	oip  in  the source IP address field will be re-
		   placed with nip. If CIDR notation (RFC  4291)  is  specified,
		   e.g.  2001:db8::/64, an IP address will be selected at random
		   from the range.

		   Examples:
		   -s fd00::1
		   -s ::1,2001:db8::/64
		   -s ::/0 (random IPv6 throughout the entire range)

	    -d dip or oip,nip
		   Destination IP address. If oip and nip are specified, any in-
		   stances of oip in the destination IP address  field	will  be
		   replaced  with nip. If CIDR notation (RFC 4291) is specified,
		   e.g. 2001:db8::/64, an IP address will be selected at  random
		   from the range.

		   Examples:
		   -d fd00::2
		   -d ::2,2001:db8::/64
		   -d ::/0 (random IPv6 throughout the entire range)

	    Options for icmp (RFC 792):

	    -t type
		   Type  of message in integer value between 0 to 255. Some com-
		   mon messages are:

		   0  : Echo reply
		   3  : Destination unreachable
		   8  : Echo
		   11 : Time exceeded

		   For the complete list, see:
		   https://www.iana.org/assignments/icmp-parameters

	    -c code
		   Error code for this ICMPv4 message in integer value between 0
		   to 255. For example, code for time exceeded message may  have
		   one of the following values:

		   0 : transit TTL exceeded
		   1 : reassembly TTL exceeded

		   For the complete list, see:
		   https://www.iana.org/assignments/icmp-parameters

	    Options for icmp6 (RFC 4443):

	    -t type
		   Type  of message in integer value between 0 to 255. Some com-
		   mon messages are:

		   3   : Time Exceeded
		   128 : Echo Request
		   129 : Echo Reply

		   For the complete list, see:
		   https://www.iana.org/assignments/icmpv6-parameters

	    -c code
		   Code for this ICMPv6 message in integer value  between  0  to
		   255. For example, code for Time Exceeded message may have one
		   of the following values:

		   0 : hop limit exceeded in transit
		   1 : fragment reassembly time exceeded

		   For the complete list, see:
		   https://www.iana.org/assignments/icmpv6-parameters

	    Options for tcp (RFC 9293):

	    -s sport or op,np
		   Source port number in integer value between 0 to 65535. If op
		   and	np are specified, any instances of op in the source port
		   field will be replaced with np. You can also use  the  string
		   'rand' for a random port number.

		   Example: -s 2000, -s rand, or -s 1000,rand

	    -d dport or op,np
		   Destination	port number in integer value between 0 to 65535.
		   If op and np are specified, any instances of op in the desti-
		   nation port field will be replaced with np. You can also  use
		   the string 'rand' for a random port number.

		   Example: -d 2000, -d rand, or -d 1000,rand

	    -q seq or os,ns
		   Sequence  number in integer value between 0 to 4294967295. If
		   SYN control bit is set, e.g. character s is supplied  to  the
		   -f flag, seq represents the initial sequence number (ISN) and
		   the	first  data byte is ISN + 1. If os and ns are specified,
		   any instances of os in the sequence number field will be  re-
		   placed with ns. You can also use the string 'rand' for a ran-
		   dom sequence number.

		   Example: -q 100000, -q rand, or -q 100000,rand

	    -a ack or oa,na
		   Acknowledgment   number   in   integer  value  between  0  to
		   4294967295. If ACK control bit is set, e.g.	character  a  is
		   supplied to the -f flag, ack represents the value of the next
		   sequence number that the receiver is expecting to receive. If
		   oa  and na are specified, any instances of oa in the acknowl-
		   edgment number field will be replaced with na. You  can  also
		   use the string 'rand' for a random acknowledgment number.

		   Example: -a 100000, -a rand, or -a 100000,rand

	    -f flags
		   Control flags. Possible characters for flags are:

		   - : remove all flags
		   c : congestion window reduced
		   e : explicit congestion notification echo
		   u : urgent pointer field is significant
		   a : acknowledgment field is significant
		   p : push function
		   r : resets the connection
		   s : synchronizes the sequence numbers
		   f : no more data from sender

		   Example: -f s
		   If  any of the flags is specified, all original flags are re-
		   moved automatically.

	    -w win
		   Window size in integer value between 0 to 65535. If ACK  con-
		   trol bit is set, e.g. character a is supplied to the -f flag,
		   win	represents  the number of data bytes, beginning with the
		   one indicated in the acknowledgment number field that the re-
		   ceiver is willing to accept.

	    -u urg
		   Urgent pointer in integer value between 0 to  65535.  If  URG
		   control  bit  is  set, e.g. character u is supplied to the -f
		   flag, urg represents a pointer that points to the first  data
		   byte following the urgent data.

	    Options for udp (RFC 768):

	    -s sport or op,np
		   Source port number in integer value between 0 to 65535. If op
		   and	np are specified, any instances of op in the source port
		   field will be replaced with np. You can also use  the  string
		   'rand' for a random port number.

		   Example: -s 2000, -s rand, or -s 1000,rand

	    -d dport or op,np
		   Destination	port number in integer value between 0 to 65535.
		   If op and np are specified, any instances of op in the desti-
		   nation port field will be replaced with np. You can also  use
		   the string 'rand' for a random port number.

		   Example: -d 2000, -d rand, or -d 1000,rand

SEE ALSO
     bittwist(1), pcap(3), tcpdump(1)

BUGS
     File your bug report and send to:

	    Addy Yeow <ayeowch@gmail.com>

     Make  sure  you  are using the latest stable version before submitting your
     bug report.

     When running bittwiste with both the -N and -G  flags,  large  inter-packet
     gap  may  result  in  the	packet	timestamp  beyond  Unix epoch 2147483647
     (2038-01-19 03:14:07 UTC) to overflow. This is due to  the  use  of  signed
     32-bit  integer  to  store timestamp in pcap(3) header. Simply changing the
     data type, e.g. using unsigned 64-bit integer, would break the  compatibil-
     ity of the output trace file with existing systems.

     The  workaround  built  into  bittwiste  is  to  use  Unix  epoch 946684800
     (2020-01-01 00:00:00 UTC) as the starting reference timestamp when -G  flag
     is  specified.  This translates to a maximum timespan of 38 years or 559165
     packets in the output trace file when using the maximum  inter-packet  gap,
     i.e. -G 2147483647.

COPYRIGHT
     Copyright (C) 2006 - 2024 Addy Yeow <ayeowch@gmail.com>

     This program is free software; you can redistribute it and/or modify it un-
     der  the  terms  of the GNU General Public License as published by the Free
     Software Foundation; either version 2 of the License, or (at  your  option)
     any later version.

     This program is distributed in the hope that it will be useful, but WITHOUT
     ANY  WARRANTY; without even the implied warranty of MERCHANTABILITY or FIT-
     NESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
     details.

     You should have received a copy of the GNU  General  Public  License  along
     with  this program; if not, write to the Free Software Foundation, Inc., 51
     Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

AUTHORS
     Original author and current maintainer:

	    Addy Yeow

     The current version is available from https://bittwist.sourceforge.io

				 1 November 2024		    BITTWISTE(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bittwiste&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help