915 lines
36 KiB
Python
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,
|
|
)
|