Files
wifi-gps-mapper-public/cracklab/server/services/stock_methods.py
T
2026-10-06 21:08:12 +03:00

915 lines
36 KiB
Python

from __future__ import annotations
import sqlite3
from dataclasses import dataclass
from typing import Any
from cracklab.server.services.methods import MethodService
@dataclass(frozen=True)
class StockMethod:
method_id: str
name: str
description: str
definition: dict[str, Any] | None
STOCK_METHODS = (
StockMethod(
method_id="mobile_oper_spb_plus_79",
name="MobileOperSpb+79",
description="Перебор мобильных номеров Санкт-Петербурга с префиксом +79.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": f"mask-{index:03d}",
"attack_mode": 3,
"mask": mask,
}
for index, mask in enumerate(
(
"+791100?d?d?d?d?d",
"+791101?d?d?d?d?d",
"+791102?d?d?d?d?d",
"+791103?d?d?d?d?d",
"+791108?d?d?d?d?d",
"+791109?d?d?d?d?d",
"+791110?d?d?d?d?d",
"+791111?d?d?d?d?d",
"+791112?d?d?d?d?d",
"+791117?d?d?d?d?d",
"+791119?d?d?d?d?d",
"+79811?d?d?d?d?d?d",
"+79817?d?d?d?d?d?d",
"+79818?d?d?d?d?d?d",
"+79819?d?d?d?d?d?d",
"+798986?d?d?d?d?d",
"+798686?d?d?d?d?d",
"+798687?d?d?d?d?d",
"+798688?d?d?d?d?d",
"+792118?d?d?d?d?d",
"+792119?d?d?d?d?d",
"+79213?d?d?d?d?d?d",
"+79214?d?d?d?d?d?d",
"+79215?d?d?d?d?d?d",
"+79216?d?d?d?d?d?d",
"+79217?d?d?d?d?d?d",
"+79218?d?d?d?d?d?d",
"+79219?d?d?d?d?d?d",
"+793110?d?d?d?d?d",
"+793111?d?d?d?d?d",
"+793112?d?d?d?d?d",
"+793113?d?d?d?d?d",
"+79312?d?d?d?d?d?d",
"+79313?d?d?d?d?d?d",
"+79315?d?d?d?d?d?d",
"+79319?d?d?d?d?d?d",
"+79291?d?d?d?d?d?d",
"+799923?d?d?d?d?d",
"+799924?d?d?d?d?d",
"+799925?d?d?d?d?d",
"+7963241?d?d?d?d",
"+7963242?d?d?d?d",
"+7963243?d?d?d?d",
"+7963244?d?d?d?d",
"+7963245?d?d?d?d",
"+7963246?d?d?d?d",
"+7963247?d?d?d?d",
"+7963248?d?d?d?d",
"+7963249?d?d?d?d",
"+796330?d?d?d?d?d",
"+796331?d?d?d?d?d",
"+796332?d?d?d?d?d",
"+796334?d?d?d?d?d",
"+79650?d?d?d?d?d?d",
"+79651?d?d?d?d?d?d",
"+79652?d?d?d?d?d?d",
"+79653?d?d?d?d?d?d",
"+79654?d?d?d?d?d?d",
"+79655?d?d?d?d?d?d",
"+79656?d?d?d?d?d?d",
"+79657?d?d?d?d?d?d",
"+79658?d?d?d?d?d?d",
"+79659?d?d?d?d?d?d",
"+790520?d?d?d?d?d",
"+790521?d?d?d?d?d",
"+790522?d?d?d?d?d",
"+790523?d?d?d?d?d",
"+790524?d?d?d?d?d",
"+790525?d?d?d?d?d",
"+790526?d?d?d?d?d",
"+790527?d?d?d?d?d",
"+790528?d?d?d?d?d",
"+790624?d?d?d?d?d",
"+790625?d?d?d?d?d",
"+790626?d?d?d?d?d",
"+790627?d?d?d?d?d",
"+790958?d?d?d?d?d",
"+790959?d?d?d?d?d",
"+796023?d?d?d?d?d",
"+796024?d?d?d?d?d",
"+796025?d?d?d?d?d",
"+796026?d?d?d?d?d",
"+796027?d?d?d?d?d",
"+796028?d?d?d?d?d",
"+796434?d?d?d?d?d",
"+79500?d?d?d?d?d?d",
"+79502?d?d?d?d?d?d",
"+79516?d?d?d?d?d?d",
"+79517?d?d?d?d?d?d",
"+79518?d?d?d?d?d?d",
"+79522?d?d?d?d?d?d",
"+79523?d?d?d?d?d?d",
"+79531?d?d?d?d?d?d",
"+79533?d?d?d?d?d?d",
"+790433?d?d?d?d?d",
"+790451?d?d?d?d?d",
"+790455?d?d?d?d?d",
"+790460?d?d?d?d?d",
"+790461?d?d?d?d?d",
"+790462?d?d?d?d?d",
"+790463?d?d?d?d?d",
"+790464?d?d?d?d?d",
"+799100?d?d?d?d?d",
"+799101?d?d?d?d?d",
"+799102?d?d?d?d?d",
"+790062?d?d?d?d?d",
"+790063?d?d?d?d?d",
"+790064?d?d?d?d?d",
"+790065?d?d?d?d?d",
"+799900?d?d?d?d?d",
"+799901?d?d?d?d?d",
"+799902?d?d?d?d?d",
"+799903?d?d?d?d?d",
"+799904?d?d?d?d?d",
"+799909?d?d?d?d?d",
"+79991?d?d?d?d?d?d",
"+79992?d?d?d?d?d?d",
"+799322?d?d?d?d?d",
"+799343?d?d?d?d?d",
"+799344?d?d?d?d?d",
"+799555?d?d?d?d?d",
"+799559?d?d?d?d?d",
"+799560?d?d?d?d?d",
"+799590?d?d?d?d?d",
"+795840?d?d?d?d?d",
"+795856?d?d?d?d?d",
"+799511?d?d?d?d?d",
"+799512?d?d?d?d?d",
"+7999944?d?d?d?d",
"+7999945?d?d?d?d",
"+7999946?d?d?d?d",
"+7999947?d?d?d?d",
),
start=1,
)
],
},
),
StockMethod(
method_id="mobile_oper_spb_89",
name="MobileOperSpb_89",
description="Перебор мобильных номеров Санкт-Петербурга с префиксом 89.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": f"mask-{index:03d}",
"attack_mode": 3,
"mask": mask,
}
for index, mask in enumerate(
(
"891100?d?d?d?d?d",
"891101?d?d?d?d?d",
"891102?d?d?d?d?d",
"891103?d?d?d?d?d",
"891108?d?d?d?d?d",
"891109?d?d?d?d?d",
"891110?d?d?d?d?d",
"891111?d?d?d?d?d",
"891112?d?d?d?d?d",
"891117?d?d?d?d?d",
"891119?d?d?d?d?d",
"89811?d?d?d?d?d?d",
"89817?d?d?d?d?d?d",
"89818?d?d?d?d?d?d",
"89819?d?d?d?d?d?d",
"898986?d?d?d?d?d",
"898686?d?d?d?d?d",
"898687?d?d?d?d?d",
"898688?d?d?d?d?d",
"892118?d?d?d?d?d",
"892119?d?d?d?d?d",
"89213?d?d?d?d?d?d",
"89214?d?d?d?d?d?d",
"89215?d?d?d?d?d?d",
"89216?d?d?d?d?d?d",
"89217?d?d?d?d?d?d",
"89218?d?d?d?d?d?d",
"89219?d?d?d?d?d?d",
"893110?d?d?d?d?d",
"893111?d?d?d?d?d",
"893112?d?d?d?d?d",
"893113?d?d?d?d?d",
"89312?d?d?d?d?d?d",
"89313?d?d?d?d?d?d",
"89315?d?d?d?d?d?d",
"89319?d?d?d?d?d?d",
"89291?d?d?d?d?d?d",
"899923?d?d?d?d?d",
"899924?d?d?d?d?d",
"899925?d?d?d?d?d",
"8963241?d?d?d?d",
"8963242?d?d?d?d",
"8963243?d?d?d?d",
"8963244?d?d?d?d",
"8963245?d?d?d?d",
"8963246?d?d?d?d",
"8963247?d?d?d?d",
"8963248?d?d?d?d",
"8963249?d?d?d?d",
"896330?d?d?d?d?d",
"896331?d?d?d?d?d",
"896332?d?d?d?d?d",
"896334?d?d?d?d?d",
"89650?d?d?d?d?d?d",
"89651?d?d?d?d?d?d",
"89652?d?d?d?d?d?d",
"89653?d?d?d?d?d?d",
"89654?d?d?d?d?d?d",
"89655?d?d?d?d?d?d",
"89656?d?d?d?d?d?d",
"89657?d?d?d?d?d?d",
"89658?d?d?d?d?d?d",
"89659?d?d?d?d?d?d",
"890520?d?d?d?d?d",
"890521?d?d?d?d?d",
"890522?d?d?d?d?d",
"890523?d?d?d?d?d",
"890524?d?d?d?d?d",
"890525?d?d?d?d?d",
"890526?d?d?d?d?d",
"890527?d?d?d?d?d",
"890528?d?d?d?d?d",
"890624?d?d?d?d?d",
"890625?d?d?d?d?d",
"890626?d?d?d?d?d",
"890627?d?d?d?d?d",
"890958?d?d?d?d?d",
"890959?d?d?d?d?d",
"896023?d?d?d?d?d",
"896024?d?d?d?d?d",
"896025?d?d?d?d?d",
"896026?d?d?d?d?d",
"896027?d?d?d?d?d",
"896028?d?d?d?d?d",
"896434?d?d?d?d?d",
"89500?d?d?d?d?d?d",
"89502?d?d?d?d?d?d",
"89516?d?d?d?d?d?d",
"89517?d?d?d?d?d?d",
"89518?d?d?d?d?d?d",
"89522?d?d?d?d?d?d",
"89523?d?d?d?d?d?d",
"89531?d?d?d?d?d?d",
"89533?d?d?d?d?d?d",
"890433?d?d?d?d?d",
"890451?d?d?d?d?d",
"890455?d?d?d?d?d",
"890460?d?d?d?d?d",
"890461?d?d?d?d?d",
"890462?d?d?d?d?d",
"890463?d?d?d?d?d",
"890464?d?d?d?d?d",
"899100?d?d?d?d?d",
"899101?d?d?d?d?d",
"899102?d?d?d?d?d",
"890062?d?d?d?d?d",
"890063?d?d?d?d?d",
"890064?d?d?d?d?d",
"890065?d?d?d?d?d",
"899900?d?d?d?d?d",
"899901?d?d?d?d?d",
"899902?d?d?d?d?d",
"899903?d?d?d?d?d",
"899904?d?d?d?d?d",
"899909?d?d?d?d?d",
"89991?d?d?d?d?d?d",
"89992?d?d?d?d?d?d",
"899322?d?d?d?d?d",
"899343?d?d?d?d?d",
"899344?d?d?d?d?d",
"899555?d?d?d?d?d",
"899559?d?d?d?d?d",
"899560?d?d?d?d?d",
"899590?d?d?d?d?d",
"895840?d?d?d?d?d",
"895856?d?d?d?d?d",
"899511?d?d?d?d?d",
"899512?d?d?d?d?d",
"8999944?d?d?d?d",
"8999945?d?d?d?d",
"8999946?d?d?d?d",
"8999947?d?d?d?d",
),
start=1,
)
],
},
),
StockMethod(
method_id="mobile_oper_spb_79",
name="MobileOperSpb_79",
description="Перебор мобильных номеров Санкт-Петербурга без знака +.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": f"mask-{index:03d}",
"attack_mode": 3,
"mask": mask,
}
for index, mask in enumerate(
(
"791100?d?d?d?d?d",
"791101?d?d?d?d?d",
"791102?d?d?d?d?d",
"791103?d?d?d?d?d",
"791108?d?d?d?d?d",
"791109?d?d?d?d?d",
"791110?d?d?d?d?d",
"791111?d?d?d?d?d",
"791112?d?d?d?d?d",
"791117?d?d?d?d?d",
"791119?d?d?d?d?d",
"79811?d?d?d?d?d?d",
"79817?d?d?d?d?d?d",
"79818?d?d?d?d?d?d",
"79819?d?d?d?d?d?d",
"798986?d?d?d?d?d",
"798686?d?d?d?d?d",
"798687?d?d?d?d?d",
"798688?d?d?d?d?d",
"792118?d?d?d?d?d",
"792119?d?d?d?d?d",
"79213?d?d?d?d?d?d",
"79214?d?d?d?d?d?d",
"79215?d?d?d?d?d?d",
"79216?d?d?d?d?d?d",
"79217?d?d?d?d?d?d",
"79218?d?d?d?d?d?d",
"79219?d?d?d?d?d?d",
"793110?d?d?d?d?d",
"793111?d?d?d?d?d",
"793112?d?d?d?d?d",
"793113?d?d?d?d?d",
"79312?d?d?d?d?d?d",
"79313?d?d?d?d?d?d",
"79315?d?d?d?d?d?d",
"79319?d?d?d?d?d?d",
"79291?d?d?d?d?d?d",
"799923?d?d?d?d?d",
"799924?d?d?d?d?d",
"799925?d?d?d?d?d",
"7963241?d?d?d?d",
"7963242?d?d?d?d",
"7963243?d?d?d?d",
"7963244?d?d?d?d",
"7963245?d?d?d?d",
"7963246?d?d?d?d",
"7963247?d?d?d?d",
"7963248?d?d?d?d",
"7963249?d?d?d?d",
"796330?d?d?d?d?d",
"796331?d?d?d?d?d",
"796332?d?d?d?d?d",
"796334?d?d?d?d?d",
"79650?d?d?d?d?d?d",
"79651?d?d?d?d?d?d",
"79652?d?d?d?d?d?d",
"79653?d?d?d?d?d?d",
"79654?d?d?d?d?d?d",
"79655?d?d?d?d?d?d",
"79656?d?d?d?d?d?d",
"79657?d?d?d?d?d?d",
"79658?d?d?d?d?d?d",
"79659?d?d?d?d?d?d",
"790520?d?d?d?d?d",
"790521?d?d?d?d?d",
"790522?d?d?d?d?d",
"790523?d?d?d?d?d",
"790524?d?d?d?d?d",
"790525?d?d?d?d?d",
"790526?d?d?d?d?d",
"790527?d?d?d?d?d",
"790528?d?d?d?d?d",
"790624?d?d?d?d?d",
"790625?d?d?d?d?d",
"790626?d?d?d?d?d",
"790627?d?d?d?d?d",
"790958?d?d?d?d?d",
"790959?d?d?d?d?d",
"796023?d?d?d?d?d",
"796024?d?d?d?d?d",
"796025?d?d?d?d?d",
"796026?d?d?d?d?d",
"796027?d?d?d?d?d",
"796028?d?d?d?d?d",
"796434?d?d?d?d?d",
"79500?d?d?d?d?d?d",
"79502?d?d?d?d?d?d",
"79516?d?d?d?d?d?d",
"79517?d?d?d?d?d?d",
"79518?d?d?d?d?d?d",
"79522?d?d?d?d?d?d",
"79523?d?d?d?d?d?d",
"79531?d?d?d?d?d?d",
"79533?d?d?d?d?d?d",
"790433?d?d?d?d?d",
"790451?d?d?d?d?d",
"790455?d?d?d?d?d",
"790460?d?d?d?d?d",
"790461?d?d?d?d?d",
"790462?d?d?d?d?d",
"790463?d?d?d?d?d",
"790464?d?d?d?d?d",
"799100?d?d?d?d?d",
"799101?d?d?d?d?d",
"799102?d?d?d?d?d",
"790062?d?d?d?d?d",
"790063?d?d?d?d?d",
"790064?d?d?d?d?d",
"790065?d?d?d?d?d",
"799900?d?d?d?d?d",
"799901?d?d?d?d?d",
"799902?d?d?d?d?d",
"799903?d?d?d?d?d",
"799904?d?d?d?d?d",
"799909?d?d?d?d?d",
"79991?d?d?d?d?d?d",
"79992?d?d?d?d?d?d",
"799322?d?d?d?d?d",
"799343?d?d?d?d?d",
"799344?d?d?d?d?d",
"799555?d?d?d?d?d",
"799559?d?d?d?d?d",
"799560?d?d?d?d?d",
"799590?d?d?d?d?d",
"795840?d?d?d?d?d",
"795856?d?d?d?d?d",
"799511?d?d?d?d?d",
"799512?d?d?d?d?d",
"7999944?d?d?d?d",
"7999945?d?d?d?d",
"7999946?d?d?d?d",
"7999947?d?d?d?d",
),
start=1,
)
],
},
),
StockMethod(
method_id="mobile_oper_spb_9",
name="MobileOperSpb_9",
description="Перебор мобильных номеров Санкт-Петербурга без 7 и знака +.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": f"mask-{index:03d}",
"attack_mode": 3,
"mask": mask,
}
for index, mask in enumerate(
(
"91100?d?d?d?d?d",
"91101?d?d?d?d?d",
"91102?d?d?d?d?d",
"91103?d?d?d?d?d",
"91108?d?d?d?d?d",
"91109?d?d?d?d?d",
"91110?d?d?d?d?d",
"91111?d?d?d?d?d",
"91112?d?d?d?d?d",
"91117?d?d?d?d?d",
"91119?d?d?d?d?d",
"9811?d?d?d?d?d?d",
"9817?d?d?d?d?d?d",
"9818?d?d?d?d?d?d",
"9819?d?d?d?d?d?d",
"98986?d?d?d?d?d",
"98686?d?d?d?d?d",
"98687?d?d?d?d?d",
"98688?d?d?d?d?d",
"92118?d?d?d?d?d",
"92119?d?d?d?d?d",
"9213?d?d?d?d?d?d",
"9214?d?d?d?d?d?d",
"9215?d?d?d?d?d?d",
"9216?d?d?d?d?d?d",
"9217?d?d?d?d?d?d",
"9218?d?d?d?d?d?d",
"9219?d?d?d?d?d?d",
"93110?d?d?d?d?d",
"93111?d?d?d?d?d",
"93112?d?d?d?d?d",
"93113?d?d?d?d?d",
"9312?d?d?d?d?d?d",
"9313?d?d?d?d?d?d",
"9315?d?d?d?d?d?d",
"9319?d?d?d?d?d?d",
"9291?d?d?d?d?d?d",
"99923?d?d?d?d?d",
"99924?d?d?d?d?d",
"99925?d?d?d?d?d",
"963241?d?d?d?d",
"963242?d?d?d?d",
"963243?d?d?d?d",
"963244?d?d?d?d",
"963245?d?d?d?d",
"963246?d?d?d?d",
"963247?d?d?d?d",
"963248?d?d?d?d",
"963249?d?d?d?d",
"96330?d?d?d?d?d",
"96331?d?d?d?d?d",
"96332?d?d?d?d?d",
"96334?d?d?d?d?d",
"9650?d?d?d?d?d?d",
"9651?d?d?d?d?d?d",
"9652?d?d?d?d?d?d",
"9653?d?d?d?d?d?d",
"9654?d?d?d?d?d?d",
"9655?d?d?d?d?d?d",
"9656?d?d?d?d?d?d",
"9657?d?d?d?d?d?d",
"9658?d?d?d?d?d?d",
"9659?d?d?d?d?d?d",
"90520?d?d?d?d?d",
"90521?d?d?d?d?d",
"90522?d?d?d?d?d",
"90523?d?d?d?d?d",
"90524?d?d?d?d?d",
"90525?d?d?d?d?d",
"90526?d?d?d?d?d",
"90527?d?d?d?d?d",
"90528?d?d?d?d?d",
"90624?d?d?d?d?d",
"90625?d?d?d?d?d",
"90626?d?d?d?d?d",
"90627?d?d?d?d?d",
"90958?d?d?d?d?d",
"90959?d?d?d?d?d",
"96023?d?d?d?d?d",
"96024?d?d?d?d?d",
"96025?d?d?d?d?d",
"96026?d?d?d?d?d",
"96027?d?d?d?d?d",
"96028?d?d?d?d?d",
"96434?d?d?d?d?d",
"9500?d?d?d?d?d?d",
"9502?d?d?d?d?d?d",
"9516?d?d?d?d?d?d",
"9517?d?d?d?d?d?d",
"9518?d?d?d?d?d?d",
"9522?d?d?d?d?d?d",
"9523?d?d?d?d?d?d",
"9531?d?d?d?d?d?d",
"9533?d?d?d?d?d?d",
"90433?d?d?d?d?d",
"90451?d?d?d?d?d",
"90455?d?d?d?d?d",
"90460?d?d?d?d?d",
"90461?d?d?d?d?d",
"90462?d?d?d?d?d",
"90463?d?d?d?d?d",
"90464?d?d?d?d?d",
"99100?d?d?d?d?d",
"99101?d?d?d?d?d",
"99102?d?d?d?d?d",
"90062?d?d?d?d?d",
"90063?d?d?d?d?d",
"90064?d?d?d?d?d",
"90065?d?d?d?d?d",
"99900?d?d?d?d?d",
"99901?d?d?d?d?d",
"99902?d?d?d?d?d",
"99903?d?d?d?d?d",
"99904?d?d?d?d?d",
"99909?d?d?d?d?d",
"9991?d?d?d?d?d?d",
"9992?d?d?d?d?d?d",
"99322?d?d?d?d?d",
"99343?d?d?d?d?d",
"99344?d?d?d?d?d",
"99555?d?d?d?d?d",
"99559?d?d?d?d?d",
"99560?d?d?d?d?d",
"99590?d?d?d?d?d",
"95840?d?d?d?d?d",
"95856?d?d?d?d?d",
"99511?d?d?d?d?d",
"99512?d?d?d?d?d",
"999944?d?d?d?d",
"999945?d?d?d?d",
"999946?d?d?d?d",
"999947?d?d?d?d",
),
start=1,
)
],
},
),
StockMethod(
method_id="mobile_oper_plus_79",
name="MobileOper+79",
description="Перебор мобильных номеров с префиксом +79.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": f"mask-{index:03d}",
"attack_mode": 3,
"mask": mask,
}
for index, mask in enumerate(
(
"+7911?d?d?d?d?d?d?d",
"+7904?d?d?d?d?d?d?d",
"+7931?d?d?d?d?d?d?d",
"+7921?d?d?d?d?d?d?d",
"+7999?d?d?d?d?d?d?d",
"+7905?d?d?d?d?d?d?d",
"+7951?d?d?d?d?d?d?d",
"+7952?d?d?d?d?d?d?d",
"+7953?d?d?d?d?d?d?d",
"+7901?d?d?d?d?d?d?d",
"+7903?d?d?d?d?d?d?d",
"+7950?d?d?d?d?d?d?d",
"+7906?d?d?d?d?d?d?d",
"+7909?d?d?d?d?d?d?d",
"+7929?d?d?d?d?d?d?d",
"+7960?d?d?d?d?d?d?d",
"+7961?d?d?d?d?d?d?d",
"+7962?d?d?d?d?d?d?d",
"+7963?d?d?d?d?d?d?d",
"+7965?d?d?d?d?d?d?d",
"+7966?d?d?d?d?d?d?d",
"+7981?d?d?d?d?d?d?d",
),
start=1,
)
],
},
),
StockMethod(
method_id="mobile_oper_89",
name="MobileOper_89",
description="Перебор мобильных номеров с префиксом 89.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": f"mask-{index:03d}",
"attack_mode": 3,
"mask": mask,
}
for index, mask in enumerate(
(
"8911?d?d?d?d?d?d?d",
"8904?d?d?d?d?d?d?d",
"8931?d?d?d?d?d?d?d",
"8921?d?d?d?d?d?d?d",
"8999?d?d?d?d?d?d?d",
"8905?d?d?d?d?d?d?d",
"8951?d?d?d?d?d?d?d",
"8952?d?d?d?d?d?d?d",
"8953?d?d?d?d?d?d?d",
"8901?d?d?d?d?d?d?d",
"8903?d?d?d?d?d?d?d",
"8950?d?d?d?d?d?d?d",
"8906?d?d?d?d?d?d?d",
"8909?d?d?d?d?d?d?d",
"8929?d?d?d?d?d?d?d",
"8960?d?d?d?d?d?d?d",
"8961?d?d?d?d?d?d?d",
"8962?d?d?d?d?d?d?d",
"8963?d?d?d?d?d?d?d",
"8965?d?d?d?d?d?d?d",
"8966?d?d?d?d?d?d?d",
"8981?d?d?d?d?d?d?d",
),
start=1,
)
],
},
),
StockMethod(
method_id="mobile_oper_79",
name="MobileOper_79",
description="Перебор мобильных номеров без знака +.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": f"mask-{index:03d}",
"attack_mode": 3,
"mask": mask,
}
for index, mask in enumerate(
(
"7911?d?d?d?d?d?d?d",
"7904?d?d?d?d?d?d?d",
"7931?d?d?d?d?d?d?d",
"7921?d?d?d?d?d?d?d",
"7999?d?d?d?d?d?d?d",
"7905?d?d?d?d?d?d?d",
"7951?d?d?d?d?d?d?d",
"7952?d?d?d?d?d?d?d",
"7953?d?d?d?d?d?d?d",
"7901?d?d?d?d?d?d?d",
"7903?d?d?d?d?d?d?d",
"7950?d?d?d?d?d?d?d",
"7906?d?d?d?d?d?d?d",
"7909?d?d?d?d?d?d?d",
"7929?d?d?d?d?d?d?d",
"7960?d?d?d?d?d?d?d",
"7961?d?d?d?d?d?d?d",
"7962?d?d?d?d?d?d?d",
"7963?d?d?d?d?d?d?d",
"7965?d?d?d?d?d?d?d",
"7966?d?d?d?d?d?d?d",
"7981?d?d?d?d?d?d?d",
),
start=1,
)
],
},
),
StockMethod(
method_id="mobile_oper_9",
name="MobileOper_9",
description="Перебор мобильных номеров без 7 и знака +.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": f"mask-{index:03d}",
"attack_mode": 3,
"mask": mask,
}
for index, mask in enumerate(
(
"911?d?d?d?d?d?d?d",
"904?d?d?d?d?d?d?d",
"931?d?d?d?d?d?d?d",
"921?d?d?d?d?d?d?d",
"999?d?d?d?d?d?d?d",
"905?d?d?d?d?d?d?d",
"951?d?d?d?d?d?d?d",
"952?d?d?d?d?d?d?d",
"953?d?d?d?d?d?d?d",
"901?d?d?d?d?d?d?d",
"903?d?d?d?d?d?d?d",
"950?d?d?d?d?d?d?d",
"906?d?d?d?d?d?d?d",
"909?d?d?d?d?d?d?d",
"929?d?d?d?d?d?d?d",
"960?d?d?d?d?d?d?d",
"961?d?d?d?d?d?d?d",
"962?d?d?d?d?d?d?d",
"963?d?d?d?d?d?d?d",
"965?d?d?d?d?d?d?d",
"966?d?d?d?d?d?d?d",
"981?d?d?d?d?d?d?d",
),
start=1,
)
],
},
),
StockMethod(
method_id="mask_8_digits",
name="8-digital",
description="Перебор восьмизначных числовых паролей.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": "mask-001",
"attack_mode": 3,
"mask": "?d?d?d?d?d?d?d?d",
},
],
},
),
StockMethod(
method_id="breachcompilation",
name="BreachCompilation",
description="Перебор по словарю BreachCompilation.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": "dictionary-001",
"attack_mode": 0,
"dictionary": {
"resource": "wordlist:breachcompilation",
},
},
],
},
),
StockMethod(
method_id="insidepro_wpa",
name="insidePRO_WPA",
description="Перебор по словарю insidePRO_WPA.",
definition={
"schema_version": 1,
"hash_mode": 22000,
"steps": [
{
"step_id": "dictionary-001",
"attack_mode": 0,
"dictionary": {
"resource": "wordlist:insidepro-wpa",
},
},
],
},
),
)
class StockMethodSeeder:
def __init__(self, conn: sqlite3.Connection) -> None:
self._conn = conn
self._methods = MethodService(conn)
def seed(self) -> None:
with self._conn:
for stock_method in STOCK_METHODS:
if stock_method.definition is None:
continue
existing_method = self._methods.get_method(
stock_method.method_id
)
if existing_method is None:
self._methods.create_method(
method_id=stock_method.method_id,
name=stock_method.name,
description=stock_method.description,
)
else:
if existing_method["name"] != stock_method.name:
raise ValueError(
"Stock method ID is already used with a "
f"different name: {stock_method.method_id}"
)
existing_version = self._methods.get_method_version(
stock_method.method_id,
1,
)
if existing_version is None:
self._methods.create_method_version(
method_id=stock_method.method_id,
version=1,
definition=stock_method.definition,
)
elif existing_version["definition_json"] != (
self._canonical_json(stock_method.definition)
):
raise ValueError(
"Stock method version 1 already exists with "
f"different definition: {stock_method.method_id}"
)
@staticmethod
def _canonical_json(definition: dict[str, Any]) -> str:
import json
return json.dumps(
definition,
ensure_ascii=False,
separators=(",", ":"),
sort_keys=True,
)