Source code for hackthebox.fortress

from __future__ import annotations
from typing import List, cast

from . import htb
from .errors import IncorrectFlagException


[docs]class Fortress(htb.HTBObject): """ The class representing Hack The Box fortresses Attributes: id: The ID of the Fortress name: The name of the Fortress image: The relative URL of the Fortress' image num_flags: The number of available flags reset_votes: The number of votes to reset the Fortress progress: The active user's progress through the Fortress, out of 100 flags: The list of flags available company: The Fortress' associated Company ip: IP address the Fortress can be contacted on """ name: str image: str num_flags: int _detailed_attributes = ('reset_votes', 'progress', 'flags', 'company', 'ip') reset_votes: int progress: int flags: List company: Company ip: str
[docs] def submit(self, flag: str): """ Submits a flag for an Fortress Args: flag: The flag for the Fortress """ submission = cast(dict, self._client.do_request(f"fortress/{self.id}/flag", json_data={ "flag": flag, })) if submission['message'] == "Wrong flag": raise IncorrectFlagException return True
def __repr__(self): return f"<Fortress '{self.name}'>" def __init__(self, data: dict, client: htb.HTBClient, summary=False): self._client = client self._detailed_func = client.get_fortress # type: ignore self.id = data['id'] self.name = data['name'] self.image = data['image'] if summary: self.num_flags = data['number_of_flags'] self._is_summary = True else: self.num_flags = len(data['flags']) self.company = Company(data['company']) self.reset_votes = data['reset_votes'] self.progress = data['progress_percent'] self.flags = data['flags'] self.ip = data['ip']
class Company: """ Representation of a company registered on Hack The Box Attributes: id: The Company ID name: The Company name description: The Company description url: The Company website image: The Company logo """ id: int name: str description: str url: str image: str def __init__(self, data: dict): self.id = data['id'] self.name = data['name'] self.description = data['description'] self.url = data['url'] self.image = data['image']