Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions vmdk/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM ubuntu:22.04

RUN apt-get update

RUN mkdir -p /testdata

# Set working directory
WORKDIR /testdata

# Copy valid .vmdk file into the container
COPY valid-ext-exfat-fat32-ntfs.vmdk /testdata/valid-ext-exfat-fat32-ntfs.vmdk

CMD ["/bin/bash"]
26 changes: 26 additions & 0 deletions vmdk/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# OSV-Scalibr: VMDK Extractor

This directory contains a test Dockerfile for validating OSV-Scalibr's VMDK Extractor plugin. A VMDK (Virtual Machine Disk) file is a disk image format commonly used by virtual machines to emulate a physical hard drive.

## Setup

### Build the Docker Image

```bash
cd security-testbeds/vmdk
docker build -t vmdk-extractor-testbed .
```

### Run the Container

```bash
docker run -it --rm vmdk-extractor-testbed /bin/bash
```

### Running OSV-Scalibr

Build or copy the `scalibr` binary to the current directory, and inside the container, run `scalibr` with the vmdk extractor:

```bash
./scalibr --extractors=embeddedfs/vmdk --result=output.textproto valid-ext-exfat-fat32-ntfs.vmdk
```
43 changes: 43 additions & 0 deletions vmdk/genvmdk.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env bash

dd if=/dev/zero of=valid.img bs=1M count=256
parted -s --align optimal valid.img --script mklabel gpt
parted -s --align optimal valid.img --script mkpart primary ext4 0% 25%
parted -s --align optimal valid.img --script mkpart primary ntfs 25% 50%
parted -s --align optimal valid.img --script set 2 msftdata on
parted -s --align optimal valid.img --script mkpart primary ntfs 50% 75%
parted -s --align optimal valid.img --script set 3 msftdata on
parted -s --align optimal valid.img --script mkpart primary ntfs 75% 100%
parted -s --align optimal valid.img --script set 3 msftdata on
sudo losetup -fP valid.img
LOOPDEV=$(losetup -j valid.img | cut -d: -f1)
PARTITION1="${LOOPDEV}p1"
PARTITION2="${LOOPDEV}p2"
PARTITION3="${LOOPDEV}p3"
PARTITION4="${LOOPDEV}p4"
sudo mkfs.ext4 $PARTITION1
sudo mkfs.exfat $PARTITION2
sudo mkfs.vfat -F 32 $PARTITION3
sudo mkfs.ntfs $PARTITION4
sudo rm -rf /mnt/valid*
sudo mkdir /mnt/valid1
sudo mkdir /mnt/valid2
sudo mkdir /mnt/valid3
sudo mkdir /mnt/valid4
sudo mount ${PARTITION1} /mnt/valid1
sudo mount ${PARTITION2} /mnt/valid2
sudo mount ${PARTITION3} /mnt/valid3
sudo mount ${PARTITION4} /mnt/valid4
openssl genrsa -out private-key.pem 4096
sudo cp private-key.pem /mnt/valid1/private-key1.pem
sudo cp private-key.pem /mnt/valid2/private-key2.pem
sudo cp private-key.pem /mnt/valid3/private-key3.pem
sudo cp private-key.pem /mnt/valid4/private-key4.pem
sudo umount /mnt/valid1
sudo umount /mnt/valid2
sudo umount /mnt/valid3
sudo umount /mnt/valid4
sudo losetup -d ${LOOPDEV}
sudo rm -rf /mnt/valid*
qemu-img convert valid.img -O vmdk valid-ext-exfat-fat32-ntfs.vmdk
rm private-key.pem
Binary file added vmdk/valid-ext-exfat-fat32-ntfs.vmdk
Binary file not shown.