mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-17 21:45:26 +00:00
* introduce typescript files generation using ast + tmpl * feat valid ts with scraping * feat remove old logic + tsdocs for all modules * fix ikev and related bugs * typescript docs for js modules * lint,build + ldap realm fix * go mod tidy * fix named imports ast parsing * fix ast code generation errors * complete support for ts files generation * support go global/const in ts docs * updated template * feat: typescript using go code generation * nuke jsdoc generator * update generated ts dir structure * fix multifile ts gen issue * fix panic in ts code gen * fix test * update docs of js libs * feat: add doc+example for every js class,function,method * fix missing quotes in ikev example --------- Co-authored-by: Sandeep Singh <sandeep@projectdiscovery.io>
115 lines
2.8 KiB
Go
115 lines
2.8 KiB
Go
package rdp
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/praetorian-inc/fingerprintx/pkg/plugins"
|
|
"github.com/praetorian-inc/fingerprintx/pkg/plugins/services/rdp"
|
|
"github.com/projectdiscovery/nuclei/v3/pkg/protocols/common/protocolstate"
|
|
)
|
|
|
|
type (
|
|
// RDPClient is a minimal RDP client for nuclei scripts.
|
|
// @example
|
|
// ```javascript
|
|
// const rdp = require('nuclei/rdp');
|
|
// const client = new rdp.Client();
|
|
// ```
|
|
RDPClient struct{}
|
|
)
|
|
|
|
type (
|
|
// IsRDPResponse is the response from the IsRDP function.
|
|
// this is returned by IsRDP function.
|
|
// @example
|
|
// ```javascript
|
|
// const rdp = require('nuclei/rdp');
|
|
// const isRDP = rdp.IsRDP('acme.com', 3389);
|
|
// log(toJSON(isRDP));
|
|
// ```
|
|
IsRDPResponse struct {
|
|
IsRDP bool
|
|
OS string
|
|
}
|
|
)
|
|
|
|
// IsRDP checks if the given host and port are running rdp server.
|
|
// If connection is successful, it returns true.
|
|
// If connection is unsuccessful, it returns false and error.
|
|
// The Name of the OS is also returned if the connection is successful.
|
|
// @example
|
|
// ```javascript
|
|
// const rdp = require('nuclei/rdp');
|
|
// const isRDP = rdp.IsRDP('acme.com', 3389);
|
|
// log(toJSON(isRDP));
|
|
// ```
|
|
func (c *RDPClient) IsRDP(host string, port int) (IsRDPResponse, error) {
|
|
resp := IsRDPResponse{}
|
|
|
|
timeout := 5 * time.Second
|
|
conn, err := protocolstate.Dialer.Dial(context.TODO(), "tcp", fmt.Sprintf("%s:%d", host, port))
|
|
if err != nil {
|
|
return resp, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
server, isRDP, err := rdp.DetectRDP(conn, timeout)
|
|
if err != nil {
|
|
return resp, err
|
|
}
|
|
if !isRDP {
|
|
return resp, nil
|
|
}
|
|
resp.IsRDP = true
|
|
resp.OS = server
|
|
return resp, nil
|
|
}
|
|
|
|
type (
|
|
// CheckRDPAuthResponse is the response from the CheckRDPAuth function.
|
|
// this is returned by CheckRDPAuth function.
|
|
// @example
|
|
// ```javascript
|
|
// const rdp = require('nuclei/rdp');
|
|
// const checkRDPAuth = rdp.CheckRDPAuth('acme.com', 3389);
|
|
// log(toJSON(checkRDPAuth));
|
|
// ```
|
|
CheckRDPAuthResponse struct {
|
|
PluginInfo *plugins.ServiceRDP
|
|
Auth bool
|
|
}
|
|
)
|
|
|
|
// CheckRDPAuth checks if the given host and port are running rdp server
|
|
// with authentication and returns their metadata.
|
|
// If connection is successful, it returns true.
|
|
// @example
|
|
// ```javascript
|
|
// const rdp = require('nuclei/rdp');
|
|
// const checkRDPAuth = rdp.CheckRDPAuth('acme.com', 3389);
|
|
// log(toJSON(checkRDPAuth));
|
|
// ```
|
|
func (c *RDPClient) CheckRDPAuth(host string, port int) (CheckRDPAuthResponse, error) {
|
|
resp := CheckRDPAuthResponse{}
|
|
|
|
timeout := 5 * time.Second
|
|
conn, err := protocolstate.Dialer.Dial(context.TODO(), "tcp", fmt.Sprintf("%s:%d", host, port))
|
|
if err != nil {
|
|
return resp, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
pluginInfo, auth, err := rdp.DetectRDPAuth(conn, timeout)
|
|
if err != nil {
|
|
return resp, err
|
|
}
|
|
if !auth {
|
|
return resp, nil
|
|
}
|
|
resp.Auth = true
|
|
resp.PluginInfo = pluginInfo
|
|
return resp, nil
|
|
}
|