|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sf.jmatchparser.util.BinaryExpression
public class BinaryExpression
An expression that can be used to build or match binary byte arrays.
This is useful when binary data (like encryption keys) should be configurable in a text file, where the user can decide which format (hex, base64, etc.) he wants to use to provide the data.
Therefore, the user can give a list of transformations (separated by colons), followed by data to be transformed. Each transformation is applied on the result of the previous transformation. Therefore, hex:base64:NzQ2NTczNzQ= will result in test.
An empty transformation name will stop parsing transformations; therefore, to match the literal (UTF-8) bytes C:\>, the expression :C:\> can be used. If no encoding is given, everything is encoded as UTF-8. An explicit encoding can be given by using the encode- <encoding>: transformation.
Optionally, a secondary expression can be parsed at the same time, for
example an initialization vector for an encryption key or a mask for matching
data. In case of a mask, MaskedBinaryExpression
might have been the
better choice.
The following tranformations are supported:
Constructor Summary | |
---|---|
BinaryExpression(String expression,
String secondaryName,
boolean secondaryRandom)
Create a new binary expression with optional secondary expressions |
Method Summary | |
---|---|
boolean[] |
getMarkedSecondaryBytes()
Return the bytes marked (as optional or random) in the secondary value, if any. |
byte[] |
getRandomSecondaryValue(Random randomSource)
Compute a new random secondary value. |
byte[] |
getSecondaryValue()
Return the secondary value, if any. |
byte[] |
getValue()
Return the value of the parsed expression. |
static byte[] |
parseBinaryExpression(String expression)
Parse a binary expression with no secondary expression. |
static String |
unescape(String string,
String literalChars)
Unescape Java escape sequences like \n or octal or unicode escapes. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public BinaryExpression(String expression, String secondaryName, boolean secondaryRandom) throws IOException
expression
- Expression to parsesecondaryName
- Name used in the expression to denote secondary expression
(like mask or iv)secondaryRandom
- Whether the secondary expression may contain random bytes
(like an iv); if not, the marked bytes are optional instead of
random
IOException
Method Detail |
---|
public static byte[] parseBinaryExpression(String expression) throws IOException
IOException
public static String unescape(String string, String literalChars) throws IOException
string
- The string to unescapeliteralChars
- List of characters (like quotation marks) that should return
themselves instead of producing an error. A backslash will
always return itself regardless whether it is in this list or
not.
IOException
public byte[] getValue()
public byte[] getSecondaryValue()
public boolean[] getMarkedSecondaryBytes()
public byte[] getRandomSecondaryValue(Random randomSource)
randomSource
- source for the randomness
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |