Coder Social home page Coder Social logo

aetsu / offensivepipeline Goto Github PK

View Code? Open in Web Editor NEW
786.0 786.0 148.0 394 KB

OfensivePipeline allows you to download and build C# tools, applying certain modifications in order to improve their evasion for Red Team exercises.

License: GNU General Public License v3.0

C# 99.72% Batchfile 0.28%
build csharp redteam windows

offensivepipeline's Introduction

OffensivePipeline

OffensivePipeline allows you to download and build C# tools, applying certain modifications in order to improve their evasion for Red Team exercises.
A common use of OffensivePipeline is to download a tool from a Git repository, randomise certain values in the project, build it, obfuscate the resulting binary and generate a shellcode.

Features

  • Currently only supports C# (.Net Framework) projects
  • Allows to clone public and private (you will need credentials :D) git repositories
  • Allows to work with local folders
  • Randomizes project GUIDs
  • Randomizes application information contained in AssemblyInfo
  • Builds C# projects
  • Obfuscates generated binaries
  • Generates shellcodes from binaries
  • There are 79 tools parameterised in YML templates (not all of them may work :D)
  • New tools can be added using YML templates
  • It should be easy to add new plugins...

What's new in version 2.0

  • Almost complete code rewrite (new bugs?)
  • Cloning from private repositories possible (authentication via GitHub authToken)
  • Possibility to copy a local folder instead of cloning from a remote repository
  • New module to generate shellcodes with Donut
  • New module to randomize GUIDs of applications
  • New module to randomize the AssemblyInfo of each application
  • 60 new tools added

Examples

  • List all tools:
OffensivePipeline.exe list
  • Build all tools:
OffensivePipeline.exe all
  • Build a tool
OffensivePipeline.exe t toolName
  • Clean cloned and build tools
OffensivePipeline.exe 

Output example

PS C:\OffensivePipeline> .\OffensivePipeline.exe t rubeus

                                                                                                   ooo
                                                                                           .osooooM M
      ___   __  __                _           ____  _            _ _                      +y.     M M
     / _ \ / _|/ _| ___ _ __  ___(_)_   _____|  _ \(_)_ __   ___| (_)_ __   ___           :h  .yoooMoM
    | | | | |_| |_ / _ \ '_ \/ __| \ \ / / _ \ |_) | | '_ \ / _ \ | | '_ \ / _ \          oo  oo
    | |_| |  _|  _|  __/ | | \__ \ |\ V /  __/  __/| | |_) |  __/ | | | | |  __/          oo  oo
     \___/|_| |_|  \___|_| |_|___/_| \_/ \___|_|   |_| .__/ \___|_|_|_| |_|\___|          oo  oo
                                                     |_|                            MoMoooy.  h:
                                                                                    M M     .y+
                                                                                    M Mooooso.
                                                                                    ooo

                                                                    @aetsu
                                                                                v2.0.0


[+] Loading tool: Rubeus
    Clonnig repository: Rubeus into C:\OffensivePipeline\Git\Rubeus
                 Repository Rubeus cloned into C:\OffensivePipeline\Git\Rubeus

    [+] Load RandomGuid module
        Searching GUIDs...
                > C:\OffensivePipeline\Git\Rubeus\Rubeus.sln
                > C:\OffensivePipeline\Git\Rubeus\Rubeus\Rubeus.csproj
                > C:\OffensivePipeline\Git\Rubeus\Rubeus\Properties\AssemblyInfo.cs
        Replacing GUIDs...
                File C:\OffensivePipeline\Git\Rubeus\Rubeus.sln:
                        > Replacing GUID 658C8B7F-3664-4A95-9572-A3E5871DFC06 with 3bd82351-ac9a-4403-b1e7-9660e698d286
                        > Replacing GUID FAE04EC0-301F-11D3-BF4B-00C04F79EFBC with 619876c2-5a8b-4c48-93c3-f87ca520ac5e
                        > Replacing GUID 658c8b7f-3664-4a95-9572-a3e5871dfc06 with 11e0084e-937f-46d7-83b5-38a496bf278a
                [+] No errors!
                File C:\OffensivePipeline\Git\Rubeus\Rubeus\Rubeus.csproj:
                        > Replacing GUID 658C8B7F-3664-4A95-9572-A3E5871DFC06 with 3bd82351-ac9a-4403-b1e7-9660e698d286
                        > Replacing GUID FAE04EC0-301F-11D3-BF4B-00C04F79EFBC with 619876c2-5a8b-4c48-93c3-f87ca520ac5e
                        > Replacing GUID 658c8b7f-3664-4a95-9572-a3e5871dfc06 with 11e0084e-937f-46d7-83b5-38a496bf278a
                [+] No errors!
                File C:\OffensivePipeline\Git\Rubeus\Rubeus\Properties\AssemblyInfo.cs:
                        > Replacing GUID 658C8B7F-3664-4A95-9572-A3E5871DFC06 with 3bd82351-ac9a-4403-b1e7-9660e698d286
                        > Replacing GUID FAE04EC0-301F-11D3-BF4B-00C04F79EFBC with 619876c2-5a8b-4c48-93c3-f87ca520ac5e
                        > Replacing GUID 658c8b7f-3664-4a95-9572-a3e5871dfc06 with 11e0084e-937f-46d7-83b5-38a496bf278a
                [+] No errors!


    [+] Load RandomAssemblyInfo module
        Replacing strings in C:\OffensivePipeline\Git\Rubeus\Rubeus\Properties\AssemblyInfo.cs
                [assembly: AssemblyTitle("Rubeus")] -> [assembly: AssemblyTitle("g4ef3fvphre")]
                [assembly: AssemblyDescription("")] -> [assembly: AssemblyDescription("")]
                [assembly: AssemblyConfiguration("")] -> [assembly: AssemblyConfiguration("")]
                [assembly: AssemblyCompany("")] -> [assembly: AssemblyCompany("")]
                [assembly: AssemblyProduct("Rubeus")] -> [assembly: AssemblyProduct("g4ef3fvphre")]
                [assembly: AssemblyCopyright("Copyright ©  2018")] -> [assembly: AssemblyCopyright("Copyright ©  2018")]
                [assembly: AssemblyTrademark("")] -> [assembly: AssemblyTrademark("")]
                [assembly: AssemblyCulture("")] -> [assembly: AssemblyCulture("")]


    [+] Load BuildCsharp module
        [+] Checking requirements...
        [*] Downloading nuget.exe from https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
                [+] Download OK - nuget.exe
                [+] Path found - C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\VsDevCmd.bat
        Solving dependences with nuget...
        Building solution...
                [+] No errors!
                [+] Output folder: C:\OffensivePipeline\Output\Rubeus_vh00nc50xud


    [+] Load ConfuserEx module
        [+] Checking requirements...
        [+] Downloading ConfuserEx from https://github.com/mkaring/ConfuserEx/releases/download/v1.6.0/ConfuserEx-CLI.zip
                [+] Download OK - ConfuserEx
        Confusing...
                [+] No errors!


    [+] Load Donut module
        Generating shellcode...

Payload options:
        Domain: RMM6XFC3
        Runtime:v4.0.30319

Raw Payload: C:\OffensivePipeline\Output\Rubeus_vh00nc50xud\ConfuserEx\Donut\Rubeus.bin
B64 Payload: C:\OffensivePipeline\Output\Rubeus_vh00nc50xud\ConfuserEx\Donut\Rubeus.bin.b64

                [+] No errors!


    [+] Generating Sha256 hashes
                Output file: C:\OffensivePipeline\Output\Rubeus_vh00nc50xud


-----------------------------------------------------------------
                SUMMARY

 - Rubeus
         - RandomGuid: OK
         - RandomAssemblyInfo: OK
         - BuildCsharp: OK
         - ConfuserEx: OK
         - Donut: OK

-----------------------------------------------------------------

Plugins

  • RandomGuid: randomise the GUID in .sln, .csproj and AssemblyInfo.cs files
  • RandomAssemblyInfo: randomise the values defined in AssemblyInfo.cs
  • BuildCsharp: build c# project
  • ConfuserEx: obfuscate c# tools
  • Donut: use Donut to generate shellcodes. The shellcode generated is without parameters, in future releases this may be changed.

Add a tool from a remote git

The scripts for downloading the tools are in the Tools folder in yml format. New tools can be added by creating new yml files with the following format:

  • Rubeus.yml file:
tool:
  - name: Rubeus
    description: Rubeus is a C# toolset for raw Kerberos interaction and abuses
    gitLink: https://github.com/GhostPack/Rubeus
    solutionPath: Rubeus\Rubeus.sln
    language: c#
    plugins: RandomGuid, RandomAssemblyInfo, BuildCsharp, ConfuserEx, Donut
    authUser:
    authToken: 
    toolArguments: 

Where:

  • Name: name of the tool
  • Description: tool description
  • GitLink: link from git to clone
  • SolutionPath: solution (sln file) path
  • Language: language used (currently only c# is supported)
  • Plugins: plugins to use on this tool build process
  • AuthUser: user name from github (not used for public repositories)
  • AuthToken: auth token from github (not used for public repositories)

Add a tool from a private git

tool:
  - name: SharpHound3-Custom
    description: C# Rewrite of the BloodHound Ingestor
    gitLink: https://github.com/aaaaaaa/SharpHound3-Custom
    solutionPath: SharpHound3-Custom\SharpHound3.sln
    language: c#
    plugins: RandomGuid, RandomAssemblyInfo, BuildCsharp, ConfuserEx, Donut
    authUser: aaaaaaa
    authToken: abcdefghijklmnopqrsthtnf
    toolArguments: "-c All,GPOLocalGroup -d whatever.youlike.local"

Where:

  • Name: name of the tool
  • Description: tool description
  • GitLink: link from git to clone
  • SolutionPath: solution (sln file) path
  • Language: language used (currently only c# is supported)
  • Plugins: plugins to user on this tool build process
  • AuthUser: user name from GitHub
  • AuthToken: auth token from GitHub (documented at GitHub: creating a personal access token)
  • toolArguments: arguments to be embedded in the donut shellcode

Add a tool from local git folder

tool:
  - name: SeatbeltLocal
    description: Seatbelt is a C# project that performs a number of security oriented host-survey "safety checks" relevant from both offensive and defensive security perspectives.
    gitLink: C:\Users\alpha\Desktop\SeatbeltLocal
    solutionPath: SeatbeltLocal\Seatbelt.sln
    language: c#
    plugins: RandomGuid, RandomAssemblyInfo, BuildCsharp, ConfuserEx, Donut
    authUser:
    authToken: 
    toolArguments:

Where:

  • Name: name of the tool
  • Description: tool description
  • GitLink: path where the tool is located
  • SolutionPath: solution (sln file) path
  • Language: language used (currently only c# is supported)
  • Plugins: plugins to user on this tool build process
  • AuthUser: user name from github (not used for local repositories)
  • AuthToken: auth token from github (not used for local repositories)
  • toolArguments: arguments to be embedded in the donut shellcode

Requirements for the release version (Visual Studio 2019/2022 is not required)

In the OffensivePipeline.dll.config file it's possible to change the version of the build tools used.

  • Build Tools 2019:
<add key="BuildCSharpTools" value="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat"/>
  • Build Tools 2022:
<add key="BuildCSharpTools" value="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\VsDevCmd.bat"/>

Requirements for build

Credits

Supported tools

offensivepipeline's People

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  avatar  avatar  avatar  avatar  avatar  avatar

offensivepipeline's Issues

Confused binary unhandled exception error

I unsure what bin to use. I use regular bin from output looks just fine but when I use Confused bin I get unhandled exception. am I not suppose to use Confused bin?
image

Unable to build due to .NET version issues

Hi,
I tried to build the application for a few hours now but failed all the time.
I downloaded the the prerequisites as described, .NET3.5, VS 2022 with the .net dev and build tools installed and donut.core.
The issue is, when I open the project file, it claims all the time, that donut.core was build with .net core 2.1 and requires this. But as soon as I set the project to use .net 2.1, vs error that netcoreapp2.1 is incompatible with system.runtime.compilerserver.unsafe.
Severity Code Description Project File Line Suppression State
Error System.Runtime.CompilerServices.Unsafe doesn't support netcoreapp2.1. Consider updating your TargetFramework to netcoreapp3.1 or later. OffensivePipeline C:\Users\user\.nuget\packages\system.runtime.compilerservices.unsafe\6.0.0\buildTransitive\netcoreapp2.0\System.Runtime.CompilerServices.Unsafe.targets 4
If I suppress this error via true, no more nuget included packages are working anymore.

Do you have any idea how to resolve this and get this to build?

Cheers
sf0x

Unable to build

When I try to open the project in VS 2019, I get the following error:
error : The SDK 'Microsoft.NET.Sdk' specified could not be found

After researching a bit, I came across a solution which recommended to set an environment variable "MSBuildSDKsPath" pointing to the path C:\Program Files\dotnet\sdk\5.0.202\Sdks. Post which I got an another error.

Tool not generating output despite successful execution

After successfully compiling OffensivePipeline using VS2022 and Buildtools 2022, I attempted to download and obfuscate a tool using the command .\OffensivePipeline.exe t sqlclient as an example.
However, the tool does not generate any output files in the SqlClient_epzktg4zle1 directory despite receiving a successful output - (https://pastebin.com/UPGXPck7)

[+] Loading tool: SqlClient
    Clonnig repository: SqlClient into C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Git\SqlClient
                 Repository SqlClient cloned into C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Git\SqlClient

    [+] Load RandomGuid module
        Searching GUIDs...
                > C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Git\SqlClient\SqlClient.sln
                > C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Git\SqlClient\SqlClient.csproj
                > C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Git\SqlClient\Properties\AssemblyInfo.cs
        Replacing GUIDs...
                File C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Git\SqlClient\SqlClient.sln:
                        > Replacing GUID 4122c017-5876-4aba-b836-2cb37208032a with 1adb4c79-3ddd-4071-a91b-9d1f5839ad72
                        > Replacing GUID FAE04EC0-301F-11D3-BF4B-00C04F79EFBC with 38c25674-afbb-4455-868c-696ee038b86a
                        > Replacing GUID 4122C017-5876-4ABA-B836-2CB37208032A with 37369baa-0dcc-405d-8f0b-1c3036957093
                        > Replacing GUID 26E7E7D5-4464-4DEB-A636-B4B4DC0726D3 with 39001d91-4076-4060-b972-eac1874fa405
                [+] No errors!
                File C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Git\SqlClient\SqlClient.csproj:
                        > Replacing GUID 4122c017-5876-4aba-b836-2cb37208032a with 1adb4c79-3ddd-4071-a91b-9d1f5839ad72
                        > Replacing GUID FAE04EC0-301F-11D3-BF4B-00C04F79EFBC with 38c25674-afbb-4455-868c-696ee038b86a
                        > Replacing GUID 4122C017-5876-4ABA-B836-2CB37208032A with 37369baa-0dcc-405d-8f0b-1c3036957093
                        > Replacing GUID 26E7E7D5-4464-4DEB-A636-B4B4DC0726D3 with 39001d91-4076-4060-b972-eac1874fa405
                [+] No errors!
                File C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Git\SqlClient\Properties\AssemblyInfo.cs:
                        > Replacing GUID 4122c017-5876-4aba-b836-2cb37208032a with 1adb4c79-3ddd-4071-a91b-9d1f5839ad72
                        > Replacing GUID FAE04EC0-301F-11D3-BF4B-00C04F79EFBC with 38c25674-afbb-4455-868c-696ee038b86a
                        > Replacing GUID 4122C017-5876-4ABA-B836-2CB37208032A with 37369baa-0dcc-405d-8f0b-1c3036957093
                        > Replacing GUID 26E7E7D5-4464-4DEB-A636-B4B4DC0726D3 with 39001d91-4076-4060-b972-eac1874fa405
                [+] No errors!


    [+] Load RandomAssemblyInfo module
        Replacing strings in C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Git\SqlClient\Properties\AssemblyInfo.cs
                [assembly: AssemblyTitle("SqlClient")] -> [assembly: AssemblyTitle("n0gdi31hbk0")]
                [assembly: AssemblyDescription("")] -> [assembly: AssemblyDescription("")]
                [assembly: AssemblyConfiguration("")] -> [assembly: AssemblyConfiguration("")]
                [assembly: AssemblyCompany("")] -> [assembly: AssemblyCompany("")]
                [assembly: AssemblyProduct("SqlClient")] -> [assembly: AssemblyProduct("n0gdi31hbk0")]
                [assembly: AssemblyCopyright("Copyright c  2020")] -> [assembly: AssemblyCopyright("Copyright c  2018")]
                [assembly: AssemblyTrademark("")] -> [assembly: AssemblyTrademark("")]
                [assembly: AssemblyCulture("")] -> [assembly: AssemblyCulture("")]


    [+] Load BuildCsharp module
        [+] Checking requirements...
                [+] Download OK - nuget.exe
                [+] Path found - C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\VsDevCmd.bat
        Solving dependences with nuget...
        Building solution...
                [+] No errors!
                [+] Output folder: C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Output\SqlClient_epzktg4zle1


    [+] Load ConfuserEx module
        [+] Checking requirements...


    [+] Load Donut module


    [+] Generating Sha256 hashes
                Output file: C:\Users\Doxi\Desktop\Dev\OffensivePipeline-main\OffensivePipeline\bin\Release\net6.0\Output\SqlClient_epzktg4zle1


-----------------------------------------------------------------
                SUMMARY

 - SqlClient
         - RandomGuid: OK
         - RandomAssemblyInfo: OK
         - BuildCsharp: OK
         - ConfuserEx: OK
         - Donut: OK

-----------------------------------------------------------------

I also tried to download and execute the file from the releases, but no output was generated as well (I have disabled Windows Defender to eliminate any possible interference).

  • Sysinfo
OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.18362 N/A Build 18362
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free

Any ideas?
Thanks a lot :)

Unhandled exception. System.IO.DirectoryNotFoundException: Could not find a part of the path

Hi,

This tool has potential it seems. However, at the moment I cannot build any tools due to errors. For example when trying to build Rubeus I get:

[+] Name: Rubeus
- Description: Rubeus is a C# toolset for raw Kerberos interaction and abuses
- Git link: https://github.com/GhostPack/Rubeus
- Solution file: Rubeus\Rubeus.sln

 Solving dependences with nuget...
 Building solution...
     Error -> msbuild.exe: C:\tmp\OffensivePipeline_v0.8\GitTools\Rubeus\Rubeus.sln

Unhandled exception. System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\tmp\OffensivePipeline_v0.8\Output\Rubeus_khpb20v5uhx'

The above folder "Output" is never created or is no longer existing at this stage.

I am using the official release version 0.8.

Thanks!

Build issues with SharpUp [ Error -> Analyzing: <SharpUp> -> System.IO.DirectoryNotFoundException: Could not find a part of the path ]

While building sharpup a DirectoryNotFound error occurs

Command:
C:\Tools\OffensivePipeline\OffensivePipeline\bin\Debug\netcoreapp3.1>OffensivePipeline.exe t SharpUp

Ouput:

[+] Name: SharpUp
     - Description: SharpUp is a C# port of various PowerUp functionality
     - Git link: https://github.com/GhostPack/SharpUp
     - Solution file: SharpUp\SharpUp.sln

     Clonnig the repository: SharpUp
        Last commit: 8/24/2018 10:59:04 PM -07:00
     Solving dependences with nuget...
     Building solution...
         Error -> msbuild.exe: C:\Tools\OffensivePipeline\OffensivePipeline\bin\Debug\netcoreapp3.1\GitTools\SharpUp\SharpUp.sln
         Error -> Analyzing: <SharpUp> -> System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Tools\OffensivePipeline\OffensivePipeline\bin\Debug\netcoreapp3.1\Output\SharpUp_pa4i5xxniku'.
   at System.IO.Enumeration.FileSystemEnumerator`1.CreateDirectoryHandle(String path, Boolean ignoreNotFound)
   at System.IO.Enumeration.FileSystemEnumerator`1.Init()
   at System.IO.Enumeration.FileSystemEnumerator`1..ctor(String directory, Boolean isNormalized, EnumerationOptions options)
   at System.IO.Enumeration.FileSystemEnumerable`1..ctor(String directory, FindTransform transform, EnumerationOptions options, Boolean isNormalized)
   at System.IO.Enumeration.FileSystemEnumerableFactory.UserFiles(String directory, String expression, EnumerationOptions options)
   at System.IO.Directory.InternalEnumeratePaths(String path, String searchPattern, SearchTarget searchTarget, EnumerationOptions options)
   at System.IO.Directory.GetFiles(String path, String searchPattern)
   at OffensivePipeline.Build.Confuse(String folder) in C:\Tools\OffensivePipeline\OffensivePipeline\Build.cs:line 83
   at OffensivePipeline.Program.AnalyzeTools(String toolName) in C:\Tools\OffensivePipeline\OffensivePipeline\Program.cs:line 110

Built Debug version from Main Branch
https://github.com/Aetsu/OffensivePipeline.git

ThreatCheck Compilation

Having issues compiling ThreatCheck.exe using the 'OffensivePipeline.exe t ThreatCheck' command.
It seems to reside around the ThreatCheck.sln file that. Anyone else experience this issue?

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.