{"id":47444131,"url":"https://github.com/bad-antics/Fuzz.jl","last_synced_at":"2026-04-06T13:00:59.332Z","repository":{"id":344667569,"uuid":"1182569639","full_name":"bad-antics/Fuzz.jl","owner":"bad-antics","description":"Security fuzzing toolkit for Julia — mutation, generation, and coverage-guided fuzzing","archived":false,"fork":false,"pushed_at":"2026-03-15T19:57:24.000Z","size":12,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T02:34:21.466Z","etag":null,"topics":["fuzzing","julia","mutation-fuzzing","security","testing"],"latest_commit_sha":null,"homepage":null,"language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bad-antics.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-15T17:37:49.000Z","updated_at":"2026-04-03T19:02:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bad-antics/Fuzz.jl","commit_stats":null,"previous_names":["bad-antics/fuzz.jl"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/bad-antics/Fuzz.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2FFuzz.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2FFuzz.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2FFuzz.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2FFuzz.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bad-antics","download_url":"https://codeload.github.com/bad-antics/Fuzz.jl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2FFuzz.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31473271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["fuzzing","julia","mutation-fuzzing","security","testing"],"created_at":"2026-03-23T06:00:59.902Z","updated_at":"2026-04-06T13:00:59.321Z","avatar_url":"https://github.com/bad-antics.png","language":"Julia","funding_links":[],"categories":["Security Frameworks and Tools"],"sub_categories":["Vulnerability Research"],"readme":"# Fuzz.jl\n\n[![Tests](https://img.shields.io/badge/tests-100%20passed-brightgreen)]()\n[![Julia](https://img.shields.io/badge/julia-1.6%2B-blue)]()\n\n**Security fuzzing toolkit for Julia** — mutation-based, generation-based, and coverage-guided fuzzing for finding bugs and vulnerabilities.\n\n## Features\n\n- **Mutation-based fuzzing** — bit/byte flip, arithmetic, insert, delete, splice, dictionary\n- **Generation-based fuzzing** — integers, strings, binary, structured templates\n- **Coverage-guided** — corpus management with energy scheduling\n- **Crash minimization** — delta debugging to find minimal reproducers\n- **Differential fuzzing** — compare two implementations for divergent behavior\n- **Crash recording** — automatic saving of crash inputs and metadata\n\n## Installation\n\n```julia\nusing Pkg\nPkg.add(\"Fuzz\")\n```\n\n## Quick Start\n\n```julia\nusing Fuzz\n\n# Fuzz a parser to find crashes\ncorpus = fuzz(my_parser, UInt8[]; max_iterations=10000)\nprintln(\"Found $(length(corpus.crashes)) crashes in $(corpus.total_runs) runs\")\n\n# Check results\nfor crash in corpus.crashes\n    println(\"  $(crash.error_type): $(crash.error_msg)\")\nend\n```\n\n## Mutators\n\n| Mutator | Description |\n|---------|-------------|\n| `BitFlipMutator(n)` | Flip `n` random bits |\n| `ByteFlipMutator(n)` | Replace `n` random bytes |\n| `ArithmeticMutator(d)` | Add/subtract up to `d` from a byte |\n| `InsertMutator(n)` | Insert up to `n` random bytes |\n| `DeleteMutator(n)` | Delete up to `n` bytes |\n| `SpliceMutator()` | Splice two inputs together |\n| `DictionaryMutator(tokens)` | Insert/overwrite with dictionary tokens |\n| `CompositeMutator(mutators)` | Weighted combination of mutators |\n\n## Generators\n\n| Generator | Description |\n|-----------|-------------|\n| `IntegerGenerator()` | Random integers (1/2/4/8 byte, boundary values) |\n| `StringGenerator(min, max, charset)` | Random strings (`:ascii`, `:alphanumeric`, `:printable`, `:unicode`, `:binary`) |\n| `BinaryGenerator(min, max)` | Random binary data |\n| `StructuredGenerator(templates)` | Template-based structured input |\n\n## Advanced Usage\n\n```julia\n# Dictionary-guided fuzzing for protocol testing\ntokens = [collect(UInt8, \"GET\"), collect(UInt8, \"POST\"),\n          UInt8[0x0d, 0x0a], collect(UInt8, \"HTTP/1.1\")]\ncorpus = fuzz(http_handler, collect(UInt8, \"GET / HTTP/1.1\\r\\n\");\n              strategy=:dictionary, dictionary=tokens)\n\n# Minimize a crash\nminimized = Fuzz.minimize(buggy_fn, crash_input)\n\n# Differential fuzzing\ndivergences = Fuzz.fuzz_compare(impl_v1, impl_v2, UInt8[])\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbad-antics%2FFuzz.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbad-antics%2FFuzz.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbad-antics%2FFuzz.jl/lists"}