aurtomata/templates/burpsuite-pro/repo.py

54 lines
1.6 KiB
Python

import time
import re
import requests
from datetime import datetime
class Repo:
release_data: dict
release_key: int | None
def __init__(self):
url = f"https://portswigger.net/burp/releases/data?previousLastId=-1&lastId=-1&t={int(time.time())}&pageSize=10"
r = requests.get(url)
self.release_data = r.json()
self.release_key = None
def version(self) -> str | None:
if self.release_key is None:
self.latest_timestamp()
return self.release_data["ResultSet"]["Results"][self.release_key].get(
"version"
)
def shasums(self) -> list[str] | None:
if self.release_key is None:
self.latest_timestamp()
for build in self.release_data["ResultSet"]["Results"][self.release_key][
"builds"
]:
if build["ProductId"] == "pro" and build["ProductPlatform"] == "Jar":
return [build.get("Sha256Checksum")]
def latest_timestamp(self) -> datetime | None:
date_pattern = r"(\d{1,2}\s\w+\s\d{4})"
latest = None
for i, release in enumerate(self.release_data["ResultSet"]["Results"]):
if "Early Adopter" not in release.get("releaseChannels"):
continue
match = re.search(date_pattern, release.get("releaseDate"))
if not match:
continue
date_string = match.group(1)
timestamp = datetime.strptime(date_string, "%d %B %Y")
if latest == None or timestamp > latest:
latest = timestamp
self.release_key = i
return latest