Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
darkroute — ALPR監視対策PWA。カメラアーカイブはデバイス上に保存されます。 | Kitploit
ツール/GitHubGitHub/darkcodelabs/darkroute
防御ツールOSINT (オープンソースインテリジェンス)暗号化/復号化ツール情報収集ウェブセキュリティモバイルセキュリティプライバシーアンチボット
GitHubdarkcodelabs/darkroute

darkroute

ALPR監視対策PWA。カメラアーカイブはデバイス上に保存されます。

リポジトリを見る
357日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

DarkRoute

DarkRoute

they watching. we watching back.

License: GPL-3.0-only CI Security

目次

  • これは何か
  • リポジトリ構成
  • アーキテクチャ
  • 公開 API
  • 実行時のワークフロー
  • 前提条件
  • インストール
  • 環境変数
  • 開発コマンド
  • テストコマンド
  • セキュリティとプライバシーのモデル
  • 設計ソースとトークンルール
  • プラットフォームの制約
  • コントリビューション
  • セキュリティポリシー
  • ライセンス

これは何か

ドライバーが自動ナンバープレート読取装置のそばを通過する前に、それがどこにあるかを知らせる、 Android 優先の対監視 PWA です。

オフラインでも動作するカメラアーカイブに対するリアルタイムの近接アラート、ローカルの露出履歴、 署名およびハッシュチェーンされたカメラ報告のオンデバイスキュー、そして周辺のカメラを運用して いる機関に関する、出典に基づく公開記録のコンテキストを提供します。

デプロイされたアプリには報告アップロード用のエンドポイントがありません。報告は現在 IndexedDB に 留まります。送信ゲートウェイはオペレーター用コードとして存在しますが、デプロイされたルートでは ありません。この区別はこの README 全体を通じて意図的なものです。

これは意図的に 6 つ目のことを行いません。すなわち、いかなるベンダーのシステムにも問い合わせず、 ナンバープレートの値がデバイスから出ることはありません。

リポジトリ構成

darkroute/
├── apps/
│   ├── pwa/                    React 19 + TypeScript + Vite PWA
│   ├── desktop/                api.darkroute.ai の開発者コンソール。その functions/ が /v1 と /api/v1 を apex にプロキシする
│   └── android/                ビルド可能な Android Trusted Web Activity シェル
├── packages/
│   ├── core/                   純粋な幾何計算とアラートエンジン。DOM も I/O もなし
│   └── api-client/             空のプレースホルダ。実際のコントラクトは GET /api/v1/openapi.json
├── functions/
│   ├── cameras/                CAMERA_TILES R2 バインディングからの同一オリジンのカメラタイル
│   └── api/
│       ├── v1/                 公開 API: 読み取り、/submit (PR を作成)、/photo、openapi.json、_middleware
│       └── admin/              Cloudflare Access テスター許可リスト (プライベート開発ホストのみ)
├── scripts/                    カメラパイプライン、デプロイ、アセットおよびポリシーチェック
├── docs/                       実装、運用および公開ドキュメント
├── the design-gap ledger              未解決の設計上の決定と代替実装
└── installer.sh

LoRa スタックは Meshtastic 自身のもので、改変されていません。このプロジェクトはファームウェアを ビルドせず、純正ノードとペアリングします。packages/api-client はプレースホルダのままであり、 本番の PWA はこれを使用しません。

アーキテクチャ

デプロイされた製品は、静的 PWA と Cloudflare Pages Functions です。すなわち、カメラタイルルート、 /api/v1/ 配下の公開 API (公開 API を参照)、そしてプライベート開発ホスト上の Access で保護された 2 つの管理ルートです。FastAPI プロセス、Postgres データベース、プレゼンス API、デプロイされた報告エンドポイントはありません。唯一の書き込みパスである POST /api/v1/submit は、何かに書き込むのではなく、公開プルリクエストを作成します。

flowchart LR
    OSM["OpenStreetMap"] --> PIPE["scheduled Node camera pipeline"]
    PIPE --> R2[("R2 camera archive")]
    R2 --> CAM["/cameras/* Pages Function"]

    subgraph device["Browser or Android TWA"]
        GPS["geolocation + other adapters"] --> CORE["packages/core alert engine"]
        CORE --> UI["DRIVE / map / reports"]
        UI <--> IDB[("IndexedDB + service-worker cache")]
    end

    CAM --> IDB
    MAP["project tile host (PMTiles)"] --> UI

カメラタイルは同一オリジンの /cameras/* から要求され、CAMERA_TILES R2 バインディングから 配信され、オフライン用にキャッシュされます。ベースマップと速度アーカイブは、プロジェクトが運用 する公開タイルホストへのクロスオリジンのレンジリクエストです。darkroute.ai が公開アプリです。 管理用 Functions はこのディストリビューションの完全に外側に存在します。

キュレーションツールと送信ゲートウェイはオペレーター用コードであり、このディストリビューション には含まれていません。どちらもデプロイされたランタイムサーバーではなく、このリポジトリ内の いかなるものも両者に依存していません。アプリはそれらなしでビルド、実行、テスト、監査できます。

地理空間計算は packages/core にあります。画面はストアとアダプターを利用します。プレートの マッチング、トリップ履歴、報告の証拠チェーンはデバイス上に留まります。

公開 API

アーカイブは誰でも、キーなしで https://darkroute.ai/api/v1/ から読み取れます。これは https://api.darkroute.ai/v1/ および、開発者コンソールのプロキシ経由で https://api.darkroute.ai/api/v1/ としても提供されます。機械可読なコントラクトは GET /api/v1/openapi.json です。説明文は docs/public/API.md §1.3 にあり、試せるコンソールは api.darkroute.ai です。

ルート何に答えるか
GET /api/v1/camerasbbox 内のカメラ (1 辺 ≤ 1.5°、≤ 24 タイル、≤ 1000 行)、任意の owner フィルター
GET /api/v1/statsアーカイブのサイズ、世代、ビルドおよび上流のタイムスタンプ
GET /api/v1/abuse文書化された事例と生成日。任意の郡 fips
GET /api/v1/news自動収集された ALPR の見出し、ソースリンクおよび収集状況
GET /api/v1/atlas郡別の EFF Atlas の機関とベンダー、取得/確認日付付き。任意の fips
GET /api/v1/monitoring道路監視機器のインベントリ。任意の kind と bbox
GET /api/v1/monitoring/image?id=...選択された交通カメラについて利用可能な発行者写真
GET /api/v1/place米国/PR の場所検索。ジオコーダーがドライバーの住所を見ることがないようプロキシされる
GET /api/v1/route最大 60 地点を回避する運転ルート。決してキャッシュされない
GET /api/v1/doc/{name}公開ミラーから公開されたドキュメントを Markdown として
POST /api/v1/submit訂正を [unreviewed] プルリクエストに変換する。アーカイブには何も書き込まれない
PUT /api/v1/photo送信が参照する写真。そのバイト列をキーとする。GET /api/v1/photo/{key} がそれを返す

カメラのレスポンスは OpenStreetMap の帰属表示を伴い、Atlas のレスポンスはそのソースの帰属表示を 伴います。収集スケジュールと、アプリと API がどのようにデータを共有するかについては 報告とデータの鮮度 を参照してください。デフォルトで有効な機器レイヤー、 ソースのカバレッジ、オンデマンドのカメラ写真については 道路監視 を参照してください。公開されているすべてのデータセット、 直接ダウンロード、個別のカウント、鮮度、およびデバイス上にのみ存在するデータについては 完全なデータインベントリ を参照してください。カメラの合計には監視機器、 機関の配備、報告は含まれません。すべてのエラーは安定した error コードを持つ JSON です。 /api/v1/ 配下の未知のパスはアプリではなく 404 JSON です。アドレスごとに毎分 60 リクエストは 速度制限であり、上限ではありません。上限はリクエストごとのキャップです。空の回答は、そこに カメラがマッピングされていないことを意味するだけで、存在しないことを決して意味しません。 アーカイブ全体はデータセットとして公開されています。大量の作業にはそれを利用してください。

実行時のワークフロー

sequenceDiagram
    participant GPS as Geolocation adapter
    participant Core as Alert engine
    participant Store as Alert store
    participant UI as DRIVE
    participant Out as Haptics / notifications

    GPS->>Core: position tick (lat, lon, speed, heading, accuracy)
    Core->>Core: accuracy gate - poor fix computes but does not alert
    Core->>Core: stationary dwell - a red light does not toggle alerts
    Core->>Core: nearest camera, dedupe, hysteresis band
    Core->>Store: AlertState + distance + relative direction
    Store->>UI: selectors - digits snap, they never tween
    Store->>Out: only via useShouldAlertUser()

    Note over Store,Out: Muted suppresses this arrow and nothing else.<br/>Detection, logging, exposure counts and map<br/>rendering are identical whether muted or not.

    alt camera enters threshold
        Out->>Out: camera haptic (2 pulses when multiple)
        UI->>UI: alert takes over the screen, above any sheet
    else county line crossed
        Out->>Out: silent - haptics are reserved for cameras
    end

前提条件

  • Node.js 22.12 以降
  • pnpm 9.15 以降: リポジトリのパッケージマネージャー。競合するロックファイルを作成しないでください。
  • Android 作業のみ: JDK 17 および Android SDK platform 36/build-tools 36.0.0。
  • キュレーション作業のみ: 別途運用されるキュレーションサービスの認証情報。アプリのビルド、 実行、テストには不要です。

Python、FastAPI、Postgres、PostGIS はこのリポジトリの前提条件ではありません。ローカルの PWA 開発にはアカウント、データベース、バックエンドの認証情報は不要です。

インストール

git clone https://github.com/darkcodelabs/darkroute.git
cd darkroute
corepack enable
corepack prepare [email protected] --activate
./installer.sh
ツールをダウンロード