{"id":13539002,"url":"https://github.com/hgascon/pulsar","last_synced_at":"2026-03-13T15:47:59.057Z","repository":{"id":31165257,"uuid":"34725410","full_name":"hgascon/pulsar","owner":"hgascon","description":"Protocol Learning and Stateful Fuzzing","archived":false,"fork":false,"pushed_at":"2022-06-07T15:36:11.000Z","size":3350,"stargazers_count":351,"open_issues_count":1,"forks_count":73,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-04-02T05:44:32.260Z","etag":null,"topics":["fuzzing","networking","protocol-learning","security","simulation","vulnerability-identification"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hgascon.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}},"created_at":"2015-04-28T10:58:20.000Z","updated_at":"2025-03-05T11:55:29.000Z","dependencies_parsed_at":"2022-09-23T11:10:20.108Z","dependency_job_id":null,"html_url":"https://github.com/hgascon/pulsar","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hgascon/pulsar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hgascon%2Fpulsar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hgascon%2Fpulsar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hgascon%2Fpulsar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hgascon%2Fpulsar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hgascon","download_url":"https://codeload.github.com/hgascon/pulsar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hgascon%2Fpulsar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30469449,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T11:00:43.441Z","status":"ssl_error","status_checked_at":"2026-03-13T11:00:23.173Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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","networking","protocol-learning","security","simulation","vulnerability-identification"],"created_at":"2024-08-01T09:01:18.874Z","updated_at":"2026-03-13T15:47:59.032Z","avatar_url":"https://github.com/hgascon.png","language":"Python","funding_links":[],"categories":["Tools","\u003ca id=\"683b645c2162a1fce5f24ac2abfa1973\"\u003e\u003c/a\u003e漏洞\u0026\u0026漏洞管理\u0026\u0026漏洞发现/挖掘\u0026\u0026漏洞开发\u0026\u0026漏洞利用\u0026\u0026Fuzzing"],"sub_categories":["Network Protocol Fuzzers","功能","Network protocol"],"readme":"\n## PULSAR \n\n\n### Protocol Learning, Simulation and Stateful Fuzzer\n\nPulsar is a network fuzzer with automatic protocol learning and simulation capabilites. The tool allows to model a protocol through machine learning techniques, such as clustering, and Markov models. These models can be used to simulate communication between Pulsar and a real client or server thanks to semantically correct messages which, in combination with a series of fuzzing primitives, allow to test the implementation of an unknown protocol for errors in deeper states of its protocol state machine.\n\nFor detailed information about the method implemented by Pulsar, you can read the following publications:\n\n**[Pulsar: Stateful Black-Box Fuzzing of Proprietary Network Protocols](http://www.hugogascon.com/publications/2015-securecomm.pdf)**  \nHugo Gascon, Christian Wressnegger, Fabian Yamaguchi, Daniel Arp and Konrad Rieck  \n*Proc. of 11th EAI International Conference on Security and Privacy in Communication Networks (SECURECOMM) October 2015*\n\n**[Learning Stateful Models for Network Honeypots](http://www.hugogascon.com/publications/2012a-aisec.pdf)**  \nTammo Krueger, Hugo Gascon, Nicole Krämer and Konrad Rieck  \n*ACM Workshop on Security and Artificial Intelligence (AISEC) October 2012*\n\n                     _\n         _ __  _   _| |___  __ _ _ __\n        | '_ \\| | | | / __|/ _` | '__|\n        | |_) | |_| | \\__ \\ (_| | |\n        | .__/ \\__,_|_|___/\\__,_|_|  v0.1-dev\n        |_|\n\n    usage: pulsar.py [-h] [-c CONF] [-l] [-p PCAP] [-b BINARIES] [-a] [-x]\n                     [-o OUT] [-d DIMENSION] [-s] [-z] [-m MODEL]\n\n    Protocol Learning and Stateful Fuzzing\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -c CONF, --conf CONF  Change default directory for configuration files. If\n                            no directory is given, the files from 'pulsar/conf'\n                            will be read.\n\n    MODEL LEARNING:\n      -l, --learner         Learn a model from a set of network traces.\n      -p PCAP, --pcap PCAP  tcpdump output file (pcap) or list of files separated\n                            by commas to use as input data for a new model.\n      -b BINARIES, --binaries BINARIES\n                            Name of binaries to process from the cuckoo storage\n                            dir separated with commas.\n      -a, --all-binaries    Generate models for all binaries from the cuckoo\n                            storage dir (cuckoo/storage/binaries).\n      -x, --process         Process derrick files through the functions defined in\n                            utils/preprocessing/derrick.py.\n      -o OUT, --out OUT     Change output directory for generated models. If no\n                            directory is given, the model will be written to the\n                            'models' directory.\n      -d DIMENSION, --dimension DIMENSION\n                            Number of components to be used for NMF clustering.\n\n    SIMULATION \u0026 FUZZING:\n      -s, --simulate        Simulate communication based on a given model.\n      -z, --fuzzer          Start a fuzzing session based on a given model.\n      -m MODEL, --model MODEL\n                            Path of the dir containing the model files to be\n                            loaded for simulation or fuzzing.\n\n\n### Configuration\n\nThe directory *pulsar/conf* contains a series of configuration files that define the parameters required for certain operations in each one of the Pulsar methods for automatic learning, simulation and fuzzing.\n\n### Examples\n\nGenerate the model of a communication channel from individual PCAP files or the recorded traces of one or more binaries run by cuckoo sandbox:\n    \n    $\u003e pulsar.py -l -p file.pcap (1 pcap file)\n    $\u003e pulsar.py -b 016169EBEBF1CEC2AAD6C7F0D0EE9026 (1 or more binaries from cuckoo storage)\n    $\u003e pulsar.py -a (all binaries from cuckoo storage)\n\nSimulate a communication channel based on a learnt model:\n\n    $\u003e pulsar.py -s -m model_file\n\nInitiate a fuzzing session against a target given the model of its communication channel:\n\n    $\u003e pulsar.py -z -m model_file\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhgascon%2Fpulsar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhgascon%2Fpulsar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhgascon%2Fpulsar/lists"}