Fuzzer log parser for Recon Fuzz
npm install @recon-fuzz/log-parserA TypeScript utility for parsing Medusa, Echidna, and Halmos fuzzing / symbolic execution logs.
Used in:
- Recon VSCode Extension
- https://getrecon.xyz/tools/medusa
- https://getrecon.xyz/tools/echidna
- https://getrecon.xyz/tools/halmos
https://www.npmjs.com/package/@recon-fuzz/log-parser
``bash`
yarn add @recon-fuzz/log-parser
`typescript
import { processLogs, Fuzzer } from '@recon-fuzz/log-parser';
// Process Medusa logs
const medusaResults = processLogs(medusaLogContent, Fuzzer.MEDUSA);
// Process Echidna logs
const echidnaResults = processLogs(echidnaLogContent, Fuzzer.ECHIDNA);
// Process Halmos logs
const halmosResults = processLogs(halmosLogContent, Fuzzer.HALMOS);
`
Processes fuzzing logs and returns structured results.
#### Parameters
- logs: string - The raw log content as a stringtool: Fuzzer
- - The tool used (Fuzzer.MEDUSA | Fuzzer.ECHIDNA | Fuzzer.HALMOS)
#### Returns: FuzzingResults`typescript`
interface FuzzingResults {
duration: string;
coverage: number;
failed: number;
passed: number;
results: any[];
traces: any[];
brokenProperties: any[];
numberOfTests: number;
}
Medusa, Echidna and Halmos logs can be converted into Foundry test cases using the provided utility functions.
`typescript
// Echidna -> Foundry test functions
import { echidnaLogsToFunctions } from '@recon-fuzz/log-parser';
const echidnaFoundryTests = echidnaLogsToFunctions(
echidnaLogs,
"test_identifier",
"brokenProperty", // the property name that failed
{ roll: true, time: true, prank: true } // vm helpers configuration
);
// Medusa -> Foundry test functions
import { medusaLogsToFunctions } from '@recon-fuzz/log-parser';
const medusaFoundryTests = medusaLogsToFunctions(
medusaLogs,
"test_identifier",
{ roll: true, time: true, prank: true }
);
`
Halmos produces counterexamples consisting of parameter assignments and a symbolic execution call sequence. These can be transformed into Foundry tests.
`typescript
import { halmosLogsToFunctions } from '@recon-fuzz/log-parser';
// Convert all broken properties (if any) to test functions
const halmosFoundryTests = halmosLogsToFunctions(halmosLogs, "test_identifier");
`
The conversion handles:
- VM state manipulation (block numbers, timestamps)
- Actor simulation (pranks for different senders)
- Function call sequences / symbolic traces
- Parameter reconstruction for Halmos counterexamples
- Special data types (addresses, bytes)
Generated tests include the exact sequence of calls that triggered the property violation, making it easy to reproduce and debug issues found during fuzzing or symbolic exploration.
- Node.js (>= 14.x)
- yarn or npm
1. Clone the repository
2. Install dependencies:
`bash`
yarn install
- yarn build - Build the packageyarn test
- - Run testsyarn lint` - Run linting
-
https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt