GithubHelp home page GithubHelp logo

duo-psmodule's Introduction

Duo-PSModule Documentation

======================

This is a basic powershell wrapper intended to expose the capabilities of the Duo Admin API Duo Admin API.


A note about TLS 1.2

Momentum is shifting to clients and servers supporting TLS 1.2. This plugin is capable of connecting to Duo with TLS 1.2 but doesn't do anything to direct the protocol used rather it relies on the SystemDefault configured for schannel on the host

If you want to force TLS 1.2 make sure your system can actually support it.

force TLS 1.2

If you decide you want to force this module to use TLS1.2 add this code block to your Duo_org.ps1 or your $PROFILE script.

try
{
   [Net.ServicePointManager]::SecurityProtocol  = [Net.SecurityProtocolType]::Tls12
}
catch
{
   Write-Warning $_.Exception.Message
}

Getting Started

Installation:

  1. Download the module (git clone or download the zip)
  2. Place the module in your PSModulePath hint Read more about PSModulePath Here
Write-Host $env:PSModulePath
  1. Get the Integration Key, Secret Key and API Hostname for your Admin API Integration First Steps optional The directory_key for a directory can be found by navigating to Users โ†’ Directory Sync in the Duo Admin Panel, and then clicking on the configured directory. This is required for manually syncing users.
  2. Create a file called Duo_org.ps1 (example content below) and save it in the directory with the Duo.psd1 and Duo.psm1 files.
<# Duo_org.ps1 #>
# define the default Duo Org/Instance you want to use, useful if you have more than one.
[string]$DuoDefaultOrg = "prod"

[Hashtable]$DuoOrgs = @{
                        prod = [Hashtable]@{
                                iKey  = [string]"DIxxxxxxxxxxxxxxxxxx"
                                sKey = [string]"YourSecretsHere"
                                apiHost = [string]"api-nnnnnxnx.duosecurity.com"
                                directory_key = [string]"XXXXXXXXXXXXXXXXXXXX"
                               }
                        etst = [Hashtable]@{
                                iKey  = [string]"DIxxxxxxxxxxxxxxxxxx"
                                sKeyEnc = [string]"Big Long protected string on 1 line here"
                                apiHost = [string]"api-nnnnnxnx.duosecurity.com"
                                directory_key = [string]"XXXXXXXXXXXXXXXXXXXX"
							   }
                       }

if you'd like and added layer of protection to this key sitting in your file you can encrypt the string! After you've loaded the duo module you can use helper function duoEncskey. Paste your plaintext key into the dialog and paste the resulting output into the value for sKeyEnc in the configuration block (see etst above)

Example Installation:

  1. Open a command prompt
cd %userprofile%\Documents\WindowsPowerShell\Modules
git clone https://github.com/mbegan/Duo-PSModule.git Duo
cd Duo
notepad Duo_org.ps1
  1. Paste the basic format for the Duo_org.ps1 file listed Above.
  2. Modify file as required (Update yourdomain, API Token you generated for that org etc)
  3. Optionally after the Duo module is imported generate the encrypted string and replace the plaintext value
  4. Save the file

Basic Usage:

  1. Launch powershell (or even better, the powershell ise)
  2. Import the Duo Module
  3. Use
PS C:\> Import-Module Duo
PS C:\> $users = duoGetUser
PS C:\> $users.Count
10

PS C:\> foreach ($u in $users) {Write-Host $u.username `t $u.user_id `t $u.phones[0].number}
user1 	 DUxxxxxxxxxxxxxxxxx0 	 +15556543210
user2 	 DUxxxxxxxxxxxxxxxxx1 	 +15556543211
user3 	 DUxxxxxxxxxxxxxxxxx2 	 +15556543212
user4 	 DUxxxxxxxxxxxxxxxxx3 	 +15556543213
user5 	 DUxxxxxxxxxxxxxxxxx4 	 +15556543214
user6 	 DUxxxxxxxxxxxxxxxxx5 	 
user7 	 DUxxxxxxxxxxxxxxxxx6 	 +15556543215
user8 	 DUxxxxxxxxxxxxxxxxx7 	 
user9 	 DUxxxxxxxxxxxxxxxxx8 	 +15556543216
user10 	 DUxxxxxxxxxxxxxxxxx9 	 +15556543217

When elements are returned in the API they are powershell objects, you can treat them as such.

PS C:\> $u | gm

   TypeName: System.Management.Automation.PSCustomObject

Name          MemberType   Definition                                      
----          ----------   ----------                                      
Equals        Method       bool Equals(System.Object obj)                  
GetHashCode   Method       int GetHashCode()                               
GetType       Method       type GetType()                                  
ToString      Method       string ToString()                               
desktoptokens NoteProperty System.Object[] desktoptokens=System.Object[]   
email         NoteProperty System.String email=first.last@company.tld
groups        NoteProperty System.Object[] groups=System.Object[]          
last_login    NoteProperty System.Int32 last_login=1453410816              
notes         NoteProperty System.String notes=                            
phones        NoteProperty System.Object[] phones=System.Object[]          
realname      NoteProperty System.String realname=First Last        
status        NoteProperty System.String status=active                     
tokens        NoteProperty System.Object[] tokens=System.Object[]          
username      NoteProperty System.String username=user1                 
user_id       NoteProperty System.String user_id=DUxxxxxxxxxxxxxxxxx0      

The commands implimented are listed below, if you have a specific use case ask away i'll post an example. If you are handy with powershell feel free to impliment additional functionality and send a PR.

NOTE in most cases the Create* functions also serve to Modify if the object identifier of an existing object is provided

Current Commands

  • duoAssocUserToGroup
  • duoAssocUserToPhone
  • duoAssocUserToToken
  • duoCreateActivationCode
  • duoCreateAdmin
  • duoCreateIntegration
  • duoCreatePhone
  • duoCreateToken
  • duoCreateUser
  • duoDeleteAdmin
  • duoDeleteGroup
  • duoDeleteIntegration
  • duoDeletePhone
  • duoDeleteToken
  • duoDeleteUser
  • duoEnrollUser
  • duoGetAdmin
  • duoGetGroup
  • duoGetInfo
  • duoGetIntegration
  • duoGetLog
  • duoGetPhone
  • duoGetToken
  • duoGetUser
  • duoGetUserBypass
  • duoSendSMSCodes
  • duoSoftTotpClient
  • duoSyncUser

duo-psmodule's People

Contributors

bradvido avatar joshschwarz avatar jsmartbnl avatar justinellison avatar lloydsmart avatar mbegan avatar rjrbytes 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

Watchers

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

duo-psmodule's Issues

Modify duo users

Is it possible to modify existing users with the current version? (email address or realname) if not, I should be able able to piece something together, but I figured I would ask first.

Thanks again for your work on this... It has been very helpful.

Encryption sKey

Hi Team.

So i have put out Skey through the encryption command and added the output back in to the org file. The sKey is long obviously and no matter if i have that on one line or multiple lines i am unable to authenticate

Am i missing a trick with this?

need help with duoCreateToken

@mbegan :

duoCreateToken -type yk -serial "$SERIAL" -secret "$SECRET" -private_id "$PID"
results in:

PS C:\Windows\system32> D:\Users\macias\scripts\posh\new-duousers\new-duousers.ps1
40001 ; Missing required request parameters
At D:\Users\macias\Documents\WindowsPowerShell\Modules\Duo\Duo.psm1:31 char:5
+     throw $formatError
+     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], FormatException
    + FullyQualifiedErrorId : 40001 ; Missing required request parameters

per the Duo Admin site for importing a Yubikey, the following three elements are needed:
<serial number>,<private identity>,<secret key>

please advise as to what required parameters i am missing -- looking forward to the help!

-jm

duoGetAdmin missing "Duo Push" field

I am trying to get a list of Admin users using duoGetAdmin, I've noticed that it didn't return a field for "Duo Push". When I export the Admin list from the Dou Admin console, it includes the Duo Push column. How can I include this column using the DuoGetAdmin command?

duophonecreate and duoAssocUserToPhone

When I am trying to create a user with another country code, apart from US , with valid phone number, it doesn't work.
I get 40003 ; Duplicate resource error. Even though I am trying to add a phone number and not a hardware token and there is no duplicate entry for the phone number as well.

for ($duouser)
{
duocreatephone -dOrg aaprod -type Mobile -number +31201111070 -name Mobile
Write-Host "created"
$duophoneresponse = duocreatephone -dOrg aaprod -type Mobile -number +31201111070 -name Mobile
duoAssocUserToPhone -dOrg aaprod -user_id $duouser.user_id -phone_id $duophoneresponse.phone_id
}

duoDeleteUser = 20 chars required?

Thanks for creating this module. Just testing it out and I've created a test user successfully. When I attempt to delete that user, using: duoDeleteUser -user_id testcde5 I get an error:

duoDeleteUser : Cannot validate argument on parameter 'user_id'. The character length (8) of the argument is too short. Specify an argument with a length that is greater than or equal to "20", and then try the command again.

So, change the validate length in your psm1 file and then I get a 40401 resource not found response.

Is the value for User_ID supposed to be something other than their username in Duo?

Can't authenticate?

I created the Duo Admin API app, followed the instructions to enter my keys into the duo_org.ps1 file.

I try using duogetuser and it always says "40102 ; Invalid integration key in request credentials". I have tried behind various networks/firewalls. I have deleted the app from duo side and re created it, making sure every character is exactly correct for my keys.

Does this module just not work with the latest version of Duo api? It seems like this project has been dead for a while. Would really love to get this working and use it.

Null Valued Expression

Trying to get this Module working for the first time and regardless of what execution policy I run under I'm getting the following error when running duoGetUser

PS C:\Program Files\WindowsPowerShell\Modules\Duo> duoGetUser | select *
_duoBuildCall : You cannot call a method on a null-valued expression.
At C:\Program Files\WindowsPowerShell\Modules\Duo\Duo.psm1:591 char:20

  • ... $request = _duoBuildCall -method $method -path $path -dOrg $dOrg -pa ...
  •             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : InvalidOperation: (:) [_duoBuildCall], RuntimeException
    • FullyQualifiedErrorId : InvokeMethodOnNull,_duoBuildCall

Powershell Version is 5.1
Import-Module Duo completes without errors and I was even able to run the command to encrypt by secret key after importing the module. It looks like any command I run that actually utilizes the API returns this error.

Would like to know if you're still maintain this

Hey I would like to know if you are still maintaining this or need help maintaining this because I think this module is great. I don't have any public commits since years ago but I would like to start contributing to this project

How can I pull individual properties out of the objects?

Can you provide an example of how to pull the phone_id out of the phones object from duoGetUset?

I'm trying to pull the phone_id property out so I can use it in duoSendSMS.

I've tried select-property and expandproperty methods and they either don't seem to work, or say that phone_id isn't a valid property.

I apologize if this is more Powershell 101 then an actual implementation of this module, which is serving an awesome purpose for automation I'm writing.

I've currently devised a way around it by setting phones to a string, splitting it into an array on ";", taking index 7 which is "phone_id=xxxxx", and then stripping "phone_id=" from the result to ultimately get the phone ID but that seems so janky!

If you can provide an example on how to extract phone_id into a string that would be awesome!

Thanks in advance!

Duo User Status

Is it possible to disable a user using the modify duo user? or create user for an existing user and pass it a status parameter to "disable"

duoCreateUser and duoDeleteUser throw 40301 errors

Imported the module
Executed the GetUsers without any issues. All data is shown.
When trying to create or delete users the error 40301 is shown.

Error message:
`40301 ; Access forbidden
At C:\Program Files\WindowsPowerShell\Modules\Duo\Duo.psm1:31 char:5

  • throw $formatError
    
  • ~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : OperationStopped: (:) [], FormatException
    • FullyQualifiedErrorId : 40301 ; Access forbidden`

According to the Duo API website:

  1. Does your framework override the Date header? The HTTP Date: header must be exactly the same string as was signed. This could result in a 40103 error.
  2. Are the Content-Length and Content-Type parameters correct? If not, your parameters may be ignored or you may receive a 40103 response because your signature considered parameters that the service didn't receive.

Why are the errors shown when using the functions duoCreateUser and duoDeleteUser and not with duoGetUser.
Checking the Module all actions use the functions _duoBuildCall and _duoMakeCall. Those functions execute some additional functions to create HMAC and canonicalize params.

I can't find any additional functions called for duoCreateUser or duoDeleteUser.

Thank you for helping.

Enhancement: Allow for Proxy

_duoMakeCall's $request should accept a [System.Net.Proxy] in the .Proxy property.

Need to pass this $Proxy through _duoBuildCall, and any other start-point function (like _duoGetLog).

The Org: is not defined in the Duo_org.ps1 file

C:\windows\system32> $user = duoGetUser -username user
cmdlet _duoBuildCall at command pipeline position 1
Supply values for the following parameters:
dOrg: enc
_duoBuildCall : Cannot validate argument on parameter 'dOrg'. The Org:enc is not defined in the Duo_org.ps1 file

^^^ Since I didn't specify an org, shouldn't it default to $dOrg.

I get the same error for $user = duoGetUser -username user -dOrg $dOrg.

When I don't put anything into the prompt, it says Org is an empty string:

C:\windows\system32> $user = duoGetUser -username user -dOrg $dOrg
cmdlet _duoBuildCall at command pipeline position 1
Supply values for the following parameters:
dOrg:
_duoBuildCall : Cannot validate argument on parameter 'dOrg'. Cannot bind argument to parameter 'org' because it is an empty string.
At C:\Program Files\WindowsPowerShell\Modules\Duo\Duo.psm1:591 char:20

  • ... $request = _duoBuildCall -method $method -path $path -parameters $pa ...
  •             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : InvalidData: (:) [_duoBuildCall], ParameterBindingValidationException
    • FullyQualifiedErrorId : ParameterArgumentValidationError,_duoBuildCall

Here are my variables:

C:\windows\system32> $dOrg
enc

C:\windows\system32> $DuoDefaultOrg
enc

C:\windows\system32> $DuoOrgs

Name Value


unc {apiHost, directory_key, sKey, iKey}
enc {apiHost, directory_key, sKeyEnc, iKey}

Here's my Duo_org.ps1 file:

<# Duo_org.ps1 #>

[string]$DuoDefaultOrg = 'enc'

[Hashtable]$DuoOrgs = @{
unc = [Hashtable]@{
iKey = [string]"XXX"
sKey = [string]"XXX"
apiHost = [string]"api-XXX.duosecurity.com"
directory_key = [string]"XXX"
}
enc = [Hashtable]@{
iKey = [string]"XXX"
sKeyEnc = [string]"Big long key from duoEncsKey"
apiHost = [string]"api-XXX.duosecurity.com"
directory_key = [string]"XXX"
}
}

duoCreateActivationCode does not appear to send the default SMS welcome messages

I'm trying to use duoCreateActivationCode to send the default SMS messages that come with activating the phone through the GUI:

Welcome to Duo! To install the Duo Mobile app click this link!: LINKTEXT
To activate the app, click and open this link with Duo mobile!: LINKTEXT

I've tried:
duoCreateActivationCode -phone_id $DuoPhoneId
duoCreateActivationCode -phone_id $DuoPhoneId -valid_secs "86400"
duoCreateActivationCode -phone_id $DuoPhoneId -valid_secs "86400" -install:$true

duoSendSMSCodes does work, and I will receive an SMS message to my phone with some codes, but it's not the same activation SMS you get when activating a phone.

Does the duoCreateActivationCode support SMS delivery? It does return both the activation_barcode and activation_url at the CLI, so I know the call was at least partially successful.

If duoCreateActivationCode can't send out the standard SMS that would be great to know. Or is there a different way I should call it to make that happen?

Thanks!

DUOCreateToken syntax

I installed the module and I can perfectly use the get commands
When I try to use a POST method like the sample command bellow,
DUOCreateToken -Type h6 -Serial Yubi.00058-1 -Secret 'xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx'

I'm getting 40002 ; Invalid request parameters

Any idea where I made a mistake with the syntax?

Regards

Update-Help issue, any insight?

PS X:\Scripts> Update-Help
Update-Help: Failed to update Help for the module(s) 'Duo' with UI culture(s) {en-US} : The value of the HelpInfoUri key in the module manifest must resolve to a container or root URL on a website where the help files are stored. The HelpInfoUri 'https://github.com/mbegan/Duo-PSModule' does not resolve to a container..

Any plans to update for use with the Duo v2 API?

Specifically for duoGetlog? v1 just dumps 1000 at a time and v2 allows you filter on users etc. I can't seem to get the request to work with v2. I'm guessing the query string is different than what is put together in _duoBuildCall. I'll keep messing with it.

Multiple orgs

Is it possible to get users from multiple orgs at once? I.e. by editing the duo_org file?

Module license?

Hi there,

Do you have a a license agreement for this project? And also for your Okta module project? I'd like to be able to use myself, however my company has pretty strict guidelines on open-source software and requiring some sort of license, like Apache 2.0 (which I see you've used elsewhere).

Thanks in advance!

Dan

Invalid integration key in request credentials

I've tried multiple things. Deleting and recreating the app. I've tried the sKey encrypted and in plaintext. I've verified that TLS 1.2 is enabled.

40102 ; Invalid integration key in request credentials
At C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\Duo\Duo.psm1:31 char:5
throw $formatError

CategoryInfo : OperationStopped: (:) [], FormatException
FullyQualifiedErrorId : 40102 ; Invalid integration key in request credentials

Retrieving all present authentication logs

Good morning,

I just have one quick question concerning the syntax of how to use the "duoGetLog" command. I have over 1000 (1.9K to be exact) authentication logs that I would like to retrieve for statistic purposes, however, the API is limited by only allowing the earliest 1000 logs to be retrieved. I found that you can use "mintime" with the API to specify the time period of the logs, however, I could not seem to figure out how to use it with this wrapper. If you would be able to specify how to use the "mintime" command with your wrapper, it would be greatly appreciated.

Thank you in advance,
Dustin

JSON Max Length error

If the JSON you are retrieving exceeds the default 2MB Powershell limit, the functions that perform imports will fail. I'm working on trying to create an alternate ConvertFrom_Json function that uses the .NET classes to allow you to specify a larger max-length

device identifiers to Duo

Hello.

Are any of the Powershell CMD available here able to upload the device identifiers to Duo?

Creating a new phone with predelay and postdelay

Hi There,

I was just wondering how to use the provided wrapper to create a new phone and add a predelay as well as a postdelay to it, then associate it to a user. I apologize in advance as I understand this is probably an easy command, which I cannot seem to be able to figure out.

Thank you in advance,
Dustin

Duo_org.ps1 instruction incorrect

`<# Duo_org.ps1 #>

define the default Duo Org/Instance you want to use, useful if you have more than one.

[string]$DuoDefaultOrg = "prod"

[Hashtable]$DuoOrgs = @{
prod = [Hashtable]@{
iKey = [string]"DIxxxxxxxxxxxxxxxxxx"
sKey = [string]"YourSecretsHere"
apiHost = [string]"api-nnnnnxnx.duosecurity.com"
directory_key = [string]"XXXXXXXXXXXXXXXXXXXX"
}
etst = [Hashtable]@{
iKey = [string]"DIxxxxxxxxxxxxxxxxxx"
sKeyEnc = [string]"Big Long protected string on 1 line here"
apiHost = [string]"api-nnnnnxnx.duosecurity.com"
directory_key = [string]"XXXXXXXXXXXXXXXXXXXX"
}
}`

Line 12 "etst = [Hashtable]@{" should be "test = [Hashtable]@{"
Based on DUO.psm1 at line 68 "function _testOrg" and a few other lines that reference $duoOrgs[$org]

unless etst has a different meaning. to me a typo is more likely scenario.

API Logs v2

Thought others might find this helpful. Drop this into your Duo.psm1 file. Mintime and Maxtime need to be in 13 digit timestamp format. By default, only 100 records are returned unless a limit is passed. I have not tried the next_offset or sort parameters.

function duoGetLogV2()
{
    <# 
     .Synopsis
      Used to get logs of a given type

     .Description
      Returns a collection of log entries See: https://duo.com/docs/adminapi#logs

     .Example
      # Get all authentication logs from "prod" duo Org
      duoGetLogV2 -maxtime 1639526400000 -mintime 1550188800000 -log authentication -limit 1000
    #>

    param
    (
        [parameter(Mandatory=$false)]
            [ValidateLength(1,100)]
            [String]$dOrg=$DuoDefaultOrg,
        [parameter(Mandatory=$true)]
            [ValidateSet('authentication','administrator','telephony')]
            [String]$log,
        [parameter(Mandatory=$true)]
            [string]$mintime,
        [parameter(Mandatory=$true)]
            [string]$maxtime,
        [parameter(Mandatory=$false)]
            [int]$limit,
        [parameter(Mandatory=$false)]
            [string]$next_offset,
        [parameter(Mandatory=$false)]
            [ValidateSet('asc','desc')]
            [int]$sort
    )

    [string]$method = "GET"
    [string]$path = "/admin/v2/logs/" + $log

    $param = New-Object System.Collections.ArrayList
    $parameters = New-Object System.Collections.Hashtable

    [string[]]$parax =  ("mintime","maxtime","limit","next_offset","sort")

    foreach ($p in $parax)
    {
        $_c = $param.Add($p)
    }

    foreach ($p in $param)
    {
        if (Get-Variable -Name $p -ErrorAction SilentlyContinue) 
        {
            if ((Get-Variable -Name $p -ValueOnly) -ne "")
            {
                $parameters.Add($p,(Get-Variable -Name $p -ValueOnly))
            }
        }
    }

    try
    {
        $request = _duoBuildCall -method $method -path $path -dOrg $dOrg -parameters $parameters
    }
    catch
    {
        #Write-Warning $_.TargetObject
        throw $_
    }
    return $request
}

Get more than 100 users

It looks like right now the duoGetUser command currently only pulls the first 100 users if the user selection. This is the default by the admin api.

Could it be possible to change the command to get ALL users? I may be missing something regarding the parameter, if so I apologize.

Add Alias

Hi

What is the command to add an alias username to an account?

Thanks in advance

set Org for a session

I am looking for a way to set $duoDefaultOrg or some similar variable to one of the Orgs configured in Duo_org.ps1. The module properly sets the default org, however it would be nice to be able to change the org on the fly without having to use -dOrg with every commandlet.

An example of this usage might be...
-Dev and Prod are configured in Duo_org.ps1

  • Dev is set as default
  • I want to set Prod to the default org for some time without editing Duo_org or using -dOrg for every command.

Thanks in advance for your help. I'm not sure if this is something I'm overlooking or a new feature.

duocreatephone

Thanks for posting this on Git...Everyhing seems to work for me with the exception of using the "duocreatephone" cmd and the "-number" parameter. Not sure if I'm using the wrong syntax or what. Many thanks in advance.

PS C:\Program Files\WindowsPowerShell\Modules\Duo> duoCreatePhone -number "1234567890"
40002 ; Invalid request parameters
At C:\Program Files\WindowsPowerShell\Modules\Duo\Duo.psm1:31 char:5

  • throw $formatError
    
  • ~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : OperationStopped: (:) [], FormatException
    • FullyQualifiedErrorId : 40002 ; Invalid request parameters

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.