2bdenny / ReScue

An automated tool for the detection of regexes' slow-matching vulnerabilities.
GNU General Public License v2.0
154 stars 29 forks source link

Document Build Instructions #2

Open emily-desverreaux opened 6 years ago

emily-desverreaux commented 6 years ago

Hi,

I'm trying to build a jar file from this project. I tried using this tutorial and these were my results: adding: attackers/GeneticAttacker.java(in = 4824) (out= 1505)(deflated 68%) adding: attackers/GeneticAttackerWithoutIncubating.java(in = 3910) (out= 1332)(deflated 65%) adding: attackers/GeneticAttackerWithoutPumping.java(in = 4903) (out= 1544)(deflated 68%) adding: attackers/GeneticAttackerWithoutSeeding.java(in = 4876) (out= 1520)(deflated 68%) adding: attackers/pp/(in = 0) (out= 0)(stored 0%) adding: attackers/pp/Pumper.java(in = 3475) (out= 1126)(deflated 67%) adding: regex/ASCII.java(in = 8577) (out= 1525)(deflated 82%) adding: regex/ReScueCharacter.java(in = 50483) (out= 10751)(deflated 78%) adding: regex/ReScueMatcher.java(in = 47660) (out= 9324)(deflated 80%) adding: regex/ReScuePattern.java(in = 202090) (out= 38049)(deflated 81%) adding: regex/UnicodeProp.java(in = 6580) (out= 1505)(deflated 77%) adding: tester/RedosTester.java(in = 7661) (out= 2195)(deflated 71%) adding: tester/RexploiterBest.java(in = 159) (out= 126)(deflated 20%) adding: tester/SlowFuzzBest.java(in = 157) (out= 130)(deflated 17%) adding: tester/TempTester.java(in = 23666) (out= 4631)(deflated 80%) adding: tester/Validator.java(in = 147) (out= 121)(deflated 17%) adding: utils/NodeRelation.java(in = 1332) (out= 526)(deflated 60%) adding: utils/RegexFormatter.java(in = 3317) (out= 1051)(deflated 68%) adding: utils/RegexViewer.java(in = 7493) (out= 2127)(deflated 71%) adding: utils/ReScuePatternUtils.java(in = 1076) (out= 459)(deflated 57%) adding: utils/StringUtils.java(in = 2115) (out= 771)(deflated 63%) emily@snoopy:~/ReScue/src/cn/edu/nju/moon/redos$ ~/ReScue/src/cn/edu/nju/moon/redos^C emily@snoopy:~/ReScue/src/cn/edu/nju/moon/redos$ clear emily@snoopy:~/ReScue/src/cn/edu/nju/moon/redos$ cd ~/Desktop/ emily@snoopy:~/Desktop$ ls 2bdenny-ReScue-ecf0e98 emilyJar.jar g\ ReScue WinSCP Practice emily@snoopy:~/Desktop$ java -jar emilyJar.jar no main manifest attribute, in emilyJar.jar

I then used an IDE, Eclipse, to find main methods. Because there were multiple mains, I chose the RegexFormatter class because it handled some arguments. Following this tutorial I got this output: emily@snoopy:~/Desktop$ jar cvf MANIFEST.MF emily.jar ../ReScue/src/cn/edu/nju/moon/redos/.added manifest adding: emily.jar(in = 103586) (out= 97799)(deflated 5%) adding: ReScue/src/cn/edu/nju/moon/redos/./(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./utils/(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./utils/RegexViewer.java(in = 7493) (out= 2127)(deflated 71%) adding: ReScue/src/cn/edu/nju/moon/redos/./utils/StringUtils.java(in = 2115) (out= 771)(deflated 63%) adding: ReScue/src/cn/edu/nju/moon/redos/./utils/RegexFormatter.java(in = 3317) (out= 1051)(deflated 68%) adding: ReScue/src/cn/edu/nju/moon/redos/./utils/ReScuePatternUtils.java(in = 1076) (out= 459)(deflated 57%) adding: ReScue/src/cn/edu/nju/moon/redos/./utils/NodeRelation.java(in = 1332) (out= 526)(deflated 60%) adding: ReScue/src/cn/edu/nju/moon/redos/./RedosAttacker.java(in = 495) (out= 256)(deflated 48%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/GeneticAttackerWithoutIncubating.java(in = 3910) (out= 1332)(deflated 65%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/GeneticAttackerWithoutSeeding.java(in = 4876) (out= 1520)(deflated 68%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/GeneticAttackerWithoutPumping.java(in = 4903) (out= 1544)(deflated 68%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/GeneticAttacker.java(in = 4824) (out= 1505)(deflated 68%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/pp/(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/pp/Pumper.java(in = 3475) (out= 1126)(deflated 67%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/initiators/(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/initiators/StrikeRandomInitiator.java(in = 3825) (out= 1297)(deflated 66%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/initiators/GeneticInitiator.java(in = 3029) (out= 1014)(deflated 66%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/initiators/BFSInitiator.java(in = 3459) (out= 1164)(deflated 66%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/initiators/RandomInitiator.java(in = 2512) (out= 1040)(deflated 58%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/Selector.java(in = 250) (out= 169)(deflated 32%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/crossovers/(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/crossovers/RollCrossover.java(in = 2306) (out= 809)(deflated 64%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/mutators/(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/mutators/MultipleMutator.java(in = 3517) (out= 1166)(deflated 66%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/mutators/InsertMutator.java(in = 2452) (out= 754)(deflated 69%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/mutators/DeleteMutator.java(in = 1353) (out= 538)(deflated 60%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/mutators/ReverseMutator.java(in = 1421) (out= 547)(deflated 61%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/mutators/RepeatMutator.java(in = 1376) (out= 529)(deflated 61%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/mutators/AppendMutator.java(in = 2170) (out= 749)(deflated 65%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/Crossover.java(in = 539) (out= 309)(deflated 42%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/Initiator.java(in = 1082) (out= 528)(deflated 51%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/Mutator.java(in = 757) (out= 358)(deflated 52%) adding: ReScue/src/cn/edu/nju/moon/redos/./attackers/ga/Population.java(in = 7394) (out= 2074)(deflated 71%) adding: ReScue/src/cn/edu/nju/moon/redos/./regex/(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./regex/UnicodeProp.java(in = 6580) (out= 1505)(deflated 77%) adding: ReScue/src/cn/edu/nju/moon/redos/./regex/ASCII.java(in = 8577) (out= 1525)(deflated 82%) adding: ReScue/src/cn/edu/nju/moon/redos/./regex/ReScuePattern.java(in = 202090) (out= 38049)(deflated 81%) adding: ReScue/src/cn/edu/nju/moon/redos/./regex/ReScueCharacter.java(in = 50483) (out= 10751)(deflated 78%) adding: ReScue/src/cn/edu/nju/moon/redos/./regex/ReScueMatcher.java(in = 47660) (out= 9324)(deflated 80%) adding: ReScue/src/cn/edu/nju/moon/redos/./Trace.java(in = 4093) (out= 1406)(deflated 65%) adding: ReScue/src/cn/edu/nju/moon/redos/./tester/(in = 0) (out= 0)(stored 0%) adding: ReScue/src/cn/edu/nju/moon/redos/./tester/RedosTester.java(in = 7661) (out= 2195)(deflated 71%) adding: ReScue/src/cn/edu/nju/moon/redos/./tester/RexploiterBest.java(in = 159) (out= 126)(deflated 20%) adding: ReScue/src/cn/edu/nju/moon/redos/./tester/TempTester.java(in = 23666) (out= 4631)(deflated 80%) adding: ReScue/src/cn/edu/nju/moon/redos/./tester/SlowFuzzBest.java(in = 157) (out= 130)(deflated 17%) adding: ReScue/src/cn/edu/nju/moon/redos/./tester/Validator.java(in = 147) (out= 121)(deflated 17%) emily@snoopy:~/Desktop$ ls 2bdenny-ReScue-ecf0e98 emily.jar emilyJar.jar g\ MANIFEST.MF ReScue WinSCP Practice emily@snoopy:~/Desktop$ java -jar emily.jar no main manifest attribute, in emily.jar

In my latest attempt, I used Eclipse to try and build it. I was unsuccessful and got the no main manifest attribute message again. Perhaps you could provide instructions on how you went about building the jar?

Thank you.

2bdenny commented 6 years ago

The main class for ReScue is in cn.edu.nju.moon.redos.tester.RedosTester.java, other classes in this directory is used for testing and evaluation. If you want to build the jar file by yourself at the time, just create a java project in Eclipse on ReScue/ and use File-Export-Runnable JAR File-Launch configuration: RedosTester to generate it. (And do not forget to import the dependencies in Java Build Path)

I will add a script to build the ReScue.jar automatically soon, thanks again for your reporting.

emily-desverreaux commented 6 years ago

This worked! Thank you for your help.

davisjam commented 6 years ago

Fixed by #3, so I guess this can be closed?