Skip to main content
IPED supports extensible processing through JavaScript and Python scripts, allowing you to create custom tasks that run during evidence processing. Scripts can analyze items, set attributes, create bookmarks, and control which files are processed.

Supported Languages

IPED supports two scripting languages:
  • JavaScript - Using the built-in Java scripting engine (Nashorn/GraalVM)
  • Python - Using Jep (Java Embedded Python) to run Python code
On Linux, you must install Jep (pip install jep) and include jep.so in your LD_LIBRARY_PATH to use Python scripts.

Installing Scripts

Scripts must be registered in TaskInstaller.xml to be executed during processing:
TaskInstaller.xml
Script files should be placed in:
  • iped-app/resources/scripts/tasks/ (built-in scripts)
  • {case}/scripts/tasks/ (case-specific scripts)

JavaScript Script Structure

Basic Template

Every JavaScript script must implement at least getName() and process() methods:
ExampleScriptTask.js

Real Example: Ignore Files by Path

This script ignores system files and folders to reduce processing time:
IgnoreFilesByPathTask.js

Real Example: Refine Categories

This script adjusts file categories based on properties:
RefineCategoryTask.js

Python Script Structure

Basic Template

Python scripts use a class-based structure. The class name must match the filename without .py:
PythonScriptTask.py

Real Example: NSFW Detection

This script uses Keras and TensorFlow to detect nudity in images:
NSFWNudityDetectTask.py

Item API Reference

Getters

Setters

Creating Bookmarks

You can create bookmarks in the finish() method using the ipedCase and searcher objects:

Shared Objects

Scripts can share data between threads using the caseData object:

Performance Tips

1

Batch Processing

Process multiple items together for ML models:
2

Cache Results

Use hash-based caching to avoid reprocessing:
3

Avoid Full Text Search

Searching text in all items is very slow:

Debugging

Logging

Use the logger object for debugging:

Access Thread Info

Next Steps

Custom Tasks

Create Java-based processing tasks

Web API

Access cases remotely via REST API