---
name: "cobfusc"
section: "1"
platform: "linux"
package: "cutils"
version: "1.6-7"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cobfusc"
---

# cobfusc(1)

make a C source file unreadable but compilable

## NAME

**cobfusc** – make a C source file unreadable but compilable

## SYNOPSIS

**cobfusc** \[**-AabdemntxV**\] \[**-c** *case*\] \[**-f** *suffix*\] \[**-g** *file*\] \[**-i** *idobf*\]\
 \[**-o** *file*\] \[**-p** *prefix*\] \[**-r** *file*\] \[**-s** *seed*\] \[**-u** *file*\] \[**-w** *cols*\]\
 \[**-z** *file*\] \[*file ...*\]

## DESCRIPTION

This document contains only a brief description of **cobfusc**. For a more complete documentation, please read the Info file or the Texinfo manual.

The **cobfusc** utility converts the input file, written in the C language, into a human unreadable one, but compilable. The main work is converting every identifier into a meaningless one, removing any comment and compacting all the white-spaces when they are not required.

The options are as follows:

- **-A**

  Enable a heavy obfuscation for the source file. This is equivalent to the **-ademt** **-i** *numeric* options.  The digraphize option is not enabled by default since the Amendement 1 (1994) changes to ANSI X3.159-1989 (“ANSI C89”) are supported only by few C compilers.

- **-a**

  Garble every string with octal escapes.

- **-b**

  Enable the digraphize mode.

- **-c** *no \\\*(Ba lower \\\*(Ba upper \\\*(Ba screw \\\*(Ba random*

  Set the identifier case obfuscation mode.

- **-d**

  Compact the macros removing backslashes and white-spaces when they are not required.

- **-e**

  Compact the white-spaces when they are not required.

- **-f** *suffix*

  Put the output of each processed file in a separate file with *suffix* appended to file name instead of standard output. This is useful when processing a package with a lot of source files.

- **-g** *file*

  Add first the identifiers contained in *file* to the obfuscation table. Useful when those identifiers are shared between two or more source files.

- **-i** *no \\\*(Ba numeric \\\*(Ba word \\\*(Ba random*

  Set the identifier obfuscation mode.

- **-m**

  Strip the comments.

- **-n**

  Garble integers with expressions.

- **-o** *file*

  Set the output destination to  *file*.

- **-p** *prefix*

  Specify the prefix to use when generating the identifiers.

- **-r** *file*

  Tell **cobfusc** that the identifiers contained in *file* must not be obfuscated.

- **-s** *seed*

  Specify the seed for generating the random numbers.

- **-t**

  Enable the trigraphize mode.

- **-u**

  Dump the symbol table to *file*.

- **-V**

  Print version information on standard output then exit.

- **-w**

  Set the width limit of the output.

- **-x**

  Exclusive mode; obfuscate only the identifiers specified by the **-g** and **-z** parameters.

- **-z** *file*

  Add the identifiers pairs contained in *file* to the obfuscation table.

## SEE ALSO

[cunloop(1)](/cunloop/1.md), [indent(1)](/indent/1.md)

## AUTHORS

Sandro Sigala \<sandro@sigala.it\>
