GithubHelp home page GithubHelp logo

nimcrypt2's Introduction

Nimcrypt2

Nimcrypt2 is yet another PE packer/loader designed to bypass AV/EDR. It is an improvement on my original Nimcrypt project, with the main improvements being the use of direct syscalls and the ability to load regular PE files as well as raw shellcode.

Before going any further, I must acknowledge those who did the VAST majority of work and research that this project depends on. Firstly, I must thank @byt3bl33d3r for his Offensive Nim repo, and @ShitSecure for all of the code snippets he's publicly released. That is what the original version of this tool was created from, and the current version is no different. Particularly, the new PE loading functionality used in this tool is just an implementation of ShitSecure's recently released Nim-RunPE code. As of 3/14/22, this code also uses his GetSyscallStub code for dynamic syscall usage. I highly encourage sponsoring him for access to his own Nim PE Packer, which is no doubt a much better and more featureful version of this.

Additionally, I would like to thank @ajpc500 for his NimlineWhispers2 project that this tool uses for direct syscalls. I cannot stress enough how this project is simply an amalgamation of the public work of those previously mentioned, so all credit must go to them.

                      ___                                           
                   .-'   `'.                                        
                  /         \                                       
                  |         ;                                       
                  |         |           ___.--,                     
         _.._     |0) ~ (0) |    _.---'`__.-( (_.                   
  __.--'`_.. '.__.\    '--. \_.-' ,.--'`     `""`                   
 ( ,.--'`   ',__ /./;   ;, '.__.'`    __                            
 _`) )  .---.__.' / |   |\   \__..--""  ""'--.,_                    
`---' .'.''-._.-'`_./  /\ '.  \ _.-~~~````~~~-._`-.__.'             
      | |  .' _.-' |  |  \  \  '.               `~---`              
       \ \/ .'     \  \   '. '-._)                                  
        \/ /        \  \    `=.__`~-.   Nimcrypt v2               
   jgs  / /\         `) )    / / `"".`\                             
  , _.-'.'\ \        / /    ( (     / /  3-in-1 C#, PE, & Raw Shellcode Loader
   `--~`   ) )    .-'.'      '.'.  | (                              
          (/`    ( (`          ) )  '-;                             
           `      '-;         (-'                                   

Nimcrypt v 2.0

Usage:
  nimcrypt -f file_to_load -t csharp/raw/pe [-o <output>] [-p <process>] [-n] [-u] [-s] [-e] [-g] [-l] [-v] [--no-ppid-spoof]
  nimcrypt (-h | --help)

Options:
  -h --help     Show this screen.
  --version     Show version.
  -f --file filename     File to load
  -t --type filetype     Type of file (csharp, raw, or pe)
  -p --process process   Name of process for shellcode injection
  -o --output filename   Filename for compiled exe
  -u --unhook            Unhook ntdll.dll
  -v --verbose           Enable verbose messages during execution
  -e --encrypt-strings   Encrypt strings using the strenc module
  -g --get-syscallstub   Use GetSyscallStub instead of NimlineWhispers2
  -l --llvm-obfuscator   Use Obfuscator-LLVM to compile binary
  -n --no-randomization  Disable syscall name randomization
  -s --no-sandbox        Disable sandbox checks
  --no-ppid-spoof        Disable PPID Spoofing

Features:

  • NtQueueApcThread Shellcode Execution w/ PPID Spoofing & 3rd Party DLL Blocking
  • NimlineWhispers2 & GetSyscallStub for Syscall Use
  • Syscall Name Randomization
  • Ability to load .NET and Regular PE Files
  • AES Encryption with Dynamic Key Generation
  • LLVM-Obfuscator Compatibility
  • String Encryption
  • Sandbox Evasion

Tested and Confirmed Working on:

  • Windows 11 (10.0.22000)
  • Windows 10 21H2 (10.0.19044)
  • Windows 10 21H1 (10.0.19043)
  • Windows 10 20H2 (10.0.19042)
  • Windows 10 19H2 (10.0.18363)
  • Windows Server 2019 (10.0.17763)

Installation/Dependencies:

Nimcrypt2 is designed to be used on Linux systems with Nim installed. Before installing Nim, you must ensure that you have the following packages installed via your package manager:

sudo apt install gcc mingw-w64 xz-utils git

To install Nim, I prefer to use choosenim as follows:

curl https://nim-lang.org/choosenim/init.sh -sSf | sh
echo "export PATH=$HOME/.nimble/bin:$PATH" >> ~/.bashrc
export PATH=$HOME/.nimble/bin:$PATH

Nimcrypt2 also depends on a few packages that can be installed via Nimble. This can be done like so:

nimble install winim nimcrypto docopt ptr_math strenc

With all the dependencies now installed, Nimcrypt2 can be compiled like so:

nim c -d=release --cc:gcc --embedsrc=on --hints=on --app=console --cpu=amd64 --out=nimcrypt nimcrypt.nim

OPTIONAL: To use the Obfuscator-LLVM flag, you must have it installed on your system alongside wclang. I've found this to be a bit of a pain but you should be able to do it with a little perseverance. Here's a quick step-by-step that worked on my Kali Linux system:

  1. Clone desired version of Obfuscator-LLVM and build it
  2. Once compiled, backup the existing version of clang and move the new Obfuscator-LLVM version of clang to /usr/bin/
  3. Install wclang and add it's binaries to your PATH
  4. Backup existing clang library files, copy new newly built Obfuscator-LLVM library includes to /usr/lib/clang/OLD_VERSION/

In addition, you must add the following lines to your nim.cfg file to point nim to your wclang binaries:

amd64.windows.clang.exe = "x86_64-w64-mingw32-clang"
amd64.windows.clang.linkerexe = "x86_64-w64-mingw32-clang"
amd64.windows.clang.cpp.exe = "x86_64-w64-mingw32-clang++"
amd64.windows.clang.cpp.linkerexe = "x86_64-w64-mingw32-clang++"

There is probably a better way to do this but this is what worked for me. If you have issues, just keep trying and ensure that you can run x86_64-w64-mingw32-clang -v and it shows "Obfuscator-LLVM" in the output. Also ensure MinGW is using the Obfuscator-LLVM library files: Nim will give you an error if not.

Known Bugs:

  • As described by ShitSecure, if the release version of mimikatz is loaded via the PE loader, it will not accept commands for some unknown reason. Using a version of mimikatz that was compiled from source fixes this issue.

Greetz & Credit:

nimcrypt2's People

Contributors

icyguider avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nimcrypt2's Issues

direct process for shellcode injection

I get error when i try to add the Name of process for shellcode injection

nimcrypt -f Test_Raw_x64.bin -t raw -o test.exe -p C:\Windows\System32\notepad.exe -s -n
\\ Windows \\ System32 \\ notepad.exe

aso id i try simple with notepad or explorer.exe same error

image

Limits.h file not found

Hello, I managed to build Obfuscator-LLVM and performed the steps in #6 (comment)

However, i am getting an error that limits.h is not found.

In file included from /home/ubuntu/.cache/nim/stub_r/stdlib_digitsutils.nim.c:7:
In file included from /home/ubuntu/.choosenim/toolchains/nim-1.6.6/lib/nimbase.h:269:
/usr/include/limits.h:124:16: fatal error: 'limits.h' file not found
# include_next <limits.h>
               ^~~~~~~~~~
1 error generated.
Error: execution of an external compiler program 'clang -c -w -ferror-limit=3 -DWIN32_LEAN_AND_MEAN -mllvm -bcf -mllvm -sub -mllvm -fla -mllvm -split -aesSeed=TDMDF2AR1LO88IBHR998V6YI4MT3Q9NG -Os   -I/home/ubuntu/.choosenim/toolchains/nim-1.6.6/lib -I/home/ubuntu/Desktop/Nimcrypt2 -o /home/ubuntu/.cache/nim/stub_r/stdlib_digitsutils.nim.c.o /home/ubuntu/.cache/nim/stub_r/stdlib_digitsutils.nim.c' failed with exit code: 1


In file included from /home/ubuntu/.cache/nim/stub_r/stdlib_assertions.nim.c:7:
In file included from /home/ubuntu/.choosenim/toolchains/nim-1.6.6/lib/nimbase.h:269:
/usr/include/limits.h:124:16: fatal error: 'limits.h' file not found
# include_next <limits.h>
               ^~~~~~~~~~
In file included from /home/ubuntu/.cache/nim/stub_r/stdlib_formatfloat.nim.c:7:
In file included from /home/ubuntu/.choosenim/toolchains/nim-1.6.6/lib/nimbase.h:269:
/usr/include/limits.h:124:16: fatal error: 'limits.h' file not found
# include_next <limits.h>
               ^~~~~~~~~~
1 error generated.
In file included from /home/ubuntu/.cache/nim/stub_r/stdlib_dollars.nim.c:7:
In file included from /home/ubuntu/.choosenim/toolchains/nim-1.6.6/lib/nimbase.h:269:
/usr/include/limits.h:124:16: fatal error: 'limits.h' file not found
# include_next <limits.h>
               ^~~~~~~~~~
1 error generated.
1 error generated.

[!] Stub compilation failed! Check stub for errors.

Been trying to fix this for a while, limits.h is actually in /usr/include/ directory, but it still prompts the error. Please help.

Generating a DLL

Hi,

Is the tool even compatible with generating a DLL ? What would be the best way to do that ?
Thank you

Packing and thereafter using DavRelayUp.exe

Hi,

Thank you for this tool.

I have been trying to get DavRelayUp.exe past AV using many tools including yours and S3cur3Th1sSh1t!'s tool but I either fail to pack it or DavRelayUp.exe fails to run after being packed. Using your tool I execute ./nimcrypt -f DavRelayUp.exe -t pe -o dru2.exe -u -e which works fine and the binary is not detected by Defender when dropped to disk as the original file is. However, during execution of the file the process stops after "Decrypting packed exe...".

How can I pack and use DavRelayUp.exe? Thanks!

How to build Obfuscator-LLVM

While trying to build obfuscator using project instrustions I got an undocumented error:

[ 58%] Linking CXX static library ../../../../lib/libclangAnalysis.a
[ 58%] Built target clangAnalysis
make: *** [Makefile:156: all] Error 2

Issues in the original repo are closed without any answers. Maybe anybody here know how to deal with it?
OS: Linux kali 5.18.0-kali5-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.18.5-1kali6 (2022-07-07) x86_64 GNU/Linux, launched in VirtualBox

Compiler: gcc (Debian 12.2.0-3) 12.2.0

I will provide more info if you ask me to.

Error: unhandled exception: unable to invoke specified member: Invoke (0x80131604) [CLRError]

Following this guide, https://icyguider.github.io/2022/05/19/NoFix-LPE-Using-KrbRelay-With-Shadow-Credentials.html and encrypting all necessary tools with Nimcrypt2 when running on production packed KrbRelay errors with:

Error: unhandled exception: unable to invoke specified member: Invoke (0x80131604) [CLRError]

Following the error, it appears that AMSI wasn't patched to allow the packed executable to be run.

The error was described in these two posts:
https://s3cur3th1ssh1t.github.io/Playing-with-OffensiveNim/
https://www.securityartwork.es/2022/01/12/bypassing-av-edr-with-nim/

Is the currently added AMSI Bypass not sufficient?

Please refer to below picture:
nimcrypt_amsi_fail

Issue executing PE file

Trying to embed a relatively small (88KB) .exe in the loader, but having issues.
I ran into the 'Illegal Storage Access' mentioned by someone else, so made sure to compile it to x64 (which fixed that particular issue) but now I'm running into the problem below. Any ideas would be appreciated. Thanks !

usage:

± ./nimcrypt -f ./Crypter.exe -o Crypted.exe -g -v -u -t pe -e -s
Crypted.exe → Crypter.exe? (Yes, No, Abort, Edit) n
                      ___
                   .-'   `'.
                  /         \
                  |         ;
                  |         |           ___.--,
         _.._     |0) ~ (0) |    _.---'`__.-( (_.
  __.--'`_.. '.__.\    '--. \_.-' ,.--'`     `""`
 ( ,.--'`   ',__ /./;   ;, '.__.'`    __
 _`) )  .---.__.' / |   |\   \__..--""  ""'--.,_
`---' .'.''-._.-'`_./  /\ '.  \ _.-~~~````~~~-._`-.__.'
      | |  .' _.-' |  |  \  \  '.               `~---`
       \ \/ .'     \  \   '. '-._)
        \/ /        \  \    `=.__`~-.   Nimcrypt v2
   jgs  / /\         `) )    / / `"".`\
  , _.-'.'\ \        / /    ( (     / /  3-in-1 C#, PE, & Raw Shellcode Loader
   `--~`   ) )    .-'.'      '.'.  | (
          (/`    ( (`          ) )  '-;
           `      '-;         (-'

[+] GetSyscallStub enabled
[+] String encryption enabled
[+] Sandbox checks disabled
[+] Unhooking ntdll.dll enabled
[+] Verbose messages enabled
[+] Syscall name randomization enabled
Hint: used config file '/usr/local/Cellar/nim/1.6.6/nim/config/nim.cfg' [Conf]
Hint: used config file '/usr/local/Cellar/nim/1.6.6/nim/config/config.nims' [Conf]
......................................................................................................................................................................................
.../Nimcrypt2/GetSyscallStub.nim(6, 8) Hint: duplicate import of 'winim'; previous import here: .../Nimcrypt2/stub.nim(4, 8) [Duplic
ateModuleImport]
.../Nimcrypt2/GetSyscallStub.nim(7, 8) Hint: duplicate import of 'strutils'; previous import here: .../Nimcrypt2/stub.nim(10, 8) [Du
plicateModuleImport]
.../Nimcrypt2/GetSyscallStub.nim(8, 8) Hint: duplicate import of 'ptr_math'; previous import here: .../Nimcrypt2/stub.nim(5, 8) [Dup
licateModuleImport]
.../Nimcrypt2/GetSyscallStub.nim(73, 9) Hint: 'oldProtection' is declared but not used [XDeclaredButNotUsed]
.../Nimcrypt2/GetSyscallStub.nim(74, 9) Hint: 'low2' is declared but not used [XDeclaredButNotUsed]
.../Nimcrypt2/stub.nim(244, 22) Warning: implicit conversion to 'cstring' from a non-const location:  {.noRewrite.}:
  gkkaekgaEE("", 1067753374); this will become a compile time error in the future [CStringConv]
.../Nimcrypt2/stub.nim(270, 22) Warning: implicit conversion to 'cstring' from a non-const location:  {.noRewrite.}:
  gkkaekgaEE("", 1825193290); this will become a compile time error in the future [CStringConv]
.../Nimcrypt2/stub.nim(48, 5) Hint: 'oTtCrfKpthZOmSGdzbLbtWgp' is declared but not used [XDeclaredButNotUsed]
.../Nimcrypt2/stub.nim(72, 5) Hint: 'vCWzsdeUMsrhZpgSPMfcfkbw' is declared but not used [XDeclaredButNotUsed]
.../Nimcrypt2/stub.nim(76, 5) Hint: 'MGhiqIrDxbPRjdprmKTqYOOp' is declared but not used [XDeclaredButNotUsed]
.../Nimcrypt2/stub.nim(13, 8) Warning: imported and not used: 'os' [UnusedImport]
.../Nimcrypt2/stub.nim(12, 8) Warning: imported and not used: 'times' [UnusedImport]
.../Nimcrypt2/stub.nim(11, 8) Warning: imported and not used: 'random' [UnusedImport]
CC: stdlib_system.nim
CC: ../../../../../../../.nimble/pkgs/nimcrypto-0.5.4/nimcrypto/bcmode.nim
CC: stdlib_strformat.nim
CC: stub.nim
Hint:  [Link]
Hint: gc: refc; opt: size; options: -d:release
1277097 lines; 12.564s; 347.387MiB peakmem; proj: .../Nimcrypt2/stub.nim; out: .../Nimcrypt2/Crypted.exe [SuccessX]
Z:\>Crypted.exe -h
[*] Found Syscall Stub: NtOpenProcess
[*] Found Syscall Stub: NtAllocateVirtualMemory
[*] Found Syscall Stub: NtWriteVirtualMemory
[*] Found Syscall Stub: NtCreateThreadEx
[*] Found Syscall Stub: NtProtectVirtualMemory
[*] Found Syscall Stub: NtClose
[*] Found Syscall Stub: NtQueueApcThread
[*] Found Syscall Stub: NtAlertResumeThread
[*] Found Syscall Stub: NtWaitForSingleObject
[*] Unhook ntdll: true
[*] Applying amsi patch: true
[*] Applying etw patch: true
[*] Decrypting packed exe...
[+] Exe File Prefer Image Base at

Size:
106496
[+] Mapping Section ...
    [+] Mapping Section :.text
    [+] Mapping Section :.rsrc
[+] Fix Import Address Table

fixIAT() failed
Run Exe Module:

Then nothing happens, whereas it should run the actual embedded PE file and display its help menu.

cannot execute the output file

I have run the command "nimcrypt -f mimikatz.exe -t pe -o mimi-pe.exe -u -e -g, and sucessfully output the exe.

But when I run mimi-pe.exe on the machine, it got the message "SIGSEGV: Illegal storage access. (Attempt to read from nil?)

image

May I get some insight on how to resolve this issue?

Thanks

Error: cannot open file: nimcrypto

I cloned the repo to a vm running msys2 and got myself a file.bin to crypt but i keep getting this error
Capture-Nimcrypt2

i downloaded nim in msys2 from here and also download the nim from the offical website and added it to the enviroment path
but both ways seem to create the same error

Stub compilation failed! Check stub for errors

Everything works fine yesterday, now i'm getting this error. I'v tried to recompile nimcrypt and change the spoofing process. still same error

[+] Using svchost.exe for shellcode injection
[+] NimlineWhispers2 enabled
[+] String encryption disabled
[+] Sandbox checks enabled
[+] Unhooking ntdll.dll enabled
[+] PPID spoofing enabled
[+] Verbose messages disabled
[+] Syscall name randomization enabled
Hint: used config file '/home/mk/.choosenim/toolchains/nim-2.0.0/config/nim.cfg' [Conf]
Hint: used config file '/etc/nim/config.nims' [Conf]
....................................................................................................................................................................................................................
/opt/Nimcrypt2/stub.nim(284, 11) template/generic instantiation of inject from here
/opt/Nimcrypt2/stub.nim(98, 24) Error: type mismatch
Expression: CreateProcess(NULL, newWideCString(r"svchost.exe"), ps, ts, TRUE, 134742028,
NULL, NULL, addr si.StartupInfo, addr pi)
[1] NULL: typeof(nil)
[2] newWideCString(r"svchost.exe"): WideCStringObj
[3] ps: SECURITY_ATTRIBUTES
[4] ts: SECURITY_ATTRIBUTES
[5] TRUE: int literal(1)
[6] 134742028: int literal(134742028)
[7] NULL: typeof(nil)
[8] NULL: typeof(nil)
[9] addr si.StartupInfo: ptr STARTUPINFOW
[10] addr pi: ptr PROCESS_INFORMATION

Expected one of (first mismatch at [position]):
[3] proc CreateProcess(lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
lpProcessAttributes: LPSECURITY_ATTRIBUTES;
lpThreadAttributes: LPSECURITY_ATTRIBUTES;
bInheritHandles: WINBOOL; dwCreationFlags: DWORD;
lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR;
lpStartupInfo: LPSTARTUPINFOW;
lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL

[!] Stub compilation failed! Check stub for errors.

Add Self Injection

It would be worth adding self injection as an option. This is what S3cur3Th1sSh1t has in Nim Packer v1.2

Cannot run output file from a x64bit PE.

Hi, i try to use your tools with a compiled c program that print hello world into a cmd. But i cant get it running with your RunPE.

The command that i use to create my final exe

nim r nimcrypt.nim --no-ppid-spoof -s -n -g -v -u -t pe -f test_app.exe

and the output i get when lunching the "a.exe" is the following:

C:\Users\zingstrok\Desktop\Nimcrypt2-main>a.exe
[*] Found Syscall Stub: NtOpenProcess
[*] Found Syscall Stub: NtAllocateVirtualMemory
[*] Found Syscall Stub: NtWriteVirtualMemory
[*] Found Syscall Stub: NtCreateThreadEx
[*] Found Syscall Stub: NtProtectVirtualMemory
[*] Found Syscall Stub: NtClose
[*] Found Syscall Stub: NtQueueApcThread
[*] Found Syscall Stub: NtAlertResumeThread
[*] Found Syscall Stub: NtWaitForSingleObject
[*] Unhook ntdll: true
[*] Applying amsi patch: true
[*] Applying etw patch: true
[*] Decrypting packed exe...
[+] Exe File Prefer Image Base at

Size:
16384
[+] Mapping Section ...
SIGSEGV: Illegal storage access. (Attempt to read from nil?)

here the code for the small test_app.exe

#include <stdio.h>

int main() {
    printf("This is a testing app, this app should run in 64bit...");

    return 0;
}

do you know why i get this error ?

Thank

Cannot compile x86 binary

Hi @icyguider , I am wondering if there is a way to compile x86 .exe from shellcode without installing LLVM? I can see similar issue - #7 , but its other way around actually :)
If the only way to generate x86 is to install LLVM, plz update description with examples (flags etc)

question

After using cs4.4 raw csharp x64-bit files to generate exe according to your requirements, you cannot return shell. It has been tested on winserver2019 and win10.

Setting up Obfuscator-LLVM

Heya mate. Nimcrypt2 is working very well. I just tested it with the Mythic agent Apollo using the raw shellcode.

I managed to get Obfuscator-LLVM working on Windows and integrated it into Visual Studio for another project.

I am having problems getting Obfuscator-LLVM working on Kali though. Which branch did you use?

Could you provide more detailed instructions on how to set it up on Kali please.

Error: cannot open file: strenc [!] Stub compilation failed! Check stub for errors.

./nimcrypt -f loader.bin -t raw -o malwaretest -e
___
.-' '. / \ | ; | | ___.--, _.._ |0) ~ (0) | _.---'__.-( (_.
.--'_.. '.__.\ '--. \_.-' ,.--' ""
( ,.--' ',__ /./; ;, '.__.' __
) ) .---.__.' / | |\ \__..--"" ""'--.,_ ---' .'.''-..-'_./ /\ '. \ _.-~~~````~~~-._-.
.'
| | .' .-' | | \ \ '. ~---
\ / .' \ \ '. '-.
)
/ / \ \ =.__-. Nimcrypt v2
jgs / /\ ) ) / / "".\ , _.-'.'\ \ / / ( ( / / 3-in-1 C#, PE, & Raw Shellcode Loader --
) ) .-'.' '.'. | ( (/ ( ( ) ) '-; '-; (-'

[+] Using explorer.exe for shellcode injection
[+] GetSyscallStub enabled
[+] String encryption enabled
[+] Sandbox checks enabled
[+] Unhooking ntdll.dll disabled
[+] Verbose messages disabled
[+] Syscall name randomization enabled
Hint: used config file '/etc/nim/nim.cfg' [Conf]
Hint: used config file '/etc/nim/config.nims' [Conf]
...................................................................................................................................................................................
/home/youssef/Nimcrypt2/stub.nim(14, 8) Error: cannot open file: strenc

[!] Stub compilation failed! Check stub for errors.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.