Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
gha-lab-b1fe4918c0 — Авторизованная исследовательская лаборатория безопасности: воспроизведение CVE-2025-32958 (GHSA-8c7v-vccv-cx4q) — GITHUB_TOKEN, утёкший в артефакты workflow из-за remoteBuild.yml проекта Adept (снимок AdeptLanguage/Adept @ 6a64554) | Kitploit
Инструменты/GitHubGitHub/pvharmo2/gha-lab-b1fe4918c0
Анализ уязвимостейБезопасность Цепочки ПоставокОбучение и ОбразованиеПодобранные Ресурсы
GitHubpvharmo2/gha-lab-b1fe4918c0

gha-lab-b1fe4918c0

Авторизованная исследовательская лаборатория безопасности: воспроизведение CVE-2025-32958 (GHSA-8c7v-vccv-cx4q) — GITHUB_TOKEN, утёкший в артефакты workflow из-за remoteBuild.yml проекта Adept (снимок AdeptLanguage/Adept @ 6a64554)

Репозиторий
201 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Автоматизированный исследовательский артефакт — не вышестоящий проект.

Этот репозиторий — одноразовая лаборатория, созданная автоматизированной системой для магистерской диссертации в Université Laval по воспроизведению опубликованных уязвимостей в рабочих процессах GitHub Actions. Это дословный снимок AdeptLanguage/Adept на коммите 6a6455463213dabe52d49ceaaebd1f13cfee9018 (2025-04-01), распространённый под собственной лицензией этого проекта, файл которой включён без изменений в этот снимок.

Вышестоящий проект не участвует, никогда не является целью, а изучаемая здесь уязвимость уже публична. Каждый секрет и переменная в этом репозитории — случайно сгенерированное фиктивное значение — никаких реальных учётных данных здесь нет. Ссылки на действия и образы раннеров закреплены на те значения, которые они имели на 2025-04-01; см. pinning.md в выводе системы для каждого изменения, внесённого в снимок.

Вопросы или возражения: [email protected]


Adept

Молниеносно быстрый язык для программирования общего назначения.

Скачать Adept v2.7 для Windows

Скачать Adept v2.7 для MacOS

Скачать расширения кросс-компиляции Adept v2.7

Ресурсы

Документация Adept v2.7

Языковой сервер Adept v2.7

Стандартная библиотека Adept v2.7

Adept v2.7: работа с собственными и внешними библиотеками

Homebrew Tap для Adept v2.7 на MacOS

Плагин Vim для Adept v2.7

Минимальная подсветка синтаксиса Vim для Adept v2.7

Подсветка синтаксиса VSCode для Adept v2.7

Языковой сервер VSCode для Adept v2.7

Подсветка синтаксиса Sublime Text для Adept v2.7

Подсветка синтаксиса Geany для Adept v2.7

Использование из командной строки

adept [filename] [options]

  • filename — по умолчанию 'main.adept'
  • options — дополнительные параметры компилятора

При желании можно использовать adept2-7 вместо adept, если установлено несколько версий.

Базовая функциональность

Hello World

import basics

func main {
    print("Hello World!")
}

Переменные

import basics

func main {
    name String = "Alan"
    age int = 36
    height uint = 189
    
    print("Name is " + name)
    print("Age is " + age)
    print("Height is " + height + " cm")
}

Функции

import basics

func main {
    greet("Alice")
}

func greet(name String) {
    print("Hello " + name)
}

Records

import basics

record Person (name String, age int) {
    func print {
        print(this.name + " is " + this.age + " years old")
    }
}

func main {
    Person("John Smith", 36).print()
}

Structs

import basics

struct Configuration (
    filename String,
    numBatteries int,
    numPorts int,
){
    constructor(filename String) {
        this.filename = filename.commit()
        this.numBatteries = 4
        this.numPorts = 10
    }
}

func toString(config Configuration) String {
    return config.filename + ":" + config.numBatteries + ":" + config.numPorts
}

func main {
    print(Configuration("settings.config"))
}

Указатели

import basics

func main {
    x, y int = 0

    x++
    y++
    addOneTo(&x)

    print("x = " + x)
    print("y = " + y)
}

func addOneTo(pointerToNumber *$T~__number__) {
    (*pointerToNumber)++
}

Условные операторы и циклы

import basics

func main {
    name String = scan("What is your name? ")
    age int = scanInt("How old are you? ")
    
    // If conditional
    if name == "Isaac" {
        print("Hello Isaac :)")
    } else {
        print("Nice to meet you " + name)
    }
    
    // Unless conditional
    unless age > 21 {
        print("You are too young to drink")
    }
    
    // While loops
    while age < 18 {
        print("**birthday**")
        age += 1
    }
    
    print("You are now old enough to smoke")
    
    // Until loops
    until age >= 21 {
        print("**birthday**")
        age += 1
    }
    
    print("You are now old enough to drink")
}

Списки

import basics

record Invitation (to, from String, priority int)

func main {
    invites <Invitation> List
    invites.add(Invitation("Isaac", "Peter", 4))
    invites.add(Invitation("Mr. Smith", "Mrs. Smith", 12))
    invites.add(Invitation("James", "Paul", 3))

    each Invitation in invites {
        printf("invites[%zu] = %S\n", idx, toString(it))
    }
}

func toString(invite Invitation) String {
    return invite.to + " invited " + invite.from + " with priority " + invite.priority
}

Владение

/*
    Для значений, использующих управление памятью на основе владения
    (например, String, List, Grid)
    
    мы должны передавать владение, если хотим сохранить их
    живыми дольше, чем область видимости их владельца
*/

import basics

func main {
    everyone <String> List = getEveryoneAttending()
    
    each fullname String in everyone {
        print("=> " + fullname)
    }
}

func getEveryoneAttending() <String> List {
    everyone <String> List

    person1 String = getFullnameReturnImmediately("Alice", "Golden")
    person2 String = getFullnameStoreAndThenLaterReturn("Bob", "Johnson")

    // Передаём владение строками, хранящимися в 'person1' и 'person2',
    // под управление списка
    everyone.add(person1.commit())
    everyone.add(person2.commit())

    // Передаём владение списком вызывающему коду
    return everyone.commit()
}

func getFullnameReturnImmediately(firstname, lastname String) String {
    // '.commit()' здесь не обязателен
    return firstname + " " + lastname
}

func getFullnameStoreAndThenLaterReturn(firstname, lastname String) String {
    fullname String = firstname + " " + lastname
    
    // Владение результатом удерживает 'fullname',
    // поэтому мы должны передать владение вызывающему коду,
    // чтобы сохранить его живым после возврата из этой функции

    // '.commit()' здесь обязателен
    return fullname.commit()
}

Метки циклов

import basics

func main {
    print(makeNumericSkewer())
    print(makeAlphabetSkewer())
}

func makeNumericSkewer String {
    // Пример вывода: `0-2-4-6-8-10-13-16-19-22-25-28`

    skewer String

    while continue preparing {
        skewer.append(skewer.length)

        if skewer.length < 30 {
            skewer.append("-")
            continue preparing
        }
    }

    return skewer.commit()
}

func makeAlphabetSkewer String {
    // Пример вывода: `a-c-e-g-i-k-m-o-q-s-u-w-y`

    skewer String

    while still_making_skewer : skewer.length < 30 {
        skewer.append('a'ub + skewer.length as ubyte)

        if skewer[skewer.length - 1] == 'y'ub {
            break still_making_skewer
        }

        skewer.append("-")
    }

    return skewer.commit()
}

Именованные выражения и глобальные переменные

import basics

// Будет пересчитываться при каждом использовании
define GREETING = "Welcome"
define STRANGER_NAME = "guest"
define WELCOME_MESSAGE = GREETING + " " + STRANGER_NAME + "!"
Скачать инструмент