/syscallenum

Enumerate all syscalls on a Linux system

Primary LanguageC++MIT LicenseMIT

Simple x64 Linux binary to enumerate syscalls.

Currently it statically links seccomp, so that this can be run on systems that lack seccomp libraries.

I plan to add more functionality to this tool:

  • support for compiling with shared seccomp (reduces binary size greatly)

Example:

$ ./syscallenum | sort | uniq
000|read|allowed|Success|0
001|write|allowed|Success|0
002|open|allowed|Bad address|14
003|close|allowed|Success|0
004|stat|allowed|Bad address|14
005|fstat|allowed|Bad address|14
006|lstat|allowed|Bad address|14
007|poll|allowed|Success|0
008|lseek|allowed|Illegal seek|29
009|mmap|allowed|Invalid argument|22
[.......]
319|memfd_create|allowed|Function not implemented|38
320|kexec_file_load|allowed|Function not implemented|38
321|bpf|allowed|Function not implemented|38
322|execveat|allowed|Function not implemented|38
323|userfaultfd|allowed|Function not implemented|38
324|membarrier|allowed|Function not implemented|38
325|mlock2|allowed|Function not implemented|38
326|copy_file_range|allowed|Function not implemented|38
327|
328|

Note the currently non-existent syscalls of 327 and 328 return nothing, which indicates they are not valid.

To show only filtered syscalls:

./syscallenum -f

To show only allowed syscalls:

./syscallenum -a

When run without parameters syscallenum will return allowed, filtered, and non-existent syscall results