{"id":13546084,"url":"https://github.com/RUB-SysSec/nautilus","last_synced_at":"2025-04-02T17:32:37.128Z","repository":{"id":85012991,"uuid":"177758476","full_name":"RUB-SysSec/nautilus","owner":"RUB-SysSec","description":"a grammar based feedback fuzzer","archived":false,"fork":false,"pushed_at":"2023-07-01T01:00:31.000Z","size":711,"stargazers_count":164,"open_issues_count":4,"forks_count":19,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-12-24T09:02:17.720Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RUB-SysSec.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-03-26T09:43:52.000Z","updated_at":"2024-12-09T22:51:28.000Z","dependencies_parsed_at":"2024-01-16T17:39:46.441Z","dependency_job_id":"c8004638-24a3-48b2-bc8e-cfa7efa383e0","html_url":"https://github.com/RUB-SysSec/nautilus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RUB-SysSec%2Fnautilus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RUB-SysSec%2Fnautilus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RUB-SysSec%2Fnautilus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RUB-SysSec%2Fnautilus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RUB-SysSec","download_url":"https://codeload.github.com/RUB-SysSec/nautilus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246860264,"owners_count":20845634,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T12:00:31.277Z","updated_at":"2025-04-02T17:32:36.299Z","avatar_url":"https://github.com/RUB-SysSec.png","language":"Rust","funding_links":[],"categories":["Vulnerability Assessment","Programming/Comp Sci/SE Things"],"sub_categories":["Fuzzing"],"readme":"# Nautilus\n\n*NOTE: THIS IS AN OUTDATE REPOSITORY, THE CURRENT RELEASE IS AVAILABLE [HERE](https://github.com/nautilus-fuzz/nautilus). THIS REPO ONLY SERVES AS A REFERENCE FOR THE PAPER*\n\n\u003cp\u003e\n\u003ca href=\"https://www.syssec.ruhr-uni-bochum.de/media/emma/veroeffentlichungen/2018/12/17/NDSS19-Nautilus.pdf\"\u003e \u003cimg align=\"right\" width=\"200\"  src=\"https://github.com/RUB-SysSec/nautilus/raw/master/paper.png\"\u003e \u003c/a\u003e\n\nNautilus is a feedback fuzzer inspired by AFL. However it allows to specify a grammar. Using this grammar, the fuzzer generates and internally uses the abstract syntax tree of the input. This also allows for very complex mutations. Then it converts the tree to the actual input.\n\n\n\u003cimg width=\"400\" align=\"center\" src=\"https://github.com/RUB-SysSec/nautilus/raw/master/tree.png\"\u003e\n\nKnowing the exact tree shape greatly improves the performance for highly structured input formats, such as many text formats and programming languages. \n\n\u003c/p\u003e\n \n\n## Setup\n```bash\n# set workdir path\nexport WORKDIR=\"$(pwd)/nautilus\"\n\n# checkout the git:\ngit clone 'https://github.com/RUB-SysSec/nautilus.git'\n\n# clang instrument wrapper\ncd \"$WORKDIR/forksrv/instrument/rt\"\n    sudo apt-get install g++-multilib # only if needed (error 'sys/cdefs.h' file not found)\n    make #might need llvm-3.8-dev\ncd \"$WORKDIR/forksrv/instrument/clang_wrapper\"\n    make\n\n# target\ngit clone https://github.com/mruby/mruby.git \"$WORKDIR/forksrv/instrument/mruby\"\ncd \"$WORKDIR/forksrv/instrument/mruby\"\n    sudo apt install ruby bison # if needed\n    CC=\"$WORKDIR/forksrv/instrument/clang_wrapper/redqueen-clang\" LD=\"$WORKDIR/forksrv/instrument/clang_wrapper/redqueen-clang\" make\ncd \"$WORKDIR\"\n\n#update paths in config.ron\nmkdir -p $WORKDIR/outputs/queue # if your workdir in the config is $WORKDIR, otherwise the fuzzer will crash because the queue is not found\n\n#fix the paths in config.ron (line 14 to 16)\n\ncargo run -p gramophone --release --bin fuzzer \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRUB-SysSec%2Fnautilus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRUB-SysSec%2Fnautilus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRUB-SysSec%2Fnautilus/lists"}