{"id":19552921,"url":"https://github.com/potato-industries/souschef","last_synced_at":"2026-05-03T11:32:22.451Z","repository":{"id":177275652,"uuid":"224945706","full_name":"Potato-Industries/souschef","owner":"Potato-Industries","description":"stdin | CyberChef Recipes (encryption, decryption, encoding, decoding, etc) | stdout","archived":false,"fork":false,"pushed_at":"2019-12-08T23:00:07.000Z","size":87,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-26T07:22:37.367Z","etag":null,"topics":["cyberchef","decoding","decryption","encoding","encryption","hashing","nodejs","recipes","security","shell","stdin","stdout"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Potato-Industries.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-30T01:53:30.000Z","updated_at":"2021-12-09T00:21:55.000Z","dependencies_parsed_at":"2023-07-21T19:35:44.520Z","dependency_job_id":null,"html_url":"https://github.com/Potato-Industries/souschef","commit_stats":null,"previous_names":["potato-industries/souschef"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Potato-Industries/souschef","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Potato-Industries%2Fsouschef","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Potato-Industries%2Fsouschef/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Potato-Industries%2Fsouschef/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Potato-Industries%2Fsouschef/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Potato-Industries","download_url":"https://codeload.github.com/Potato-Industries/souschef/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Potato-Industries%2Fsouschef/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32567221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cyberchef","decoding","decryption","encoding","encryption","hashing","nodejs","recipes","security","shell","stdin","stdout"],"created_at":"2024-11-11T04:20:08.841Z","updated_at":"2026-05-03T11:32:22.437Z","avatar_url":"https://github.com/Potato-Industries.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# souschef\n\nstdin | souschef (run through CyberChef Recipe) | stdout\n\n- https://gchq.github.io/CyberChef/\n- https://github.com/gchq/CyberChef/wiki/Node-API\n\n\u003e CyberChef is really cool! It allows you to rapidly template encryption/decryption/encoding/decoding/+more routines. This is a very simple application that brings CyberChef's capabilities to your shell allowing you to pipe via stdin/stdout to other applications. This is especially useful if you don't feel like writing any encryption code from scratch, which was one of the reasons why i wrote this, a similar tool most probably exists somewhere on the internet, oh well. \n\nUPDATE - Looks like one does already exist! Check it out over at https://chepy.readthedocs.io/en/latest/. \n\n**Requirements**\n\n```\napt-get install nodejs\napt-get install npm\nnpm install --save cyberchef\nnpm install --save yargs\n\n```\n\n**Usage**\n\n\u003e stdin | souschef | stdout\n\n```\nroot@WOPR-KALI:/opt/souschef# nodejs souschef.js -h\nsouschef.js [command]\n\nCommands:\n  souschef.js socket  stdin | souschef \u003c-- TCP --\u003e ip:port\n  souschef.js core    stdin | souschef | stdout\n\nOptions:\n  --version   Show version number                                      [boolean]\n  --help, -h  Show help  \n```\n\n```\nroot@WOPR-KALI:/opt/souschef# nodejs souschef.js core -h\nsouschef.js core\n\nstdin | souschef | stdout\n\nOptions:\n  --version     Show version number                                    [boolean]\n  --help, -h    Show help                                              [boolean]\n  --recipe, -r  file path to recipe .json                               [string]\n  --mode, -v    verbose on\n\n```\n\n```\nroot@WOPR-KALI:/opt/souschef# nodejs souschef.js socket -h\nsouschef.js socket\n\nstdin | souschef \u003c-- TCP --\u003e ip:port\n\nOptions:\n  --version   Show version number                                      [boolean]\n  --help, -h  Show help                                                [boolean]\n  --ip        destination ip or domain                                  [string]\n  --port      destination port                                          [string]\n  --out       file path to outbound recipe .json                        [string]\n  --in        file path to inbound recipe .json                         [string]\n  --mode, -v  verbose on\n\n```\n\n**Recipe Creation**\n\n- Craft a recipe.json file using https://gchq.github.io/CyberChef/ to draft your CyberChef recipe, export it in Compact JSON format.\n\n- For simpler tasks use one of the pre-created recipes included in the 'recipes' folder. Some recipes will require modification as they are populated by default values. (e.g. encryption keys)\n\n\n**Generate Hashes**\n\n```\nroot@WOPR-KALI:/opt/souschef# echo \"potato\" | nodejs souschef.js core -r recipes/hashing/generate-all-hashes.json \nMD2:          49669308a06eedc83bc713d6c42d2f00\nMD4:          72ac36b4ea9dd1f9251539c31d9658e8\nMD5:          e561f9248d7563d15dd93457b02ebbb6\nMD6:          058b6d7cee765b08fd01486299ad88e9c05ee3c847b1d738eacd5225f7d1abcc\nSHA0:         6461bf8177fc5cf39bddc20c4fb4e89ca5fe8b81\nSHA1:         cefda9e2be1f21d11cdd9452f5b7f97fda977f42\nSHA2 224:     d3d33e5635ba972e6b8c9323564dd24a18ed741e7c902312fa303b35\n```\n**Analyse Hash**\n\n```\nroot@WOPR-KALI:/opt/souschef# echo \"e561f9248d7563d15dd93457b02ebbb6\" | nodejs souschef.js core -r recipes/hashing/analyse.json\nHash length: 32\nByte length: 16\nBit length:  128\n\nBased on the length, this hash could have been generated by one of the following hashing functions:\nMD5\nMD4\nMD2\nHAVAL-128\nRIPEMD-128\nSnefru\nTiger-128\n```\n\n**Disassemble x86/x86_64**\n\nhttps://www.exploit-db.com/shellcodes/47513\n\n```\nWOPR@WOPR souschef % echo \"\\x99\\xf7\\xe2\\x8d\\x08\\xbe\\x2f\\x2f\\x73\\x68\\xbf\\x2f\\x62\\x69\\x6e\\x51\\x56\\x57\\x8d\\x1c\\x24\\xb0\\x0b\\xcd\\x80\" | node souschef.js core -r recipes/shellcode/disass-x86.json\n00000000 99                              CDQ\n00000001 F7E2                            MUL EAX,EDX\n00000003 8D08                            LEA ECX,[EAX]\n00000005 BE2F2F7368                      MOV ESI,68732F2F\n0000000A BF2F62696E                      MOV EDI,6E69622F\n0000000F 51                              PUSH ECX\n00000010 56                              PUSH ESI\n00000011 57                              PUSH EDI\n00000012 8D1C24                          LEA EBX,[ESP]\n00000015 B00B                            MOV AL,0B\n00000017 CD80                            INT 80\n```\n\n**Blowfish Encrypt | Blowfish Decrypt**\n\n```\nroot@WOPR-KALI:/opt/souschef# echo \"potato\" | nodejs souschef.js core -r recipes/encrypt/blowfish-cbc.json | nodejs souschef.js core -r recipes/decrypt/blowfish-cbc.json \npotato\n\n```\n\n**AES Encrypt; Base64 Encode | Base64 Decode; AES Decrypt**\n\n```\nroot@WOPR-KALI:/opt/souschef# echo \"potato\" | nodejs souschef.js core -r recipes/custom/AESe-recipe.json | nodejs souschef.js core -r recipes/custom/AESd-recipe.json \npotato\n\n```\n\n**AESe-recipe.json**\n\n```\n[{\"op\":\"AES Encrypt\",\"args\":[{\"option\":\"Hex\",\"string\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"},{\"option\":\"Hex\",\"string\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"},\"CBC\",\"Raw\",\"Hex\"]},{\"op\":\"To Base64\",\"args\":[\"A-Za-z0-9+/=\"]}]\n```\n\n**AESd-recipe.json**\n```\n[{\"op\":\"From Base64\",\"args\":[\"A-Za-z0-9+/=\",true]},{\"op\":\"AES Decrypt\",\"args\":[{\"option\":\"Hex\",\"string\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"},{\"option\":\"Hex\",\"string\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"},\"CBC\",\"Hex\",\"Raw\",{\"option\":\"Hex\",\"string\":\"\"}]}]\n```\n\n**Socket mode**\n```\nroot@WOPR-KALI:/opt/souschef# socat STDIO STDIO | nodejs souschef.js socket --ip 127.0.0.1 --port 8080 --out recipes/encode/base64.json --in recipes/empty.json\npotato\npotarto\n^C\n\nroot@WOPR-KALI:~# nc -lvp 8080\nlistening on [any] 8080 ...\nconnect to [127.0.0.1] from localhost [127.0.0.1] 41542\ncG90YXRvCg==potarto\n^C\n\n```\n\n**stdin | souschef | socat**\n\nhttp://www.dest-unreach.org/socat/\n\n```\nroot@WOPR-KALI:/opt/souschef# echo \"potato\" | nodejs souschef.js core -r recipes/encode/base64.json | socat - tcp-connect:localhost:8080\nroot@WOPR-KALI:/opt/souschef# echo \"potato\" | nodejs souschef.js core -r recipes/encode/base64.json \u003e potato.b64\nroot@WOPR-KALI:/opt/souschef# md5sum potato.b64 \n1021506e38119e37d5df7255b8a207bb  potato.b64\n\nroot@WOPR-KALI:/var/tmp# nc -lnp 8080 \u003e potato.b64\nroot@WOPR-KALI:/var/tmp# md5sum potato.b64 \n1021506e38119e37d5df7255b8a207bb  potato.b64\n\n```\n**Tar, Untar**\n\n```\nWOPR@WOPR souschef % echo \"hello\" | node souschef.js core -r recipes/compression/tar.json \u003e test.tar\nWOPR@WOPR souschef % file test.tar \ntest.tar: POSIX tar archive\nWOPR@WOPR souschef % cat test.tar | node souschef.js core -r recipes/compression/untar.json          \nhello%                                          \n```\n\n**Verbose mode**\n\n```\nroot@WOPR-KALI:/opt/souschef# echo \"POTATO\" | nodejs souschef.js core -r /opt/souschef/AESe-recipe.json -v\nstdin: \nPOTATO\n\nrecipe: \n[ { op: 'AES Encrypt',\n    args: [ [Object], [Object], 'CBC', 'Raw', 'Hex' ] },\n  { op: 'To Base64', args: [ 'A-Za-z0-9+/=' ] } ]\n\nstdout: \nYmUxNGEwMDc2ODI5MTlkNzljNmVmYWYwOGY1ZTE0MjE=\n```\n\n**Work in progress**\n\n- Provide ability to chain multiple recipes files in command line. \n- Provide ability to update common variables in recipe files from command line. (i.e. key, iv, secrets)\n\n**Disclaimer**\n\nUse at your own risk. \n\nEnjoy~\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpotato-industries%2Fsouschef","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpotato-industries%2Fsouschef","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpotato-industries%2Fsouschef/lists"}