If the strings have a fixed format, String#substring() will suffice:
Online demo here.
public static void main(String[] args) {
    String input1 = "Request ECUReset for [*11 01]";
    String output1 = input1.substring(input1.indexOf("[*")+"[*".length(), input1.indexOf("]", input1.indexOf("[*")));
    System.out.println(input1 + " --> " + output1);
    String input2 = "Request ECUReset for [*11]";
    String output2 = input2.substring(input2.indexOf("[*")+"[*".length(), input2.indexOf("]", input2.indexOf("[*")));
    System.out.println(input2 + " --> " + output2);
    String input3 = "Request ECUReset for [*11 01 10]";
    String output3 = input3.substring(input3.indexOf("[*")+"[*".length(), input3.indexOf("]", input3.indexOf("[*")));
    System.out.println(input3 + " --> " + output3);
}
Output:
Request ECUReset for [*11 01] --> 11 01
Request ECUReset for [*11] --> 11
Request ECUReset for [*11 01 10] --> 11 01 10
Or, if the input is less stable, you can use a Regex (through the utility Pattern class) to match the number between the brackets:
Online demo here.
import java.util.regex.*;
public class PatternBracket {
    public static void main(String[] args) {
        String input1 = "Request ECUReset for [*11 01]";
        String output1 = getBracketValue(input1);
        System.out.println(input1 + " --> " + output1);
        String input2 = "Request ECUReset for [*11]";
        String output2 = getBracketValue(input2);
        System.out.println(input2 + " --> " + output2);
        String input3 = "Request ECUReset for [*11 01 10]";
        String output3 = getBracketValue(input3);
        System.out.println(input3 + " --> " + output3);
    }
    private static String getBracketValue(String input) {
        Matcher m = Pattern.compile("(?<=\\[\\*)[^\\]]*(?=\\])").matcher(input);
        if (m.find()) {
            return m.group();
        }
        return null;
    }
}
(same output as above)