12/**3* SMBClient is a client for SMB servers.4* Internally client uses github.com/zmap/zgrab2/lib/smb/smb driver.5* github.com/projectdiscovery/go-smb2 driver6* @example7* ```javascript8* const smb = require('nuclei/smb');9* const client = new smb.SMBClient();10* ```11*/12export class SMBClient {131415// Constructor of SMBClient16constructor() {}17/**18* ConnectSMBInfoMode tries to connect to provided host and port19* and discovery SMB information20* Returns handshake log and error. If error is not nil,21* state will be false22* @example23* ```javascript24* const smb = require('nuclei/smb');25* const client = new smb.SMBClient();26* const info = client.ConnectSMBInfoMode('acme.com', 445);27* log(to_json(info));28* ```29*/30public ConnectSMBInfoMode(host: string, port: number): SMBLog | null | null {31return null;32}333435/**36* ListSMBv2Metadata tries to connect to provided host and port37* and list SMBv2 metadata.38* Returns metadata and error. If error is not nil,39* state will be false40* @example41* ```javascript42* const smb = require('nuclei/smb');43* const client = new smb.SMBClient();44* const metadata = client.ListSMBv2Metadata('acme.com', 445);45* log(to_json(metadata));46* ```47*/48public ListSMBv2Metadata(host: string, port: number): ServiceSMB | null | null {49return null;50}515253/**54* ListShares tries to connect to provided host and port55* and list shares by using given credentials.56* Credentials cannot be blank. guest or anonymous credentials57* can be used by providing empty password.58* @example59* ```javascript60* const smb = require('nuclei/smb');61* const client = new smb.SMBClient();62* const shares = client.ListShares('acme.com', 445, 'username', 'password');63* for (const share of shares) {64* log(share);65* }66* ```67*/68public ListShares(host: string, port: number, user: string): string[] | null {69return null;70}717273/**74* DetectSMBGhost tries to detect SMBGhost vulnerability75* by using SMBv3 compression feature.76* If the host is vulnerable, it returns true.77* @example78* ```javascript79* const smb = require('nuclei/smb');80* const isSMBGhost = smb.DetectSMBGhost('acme.com', 445);81* ```82*/83public DetectSMBGhost(host: string, port: number): boolean | null {84return null;85}868788}89909192/**93* HeaderLog Interface94*/95export interface HeaderLog {9697ProtocolID?: Uint8Array,9899Status?: number,100101Command?: number,102103Credits?: number,104105Flags?: number,106}107108109110/**111* NegotiationLog Interface112*/113export interface NegotiationLog {114115SecurityMode?: number,116117DialectRevision?: number,118119ServerGuid?: Uint8Array,120121Capabilities?: number,122123SystemTime?: number,124125ServerStartTime?: number,126127AuthenticationTypes?: string[],128129HeaderLog?: HeaderLog,130}131132133134/**135* SMBCapabilities Interface136*/137export interface SMBCapabilities {138139DFSSupport?: boolean,140141Leasing?: boolean,142143LargeMTU?: boolean,144145MultiChan?: boolean,146147Persist?: boolean,148149DirLeasing?: boolean,150151Encryption?: boolean,152}153154155156/**157* SMBLog Interface158*/159export interface SMBLog {160161NTLM?: string,162163GroupName?: string,164165HasNTLM?: boolean,166167SupportV1?: boolean,168169NativeOs?: string,170171Version?: SMBVersions,172173Capabilities?: SMBCapabilities,174175NegotiationLog?: NegotiationLog,176177SessionSetupLog?: SessionSetupLog,178}179180181182/**183* SMBVersions Interface184*/185export interface SMBVersions {186187Major?: number,188189Minor?: number,190191Revision?: number,192193VerString?: string,194}195196197198/**199* ServiceSMB Interface200*/201export interface ServiceSMB {202203OSVersion?: string,204205NetBIOSComputerName?: string,206207NetBIOSDomainName?: string,208209DNSComputerName?: string,210211DNSDomainName?: string,212213ForestName?: string,214215SigningEnabled?: boolean,216217SigningRequired?: boolean,218}219220221222/**223* SessionSetupLog Interface224*/225export interface SessionSetupLog {226227SetupFlags?: number,228229TargetName?: string,230231NegotiateFlags?: number,232233HeaderLog?: HeaderLog,234}235236237238