Skip to content

Commit 25605bb

Browse files
committed
Improve README again
1 parent 1836a3d commit 25605bb

1 file changed

Lines changed: 72 additions & 34 deletions

File tree

README.md

Lines changed: 72 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,18 @@
22

33
![ci](https://github.com/nowsecure/fsmon/actions/workflows/ci.yml/badge.svg?branch=master)
44

5-
Filesystem Monitor utility for Linux, Android, iOS and macOS.
5+
Low level filesystem monitor utility for Linux, Android, iOS and macOS.
66

7-
Brought to you by *Sergi Àlvarez* at **Nowsecure** and distributed under the **MIT** license.
7+
- **Author**: pancake @ nowsecure
8+
- **License**: MIT
9+
10+
Designed for
11+
12+
- System administrators and incident responders
13+
- Security researchers and forensic analysts
14+
- Developers debugging I/O-heavy applications
15+
- Reverse engineers interested in observing filesystem access behavior
816

9-
**Contact**: pancake@nowsecure.com
1017

1118
## Installation
1219

@@ -54,55 +61,86 @@ Examples:
5461
$
5562
```
5663

57-
## Backends
64+
## 🔍 Key Features of fsmon
5865

59-
fsmon filesystem information is taken from different backends depending on the operating system and apis available.
66+
`fsmon` is a low-level, cross-platform filesystem monitor designed for developers, forensic analysts, and reverse engineers. It works by hooking into the OS kernel's tracing facilities or file notification APIs.
6067

61-
This is the list of backends that can be listed with `fsmon -L`:
68+
### ✅ Supported Platforms
6269

63-
* inotify (linux / android)
64-
* fanotify (linux > 2.6.36 / android with custom kernel)
65-
* devfsev (osx /dev/fsevents - requires root)
66-
* kqueue (xnu - requires root)
67-
* kdebug (bsd?, xnu - requires root)
68-
* fsevapi (osx filesystem monitor api)
70+
- **Android**: via `inotify`, `fanotify` is not always supported
71+
- **Linux**: via `inotify` and `fanotify`
72+
- **macOS**: using `kdebug`, `FSEvents`, `kqueue`, and `/dev/fsevents`
73+
- **iOS** (limited support through FSEvent APIs)
6974

70-
## Compilation
75+
### Core Capabilities
7176

72-
fsmon is a portable tool. It works on iOS, OSX, Linux and Android (x86, arm, arm64, mips)
77+
- **Real-Time File Monitoring**
78+
Detects and reports file operations such as creation, deletion, modification, attribute changes, and renames in real-time.
7379

74-
*Linux*
80+
- **Multi-Backend Support**
7581

76-
```bash
77-
$ make
78-
```
82+
Automatically selects the best available monitoring backend or allows users to choose:
83+
- `inotify`, `fanotify` (Linux)
84+
- `fsevapi`, `kdebug`, `devfsev`, `kqueue` (iOS / macOS)
7985

80-
*OSX + iOS fatbin*
86+
The list of backends can be listed with `fsmon -L`.
8187

82-
```bash
83-
$ make
84-
```
88+
- **Process-Level Insights**
89+
Associates file events with process names, PIDs, and UIDs, where possible.
8590

86-
*iOS*
91+
- **Recursive Monitoring**
92+
Monitors entire directory trees recursively, dynamically adding new directories.
8793

88-
```bash
89-
$ make ios
90-
```
94+
- **JSON Output Format**
95+
Supports structured logging in JSON or JSON stream mode for easy integration with other tools (e.g. `jq`, `ELK`, etc).
9196

92-
*Android*
97+
- **Filename Filtering & Formatting**
98+
Optionally strips full paths, shows only filenames, and colorizes output based on event type.
9399

94-
```bash
95-
$ make android NDK_ARCH=<ARCH> ANDROID_API=<API>
96-
```
100+
- **Selective Monitoring**
101+
Filter events by:
102+
- Specific process name (`-P`)
103+
- Specific PID (`-p`)
104+
- Child processes (`-c`)
105+
- Files under a given path
97106

98-
To get fsmon installed system wide just type:
107+
- **Backup on Event**
108+
Automatically copies affected files to a backup directory when changes are detected (`-b`).
109+
110+
- **Timestamping**
111+
Adds timestamps to each event to facilitate forensic analysis.
112+
113+
- **Minimal Dependencies**
114+
Written in portable C with no runtime dependencies beyond standard libraries.
115+
116+
- **Graceful Shutdown & Signal Handling**
117+
Handles `SIGINT`, `SIGTERM`, and `SIGALRM` to allow clean exits and timed monitoring sessions.
118+
119+
### 🧪 Event Types Tracked
120+
121+
Examples of events that `fsmon` can detect:
122+
123+
- `CREATE_FILE`, `DELETE`, `RENAME`
124+
- `OPEN`, `CLOSE`, `STAT_CHANGED`
125+
- `CHOWN`, `CHMOD`, `XATTR_MODIFIED`
126+
- `CONTENT_MODIFIED`, `EXCHANGE`, `FINDER_INFO_CHANGED`
127+
128+
## Compilation
129+
130+
fsmon is a portable tool. It works on iOS, OSX, Linux and Android (x86, arm, arm64, mips)
99131

100132
```bash
101-
$ make install
133+
$ make
102134
```
103135

104-
Changing installation path...
136+
Crosscompilation to iOS/Android is made easy by just running `make ios` or `make android`:
105137

106138
```bash
107-
$ make install PREFIX=/usr DESTDIR=/
139+
$ make android NDK_ARCH=<ARCH> ANDROID_API=<API>
108140
```
141+
142+
## License
143+
144+
This tool is free software developed by [NowSecure](https://nowsecure.com) and distributed under the MIT license.
145+
146+
You can reach out **Sergi Alvarez** via email [pancake@nowsecure.com](mailto:pancake@nowsecure.com)

0 commit comments

Comments
 (0)