• Stars
    star
    25,689
  • Rank 753 (Top 0.02 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated 7 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis

CyberChef

npm Gitter

The Cyber Swiss Army Knife

CyberChef is a simple, intuitive web app for carrying out all manner of "cyber" operations within a web browser. These operations include simple encoding like XOR and Base64, more complex encryption like AES, DES and Blowfish, creating binary and hexdumps, compression and decompression of data, calculating hashes and checksums, IPv6 and X.509 parsing, changing character encodings, and much more.

The tool is designed to enable both technical and non-technical analysts to manipulate data in complex ways without having to deal with complex tools or algorithms. It was conceived, designed, built and incrementally improved by an analyst in their 10% innovation time over several years.

Live demo

CyberChef is still under active development. As a result, it shouldn't be considered a finished product. There is still testing and bug fixing to do, new features to be added and additional documentation to write. Please contribute!

Cryptographic operations in CyberChef should not be relied upon to provide security in any situation. No guarantee is offered for their correctness.

A live demo can be found here - have fun!

How it works

There are four main areas in CyberChef:

  1. The input box in the top right, where you can paste, type or drag the text or file you want to operate on.
  2. The output box in the bottom right, where the outcome of your processing will be displayed.
  3. The operations list on the far left, where you can find all the operations that CyberChef is capable of in categorised lists, or by searching.
  4. The recipe area in the middle, where you can drag the operations that you want to use and specify arguments and options.

You can use as many operations as you like in simple or complex ways. Some examples are as follows:

Features

  • Drag and drop
    • Operations can be dragged in and out of the recipe list, or reorganised.
    • Files up to 2GB can be dragged over the input box to load them directly into the browser.
  • Auto Bake
    • Whenever you modify the input or the recipe, CyberChef will automatically "bake" for you and produce the output immediately.
    • This can be turned off and operated manually if it is affecting performance (if the input is very large, for instance).
  • Automated encoding detection
    • CyberChef uses a number of techniques to attempt to automatically detect which encodings your data is under. If it finds a suitable operation that make sense of your data, it displays the 'magic' icon in the Output field which you can click to decode your data.
  • Breakpoints
    • You can set breakpoints on any operation in your recipe to pause execution before running it.
    • You can also step through the recipe one operation at a time to see what the data looks like at each stage.
  • Save and load recipes
    • If you come up with an awesome recipe that you know you’ll want to use again, just click "Save recipe" and add it to your local storage. It'll be waiting for you next time you visit CyberChef.
    • You can also copy the URL, which includes your recipe and input, to easily share it with others.
  • Search
    • If you know the name of the operation you want or a word associated with it, start typing it into the search field and any matching operations will immediately be shown.
  • Highlighting
  • Save to file and load from file
    • You can save the output to a file at any time or load a file by dragging and dropping it into the input field. Files up to around 2GB are supported (depending on your browser), however, some operations may take a very long time to run over this much data.
  • CyberChef is entirely client-side
    • It should be noted that none of your recipe configuration or input (either text or files) is ever sent to the CyberChef web server - all processing is carried out within your browser, on your own computer.
    • Due to this feature, CyberChef can be downloaded and run locally. You can use the link in the top left corner of the app to download a full copy of CyberChef and drop it into a virtual machine, share it with other people, or host it in a closed network.

Deep linking

By manipulating CyberChef's URL hash, you can change the initial settings with which the page opens. The format is https://gchq.github.io/CyberChef/#recipe=Operation()&input=...

Supported arguments are recipe, input (encoded in Base64), and theme.

Browser support

CyberChef is built to support

  • Google Chrome 50+
  • Mozilla Firefox 38+

Node.js support

CyberChef is built to fully support Node.js v16. For more information, see the Node API page in the project wiki pages

Contributing

Contributing a new operation to CyberChef is super easy! The quickstart script will walk you through the process. If you can write basic JavaScript, you can write a CyberChef operation.

An installation walkthrough, how-to guides for adding new operations and themes, descriptions of the repository structure, available data types and coding conventions can all be found in the project wiki pages.

  • Push your changes to your fork.
  • Submit a pull request. If you are doing this for the first time, you will be prompted to sign the GCHQ Contributor Licence Agreement via the CLA assistant on the pull request. This will also ask whether you are happy for GCHQ to contact you about a token of thanks for your contribution, or about job opportunities at GCHQ.

Licencing

CyberChef is released under the Apache 2.0 Licence and is covered by Crown Copyright.

More Repositories

1

Gaffer

A large-scale entity and relation database supporting aggregation of properties
Java
1,734
star
2

BoilingFrogs

GCHQ's internal Boiling Frogs research paper on software development and organisational change in the face of disruption #boilingfrogs
594
star
3

stroom

Stroom is a highly scalable data storage, processing and analysis platform.
Java
424
star
4

CyberChef-server

A server providing RESTful access to CyberChef
JavaScript
112
star
5

Palisade

A Tool for Complex and Scalable Data Access Policy Enforcement
Batchfile
94
star
6

Bailo

Managing the lifecycle of machine learning to support scalability, impact, collaboration, compliance and sharing.
HTML
64
star
7

annchor

Fast k-NN graph construction for slow metrics
Python
51
star
8

sleeper

A cloud-native, serverless, scalable, cheap key-value store
Java
50
star
9

gaffer-tools

gaffer-tools is deprecated. Use https://github.com/gchq/gafferpy instead
Python
47
star
10

stroom-docs

Documentation for Stroom and associated projects
Shell
30
star
11

gaffer-docker

Gaffer Docker images and associated Helm charts for deploying on Kubernetes
Shell
29
star
12

event-logging-schema

Event Logging is an XML Schema for describing the auditable events generated by computer systems, hardware devices and access control systems
Shell
23
star
13

nix-bootstrap

Easily generate reproducible infrastructure
Haskell
21
star
14

MagmaCore

Magma Core is a collection of Java Classes and utilities to enable HQDM objects and patterns to be created and consumed as RDF Linked Data.
Java
21
star
15

synthetic-data-generator

Code for generating synthetic data for testing
Java
20
star
16

koryphe

A flexible library for writing functional operations in Java
Java
20
star
17

event-logging

A Java JAXB library for generating events conforming to the Event Logging XML Schema
Java
14
star
18

stroom-visualisations-dev

A set of D3 data visualisations for use in Stroom dashboards or other applications
JavaScript
12
star
19

iris-worm

IRIS Worm is a real-time data graphing component.
JavaScript
12
star
20

HQDM

Java implementation of the High-Quality Data Model framework.
Java
11
star
21

CyberChef-web

The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis
11
star
22

coreax

A library for coreset algorithms, written in Jax for fast execution and GPU support.
Python
11
star
23

ConcourseTools

A Python package for easily implementing Concourse resource types.
Python
9
star
24

stroom-content

Content for Stroom such as XML Schemas, translations, pipelines and dashboards
XSLT
8
star
25

gaffer-doc

Documentation for Gaffer
7
star
26

stroom-proxy

Acts as a proxy for forwarding and aggregating data en route to Stroom
Java
6
star
27

gaffer-experimental

Java
6
star
28

iris-timeline-viewer

An IRIS component for navigating and interacting with time based data.
JavaScript
5
star
29

Kai

Kai is an experimental Graph-as-a-Service framework built with the Amazon CDK
TypeScript
5
star
30

iris-schedule-viewer

An IRIS component for displaying gantt-style categorised data over time.
JavaScript
5
star
31

stroom-stats

Java
4
star
32

stroom-js

JavaScript
4
star
33

stroom-expression

Java
4
star
34

stroom-agent

A simple java program that can be used for pulling data (such as log files) from remote hosts and forwarding it to Stroom
Java
4
star
35

stroom-clients

A collection of client libraries to help with sending data to Stroom
Shell
4
star
36

Palisade-services

Contains the service implementations for a Palisade deployment
Java
3
star
37

Palisade-clients

Contains the code for the client libraries for Palisade
Java
3
star
38

stroom-ansible

A home for all stroom related ansible playbooks, roles, etc.
Python
3
star
39

stroom-auth

Java
3
star
40

hbase-common-shaded

A shaded version of org.apache.hbase:hbase-common: shades Jersey and excludes logging.
3
star
41

stroom-timeline

Disorder in, order out
Java
3
star
42

stroom-ui

The new (for StroomV7) React based user interface for Stroom
TypeScript
3
star
43

Palisade-examples

Contains the various examples for demoing Palisade
Java
3
star
44

Palisade-readers

Contains all the implementations for Palisade data reader technologies.
Java
3
star
45

hadoop-common-shaded

A shaded version of org.apache.hadoop:hadoop-common: shades Jersey and excludes logging.
Shell
3
star
46

Maestro

A framework for configurable operation executors
JavaScript
3
star
47

stroom-resources

Applications and resources on which Stroom services depend
Shell
3
star
48

urlDependencies-plugin

A Gradle plugin for retrieving remote dependencies by URL. E.g. from GitHub releases.
Groovy
2
star
49

Palisade-common

Contains the libraries that are common across Palisade services
Java
2
star
50

stroom-query

Java
2
star
51

stroom-headless

An example of how to run Stroom processing from the command line
Shell
2
star
52

stroom-shaded-dependencies

2
star
53

stroom-timeline-loader

Java
2
star
54

stroom-data-generator

Utility for generating data suitable for testing Stroom
Java
2
star
55

hadoop-hdfs-shaded

A shaded version of org.apache.hadoop:hadoop-hdfs: shades Jersey and excludes logging.
Shell
2
star
56

stroom-annotations

Annotations Service for Stroom Dashboards
Java
1
star
57

stroom-test-data

Generic library for generating test data with configurable fields, formats and outputs
Shell
1
star
58

gafferpy

Python API for Gaffer
Python
1
star