commit 180049b0e5670e5b89ba7ae5edc55d6f989e1958 Author: Yohann D'ANELLO Date: Mon Apr 26 15:28:58 2021 +0200 First working version Signed-off-by: root diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..20efa43 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.token diff --git a/bot.py b/bot.py new file mode 100755 index 0000000..f7098e2 --- /dev/null +++ b/bot.py @@ -0,0 +1,269 @@ +#!/usr/bin/env python3 + +from PIL import Image +from dataclasses import dataclass +from datetime import datetime +import hashlib +import json +from random import choice +import requests +import smtplib + + +# API_PREFIX = "https://beta.interieur.gouv.fr/candilib/api/v2/" +# API_PREFIX = "https://candilib.ynerant.fr/candilib/api/v2/" +API_PREFIX = "http://localhost/candilib/api/v2/" + +CAPTCHA_IMAGES = { + "L'avion": "airplane", + "Les ballons": "balloons", + "L'appareil photo": "camera", + "La Voiture": "car", + "Le chat": "cat", + "La chaise": "chair", + "Le trombone": "clip", + "L'horloge": "clock", + "Le nuage": "cloud", + "L'ordinateur": "computer", + "L'enveloppe": "envelope", + "L'oeil": "eye", + "Le drapeau": "flag", + "Le dossier": "folder", + "Le pied": "foot", + "Le graphique": "graph", + "La maison": "house", + "La clef": "key", + "La feuille": "leaf", + "L'ampoule": "light-bulb", + "Le cadenas": "lock", + "La loupe": "magnifying-glass", + "L'homme": "man", + "La note de musique": "music-note", + "Le pantalon": "pants", + "Le crayon": "pencil", + "L'imprimante": "printer", + "Le robot": "robot", + "Les ciseaux": "scissors", + "Les lunettes de soleil": "sunglasses", + "L'étiquette": "tag", + "L'arbre": "tree", + "Le camion": "truck", + "Le T-Shirt": "t-shirt", + "Le parapluie": "umbrella", + "La femme": "woman", + "La planète": "world" +} + + +def calculate_checksums(): + for name in CAPTCHA_IMAGES.values(): + img = Image.open(f'captcha_images/{name}.png') + img.save(f'captcha_images/{name}.ppm') + with open(f'captcha_images/{name}.ppm', 'rb') as f: + with open(f'captcha_images/{name}.ppm.sum', 'w') as f_sum: + f_sum.write(hashlib.sha512(f.read()).hexdigest()) + + +@dataclass +class Candidat: + codeNeph: str = '' + homeDepartement: str = '' + departement: str = '75' + email: str = '' + nomNaissance: str = '' + prenom: str = '' + portable: str = '' + adresse: str = '' + visibilityHour: str = '12H50' + dateETG: str = '' + isInRecentlyDept: bool = False + + +@dataclass +class Places: + _id: str = '' + centre: "Centre" = None + date: str = '' + lastDateToCancel: str = '' + canBookFrom: str = '' + timeOutToRetry: int = 0 + dayToForbidCancel: int = 7 + visibilityHour: str = '12H50' + + +@dataclass(order=True) +class Departement: + geoDepartement: str = '' + centres: list["Centre"] = None + count: int = None + + +@dataclass +class Centre: + _id: str + count: int = 0 + longitude: float = 0.0 + latitude: float = 0.0 + nom: str = "" + departement: Departement = None + + +def api(path: str, token: str, user_id: str, app: str = 'candidat', **kwargs) -> dict: + return requests.get( + API_PREFIX + app + '/' + path, + data=kwargs, + headers={ + 'Authorization': f'Bearer {token}', + 'Content-Type': 'application/json', + 'X-USER-ID': user_id, + }, + ).json() + + +def send_mail(content: str, subject: str) -> None: + print('\n') + print(subject) + print(len(subject) * '-') + print() + return print(content) + smtp = smtplib.SMTP('localhost', 25) + content = f"""From: Ÿnérant +To: Ÿnérant +Subject: {subject} + +""" + content + content = content.encode('UTF-8') + smtp.sendmail('ynerant@crans.org', ['ynerant+candilib@crans.org'], content) + + +def main(token: str) -> None: + response = requests.get(API_PREFIX + 'auth/candidat/verify-token?token=' + token) + try: + assert response.json()['auth'] + except (AssertionError, KeyError): + raise ValueError(f"Une erreur est survenue lors de la connexion : {response.content.decode('utf-8')}") + user_id = response.headers['X-USER-ID'] + + me = Candidat(**api('me', token, user_id)['candidat']) + print(f'Salut {me.prenom} {me.nomNaissance} !') + + + departements = [Departement(**dpt) for dpt in api('departements', token, user_id)['geoDepartementsInfos']] + departements.sort() + + for dpt in departements: + centres = api(f'centres?departement={dpt.geoDepartement}&end=2021-07-31T23:59:59.999', token, user_id) + dpt.centres = [] + dpt.count = 0 + for centre in centres: + centre = Centre( + _id=centre['centre']['_id'], + nom=centre['centre']['nom'], + count=centre['count'], + longitude=centre['centre']['geoloc']['coordinates'][0], + latitude=centre['centre']['geoloc']['coordinates'][1], + departement=dpt, + ) + dpt.centres.append(centre) + dpt.count += centre.count + + places = Places(**api('places', token, user_id)) + for dpt in departements: + for centre in dpt.centres: + if centre._id == places.centre['_id']: + places.centre = centre + break + else: + continue + break + + if places.date: + print(f"Vous avez déjà une date d'examen, le {places.date}.") + exit(1) + + print("\n") + for dpt in departements: + print(dpt.geoDepartement, dpt.count) + + for dpt in departements: + for centre in dpt.centres: + dates = api(f"places?begin=2021-04-26T00:00:00.000&end=2021-07-31T23:59:59.999+02:00&geoDepartement={dpt.geoDepartement}&nomCentre={centre.nom}", token, user_id) + send_mail(json.dumps(dates, indent=2), centre.nom) + centre.dates = dates + + PREFERRED_CENTRES = ["MASSY", "RUNGIS", "ETAMPES", "SAINT CLOUD", "SAINT PRIEST", "LA TRONCHE"] + + for name in PREFERRED_CENTRES: + for dpt in departements: + for centre in dpt.centres: + if centre.nom == name: + break + else: + continue + break + for date in centre.dates: + if name == "SAINT PRIEST" and ("T07:" in date or "T08:" in date): + continue + break + else: + continue + break + else: + print("Aucune date intéressante") + return + + print("Centre :", centre.nom) + print("Date :", date) + # Resolve captcha + captcha_info = api('verifyzone/start', token, user_id) + print(captcha_info) + captcha_info = captcha_info['captcha'] + field = captcha_info['imageFieldName'] + image_name = captcha_info['imageName'] + image_file = CAPTCHA_IMAGES[image_name] + captcha_images = captcha_info['values'] + + with open(f'captcha_images/{image_file}.ppm.sum') as f: + valid_checksum = f.read().strip() + + for i in range(5): + response = requests.get( + f'{API_PREFIX}candidat/verifyzone/image/{i}', + headers={ + 'Accept': 'application/json', + 'Authorization': f'Bearer {token}', + 'X-USER-ID': user_id, + }, + ) + with open(f'/tmp/image_{i}.png', 'wb') as f: + f.write(response.content) + img = Image.open(f'/tmp/image_{i}.png') + img.save(f'/tmp/image_{i}.ppm') + with open(f'/tmp/image_{i}.ppm', 'rb') as f: + checksum = hashlib.sha512(f.read()).hexdigest() + if checksum == valid_checksum: + captcha_result = captcha_images[i] + + print(requests.patch( + API_PREFIX + 'candidat/places', + headers={ + 'Content-Type': 'application/json', + 'Authorization': f'Bearer {token}', + 'X-USER-ID': user_id, + }, + json={ + 'geoDepartement': centre.departement.geoDepartement, + 'nomCentre': centre.nom, + 'date': date, + 'hasDualControlCar': True, + 'isAccompanied': True, + 'isModification': False, + field: captcha_result, + }, + ).content) + + +if __name__ == '__main__': + with open('/var/local/candibot/.token') as f: + token = f.read().strip() + main(token) diff --git a/captcha_images/airplane.png b/captcha_images/airplane.png new file mode 100644 index 0000000..dbe9aac Binary files /dev/null and b/captcha_images/airplane.png differ diff --git a/captcha_images/airplane.ppm b/captcha_images/airplane.ppm new file mode 100644 index 0000000..a37f700 Binary files /dev/null and b/captcha_images/airplane.ppm differ diff --git a/captcha_images/airplane.ppm.sum b/captcha_images/airplane.ppm.sum new file mode 100644 index 0000000..6e6aae3 --- /dev/null +++ b/captcha_images/airplane.ppm.sum @@ -0,0 +1 @@ +51f0e08ae25ece91a945ed011aac2232539e5e1719a133a8abb62f8f8923a31e95bfee329ccbffa074e18f4a508563a2679cd933a2457287d063f5883c5cc990 \ No newline at end of file diff --git a/captcha_images/airplane@2x.png b/captcha_images/airplane@2x.png new file mode 100644 index 0000000..3c21b06 Binary files /dev/null and b/captcha_images/airplane@2x.png differ diff --git a/captcha_images/balloons.png b/captcha_images/balloons.png new file mode 100644 index 0000000..2c77a27 Binary files /dev/null and b/captcha_images/balloons.png differ diff --git a/captcha_images/balloons.ppm b/captcha_images/balloons.ppm new file mode 100644 index 0000000..642542a Binary files /dev/null and b/captcha_images/balloons.ppm differ diff --git a/captcha_images/balloons.ppm.sum b/captcha_images/balloons.ppm.sum new file mode 100644 index 0000000..92b27c5 --- /dev/null +++ b/captcha_images/balloons.ppm.sum @@ -0,0 +1 @@ +08761348254993f5de1b5f440d44a04a112ae5deb650f85de566cb8dd7e5d5414bb5d0a1c1abf0bef2202dfe76185b2a4fc1ba3ce4e468e8abedc3ba7b9c9cda \ No newline at end of file diff --git a/captcha_images/balloons@2x.png b/captcha_images/balloons@2x.png new file mode 100644 index 0000000..f93017c Binary files /dev/null and b/captcha_images/balloons@2x.png differ diff --git a/captcha_images/camera.png b/captcha_images/camera.png new file mode 100644 index 0000000..9f2d292 Binary files /dev/null and b/captcha_images/camera.png differ diff --git a/captcha_images/camera.ppm b/captcha_images/camera.ppm new file mode 100644 index 0000000..269cef3 Binary files /dev/null and b/captcha_images/camera.ppm differ diff --git a/captcha_images/camera.ppm.sum b/captcha_images/camera.ppm.sum new file mode 100644 index 0000000..da6f6b6 --- /dev/null +++ b/captcha_images/camera.ppm.sum @@ -0,0 +1 @@ +d2fc721f7e1e6a3ff54168e62a391715342e731661ee03adec0a189ba2f5da82c16db7156d9d12cc1269cc5b7d7a221ce088087758698b6b43257cab3811ff6e \ No newline at end of file diff --git a/captcha_images/camera@2x.png b/captcha_images/camera@2x.png new file mode 100644 index 0000000..c00175f Binary files /dev/null and b/captcha_images/camera@2x.png differ diff --git a/captcha_images/car.png b/captcha_images/car.png new file mode 100644 index 0000000..6d917c6 Binary files /dev/null and b/captcha_images/car.png differ diff --git a/captcha_images/car.ppm b/captcha_images/car.ppm new file mode 100644 index 0000000..5dfaedc Binary files /dev/null and b/captcha_images/car.ppm differ diff --git a/captcha_images/car.ppm.sum b/captcha_images/car.ppm.sum new file mode 100644 index 0000000..995d82a --- /dev/null +++ b/captcha_images/car.ppm.sum @@ -0,0 +1 @@ +dae190d2e56deccfee2930d5f6248e51506d11014e141e728f24f01a823f2560fc22d09cf03a99eec9593c0cf48d609da5c81ea0faa7532d83f36a32689c9c0c \ No newline at end of file diff --git a/captcha_images/car@2x.png b/captcha_images/car@2x.png new file mode 100644 index 0000000..ef317c4 Binary files /dev/null and b/captcha_images/car@2x.png differ diff --git a/captcha_images/cat.png b/captcha_images/cat.png new file mode 100644 index 0000000..98f1121 Binary files /dev/null and b/captcha_images/cat.png differ diff --git a/captcha_images/cat.ppm b/captcha_images/cat.ppm new file mode 100644 index 0000000..97eb089 Binary files /dev/null and b/captcha_images/cat.ppm differ diff --git a/captcha_images/cat.ppm.sum b/captcha_images/cat.ppm.sum new file mode 100644 index 0000000..3ca30f9 --- /dev/null +++ b/captcha_images/cat.ppm.sum @@ -0,0 +1 @@ +53d1fc65eee71d67455148d401afd46c2653cf06586da5ce7045d0bdfedd88fad2b1b40864fd5b56fb6f0fc7665c2f0ed7ca02c2bfe6442acb1904b9266ba61a \ No newline at end of file diff --git a/captcha_images/cat@2x.png b/captcha_images/cat@2x.png new file mode 100644 index 0000000..29d2806 Binary files /dev/null and b/captcha_images/cat@2x.png differ diff --git a/captcha_images/chair.png b/captcha_images/chair.png new file mode 100644 index 0000000..96b040a Binary files /dev/null and b/captcha_images/chair.png differ diff --git a/captcha_images/chair.ppm b/captcha_images/chair.ppm new file mode 100644 index 0000000..18fd7f6 Binary files /dev/null and b/captcha_images/chair.ppm differ diff --git a/captcha_images/chair.ppm.sum b/captcha_images/chair.ppm.sum new file mode 100644 index 0000000..5cb14eb --- /dev/null +++ b/captcha_images/chair.ppm.sum @@ -0,0 +1 @@ +2f7fd3e2119875ff97a155bdac5364a7bd896ce0376931b91bea0e4ea3be6288f8fee5df6ace851aeffa10204873bb5980a1961c7708dc7fdf1b99975b51b98c \ No newline at end of file diff --git a/captcha_images/chair@2x.png b/captcha_images/chair@2x.png new file mode 100644 index 0000000..c0b8dc6 Binary files /dev/null and b/captcha_images/chair@2x.png differ diff --git a/captcha_images/clip.png b/captcha_images/clip.png new file mode 100644 index 0000000..cdb14bb Binary files /dev/null and b/captcha_images/clip.png differ diff --git a/captcha_images/clip.ppm b/captcha_images/clip.ppm new file mode 100644 index 0000000..ed371d2 Binary files /dev/null and b/captcha_images/clip.ppm differ diff --git a/captcha_images/clip.ppm.sum b/captcha_images/clip.ppm.sum new file mode 100644 index 0000000..de28047 --- /dev/null +++ b/captcha_images/clip.ppm.sum @@ -0,0 +1 @@ +5d4d262cd0b0874711abd478dcd6524ea99844fd3698fb8c6a054ed429d831c717d93ca8c8b18de679f54674dd54bb115ef2e5e85d364378820beaeae25a6802 \ No newline at end of file diff --git a/captcha_images/clip@2x.png b/captcha_images/clip@2x.png new file mode 100644 index 0000000..7ecba5b Binary files /dev/null and b/captcha_images/clip@2x.png differ diff --git a/captcha_images/clock.png b/captcha_images/clock.png new file mode 100644 index 0000000..ce7e273 Binary files /dev/null and b/captcha_images/clock.png differ diff --git a/captcha_images/clock.ppm b/captcha_images/clock.ppm new file mode 100644 index 0000000..4c7fc60 Binary files /dev/null and b/captcha_images/clock.ppm differ diff --git a/captcha_images/clock.ppm.sum b/captcha_images/clock.ppm.sum new file mode 100644 index 0000000..e983174 --- /dev/null +++ b/captcha_images/clock.ppm.sum @@ -0,0 +1 @@ +9143b35b6e0ff73899643e965d2dd2b76a7eb1c489b9423b6cdcef2b4522f64b3ebeaa8ae2ba700db9599e41826dc8f32412b43e240bc3146c5bc5b3cc68546a \ No newline at end of file diff --git a/captcha_images/clock@2x.png b/captcha_images/clock@2x.png new file mode 100644 index 0000000..b30f18a Binary files /dev/null and b/captcha_images/clock@2x.png differ diff --git a/captcha_images/cloud.png b/captcha_images/cloud.png new file mode 100644 index 0000000..81ad1f2 Binary files /dev/null and b/captcha_images/cloud.png differ diff --git a/captcha_images/cloud.ppm b/captcha_images/cloud.ppm new file mode 100644 index 0000000..a309c93 Binary files /dev/null and b/captcha_images/cloud.ppm differ diff --git a/captcha_images/cloud.ppm.sum b/captcha_images/cloud.ppm.sum new file mode 100644 index 0000000..280310c --- /dev/null +++ b/captcha_images/cloud.ppm.sum @@ -0,0 +1 @@ +1a9bc03d2298a2cfc61e82d91b4b36701cb1c36b645a7447bf1b60a8f87bf77a37e0c4fb98d77061cf9322dae56ab9b67829fce6e01c78dc089ad1dfb3bf6559 \ No newline at end of file diff --git a/captcha_images/cloud@2x.png b/captcha_images/cloud@2x.png new file mode 100644 index 0000000..35f03a1 Binary files /dev/null and b/captcha_images/cloud@2x.png differ diff --git a/captcha_images/computer.png b/captcha_images/computer.png new file mode 100644 index 0000000..0686f7f Binary files /dev/null and b/captcha_images/computer.png differ diff --git a/captcha_images/computer.ppm b/captcha_images/computer.ppm new file mode 100644 index 0000000..ca2a058 Binary files /dev/null and b/captcha_images/computer.ppm differ diff --git a/captcha_images/computer.ppm.sum b/captcha_images/computer.ppm.sum new file mode 100644 index 0000000..c5f306d --- /dev/null +++ b/captcha_images/computer.ppm.sum @@ -0,0 +1 @@ +a4a71334299297e9d2fe7191226a89fd1a94ef1ad159acf7cfda0df6d994c2e1d181cab8ed489697e22a88946f94651fc5f81d0f404e72d85cfed0ec9c3f42bd \ No newline at end of file diff --git a/captcha_images/computer@2x.png b/captcha_images/computer@2x.png new file mode 100644 index 0000000..07dd0fc Binary files /dev/null and b/captcha_images/computer@2x.png differ diff --git a/captcha_images/envelope.png b/captcha_images/envelope.png new file mode 100644 index 0000000..8c5d59c Binary files /dev/null and b/captcha_images/envelope.png differ diff --git a/captcha_images/envelope.ppm b/captcha_images/envelope.ppm new file mode 100644 index 0000000..10645e7 Binary files /dev/null and b/captcha_images/envelope.ppm differ diff --git a/captcha_images/envelope.ppm.sum b/captcha_images/envelope.ppm.sum new file mode 100644 index 0000000..12e2e50 --- /dev/null +++ b/captcha_images/envelope.ppm.sum @@ -0,0 +1 @@ +97b81403a5b78a21733edf049b77b7382451d721237b0e17f7718811d61e72543cd35a773c974c50d5591d024db7f61f846aa46023e58ad510237457721dad4c \ No newline at end of file diff --git a/captcha_images/envelope@2x.png b/captcha_images/envelope@2x.png new file mode 100644 index 0000000..915896f Binary files /dev/null and b/captcha_images/envelope@2x.png differ diff --git a/captcha_images/eye.png b/captcha_images/eye.png new file mode 100644 index 0000000..1b8ed6b Binary files /dev/null and b/captcha_images/eye.png differ diff --git a/captcha_images/eye.ppm b/captcha_images/eye.ppm new file mode 100644 index 0000000..2791cef Binary files /dev/null and b/captcha_images/eye.ppm differ diff --git a/captcha_images/eye.ppm.sum b/captcha_images/eye.ppm.sum new file mode 100644 index 0000000..cf38abe --- /dev/null +++ b/captcha_images/eye.ppm.sum @@ -0,0 +1 @@ +4cd357aebbe717aff7b8f3d5c57452c7e8900fcbfb4e87971eb4465754d0154bf1f20437541f2bf16e5c148f6160151e23f7b59a2a7a35cb73a1acb338cd4b73 \ No newline at end of file diff --git a/captcha_images/eye@2x.png b/captcha_images/eye@2x.png new file mode 100644 index 0000000..749c6c2 Binary files /dev/null and b/captcha_images/eye@2x.png differ diff --git a/captcha_images/flag.png b/captcha_images/flag.png new file mode 100644 index 0000000..3acb3f0 Binary files /dev/null and b/captcha_images/flag.png differ diff --git a/captcha_images/flag.ppm b/captcha_images/flag.ppm new file mode 100644 index 0000000..fb8729f Binary files /dev/null and b/captcha_images/flag.ppm differ diff --git a/captcha_images/flag.ppm.sum b/captcha_images/flag.ppm.sum new file mode 100644 index 0000000..2ffc007 --- /dev/null +++ b/captcha_images/flag.ppm.sum @@ -0,0 +1 @@ +a2e58d7529ceaef1ebc931f8f3dc729d89aaae7992350aa472adfcadd6c770ce2b755ab0badb7c292045f2036409e4f94d43c9e845cbb763916f392b94ef5efd \ No newline at end of file diff --git a/captcha_images/flag@2x.png b/captcha_images/flag@2x.png new file mode 100644 index 0000000..d2b01ec Binary files /dev/null and b/captcha_images/flag@2x.png differ diff --git a/captcha_images/folder.png b/captcha_images/folder.png new file mode 100644 index 0000000..9c1f5cd Binary files /dev/null and b/captcha_images/folder.png differ diff --git a/captcha_images/folder.ppm b/captcha_images/folder.ppm new file mode 100644 index 0000000..6d704a9 Binary files /dev/null and b/captcha_images/folder.ppm differ diff --git a/captcha_images/folder.ppm.sum b/captcha_images/folder.ppm.sum new file mode 100644 index 0000000..b082b97 --- /dev/null +++ b/captcha_images/folder.ppm.sum @@ -0,0 +1 @@ +794236454c973d2d9926ce9fbeb8825b9360afd33c656111924f8a9f687bad88c5e01343dccd6a37591cd1ac5c2d021ed4eff329192b310aa5fb7eaa5015d75a \ No newline at end of file diff --git a/captcha_images/folder@2x.png b/captcha_images/folder@2x.png new file mode 100644 index 0000000..3947997 Binary files /dev/null and b/captcha_images/folder@2x.png differ diff --git a/captcha_images/foot.png b/captcha_images/foot.png new file mode 100644 index 0000000..56e519e Binary files /dev/null and b/captcha_images/foot.png differ diff --git a/captcha_images/foot.ppm b/captcha_images/foot.ppm new file mode 100644 index 0000000..8818b18 Binary files /dev/null and b/captcha_images/foot.ppm differ diff --git a/captcha_images/foot.ppm.sum b/captcha_images/foot.ppm.sum new file mode 100644 index 0000000..adc05db --- /dev/null +++ b/captcha_images/foot.ppm.sum @@ -0,0 +1 @@ +424a1b17e9004b80cef2f7058c1348d6f9dcfb910f0672f9099bd56e9c613080a71d026083f575605fe3d15ab53d233ad53cba157d3c9b0424e59d0acf759411 \ No newline at end of file diff --git a/captcha_images/foot@2x.png b/captcha_images/foot@2x.png new file mode 100644 index 0000000..d7879aa Binary files /dev/null and b/captcha_images/foot@2x.png differ diff --git a/captcha_images/graph.png b/captcha_images/graph.png new file mode 100644 index 0000000..5dfabc0 Binary files /dev/null and b/captcha_images/graph.png differ diff --git a/captcha_images/graph.ppm b/captcha_images/graph.ppm new file mode 100644 index 0000000..32fa06b Binary files /dev/null and b/captcha_images/graph.ppm differ diff --git a/captcha_images/graph.ppm.sum b/captcha_images/graph.ppm.sum new file mode 100644 index 0000000..e510a77 --- /dev/null +++ b/captcha_images/graph.ppm.sum @@ -0,0 +1 @@ +714d17158fc7fa575404ff69ea72de3de59e2243954bed4bc88390bcddd40bc4a9238136e4ea970d3c08578379054d2733774b232401f8890b264e4ad46dd761 \ No newline at end of file diff --git a/captcha_images/graph@2x.png b/captcha_images/graph@2x.png new file mode 100644 index 0000000..4daacf3 Binary files /dev/null and b/captcha_images/graph@2x.png differ diff --git a/captcha_images/house.png b/captcha_images/house.png new file mode 100644 index 0000000..eabbebe Binary files /dev/null and b/captcha_images/house.png differ diff --git a/captcha_images/house.ppm b/captcha_images/house.ppm new file mode 100644 index 0000000..eae583a Binary files /dev/null and b/captcha_images/house.ppm differ diff --git a/captcha_images/house.ppm.sum b/captcha_images/house.ppm.sum new file mode 100644 index 0000000..1f237e6 --- /dev/null +++ b/captcha_images/house.ppm.sum @@ -0,0 +1 @@ +a53e4c43f24af98a20a12f123900857add9f11bd33c68df2dcc0161992ba6f9bac0e269cc74884fe3684679353c456b8879ec1dd14543aea2bf903ae41079d45 \ No newline at end of file diff --git a/captcha_images/house@2x.png b/captcha_images/house@2x.png new file mode 100644 index 0000000..afd23d9 Binary files /dev/null and b/captcha_images/house@2x.png differ diff --git a/captcha_images/key.png b/captcha_images/key.png new file mode 100644 index 0000000..30d726c Binary files /dev/null and b/captcha_images/key.png differ diff --git a/captcha_images/key.ppm b/captcha_images/key.ppm new file mode 100644 index 0000000..5adcc3e Binary files /dev/null and b/captcha_images/key.ppm differ diff --git a/captcha_images/key.ppm.sum b/captcha_images/key.ppm.sum new file mode 100644 index 0000000..3ed48a4 --- /dev/null +++ b/captcha_images/key.ppm.sum @@ -0,0 +1 @@ +8358a6dd745c26a43355ceac8ffeaf6569ba27debdc6a83a1eed6e0b7106c81d1554f6dfec5e538098aad435707ba4244beeeab5a45935b552ac27a015fd005b \ No newline at end of file diff --git a/captcha_images/key@2x.png b/captcha_images/key@2x.png new file mode 100644 index 0000000..135bb2a Binary files /dev/null and b/captcha_images/key@2x.png differ diff --git a/captcha_images/leaf.png b/captcha_images/leaf.png new file mode 100644 index 0000000..8c1d24a Binary files /dev/null and b/captcha_images/leaf.png differ diff --git a/captcha_images/leaf.ppm b/captcha_images/leaf.ppm new file mode 100644 index 0000000..ce46130 Binary files /dev/null and b/captcha_images/leaf.ppm differ diff --git a/captcha_images/leaf.ppm.sum b/captcha_images/leaf.ppm.sum new file mode 100644 index 0000000..4f3ee93 --- /dev/null +++ b/captcha_images/leaf.ppm.sum @@ -0,0 +1 @@ +db28135111aad2bccea0c1d25c147bb70d4aff9ddcb338c1ec960f092bf8b8f11a86528a6add74b34d49b1a94bda2f112f1316933a190c85c3dbe5229534517e \ No newline at end of file diff --git a/captcha_images/leaf@2x.png b/captcha_images/leaf@2x.png new file mode 100644 index 0000000..dc1631c Binary files /dev/null and b/captcha_images/leaf@2x.png differ diff --git a/captcha_images/light-bulb.png b/captcha_images/light-bulb.png new file mode 100644 index 0000000..6cfe381 Binary files /dev/null and b/captcha_images/light-bulb.png differ diff --git a/captcha_images/light-bulb.ppm b/captcha_images/light-bulb.ppm new file mode 100644 index 0000000..56710a8 Binary files /dev/null and b/captcha_images/light-bulb.ppm differ diff --git a/captcha_images/light-bulb.ppm.sum b/captcha_images/light-bulb.ppm.sum new file mode 100644 index 0000000..5452c38 --- /dev/null +++ b/captcha_images/light-bulb.ppm.sum @@ -0,0 +1 @@ +3ee888ecc26ea19ffa9f6312afcaac0a7900002f26db76e02eee5237a352c3db48d2341e8aba3c5cb332230da0b091b8e4168aff5b951d62e6333a3ed9314741 \ No newline at end of file diff --git a/captcha_images/light-bulb@2x.png b/captcha_images/light-bulb@2x.png new file mode 100644 index 0000000..13014ba Binary files /dev/null and b/captcha_images/light-bulb@2x.png differ diff --git a/captcha_images/lock.png b/captcha_images/lock.png new file mode 100644 index 0000000..ada8d84 Binary files /dev/null and b/captcha_images/lock.png differ diff --git a/captcha_images/lock.ppm b/captcha_images/lock.ppm new file mode 100644 index 0000000..3b371bf Binary files /dev/null and b/captcha_images/lock.ppm differ diff --git a/captcha_images/lock.ppm.sum b/captcha_images/lock.ppm.sum new file mode 100644 index 0000000..778596d --- /dev/null +++ b/captcha_images/lock.ppm.sum @@ -0,0 +1 @@ +0a59e6f0c2f2448f13c98785b51b0d2565592b06f789ca7c2187c2e728968e8c621a347d268cebdb441ce07e4993c65646ff033bd3babefb6ff8f2bcdf01838d \ No newline at end of file diff --git a/captcha_images/lock@2x.png b/captcha_images/lock@2x.png new file mode 100644 index 0000000..893a58b Binary files /dev/null and b/captcha_images/lock@2x.png differ diff --git a/captcha_images/magnifying-glass.png b/captcha_images/magnifying-glass.png new file mode 100644 index 0000000..14bea5c Binary files /dev/null and b/captcha_images/magnifying-glass.png differ diff --git a/captcha_images/magnifying-glass.ppm b/captcha_images/magnifying-glass.ppm new file mode 100644 index 0000000..cb4a571 Binary files /dev/null and b/captcha_images/magnifying-glass.ppm differ diff --git a/captcha_images/magnifying-glass.ppm.sum b/captcha_images/magnifying-glass.ppm.sum new file mode 100644 index 0000000..2cf9655 --- /dev/null +++ b/captcha_images/magnifying-glass.ppm.sum @@ -0,0 +1 @@ +b423be22daef5b0c3d251c42f1bc94b1c8668f7800418381ee8d794fe005ef7e954867856609bc420dcc6285078c5d7605d0ef738dcc553c9da3dfe9e82c8bda \ No newline at end of file diff --git a/captcha_images/magnifying-glass@2x.png b/captcha_images/magnifying-glass@2x.png new file mode 100644 index 0000000..92c3419 Binary files /dev/null and b/captcha_images/magnifying-glass@2x.png differ diff --git a/captcha_images/man.png b/captcha_images/man.png new file mode 100644 index 0000000..0ac1c4f Binary files /dev/null and b/captcha_images/man.png differ diff --git a/captcha_images/man.ppm b/captcha_images/man.ppm new file mode 100644 index 0000000..0407a52 Binary files /dev/null and b/captcha_images/man.ppm differ diff --git a/captcha_images/man.ppm.sum b/captcha_images/man.ppm.sum new file mode 100644 index 0000000..47759f9 --- /dev/null +++ b/captcha_images/man.ppm.sum @@ -0,0 +1 @@ +3f7c883cf5e168b8533cc522c958b13870f19a68920f99177ddc647d117b7771d91907c2a6a33a8271f9995794866cda4456caebd193d6d32096ded500941f63 \ No newline at end of file diff --git a/captcha_images/man@2x.png b/captcha_images/man@2x.png new file mode 100644 index 0000000..65d0db8 Binary files /dev/null and b/captcha_images/man@2x.png differ diff --git a/captcha_images/music-note.png b/captcha_images/music-note.png new file mode 100644 index 0000000..f44d8ef Binary files /dev/null and b/captcha_images/music-note.png differ diff --git a/captcha_images/music-note.ppm b/captcha_images/music-note.ppm new file mode 100644 index 0000000..0cb3e5a Binary files /dev/null and b/captcha_images/music-note.ppm differ diff --git a/captcha_images/music-note.ppm.sum b/captcha_images/music-note.ppm.sum new file mode 100644 index 0000000..4d76319 --- /dev/null +++ b/captcha_images/music-note.ppm.sum @@ -0,0 +1 @@ +e6e4f3ce5530e8514dc6b8eb09fb7bfef85504d5dfbdf70f79afb6642b1502f51675150e04148435064b6f62843a1ca2f2d48b76aa4eda429d6a5c9a161744b8 \ No newline at end of file diff --git a/captcha_images/music-note@2x.png b/captcha_images/music-note@2x.png new file mode 100644 index 0000000..1d7f31c Binary files /dev/null and b/captcha_images/music-note@2x.png differ diff --git a/captcha_images/pants.png b/captcha_images/pants.png new file mode 100644 index 0000000..0a34523 Binary files /dev/null and b/captcha_images/pants.png differ diff --git a/captcha_images/pants.ppm b/captcha_images/pants.ppm new file mode 100644 index 0000000..ce8336d Binary files /dev/null and b/captcha_images/pants.ppm differ diff --git a/captcha_images/pants.ppm.sum b/captcha_images/pants.ppm.sum new file mode 100644 index 0000000..cc7b044 --- /dev/null +++ b/captcha_images/pants.ppm.sum @@ -0,0 +1 @@ +67125b0a4bd5fff0426166dab5c706d2ce4af86e5300420b299834ec1914c3715f9167386ba2e3bd32981756166291c2dd43478ed635ac0ed8d5ae4c98a240ea \ No newline at end of file diff --git a/captcha_images/pants@2x.png b/captcha_images/pants@2x.png new file mode 100644 index 0000000..77fea8d Binary files /dev/null and b/captcha_images/pants@2x.png differ diff --git a/captcha_images/pencil.png b/captcha_images/pencil.png new file mode 100644 index 0000000..b0e8951 Binary files /dev/null and b/captcha_images/pencil.png differ diff --git a/captcha_images/pencil.ppm b/captcha_images/pencil.ppm new file mode 100644 index 0000000..28a2e41 Binary files /dev/null and b/captcha_images/pencil.ppm differ diff --git a/captcha_images/pencil.ppm.sum b/captcha_images/pencil.ppm.sum new file mode 100644 index 0000000..7a8cde2 --- /dev/null +++ b/captcha_images/pencil.ppm.sum @@ -0,0 +1 @@ +1b426891b8b0bda6e9c9f033fadbe2351d8b1cc7f47a7351208793acb50ce142c3f80f44318e88539c3062a1f472edeaa47d7cc464a6c326ff94dc650aa6595c \ No newline at end of file diff --git a/captcha_images/pencil@2x.png b/captcha_images/pencil@2x.png new file mode 100644 index 0000000..a95f998 Binary files /dev/null and b/captcha_images/pencil@2x.png differ diff --git a/captcha_images/printer.png b/captcha_images/printer.png new file mode 100644 index 0000000..63348f8 Binary files /dev/null and b/captcha_images/printer.png differ diff --git a/captcha_images/printer.ppm b/captcha_images/printer.ppm new file mode 100644 index 0000000..6f6a946 Binary files /dev/null and b/captcha_images/printer.ppm differ diff --git a/captcha_images/printer.ppm.sum b/captcha_images/printer.ppm.sum new file mode 100644 index 0000000..250b760 --- /dev/null +++ b/captcha_images/printer.ppm.sum @@ -0,0 +1 @@ +06f760a52f3e3bf87373e42591df4f7ec46076123b335101f0ead4c878d041c9f4a96e0b75126e233131018e8ef1c3579f594002274de908b2da09491ed6a419 \ No newline at end of file diff --git a/captcha_images/printer@2x.png b/captcha_images/printer@2x.png new file mode 100644 index 0000000..bec9c43 Binary files /dev/null and b/captcha_images/printer@2x.png differ diff --git a/captcha_images/robot.png b/captcha_images/robot.png new file mode 100644 index 0000000..96b4df1 Binary files /dev/null and b/captcha_images/robot.png differ diff --git a/captcha_images/robot.ppm b/captcha_images/robot.ppm new file mode 100644 index 0000000..7f85087 Binary files /dev/null and b/captcha_images/robot.ppm differ diff --git a/captcha_images/robot.ppm.sum b/captcha_images/robot.ppm.sum new file mode 100644 index 0000000..fbf03f5 --- /dev/null +++ b/captcha_images/robot.ppm.sum @@ -0,0 +1 @@ +cdb563b400699e83feed8ed41ec7309b03338dfaec2e38b7bc35d1afae89a33c7470ad35f38125a116fb0653037ad9195d443d6ac750fb360eef06fd89517eb3 \ No newline at end of file diff --git a/captcha_images/robot@2x.png b/captcha_images/robot@2x.png new file mode 100644 index 0000000..cb2df1d Binary files /dev/null and b/captcha_images/robot@2x.png differ diff --git a/captcha_images/scissors.png b/captcha_images/scissors.png new file mode 100644 index 0000000..60bf9b5 Binary files /dev/null and b/captcha_images/scissors.png differ diff --git a/captcha_images/scissors.ppm b/captcha_images/scissors.ppm new file mode 100644 index 0000000..a7bad71 Binary files /dev/null and b/captcha_images/scissors.ppm differ diff --git a/captcha_images/scissors.ppm.sum b/captcha_images/scissors.ppm.sum new file mode 100644 index 0000000..4de2006 --- /dev/null +++ b/captcha_images/scissors.ppm.sum @@ -0,0 +1 @@ +f8822cb6027ef01ea677b80686266d0defe28794ca9ef94cc5eb2e0994b8c6dad7345ff2aa54fd4e4c24e88210c7081a164ae53f4a8634b30a3add600e2ba166 \ No newline at end of file diff --git a/captcha_images/scissors@2x.png b/captcha_images/scissors@2x.png new file mode 100644 index 0000000..6701869 Binary files /dev/null and b/captcha_images/scissors@2x.png differ diff --git a/captcha_images/sunglasses.png b/captcha_images/sunglasses.png new file mode 100644 index 0000000..6d70113 Binary files /dev/null and b/captcha_images/sunglasses.png differ diff --git a/captcha_images/sunglasses.ppm b/captcha_images/sunglasses.ppm new file mode 100644 index 0000000..d5e02d0 Binary files /dev/null and b/captcha_images/sunglasses.ppm differ diff --git a/captcha_images/sunglasses.ppm.sum b/captcha_images/sunglasses.ppm.sum new file mode 100644 index 0000000..0c9906a --- /dev/null +++ b/captcha_images/sunglasses.ppm.sum @@ -0,0 +1 @@ +51849e3bb087328076b626f551122df5ffa6c3b88159aa51bbe1eaba4486fc681a0eeeb20045b06c5a8aad91ba8d141932593f8c679635a56e2ca3fbe0954770 \ No newline at end of file diff --git a/captcha_images/sunglasses@2x.png b/captcha_images/sunglasses@2x.png new file mode 100644 index 0000000..df2ca66 Binary files /dev/null and b/captcha_images/sunglasses@2x.png differ diff --git a/captcha_images/t-shirt.png b/captcha_images/t-shirt.png new file mode 100644 index 0000000..3f60be5 Binary files /dev/null and b/captcha_images/t-shirt.png differ diff --git a/captcha_images/t-shirt.ppm b/captcha_images/t-shirt.ppm new file mode 100644 index 0000000..b2c5df5 Binary files /dev/null and b/captcha_images/t-shirt.ppm differ diff --git a/captcha_images/t-shirt.ppm.sum b/captcha_images/t-shirt.ppm.sum new file mode 100644 index 0000000..30eef77 --- /dev/null +++ b/captcha_images/t-shirt.ppm.sum @@ -0,0 +1 @@ +b0ee9eb2872d642e5d13c15496c0c9ce4c8fb7a63984ecb8d259b2c46412242da4155119d7dd61b893584226be61e75bb98a4df4a35df9dedfb8892954fc0760 \ No newline at end of file diff --git a/captcha_images/t-shirt@2x.png b/captcha_images/t-shirt@2x.png new file mode 100644 index 0000000..49077f3 Binary files /dev/null and b/captcha_images/t-shirt@2x.png differ diff --git a/captcha_images/tag.png b/captcha_images/tag.png new file mode 100644 index 0000000..da35359 Binary files /dev/null and b/captcha_images/tag.png differ diff --git a/captcha_images/tag.ppm b/captcha_images/tag.ppm new file mode 100644 index 0000000..c6f9f30 Binary files /dev/null and b/captcha_images/tag.ppm differ diff --git a/captcha_images/tag.ppm.sum b/captcha_images/tag.ppm.sum new file mode 100644 index 0000000..da95141 --- /dev/null +++ b/captcha_images/tag.ppm.sum @@ -0,0 +1 @@ +2e8138d333f83fe00e75bb9d791d9ef1f1bbbf14355ad7a64307284d8723c935fd4b376d729f76da485d8c4a4d9c6f6fcb84aa95b7940f31e4af12aa75858210 \ No newline at end of file diff --git a/captcha_images/tag@2x.png b/captcha_images/tag@2x.png new file mode 100644 index 0000000..ac5b649 Binary files /dev/null and b/captcha_images/tag@2x.png differ diff --git a/captcha_images/tree.png b/captcha_images/tree.png new file mode 100644 index 0000000..8b14461 Binary files /dev/null and b/captcha_images/tree.png differ diff --git a/captcha_images/tree.ppm b/captcha_images/tree.ppm new file mode 100644 index 0000000..66be5bd Binary files /dev/null and b/captcha_images/tree.ppm differ diff --git a/captcha_images/tree.ppm.sum b/captcha_images/tree.ppm.sum new file mode 100644 index 0000000..f2f806d --- /dev/null +++ b/captcha_images/tree.ppm.sum @@ -0,0 +1 @@ +b7231a2d6b074375f4ab842e072df368f7d3d3874eb090a94fbf071cc4d9f428a8de99ba0a3d5a51f09df1241c857f98c4c3147d9bc5c56f34a36d72ce5862b3 \ No newline at end of file diff --git a/captcha_images/tree@2x.png b/captcha_images/tree@2x.png new file mode 100644 index 0000000..e2d0eb1 Binary files /dev/null and b/captcha_images/tree@2x.png differ diff --git a/captcha_images/truck.png b/captcha_images/truck.png new file mode 100644 index 0000000..e500be6 Binary files /dev/null and b/captcha_images/truck.png differ diff --git a/captcha_images/truck.ppm b/captcha_images/truck.ppm new file mode 100644 index 0000000..719bd5b Binary files /dev/null and b/captcha_images/truck.ppm differ diff --git a/captcha_images/truck.ppm.sum b/captcha_images/truck.ppm.sum new file mode 100644 index 0000000..765279f --- /dev/null +++ b/captcha_images/truck.ppm.sum @@ -0,0 +1 @@ +2e013f6413455dba3112ce3088e3ff2a6901429b1f1e196e1be5201381e4f526ae2e892cb3ebdc2bdd3a7d9c2a94d135b0881404d454ef40633557628be67554 \ No newline at end of file diff --git a/captcha_images/truck@2x.png b/captcha_images/truck@2x.png new file mode 100644 index 0000000..66ae507 Binary files /dev/null and b/captcha_images/truck@2x.png differ diff --git a/captcha_images/umbrella.png b/captcha_images/umbrella.png new file mode 100644 index 0000000..e284a20 Binary files /dev/null and b/captcha_images/umbrella.png differ diff --git a/captcha_images/umbrella.ppm b/captcha_images/umbrella.ppm new file mode 100644 index 0000000..2defead Binary files /dev/null and b/captcha_images/umbrella.ppm differ diff --git a/captcha_images/umbrella.ppm.sum b/captcha_images/umbrella.ppm.sum new file mode 100644 index 0000000..4076815 --- /dev/null +++ b/captcha_images/umbrella.ppm.sum @@ -0,0 +1 @@ +35b4d3b1c26a02bc93968c1962ca547a798e4e00d42ebff19fd5b92f98677910c52c3c199ab99f1ff7bfb4c22ad2a2b9b5af0226b0a0290bc39623c7f6b13b8b \ No newline at end of file diff --git a/captcha_images/umbrella@2x.png b/captcha_images/umbrella@2x.png new file mode 100644 index 0000000..4a832c1 Binary files /dev/null and b/captcha_images/umbrella@2x.png differ diff --git a/captcha_images/woman.png b/captcha_images/woman.png new file mode 100644 index 0000000..0630998 Binary files /dev/null and b/captcha_images/woman.png differ diff --git a/captcha_images/woman.ppm b/captcha_images/woman.ppm new file mode 100644 index 0000000..3f8b421 Binary files /dev/null and b/captcha_images/woman.ppm differ diff --git a/captcha_images/woman.ppm.sum b/captcha_images/woman.ppm.sum new file mode 100644 index 0000000..f3efb46 --- /dev/null +++ b/captcha_images/woman.ppm.sum @@ -0,0 +1 @@ +cc7070d5aeb1110943e1d16b1a4e0d042c6bf3e639e02da69436b8d610591a81cd715ec1e33f8e23e6ff343be49c47aa15833a4b8649bf036bea4677109144b4 \ No newline at end of file diff --git a/captcha_images/woman@2x.png b/captcha_images/woman@2x.png new file mode 100644 index 0000000..83be495 Binary files /dev/null and b/captcha_images/woman@2x.png differ diff --git a/captcha_images/world.png b/captcha_images/world.png new file mode 100644 index 0000000..26ed3cf Binary files /dev/null and b/captcha_images/world.png differ diff --git a/captcha_images/world.ppm b/captcha_images/world.ppm new file mode 100644 index 0000000..4cbe924 Binary files /dev/null and b/captcha_images/world.ppm differ diff --git a/captcha_images/world.ppm.sum b/captcha_images/world.ppm.sum new file mode 100644 index 0000000..28b5fba --- /dev/null +++ b/captcha_images/world.ppm.sum @@ -0,0 +1 @@ +e7af9d5194304437eeb4233456d32dff4f80430e2984cf5f358b7e3fafb158cb479b555cba96531cef2e56b7273078c6fb81f6aea311a6be14590b975aa0eb5d \ No newline at end of file diff --git a/captcha_images/world@2x.png b/captcha_images/world@2x.png new file mode 100644 index 0000000..c5c0e5a Binary files /dev/null and b/captcha_images/world@2x.png differ