ctfd

package
v0.0.16 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 12, 2022 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Constants for max file sizes (1mb, 5mb, 25mb, 100mb, 0)
	NoFileSizeLimit    = 0
	OneMB              = 1000000
	FiveMB             = 5000000
	TwentyFiveMB       = 25000000
	OneHundredMB       = 100000000
	TwoHhundredFiftyMB = 250000000
)

Variables

This section is empty.

Functions

func CleanDescription added in v0.0.15

func CleanDescription(description string) string

Clean the description of a CTF event, removing \r\n

func IsCTFEventActive added in v0.0.15

func IsCTFEventActive(event Event) bool

Return if a CTF is currently active

Types

type CTFTeam added in v0.0.15

type CTFTeam struct {
	ID           int      `json:"id"`
	Academic     bool     `json:"academic"`
	PrimaryAlias string   `json:"primary_alias"`
	Name         string   `json:"name"`
	Country      string   `json:"country"`
	Aliases      []string `json:"aliases"`
	Rating       map[string]struct {
		RatingPlace     int     `json:"rating_place"`
		OrganizerPoints float64 `json:"organizer_points"`
		RatingPoints    float64 `json:"rating_points"`
		CountryPlace    int     `json:"country_place"`
	} `json:"rating"`
}

Struct for API Endpoint ctftime.org/api/v1/teams/

type Challenge

type Challenge struct {
	ID             int64  `json:"id"`
	Name           string `json:"name"`
	Description    string `json:"description"`
	ConnectionInfo string `json:"connection_info"`
	// NextID       int64  `json:"next_id"`
	Attempts    int64  `json:"attempts"`
	MaxAttempts int64  `json:"max_attempts"`
	Value       int64  `json:"value"`
	Category    string `json:"category"`
	Type        string `json:"type"`
	TypeData    struct {
		ID        string `json:"id"`
		Name      string `json:"name"`
		Templates struct {
			Create string `json:"create"`
			Update string `json:"update"`
			View   string `json:"view"`
		} `json:"templates"`
		Scripts struct {
			Create string `json:"create"`
			Update string `json:"update"`
			View   string `json:"view"`
		} `json:"scripts"`
	} `json:"type_data"`
	State string `json:"state"`
	// Requirements []struct {
	// 	ID   int64  `json:"id"`
	// 	Name string `json:"name"`
	// } `json:"requirements"`
	Solves     int64         `json:"solves"`
	SolvedByMe bool          `json:"solved_by_me"`
	Files      []string      `json:"files"`
	Hints      []Hint        `json:"hints"`
	Tags       []interface{} `json:"tags"`
}

type ChallengeData

type ChallengeData struct {
	ID         int64  `json:"id"`
	Type       string `json:"type"`
	Name       string `json:"name"`
	Value      int64  `json:"value"`
	Solves     int64  `json:"solves"`
	SolvedByMe bool   `json:"solved_by_me"`
	Category   string `json:"category"`
}

type Challenges

type Challenges struct {
	Success bool            `json:"success"`
	Data    []ChallengeData `json:"data"`
}

type Client

type Client struct {
	Client      *http.Client
	BaseURL     *url.URL
	Creds       *Credentials
	MaxFileSize int64
}

func NewClient

func NewClient(transport http.RoundTripper) *Client

NewClient constructs a new Client. If transport is nil, a default transport is used.

func (*Client) Authenticate

func (c *Client) Authenticate() error

Authenticate client to the CTFd instance with the given username, password.

func (*Client) Challenge

func (c *Client) Challenge(id int64) (*Challenge, error)

func (*Client) Check

func (c *Client) Check() error

Check will check if the instance is a CTFd instance.

func (*Client) DownloadFiles

func (c *Client) DownloadFiles(id int64, outputPath string) error

func (*Client) GetCTFEvent added in v0.0.15

func (c *Client) GetCTFEvent(id int) (Event, error)

Retrieve information about a specific CTF event on CTFTime

func (*Client) GetCTFEvents added in v0.0.15

func (c *Client) GetCTFEvents() ([]Event, error)

Retrieve all active and upcoming CTF events from ctftime.org/api/v1/events/

func (*Client) GetCTFTeam added in v0.0.15

func (c *Client) GetCTFTeam(id int) (CTFTeam, error)

Get information about a specific team on CTFTime

func (*Client) GetDescription

func (c *Client) GetDescription(challenge *Challenge, challengePath string) error

GetDescription retrieves a challenge and returns a writeup template of the challenge

func (*Client) GetTopTeams added in v0.0.15

func (c *Client) GetTopTeams() ([]TopTeam, error)

func (*Client) ListChallenges

func (c *Client) ListChallenges() ([]ChallengeData, error)

func (*Client) ScoreboardTop added in v0.0.2

func (c *Client) ScoreboardTop(count int64) (TopTeamData, error)

type Credentials added in v0.0.2

type Credentials struct {
	Username string
	Password string
}

type Event added in v0.0.15

type Event struct {
	CreatedAt time.Time
	UpdatedAt time.Time
	DeletedAt time.Time

	Hidden bool

	ID            uint64    `json:"id"`
	CTFID         int       `json:"ctf_id"`
	Title         string    `json:"title"`
	Description   string    `json:"description"`
	URL           string    `json:"url"`
	URLIsCTFD     bool      `json:"url_is_ctfd"`
	Weight        float64   `json:"weight"`
	Onsite        bool      `json:"onsite"`
	Location      string    `json:"location"`
	Restrictions  string    `json:"restrictions"`
	Format        string    `json:"format"`
	FormatID      int       `json:"format_id"`
	Participants  int       `json:"participants"`
	CTFTimeURL    string    `json:"ctftime_url"`
	LiveFeed      string    `json:"live_feed"`
	IsVotableNow  bool      `json:"is_votable_now"`
	PublicVotable bool      `json:"public_votable"`
	Start         time.Time `json:"start"`
	Finish        time.Time `json:"finish"`
}

Struct for API Endpoint ctftime.org/api/v1/events/

func CleanCTFEvents added in v0.0.15

func CleanCTFEvents(events []Event) ([]Event, error)

Clean CTF Events, return only 'Open' Jeopardy Style CTFs that are either active or upcoming

type Hint

type Hint struct {
	ID      int64  `json:"id"`
	Cost    int64  `json:"cost"`
	Content string `json:"content"`
}

type Response added in v0.0.2

type Response struct {
	Success bool        `json:"success"`
	Data    TopTeamData `json:"data"`
}

type Solves added in v0.0.2

type Solves struct {
	ChallengeID interface{} `json:"challenge_id"`
	AccountID   int         `json:"account_id"`
	TeamID      int         `json:"team_id"`
	UserID      int         `json:"user_id"`
	Value       int         `json:"value"`
	Date        time.Time   `json:"date"`
}

type Team added in v0.0.2

type Team struct {
	ID     int      `json:"id"`
	Name   string   `json:"name"`
	Solves []Solves `json:"solves"`
}

type TopTeam added in v0.0.15

type TopTeam struct {
	TeamName string  `json:"team_name"`
	Points   float64 `json:"points"`
	TeamID   int     `json:"team_id"`
}

type TopTeamData added in v0.0.2

type TopTeamData struct {
	Num1  Team `json:"1"`
	Num2  Team `json:"2"`
	Num3  Team `json:"3"`
	Num4  Team `json:"4"`
	Num5  Team `json:"5"`
	Num6  Team `json:"6"`
	Num7  Team `json:"7"`
	Num8  Team `json:"8"`
	Num9  Team `json:"9"`
	Num10 Team `json:"10"`
}

func (*TopTeamData) GetTeam added in v0.0.2

func (d *TopTeamData) GetTeam(number int) (*Team, error)

type TopTeams added in v0.0.15

type TopTeams struct {
	Teams []TopTeam `json:"2022"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL