Code Monkey home page Code Monkey logo

fleex's Introduction

Fleex

Fleex allows you to create multiple VPS on cloud providers and use them to distribute your workload. Run tools like masscan, puredns, ffuf, httpx or anything you need and get results quickly!

AUR license badge



Install

GO111MODULE=on go install -v github.com/FleexSecurity/fleex@latest

Supported providers

Available commands

Fleex-docs

Documentation

Fleex-docs

Referrals

Digitalocean referral link Linode referral link Vultr referral link

Main contributors

sw33tLie
sw33tLie
xm1k3
xm1k3

License

Fleex is distributed under Apache-2.0 License

fleex's People

Contributors

b1bek avatar melardev avatar pradeepch99 avatar remonsec avatar sw33tlie avatar xm1k3 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

fleex's Issues

File chunks issue

I scaned 3 targets input with 3 boxes then i got error err=scp: /tmp/fleex-1625591403254096294-chunk-out-vmp-1: No such file or directory
Provider linode
2021-07-06 22_33_24-Window

Add remove image on Linode

Add the possibility of being able to delete an image of a linode image directly from command without having to use the site

Folder output not supported

i scan list of web with gowitness and the output not processed by fleex got error not a regular file.

Command

fleex scan -i test -o screenshot -c "cat {{INPUT}} | gowitness file -f {{INPUT}} --threads 2 --screenshot-path {{OUTPUT}}"

Error

FATA[0016] Failed to get file: failed to read scp message header: err=scp: /tmp/fleex-1626745411693753043-chunk-out-pwn-1: not a regular file

Replace viper refs and use json config

config example

{
    "settings": {
        "provider": "digitalocean"
    },
    "ssh_keys": {
        "public_file": "id_rsa.pub",
        "private_file": "id_rsa"
    },
    "providers": {
        "digitalocean": {
            "token": "YOUR_DIGITALOCEAN_TOKEN",
            "region": "fra1",
            "size": "s-1vcpu-1gb",
            "image": "12345678",
            "port": 2266,
            "username": "op",
            "password": "USER_PASSWORD",
            "tags": [
                "vps",
                "fleex"
            ]
        },
        "linode": {
            "token": "YOUR_LINODE_TOKEN",
            "region": "eu-central",
            "size": "g6-nanode-1",
            "image": "private/12345678",
            "port": 2266,
            "username": "op",
            "password": "USER_PASSWORD"
        },
        "vultr": {
            "token": "YOUR_VULTR_TOKEN",
            "region": "atl",
            "size": "vc2-1c-1gb",
            "image": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e",
            "port": 2266,
            "username": "op",
            "password": "USER_PASSWORD"
        }
    },
    "custom_vms": [
        {
            "provider": "aws",
            "instance_id": "i-customid",
            "public_ip": "1.2.3.4",
            "ssh_port": 22,
            "username": "ec2-user",
            "password": "USER_PASSWORD",
            "key_path": "/path/to/your/private-key.pem",
            "tags": [
                "web-server",
                "production"
            ]
        },
        {
            "provider": "utm",
            "instance_id": "i-customid2",
            "public_ip": "1.2.3.4",
            "ssh_port": 22,
            "username": "user",
            "password": "USER_PASSWORD",
            "key_path": "/path/to/your/private-key.pem",
            "tags": [
                "test",
                "production"
            ]
        },
        {
            "provider": "virtualbox",
            "instance_id": "i-customid3",
            "public_ip": "1.2.3.4",
            "ssh_port": 22,
            "username": "user",
            "password": "USER_PASSWORD",
            "key_path": "/path/to/your/private-key.pem",
            "tags": [
                "staging"
            ]
        }
    ]
}

Solve problem related to space on init command

From

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqbdxuwrJ5PbYmMzByvqjyWXk+hpds+i0uZxj9OSUWuuoPY9ESUKIarzKFG4Yc2FiHhAq3xl1StwxC7Sq4c5+o67TVDSmxV6UpscYNZG8b77TlYZYQ2qP7eHGLaV8ZwX2nW9BzK4bODql9xOY6lykM3W9DD3sA1cS+SSvgfMOhP9udpVdK0y1cOGcS4fzNlVn/WoLtiFj/IPwb06m7ZFHIP83YnSCte02dK5nzu/TU79uPJx89hvzEB0MphnLezBTudcmz3BN0f9J8Vx91Rl/GO0D3ODhcPmzLGKNJODWzwvNHl/Ocfl1SWTzkk4SqYwlp6rLMQ4VqtrgQ7yKu875N22QifKnUOZW0nPwI7NTJ+dYNbuXamCHr/Ar4rbxi1d3VusDDofLp6A58/3fgmM7oyrILnsOzVhkXLTEuFknA6dh7+CBWDIFmKmQ/sibC816BgR0m0dT7E1WJbPQVjKBWzTvFZR6W/ANa/cUbtDQ+Vk6kuAL9dyLOvfyBKoIZTlGrEfkh2Ewg+cJij1PhgwO6RI9jZ54FQOpa+b2BAmBs+qWqGsJOqVCFOztABGa57k/wLqXEd55RPU6MHG0H0GFqvFl07h00tCOkfs0ff2a+aQbf07Jcbm984idxNCWvT6/sqjLQ6fC5uaVvRXFYCwAknFclGhudAjqN54OxaMfsrQ==
 test@test

To:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqbdxuwrJ5PbYmMzByvqjyWXk+hpds+i0uZxj9OSUWuuoPY9ESUKIarzKFG4Yc2FiHhAq3xl1StwxC7Sq4c5+o67TVDSmxV6UpscYNZG8b77TlYZYQ2qP7eHGLaV8ZwX2nW9BzK4bODql9xOY6lykM3W9DD3sA1cS+SSvgfMOhP9udpVdK0y1cOGcS4fzNlVn/WoLtiFj/IPwb06m7ZFHIP83YnSCte02dK5nzu/TU79uPJx89hvzEB0MphnLezBTudcmz3BN0f9J8Vx91Rl/GO0D3ODhcPmzLGKNJODWzwvNHl/Ocfl1SWTzkk4SqYwlp6rLMQ4VqtrgQ7yKu875N22QifKnUOZW0nPwI7NTJ+dYNbuXamCHr/Ar4rbxi1d3VusDDofLp6A58/3fgmM7oyrILnsOzVhkXLTEuFknA6dh7+CBWDIFmKmQ/sibC816BgR0m0dT7E1WJbPQVjKBWzTvFZR6W/ANa/cUbtDQ+Vk6kuAL9dyLOvfyBKoIZTlGrEfkh2Ewg+cJij1PhgwO6RI9jZ54FQOpa+b2BAmBs+qWqGsJOqVCFOztABGa57k/wLqXEd55RPU6MHG0H0GFqvFl07h00tCOkfs0ff2a+aQbf07Jcbm984idxNCWvT6/sqjLQ6fC5uaVvRXFYCwAknFclGhudAjqN54OxaMfsrQ== test@test

connection refused

Hello . when running fleex scan, sometimes it throws an error like this - FATA[0001] dial tcp ip:2266 : connect: connection refused . using DigitalOcean.

Hey

Hey Hey Hey

61795350

Where is the BuyMeaCoffee Link? ๐Ÿ‘€

Hey Hey

(Sorry, too much coffee)

fleex build not working properly

Hi i am using linode with fleex

when i am creating a new image with fleex build -d (with or without -d, it doesn't matter) the image is does not get created but and the VPS is getting deleted immediatly when the fleex build command is executed, so there is not enough time to make an image.

I guess it has to do with the merge from 13th of august.
1107e6b

fleex build
everthings getting installed.
INFO[0894] Fleet/Box deleted! <-- so there is no time for creating a image.

the image is getting build, but receives an error because the vps is deleted.

If you need more info, let me know.

Delete Fleet/Boxes on command fail

So i run fleex scan with the --delete flag, for some reason the file copying failed and hence the command didn't run. But also, the boxes were not deleted. Imagine my surprise a couple of hours later.
I think on command fail the rest of the clean up should still go through.

"terminal make raw:inappropriate ioctl for device"

Hello,

I noticed when running fleex scans from within a bash loop, it causes an issue with SSH. I have not been able to figure out the solution to this yet, but it should be easy to reproduce.

Error I get: FATA[0002] terminal make raw:inappropriate ioctl for device

Working bash script

#!/bin/bash
fleex scan -n pwn -i "/home/myInput.txt" -c "~/go/bin/httpx -l {{INPUT}} -o {{OUTPUT}}" -o "/home/myOutput.txt"

Erroring bash script

#!/bin/bash
while read f; do
  FILE="/home/$f.txt"
  fleex scan -n pwn -i "${f}" -c "~/go/bin/httpx -l {{INPUT}} -o {{OUTPUT}}" -o "/home/${f}-output.txt"
done </home/hosts.txt

You should even be able to reproduce with less code...

#!/bin/bash
while read f; do
  fleex scan -n pwn -i "/home/myInput.txt" -c "~/go/bin/httpx -l {{INPUT}} -o {{OUTPUT}}" -o "/home/myOutput.txt"
done </home/hosts.txt

Possible code in question:

state, err := terminal.MakeRaw(fd)

Possible solution 1: golang/go#19909
Possible solution 2: c-bata/go-prompt#88

Thanks!

Add ssh key creation in the init command

Add the creation of ssh keys in the init command that are used by default

Something like:

ssh-keygen -t rsa

these keys automatically will be part of the fleex configs folder and will be found in the path HOME/.config/fleex/configs/ssh or something like this

Implement a better solution for SCP feature command

Actual SCP feature:

func SendSCP(source string, destination string, IP string, PORT int, username string) {
	utils.RunCommand("scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -P "+strconv.Itoa(PORT)+" "+source+" "+username+"@"+IP+":"+destination, false)
}

Use golang library

better ssh command

use "golang.org/x/crypto/ssh" library

fleex ssh -n fleex-test-1 -p custom
Linux debian 5.10.0-18-arm64 #1 SMP Debian 5.10.140-1 (2022-09-02) aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Oct  5 15:16:55 2023 from 192.168.64.1
debian@debian:~$ 

Failed to send file: failed to stat source file Error

Hello,

When I'm trying to send this command:

fleex scan -n pwn -i list.txt -o scan-results.txt -c "findomain -f {{INPUT}} -o {{OUTPUT}}"

The contents of list.txt contains a list of domains.

I get this error:

FATA[0004] Failed to send file: failed to stat source file: err=stat /tmp/XXXXXX/input/chunk-pwn-2: no such file or directory

May I know what can be the issue?

Thoughts on the project :D

looking at the idea of the project i think this can be a very successful project within the time being with improvements, i didn't take a look at the code which is beyond the scope of this comment, however here are some things you can add to make it a bit nicer.

1)>> add a web UI: I think given the times a webUI would make this project get out there alot more, the ui would include such things as a User dashboard / settings tab, settings management tab, conguration storage which would allow the user to reload certian settings they have used in the past. user/host information and updates which will allow the user to look at the load the VPS's take on their system or CPU's.

2)>> Database's: i think for settings the use of YAML or YML configuration files is a really good idea, however given this project might get larger and larger over the years (if you choose to keep managing this project instead of leaving it as it) then the use of MySQL, SQLServer, PostGreSQL, MongoDb, or other databases might be a good idea ESPECIALLY if you implement previous setting configurations by the user as said in option 1 of implementing a web UI. For my personal cyber weapons and pen testing/blue team security tools which utilize a web UI i always use sessions, and in order to load previous values from those sessions i will always store them in a MongoDB server that i made using golangs drivers for databases, and third party golang mongoDB drivers. i think it might improve alot more to this project

3)>> Cross platform: If you choose to keep this project up you should add a simple makefile or mkconfig file or exe or ELF that someone could easily install this utility on, this is really only if the tool gets bigger, an example would be if you implement databases, and large web user interfaces and graphical user interfaces. Another thing about making it more cross platform would be how much people would use this, sure alot of people operate on linux and when you use a VPS you are most likely an expert at this or learning, however in the case this project manages to get alot bigger then it would be best to make an auto configuration file and system setup file for people who are newer to this kind of thing.

4)>> API Usage: this would be a last minute thing however it might be good to make the use of LUA, LUA and golang work great together ESPECIALLY if you want people to contribute to your project and make it better in every way they think fits the project, most projects like nmap, zenmap, wireshark, metasploit etc use scirpting languages like LUA to utilize plugins for their security tool, this might be a cool thing to add in the further future

5)>> Adding automation: since this tool as said allows you to create multiple VPS on cloud providers and use them to distribute your workload. Run tools like masscan, puredns, ffuf, httpx or anything you need and get results quickly! you should add something to automate tools, like masscan, ffuf, httpx, etc and output them on something like the web UI, given how go works around its syscall and system operations it would work amazing with web interfaces if you can structure it correctly and make it very very easy to manipulate and update every so often. This would make FLEEX a much more useful tool for something like security experts or people who are getting into the field.

Conclusion: This project seems amazing, right now it may just be a simple VPS spawner, however you can turn this project into something way more than it was meant to be, there is alot you can add and manipulate and alot you can do to better optimize the code and make user experience more amazing than it is right now. keep up the great work ~ ArkAngeL43

Spawn no longer working on DO

Hello,

Not sure if this is some issue with my own device, but it appears fleex spawn is no longer working for Digital Ocean. If I wait long enough, I eventually get a 524 (a timeout occurred) from Digital Ocean.

$ fleex spawn -c 5 -n pwn
INFO[0001] All spawn requests sent! Now waiting for all boxes to become ready 
FATA[0155] GET https://api.digitalocean.com/v2/droplets?page=1&per_page=9999: 524 <!DOCTYPE html>
...

I'll spend some time to see if I can discover the issue myself.

Thanks!

Change the logic of the scan command

Currently the scan command is very limited, it allows you to insert only 2 key bindings, i.e. INPUT and OUTPUT, which makes it not very dynamic and restrictive for the use of multiple tools

think of a more dynamic system to simplify things

Create logic with also CustomVps

type Provider interface {
	SpawnFleet(fleetName string, fleetCount int) error
	GetBoxes() (boxes []Box, err error)
	GetFleet(fleetName string) (fleet []Box, err error)
	GetBox(boxName string) (Box, error)
	ListImages() error
	RemoveImages(name string) error
	RunCommand(name, command string, port int, username, password string) error
	CountFleet(fleetName string, boxes []Box) (count int)
	DeleteFleet(name string) error
	DeleteBoxByID(id string) error
	DeleteBoxByLabel(label string) error
	CreateImage(diskID int, label string) error
}

implement for custom vps

{
    "settings": {
        "provider": "custom"
    },
    "ssh_keys": {
        "public_file": "id_rsa.pub",
        "private_file": "id_rsa"
    },
    ...
    ...
     "custom_vms": [
        {
            "provider": "utm",
            "instance_id": "fleex-1",
            "public_ip": "IP",
            "ssh_port": 22,
            "username": "USERNAME",
            "password": "PASSWORD",
            "key_path": "/path/to/your/private-key.pem",
            "tags": [
                "staging"
            ]
        }
    ]
}

Fleex unable to build/scan

hello,

so i am having a problem where i receive an error during build process.
here's the error:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x7d325c]

goroutine 1 [running]:
golang.org/x/crypto/ssh.(*connection).clientAuthenticate(0xc00021e080, 0xc00021c000)
        /root/go/pkg/mod/golang.org/x/[email protected]/ssh/client_auth.go:65 +0x53c
golang.org/x/crypto/ssh.(*connection).clientHandshake(0xc00021e080, {0xc000349e00, 0x12}, 0xc00021c000)
        /root/go/pkg/mod/golang.org/x/[email protected]/ssh/client.go:113 +0x285
golang.org/x/crypto/ssh.NewClientConn({0xb02c40, 0xc000010738}, {0xc000349e00, 0x12}, 0xc000135980)
        /root/go/pkg/mod/golang.org/x/[email protected]/ssh/client.go:83 +0x12e
golang.org/x/crypto/ssh.Dial({0xa1693f?, 0xa1cd45?}, {0xc000349e00, 0x12}, 0xc000135980)
        /root/go/pkg/mod/golang.org/x/[email protected]/ssh/client.go:177 +0x59
github.com/FleexSecurity/fleex/pkg/sshutils.Connect({0xc000349e00, 0x12}, {0xa16e5f, 0x4}, {0xc000349d70?, 0xa3939c?})
        /root/go/pkg/mod/github.com/!fleex!security/[email protected]/pkg/sshutils/sshutils.go:170 +0x1ac
github.com/FleexSecurity/fleex/pkg/sshutils.GetConnectionBuild({0xc00024f040, 0xf}, 0xa163b5?, {0xa16e5f, 0x4}, {0xa1b05d, 0xd})
        /root/go/pkg/mod/github.com/!fleex!security/[email protected]/pkg/sshutils/sshutils.go:156 +0x85
github.com/FleexSecurity/fleex/cmd.glob..func1(0xe17d20?, {0xa16d83?, 0x0?, 0x0?})
        /root/go/pkg/mod/github.com/!fleex!security/[email protected]/cmd/build.go:131 +0xb0b
github.com/spf13/cobra.(*Command).execute(0xe17d20, {0xe52350, 0x0, 0x0})
        /root/go/pkg/mod/github.com/spf13/[email protected]/command.go:860 +0x663
github.com/spf13/cobra.(*Command).ExecuteC(0xe17aa0)
        /root/go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x3b4
github.com/spf13/cobra.(*Command).Execute(...)
        /root/go/pkg/mod/github.com/spf13/[email protected]/command.go:902
github.com/FleexSecurity/fleex/cmd.Execute()
        /root/go/pkg/mod/github.com/!fleex!security/[email protected]/cmd/root.go:45 +0x25
main.main()
        /root/go/pkg/mod/github.com/!fleex!security/[email protected]/main.go:6 +0x17

both linode and digitalocean showed the same error, but the images were successfully built.
i tried to re do all of the process on my 2nd machine and it still showed the same error.

really appreciate if anybody would point out my mistake.

thank you

Enhancement - Dynamic input distribution

Current implementation make equal chunks and send for scan. But if one chunk takes more time to complete the job all other machine sits idle. There is an option -d to delete upon completion but this is not helpful if some chunk requires more time.

Instead of making static chunk like lines_count(input_file)/len(fleet), dynamically distributing using a loop by sending few lines for fleet be helpful.

Large file not split evenly

Hello,

I was attempting to scan a large file split across 10 boxes, but found some of the boxes were taking a lot longer to finish than others. Looking at the split files, this is what I found...

$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-1 | wc -l
14490760
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-2 | wc -l
537
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-1 | wc -l
14490760
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-2 | wc -l
537
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-3 | wc -l
26
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-4 | wc -l
75382
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-5 | wc -l
30
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-6 | wc -l
6830214
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-7 | wc -l
15
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-8 | wc -l
9
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-9 | wc -l
23415813
$ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-10 | wc -l
80

Maybe there's something I'm not doing correctly. The command used: fleex scan -n pwn -i myfile.txt -c "cat {{INPUT}} | ~/go/bin/dnsx >> {{OUTPUT}}" -o output.txt

Thanks!

Default username not changed

Default username not changed after changed username in config.
fleex ssh connect with default username op not and connet with custum user name root in config

2021-07-08 08_39_22-Window

provider: linode
public-ssh-file: id_rsa.pub
private-ssh-file: id_rsa
linode:
  token: 71c0d8ec6bd5
  region: eu-central
  size: g6-nanode-1
  image: private/12937769
  port: 22
  username: root
  password: ttpTT4fab$tm
digitalocean:
  token: YOUR_DIGITALOCEAN_TOKEN
  region: fra1
  size: s-1vcpu-1gb
  image: 12345678 # put your image id here
  port: 2266
  username: op
  password: USER_PASSWORD
  tags:
    - vps
    - fleex

ssh authentication issue

every time I run fleex scan ( digital ocean), it gives the below error message

(( ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain ))

Unable to Build Images with fleex,

I have a digital ocean account and been trying to build an image and try out the fleex utility

I have added the DO token in the config.yaml

I did not change anything on the config file, though it says

FATA[0008] POST https://api.digitalocean.com/v2/droplets: 422 (request "f1...") xxxx.d:6d:80 are invalid key identifiers for Droplet creation.

when I run fleex build -f build/common.yaml or Just fleex build

I am sure that my DO token is valid. I ensured that the password is meeting its requirement. What else am I missing?

error when running distributed httpx scan

hi,
i use linode as provider, i have spawn 10 box named galgari and tried to run this command:
fleex scan -i subdomains.txt -o output -c '~/go/bin/httpx -random-agent -no-color -ports 81 -l {{INPUT}} -o {{OUTPUT}' -n galgari

but it throw this error:
FATA[0015] SEND DIR ERROR: failed to read scp message header: err=scp: /tmp/fleex-1630030247030483436-chunk-out-galgari-9: No such file or directory

429 Too Many Requests

linodes fleex spawn got FATA[0040] Error. HTTP status code: 429 Too Many Requests

2021-07-04 21_42_44-Window

scp issue

scp is not working when the pwn box created with default user as root user. It is replacing /root with /home.

error

I think this is because of this code in scp.go

if strings.Contains(destinationFlag, home) {
	destinationFlag = strings.ReplaceAll(destinationFlag, home, "/home/"+usernameFlag)
}

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.