ghidra/Ghidra/Features/Base/ghidra_scripts/ImportAllProgramsFromADirec...

89 lines
2.2 KiB
Java

/* ###
* IP: GHIDRA
* REVIEWED: YES
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//Imports all programs from a selected directory.
//@category Import
import ghidra.app.script.GhidraScript;
import ghidra.app.util.importer.AutoImporter;
import ghidra.app.util.importer.MessageLog;
import ghidra.framework.model.DomainFolder;
import ghidra.program.model.lang.LanguageCompilerSpecPair;
import ghidra.program.model.listing.Program;
import java.io.File;
public class ImportAllProgramsFromADirectoryScript extends GhidraScript {
@Override
public void run() throws Exception {
File directory = askDirectory("Please specify the input directory:", "DIRECTORY");
LanguageCompilerSpecPair language = askLanguage("Please select a language:", "LANGUAGE");
DomainFolder folder = askProjectFolder("Please select a project folder:");
MessageLog log = new MessageLog();
File[] files = directory.listFiles();
for (File file : files) {
Thread.sleep(1000);
if (monitor.isCancelled()) {
break;
}
if (file.getName().startsWith(".")) {//skip private files... like ".svn"
continue;
}
Program program = null;
try {
program = importFile(file);
}
catch (Exception e) {
e.printStackTrace();
}
if (program == null) {
try {
program =
AutoImporter.importByLookingForLcs(file, folder, language.getLanguage(),
language.getCompilerSpec(), this, log, monitor);
}
catch (Exception e) {
e.printStackTrace();
}
}
if (program == null) {
println("Unable to import program from file " + file.getName());
}
else {
//openProgram( program );
program.release(this);
}
println(log.toString());
log.clear();
}
}
}