net.ibao.dnscat.util

Class SixBitDNSEncoder


public class SixBitDNSEncoder
extends java.lang.Object

This class implements encoding of data into DNS names. The name uses 6 bit charset (as defined below) and longer names are separated by dots (every NAMELEN characters). The class also adds encoded the frame length (the first charater).

Version:
$Id: SixBitDNSEncoder.java 42 2005-08-18 09:37:47Z tadekp $

Author:
Tadeusz Pietraszek (tadek@pietraszek.org).

Field Summary

private int
NAMELEN
DNS charset
private byte[]
forwardMap
maximum name length (after how many characters to insert dots)
private static Logger
logger
private static String
map
private byte[]
reverseMap

Constructor Summary

SixBitDNSEncoder()
Construct the new DNS encoder/decoder class.

Method Summary

byte[]
decode(String si)
Decodes a DNS name into a binary byter
String
encode(byte[] bi)
String
encode(byte[] bi, int biLength)
Encodes a binary buffer into a DNS name.

Field Details

NAMELEN

private final int NAMELEN
DNS charset


forwardMap

private byte[] forwardMap
maximum name length (after how many characters to insert dots)


logger

private static Logger logger


map

private static final String map


reverseMap

private byte[] reverseMap

Constructor Details

SixBitDNSEncoder

public SixBitDNSEncoder()
Construct the new DNS encoder/decoder class.

Method Details

decode

public byte[] decode(String si)
            throws Exception
Decodes a DNS name into a binary byter

Parameters:
si - Encoded DNS name

Returns:
Binary buffer


encode

public String encode(byte[] bi)
            throws Exception


encode

public String encode(byte[] bi,
                     int biLength)
            throws Exception
Encodes a binary buffer into a DNS name.

Parameters:
bi - byte Data buffer
biLength - Buffer length. Due to encoding used it has to be <254 (DNS can't handle more anyway)

Returns:
Encoded DNS name