Skip to content

A C# library for detecting Discord/Steam phishing links using the Sinking Yachts API.

License

Notifications You must be signed in to change notification settings

akacdev/SinkingYachts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sinking Yachts 🐟

A C# library for detecting Discord/Steam phishing links using the Sinking Yachts API.

Warning
Sinking Yachts is currently in the process of being discontinued and replaced with the upstream Fish Fish API. Expect this library to eventually become archived and marked as deprecated. Daily statistics have already been shut down.

Usage

Available on NuGet as SinkingYachts, methods are available under the public class YachtsClient.

https://www.nuget.org/packages/SinkingYachts

Features

  • Made with .NET 6
  • Fully async
  • Access to a Discord-related phishing database of over 15 500 confirmed malicious domains
  • Regex matching of domains and automatic phishing detection
  • Different modes for storing and loading phishing domains
  • Instant updates through WebSocket events
  • Domain whitelisting to decrease false positives
  • Customizable caching to decrease load

Example Project

Under the Example directory you can find a working demo Discord bot that implements this library.

07.09. 19:13:59 [Discord] Discord.Net v3.8.0 (API v9)
07.09. 19:13:59 [Gateway] Connecting
07.09. 19:14:01 [Gateway] Connected
07.09. 19:14:02 [Bot] Ready to protect your server from 15601 phishing domains
07.09. 19:14:02 [Bot] Domains added within the past day: 8
07.09. 19:14:02 [Bot] Domains deleted within the past day: 0
07.09. 19:14:02 [Gateway] Ready

Code Samples

Check message content

bool isPhishing = await Yachts.IsPhishing("hello https://hypesquadacademy-apply.ml");
//👉 True

Check a domain

bool isPhishing = await Yachts.IsPhishingDomain("warning-selectioneventhype.gq");
//👉 True

Get the latest domains

string[] domains = (await Yachts.GetRecent(TimeSpan.FromDays(1))).Where(x => x.Type == ChangeType.Add).SelectMany(x => x.Domains).ToArray();
//👉 steamcommunitysiv.top, wvwww-roblox.com, discord-download.win, steamcoumunity.eu, streamcummonity.com, streamcommunity.org, join-event-hypesquad.com, steamcommunityzowe.top

Get the database size

int size = await Yachts.GetDatabaseSize();
//👉 15601

Available methods

  • Task<Change[]> GetRecent(TimeSpan time)
  • Task<Change[]> GetRecent(int seconds)
  • Task IsPhishing(string content)
  • Task IsPhishingDomain(string domain)
  • Task GetDatabaseSize()
  • Task<string[]> GetPhishingDomains()

Available events (requires StorageMode.LocalWS)

  • EventHandler<string> DomainAdded
  • EventHandler<string> DomainDeleted

Statistics from the past week

Date New domains found
10.11.2022 + 37
11.11.2022 + 14
12.11.2022 + 25
13.11.2022 + 23
14.11.2022 + 21
15.11.2022 + 30
16.11.2022 + 14

Recently flagged domains

stcommunity.click
steamppowered.store
steamcommunltu.online
steamncommnuity.com
staemconnunity.ru
steamcomrunity.ru
dlscordjbost.com
steamcommynltiy.net.ru
steamcommynltiy.pp.ru
steancommunutty.ru
hypesquad-gg.com

Missing domains

Found a Discord/Steam phishing domain that isn't yet present in the database? Send it into the #domain-reports channel on our Discord server or open an issue in this repository.

Resources

The official Sinking Yachts Discord server has disabled invites at the moment. This will be updated once the server is open to the public again.

Releases

No releases published

Languages