Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gha-lab-8e9316151c — 보안 연구용 통제 실험실로, CVE-2024-1540(gradio-app/gradio의 deploy+test-visual.yml에서 발생하는 GitHub Actions 명령 주입)을 재현합니다 — gradio-app/gradio @ f35f615e33a5dd90bfeb106b6f5dca689849fcef의 평면화된 스냅샷입니다. | Kitploit
도구/GitHubGitHub/pvharmo2/gha-lab-8e9316151c
Vulnerability AnalysisExploitationLearning & EducationCurated Resources
GitHubpvharmo2/gha-lab-8e9316151c

gha-lab-8e9316151c

보안 연구용 통제 실험실로, CVE-2024-1540(gradio-app/gradio의 deploy+test-visual.yml에서 발생하는 GitHub Actions 명령 주입)을 재현합니다 — gradio-app/gradio @ f35f615e33a5dd90bfeb106b6f5dca689849fcef의 평면화된 스냅샷입니다.

저장소 보기
121시간 3분 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

자동화된 연구 산출물 — 업스트림 프로젝트가 아님.

이 저장소는 Université Laval의 석사 논문을 위해 자동화된 하네스가 구축한 일회용 실험실로, 공개된 GitHub Actions 워크플로우 취약점을 재현하기 위한 것입니다. 이는 커밋 f35f615e33a5dd90bfeb106b6f5dca689849fcef (2024-02-09) 시점의 gradio-app/gradio의 축어적 스냅샷이며, 해당 프로젝트의 자체 라이선스에 따라 재배포되며, 그 라이선스 파일은 이 스냅샷에 변경 없이 포함되어 있습니다.

업스트림 프로젝트는 관여하지 않으며, 결코 공격 대상이 아닙니다. 여기서 연구된 취약점은 이미 공개된 것입니다. 이 저장소의 모든 시크릿과 변수는 무작위로 생성된 더미 값입니다 — 실제 자격 증명은 존재하지 않습니다. 액션 참조와 러너 이미지는 2024-02-09에 확인된 값으로 고정되어 있습니다. 스냅샷에 적용된 모든 변경 사항은 하네스 출력의 pinning.md를 참조하세요.

질문 또는 이의 제기: [email protected]


gradio

gradio-backend gradio-ui
PyPI

PyPI downloads
Python version
Twitter follow

Website | Documentation | Guides | Getting Started | Examples | 中文

Gradio: Python으로 머신러닝 웹 앱 구축하기

Gradio는 머신러닝 모델, API 또는 임의의 Python 함수를 위한 데모나 웹 애플리케이션을 빠르게 구축할 수 있는 오픈소스 Python 패키지입니다. 그런 다음 Gradio의 내장 공유 기능을 사용하여 몇 초 만에 데모 또는 웹 애플리케이션 링크를 공유할 수 있습니다. JavaScript, CSS 또는 웹 호스팅 경험이 필요 없습니다!

위와 같은 멋진 데모를 만드는 데는 Python 코드 몇 줄이면 충분합니다. 시작해 볼까요 💫

설치

사전 요구 사항: Gradio는 Python 3.8 이상이 필요합니다.

Python에 기본으로 포함된 pip을 사용하여 Gradio를 설치하는 것을 권장합니다. 터미널 또는 명령 프롬프트에서 다음을 실행하세요:

root@kitploit:~
pip install gradio

[!TIP] 가상 환경에 Gradio를 설치하는 것이 가장 좋습니다. 모든 일반적인 운영 체제에 대한 자세한 설치 지침은 여기에서 확인할 수 있습니다.

첫 번째 데모 만들기

Gradio는 선호하는 코드 편집기, Jupyter 노트북, Google Colab 또는 Python 코드를 작성하는 어디에서든 실행할 수 있습니다. 첫 번째 Gradio 앱을 작성해 보겠습니다:

root@kitploit:~
import gradio as gr

def greet(name, intensity):
    return "Hello " * intensity + name + "!"

demo = gr.Interface(
    fn=greet,
    inputs=["text", "slider"],
    outputs=["text"],
)

demo.launch()

[!TIP] 코드의 가독성을 높이기 위해 가져온 이름을 gradio에서 gr로 줄여 사용합니다. 이는 널리 채택된 관례이므로, 여러분의 코드를 작업하는 모든 사람이 쉽게 이해할 수 있도록 이 관례를 따르는 것이 좋습니다.

이제 코드를 실행하세요. 예를 들어 Python 코드를 app.py라는 파일에 작성했다면 터미널에서 python app.py를 실행하면 됩니다.

파일에서 실행하는 경우 아래 데모가 http://localhost:7860의 브라우저에서 열립니다. 노트북 내에서 실행하는 경우 데모가 노트북에 내장되어 표시됩니다.

hello_world_4 demo

왼쪽 텍스트 상자에 이름을 입력하고 슬라이더를 끈 다음 Submit 버튼을 누르세요. 오른쪽에 친근한 인사말이 표시됩니다.

[!TIP] 로컬에서 개발할 때 핫 리로드 모드로 Gradio 앱을 실행할 수 있습니다. 이 모드는 파일을 변경할 때마다 Gradio 앱을 자동으로 다시 로드합니다. 이렇게 하려면 python 대신 파일 이름 앞에 gradio를 입력하면 됩니다. 위의 예에서는 터미널에 gradio app.py를 입력하면 됩니다. 핫 리로드에 대한 자세한 내용은 핫 리로딩 가이드에서 확인하세요.

Interface 클래스 이해하기

첫 번째 데모를 만들기 위해 gr.Interface 클래스의 인스턴스를 생성했다는 것을 알 수 있습니다. Interface 클래스는 하나 이상의 입력을 받고 하나 이상의 출력을 반환하는 머신러닝 모델용 데모를 만들도록 설계되었습니다.

Interface 클래스에는 세 가지 핵심 인자가 있습니다:

  • fn: 사용자 인터페이스(UI)로 감쌀 함수
  • inputs: 입력에 사용할 Gradio 컴포넌트. 컴포넌트 수는 함수의 인자 수와 일치해야 합니다.
  • outputs: 출력에 사용할 Gradio 컴포넌트. 컴포넌트 수는 함수의 반환 값 수와 일치해야 합니다.

fn 인자는 매우 유연합니다 — UI로 감싸고 싶은 어떤 Python 함수든 전달할 수 있습니다. 위의 예에서는 비교적 간단한 함수를 보았지만, 함수는 음악 생성기부터 세금 계산기, 사전 훈련된 머신러닝 모델의 예측 함수까지 무엇이든 될 수 있습니다.

input 및 output 인자는 하나 이상의 Gradio 컴포넌트를 받습니다. 곧 알게 되겠지만, Gradio에는 머신러닝 애플리케이션용으로 설계된 30개 이상의 내장 컴포넌트가 포함되어 있습니다 (예: gr.Textbox(), gr.Image(), gr.HTML() 컴포넌트 등).

[!TIP] inputs 및 outputs 인자에는 컴포넌트 이름을 문자열("textbox")로 전달하거나 클래스 인스턴스(gr.Textbox())로 전달할 수 있습니다.

위의 경우처럼 함수가 둘 이상의 인자를 받는 경우, 각 입력 컴포넌트가 함수의 인자 중 하나에 순서대로 대응하도록 입력 컴포넌트 목록을 inputs에 전달하세요. 함수가 둘 이상의 값을 반환하는 경우에도 마찬가지입니다: 컴포넌트 목록을 outputs에 전달하면 됩니다. 이러한 유연성 덕분에 Interface 클래스는 데모를 만드는 매우 강력한 방법입니다.

gr.Interface에 대해 더 자세히 알아보려면 Interface 구축 시리즈를 참조하세요.

데모 공유하기

공유할 수 없다면 멋진 데모가 무슨 소용이 있을까요? Gradio를 사용하면 웹 서버 호스팅의 번거로움 없이 머신러닝 데모를 쉽게 공유할 수 있습니다. launch()에서 share=True를 설정하기만 하면 데모에 대해 공개적으로 액세스 가능한 URL이 생성됩니다. 예제 데모를 다시 살펴보되, 마지막 줄을 다음과 같이 변경해 보겠습니다:

root@kitploit:~
import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs="textbox", outputs="textbox")
    
demo.launch(share=True)  # Share your demo with just 1 extra parameter 🚀

이 코드를 실행하면 몇 초 안에 데모에 대한 공개 URL이 생성됩니다. 예를 들면 다음과 같습니다:

👉   https://a23dsf231adb.gradio.live

이제 전 세계 누구나 브라우저에서 Gradio 데모를 사용해 볼 수 있으며, 머신러닝 모델과 모든 계산은 계속해서 사용자 컴퓨터에서 로컬로 실행됩니다.

데모 공유에 대해 자세히 알아보려면 Gradio 애플리케이션 공유 전용 가이드를 읽어보세요.

Gradio 개요

지금까지 Gradio로 데모를 빠르게 구축할 수 있는 고수준 클래스인 Interface 클래스에 대해 논의했습니다. 그런데 Gradio는 또 무엇을 할 수 있을까요?

gr.ChatInterface를 사용한 챗봇

Gradio에는 챗봇 UI를 만들기 위해 특별히 설계된 또 다른 고수준 클래스인 gr.ChatInterface가 포함되어 있습니다. Interface와 유사하게 함수를 제공하면 Gradio가 완전히 작동하는 챗봇 UI를 만듭니다. 챗봇을 만드는 데 관심이 있다면 gr.ChatInterface 전용 가이드로 바로 이동할 수 있습니다.

gr.Blocks를 사용한 맞춤형 데모

Gradio는 또한 더 유연한 레이아웃과 데이터 흐름을 가진 웹 앱을 설계하기 위한 저수준 접근 방식을 gr.Blocks 클래스로 제공합니다. Blocks를 사용하면 페이지에서 컴포넌트가 표시되는 위치를 제어하고, 복잡한 데이터 흐름(예: 출력이 다른 함수의 입력으로 사용될 수 있음)을 처리하며, 사용자 상호작용에 따라 컴포넌트의 속성/가시성을 업데이트할 수 있습니다 — 이 모든 것이 여전히 Python으로 가능합니다.

gr.Blocks()를 사용하여 매우 맞춤화되고 복잡한 애플리케이션을 구축할 수 있습니다. 예를 들어, 인기 있는 이미지 생성 Automatic1111 Web UI는 Gradio Blocks로 구축되었습니다. Blocks로 구축하기 시리즈에서 gr.Blocks에 대해 더 자세히 알아보겠습니다.

Gradio Python 및 JavaScript 생태계

이것이 핵심 gradio Python 라이브러리의 요지이지만, Gradio는 실제로 훨씬 더 많은 것입니다! Python 또는 JavaScript로 머신러닝 애플리케이션을 구축하거나 프로그래밍 방식으로 쿼리할 수 있는 Python 및 JavaScript 라이브러리의 전체 생태계입니다. 다음은 Gradio 생태계의 다른 관련 부분입니다:

  • Gradio Python 클라이언트 (gradio_client): Python에서 모든 Gradio 앱을 프로그래밍 방식으로 쿼리합니다.
  • Gradio JavaScript 클라이언트 (@gradio/client): JavaScript에서 모든 Gradio 앱을 프로그래밍 방식으로 쿼리합니다.
  • Gradio-Lite (@gradio/lite): Pyodide 덕분에 브라우저에서 완전히 실행되는 Python으로 Gradio 앱을 작성합니다 (서버 불필요!).
  • Hugging Face Spaces: Gradio 애플리케이션을 무료로 호스팅하는 가장 인기 있는 장소입니다.

다음 단계는?

설명과 예제 코드, 내장된 대화형 데모가 포함된 Gradio Guides를 사용하여 Gradio에 대해 순차적으로 계속 학습하세요. 다음 단계: Gradio 데모의 주요 기능.

또는 이미 기본 사항을 알고 있고 특정 내용을 찾고 있다면 더 기술적인 API 문서를 검색할 수 있습니다.

질문이 있으신가요?

버그를 신고하거나 기능 요청이 있으면 GitHub에 이슈를 만들어 주세요. 사용법에 대한 일반적인 질문은 Discord 서버에서 도움을 드리고 있습니다.

Gradio가 마음에 드신다면 GitHub에서 ⭐을 남겨 주세요!

오픈소스 스택

Gradio는 많은 훌륭한 오픈소스 라이브러리 위에 구축되었습니다!

huggingface python fastapi encode svelte vite pnpm tailwind storybook chromatic

라이선스

Gradio는 이 저장소의 루트 디렉터리에 있는 LICENSE 파일에 있는 Apache License 2.0에 따라 라이선스가 부여됩니다.

인용

또한 Gradio: Hassle-Free Sharing and Testing of ML Models in the Wild, ICML HILL 2019 논문도 확인하시고, 작업에서 Gradio를 사용하는 경우 인용해 주세요.

root@kitploit:~
@article{abid2019gradio,
  title = {Gradio: Hassle-Free Sharing and Testing of ML Models in the Wild},
  author = {Abid, Abubakar and Abdalla, Ali and Abid, Ali and Khan, Dawood and Alfozan, Abdulrahman and Zou, James},
  journal = {arXiv preprint arXiv:1906.02569},
  year = {2019},
}
도구 다운로드