6,4 Kio
title | description | published | date | tags | editor | dateCreated |
---|---|---|---|---|---|---|
PrivateBin | Le meilleur moyen de partager vos secrets de façon sécurisé et avec une API ! | true | 2021-06-15T10:37:14.769Z | markdown | 2021-05-24T10:34:57.623Z |
Présentation
PrivateBin est un pastebin en ligne minimaliste et open source où le serveur n'a aucune connaissance des données collées. Les données sont chiffrées et déchiffrées dans le navigateur à l'aide de l'AES 256 bits en mode compteur Galois. Il s'agit d'un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. ZeroBin a été remanié pour permettre des extensions plus faciles et plus propres.
PrivateBin a beaucoup plus de fonctionnalités que le ZeroBin original. Il est cependant toujours entièrement compatible avec le schéma de stockage de données ZeroBin. Par conséquent, de telles installations peuvent être mises à niveau vers PrivateBin sans perte de données.
Site : privatebin.info
Démo : privatebin.papamica.com
Installation
Vous pouvez passer par une installation standard via la documentation disponible sur leur site, le déployer directement depuis mon template d’application dans Portainer (tutoriel dispo ici) ou utiliser le docker-compose suivant :
version: "2"
services:
# PrivateBin : https://privatebin.info
privatebin:
image: jgeusebroek/privatebin
container_name: privatebin
restart: always
volumes:
- /apps/privatebin/data:/privatebin/data
- /apps/privatebin/cfg:/privatebin/cfg
environment:
hostname: 'privatebin'
name: 'privatebin'
# Facultatif avec Traefik
#ports:
#- 8080:80
# Facultatif
logging:
driver: loki
options:
loki-url: "$URL_LOKI"
loki-external-labels: service={{.Name}}
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.privatebin.entrypoints=http"
- "traefik.http.routers.privatebin.rule=Host(`$URL`)"
- "traefik.http.middlewares.privatebin-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.privatebin.middlewares=privatebin-https-redirect"
- "traefik.http.routers.privatebin-secure.entrypoints=https"
- "traefik.http.routers.privatebin-secure.rule=Host(`$URL`)"
- "traefik.http.routers.privatebin-secure.tls=true"
- "traefik.http.routers.privatebin-secure.tls.certresolver=http"
- "traefik.docker.network=proxy"
networks:
proxy:
external:
name: proxy
Pensez à changer dans le docker-compose ou à définir les variables suivantes : URL_LOKI et URL en fonction de votre installation. {.is-warning}
Votre Privatebin sera accessible directement depuis l’URL que vous lui aurais attribué avec Traefik ou depuis http://<server>:<port>
.
API Python
Privatebin met à disposition une API bien utile pour l'intégrer dans vos scripts. La documentation est disponible ici : Github.com
Installation
Installez PrivateBinAPI avec la commande suivante :
pip install PrivateBinAPI
Importez la librairie dans vos scripts :
import privatebinapi
Envoyer un Paste
response = privatebinapi.send("https://sitedupaste.com", text="Hello, world!")
Réponse :
{
"deletetoken": "< paste delete token >",
"full_url": "< direct link to paste> ",
"id": "< paste ID >",
"passcode": "< paste passcode >",
"status": 0,
"url": "/?< paste ID >"
}
Ajouter une expiration
Il existe un nombre limité de délais d'expiration valides. Vous devez sélectionner l'un des éléments suivants :
("5min", "10min", "1hour", "1day", "1week", "1month", "1year", "never")
Par défaut, “1day
” est sélectionné.
response = privatebinapi.send(
"https://sitedupaste.com",
text="Hello, world!",
expiration="5min"
)
Ajouter un mot de passe
Configurer un mot de passe à votre Paste est simple :
response = privatebinapi.send(
"https://sitedupaste.com",
text="Hello, world!",
password="Secure123!"
)
Choisir un format
Il n'y a que trois options valides pour ce paramètre : "plaintext"
, "syntaxhighlighting"
, and "markdown"
.
Par défaut, "plaintext"
est sélectionné.
response = privatebinapi.send(
"https://sitedupaste.com",
text="Hello, world!",
formatting="markdown"
)
Supprimer après lecture
Si vous souhaitez qu'un Paste soit supprimé immédiatement après avoir été lu, passez à True
le paramètre burn_after_reading
.
response = privatebinapi.send(
"https://sitedupaste.com",
text="Hello, world!",
burn_after_reading=True
)
Récupérer un Paste
Obtenir un Paste à partir d'une instance de PrivateBin est très simple :
response = privatebinapi.get("https://sitedupaste.com/?fakePasteLink#1234567890")
Réponse :
{
"attachment": {
"content": b"< attachment content in bytes >",
"filename": "< name of attachment >"
},
"id": '< paste ID >",
"meta": {
"created": < UNIX timestamp >,
"time_to_live": < seconds until deletion >
},
"status": 0,
"text": "< text content of the paste >",
"url": "/?< paste ID >",
"v": < encryption version 1 or 2 >}
}
Récupérer un Paste protégé par un mot de passe
Si le Paste est protégé par un mot de passe, utilisez le paramètre password
.
response = privatebinapi.get(
"https://sitedupaste.com/?fakePasteLink#1234567890",
password="PAPAMICA123!"
)
Supprimer un Paste
Pour supprimer un Paste, vous avez besoin de son URL et de son token de suppression.
response = privatebinapi.delete(
"https://sitedupaste.com/?fakePasteLink#1234567890",
"fake1delete2token3"
)