Skip to main content

Code Hierarchy Exploration Net (chen)

Project description

chen

Code Hierarchy Exploration Net (chen) is an advanced exploration toolkit for your application source code and its dependency hierarchy.

chennai demo

Requirements

  • Java 17 - 20
  • Python > 3.8.1
  • Node.js > 16 (To run atom)
  • Minimum 16GB RAM

Additional requirements

  • Rust (For rocksdb-py compilation)

Installation

# Install atom
sudo npm install -g @appthreat/atom

# Install chen from pypi
pip install appthreat-chen

To download the chen distribution including the science pack.

chen --download

To generate custom graphs and models with atom for data science, download the scientific pack which installs support for PyTorch ecosystem.

chen --download --with-science

Once the download finishes, the command will display the download location along with the environment variables that need to be set to invoke chennai console. Example output below:

[21:53:36] INFO     To run chennai console, add the following environment variables to your .zshrc or .bashrc:
export JAVA_OPTS="-Xmx16G"
export SCALAPY_PYTHON_LIBRARY=python3.10
export CHEN_HOME=/home/user/.local/share/chen
export PATH=$PATH:/home/user/.local/share/chen/platform:/home/user/.local/share/chen/platform/bin:

Running the console

Type chennai to launch the console.

chennai
 _                          _   _   _   _  __
/  |_   _  ._  ._   _. o   |_  / \ / \ / \  / |_|_
\_ | | (/_ | | | | (_| |   |_) \_/ \_/ \_/ /    |


Version: 0.0.7
Type `help` to begin


chennai>

Sample commmands

Help command

chennai> help
val res0: Helper = Welcome to the interactive help system. Below you find a table of all available
top-level commands. To get more detailed help on a specific command, just type

`help.<command>`.

Try `help.importCode` to begin with.
_______________________________________________________________________________________________________________________________________________________________
command          | description                                                               | example                                                       |
==============================================================================================================================================================|
annotations      | List annotations                                                          | annotations                                                   |
close            | Close project by name                                                     | close(projectName)                                            |
declarations     | List declarations                                                         | declarations                                                  |
distance         | Show graph edit distance from the source method to the comparison methods | distance(source method iterator, comparison method iterators) |
exit             | Exit the REPL                                                             |                                                               |
files            | List files                                                                | files                                                         |
importAtom       | Create new project from existing atom                                     | importAtom("app.atom")                                        |
importCode       | Create new project from code                                              | importCode("example.jar")                                     |
imports          | List imports                                                              | imports                                                       |
methods          | List methods                                                              | methods('Methods', includeCalls=true, tree=true)              |
sensitive        | List sensitive literals                                                   | sensitive                                                     |
showSimilar      | Show methods similar to the given method                                  | showSimilar(method full name)                                 |
summary          | Display summary information                                               | summary                                                       |

Refer to the documentation site to learn more about the commands.

Languages supported

  • C/C++ (Requires Java 17 or above)
  • H (C/C++ Header files alone)
  • Java (Requires compilation)
  • Jar
  • Android APK (Requires Android SDK. Set the environment variable ANDROID_HOME)
  • JavaScript
  • TypeScript
  • Python

Origin of chen

chen is a fork of the popular joern project. We deviate from the joern project in the following ways:

  • Make code analysis accessible by adding first-class integration with Python and frameworks such as NetworkX and PyTorch
  • Enable broader hierarchical analysis (Application + Dependency + Container + OS layer)
  • By creating a more welcoming community more appropriate for beginner users with great support

License

Apache-2.0

Enterprise support

Enterprise support including custom language development and integration services is available via AppThreat Ltd. Free community support is also available via Discord.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

appthreat_chen-0.0.13.tar.gz (35.0 kB view hashes)

Uploaded Source

Built Distribution

appthreat_chen-0.0.13-py3-none-any.whl (38.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page