HN 日本語サマリー

← 一覧へ戻る
セキュリティ

ドイツAfDメールリークの概要

Overview of the German AfD email leak (erik.gdn)

20 pointsby zinngr5 コメント

要約

この分析は、ドイツの政治党AfDから漏洩したメールとウェブサイトのデータアーカイブを詳細に調査しています。42万件以上のメールと139のウェブサイトのデータベースが含まれており、データの内容、送信者、ウェブサイトの構造、そしてデータ処理の方法について詳細な分析が提供されています。このリークは、政治組織におけるデータセキュリティの脆弱性と、その分析がもたらす影響を浮き彫りにしています。

全文翻訳

ドイツAfDメールリークの概要

この分析は、ドイツの政治党AfDから漏洩したメールとウェブサイトのデータアーカイブを詳細に調査しています。42万件以上のメールと139のウェブサイトのデータベースが含まれており、データの内容、送信者、ウェブサイトの構造、そしてデータ処理の方法について詳細な分析が提供されています。このリークは、政治組織におけるデータセキュリティの脆弱性と、その分析がもたらす影響を浮き彫りにしています。

リークに含まれるもの

hexaneアーカイブには、異なるシステムからの2つの独立したデータセットが含まれています。それらは、時折メールアドレスを共有する程度です。

  • emails: AfDのメールサーバーからの10個のメールボックス、および
  • websites: www.afd.deと約140の他の党ウェブサイトのWordPressデータベース。

このノートブックは、以下の質問に一つずつ答えます。すべての数値は、明示的にソースのものとしてマークされていない限り、ファイルから計算されています。これは、データを提供した個人またはグループ(以下、ソース)のメモから取られたものです。同じ「もの」の2つのカウントが一致しない場合、ノートブックはそれぞれがどの質問に答えているかを説明します。上から下へ読んでください。各セクションは短い回答から始まり、その後に証拠が続きます。


パートA:メール

A1・メールは何通?

emails

421,178

保存されたメッセージ、すべてのフォルダ

conversations

49,554

2通以上のメールが含まれるスレッド

email addresses

93,635

任意のヘッダー内

time span

2013–2026

2013年3月から2026年9月まで、送信日による

短い回答:421,178通のメール。 各メールは個別のメッセージです。ソースはリリース前にMessage-IDによってアーカイブを重複排除しました(DATA_DICTIONARY.md)、そしてそれは有効です。Message-IDを共有するメールは42通のみで、81通はMessage-IDがありません。したがって、「複数のメールボックスに同じメールのコピーがある」ということはここでは要因ではありません。2つのメールボックスが同じメールを保持していた場合、1つのコピーのみがフォルダのいずれかに残りました(これはA2で重要です)。最新のメールは2026年9月14日付けで、メールはそこで終了します。ウェブサイトデータ(パートB)は約3週間後まで続きます。

[画像]

[画像]メールボックスは非常に異なる期間をカバーしています:Gaulandのものは2017–2023年、bundesgeschaeftsstelle@は2018年初頭で停止し、ハイフン付きのHolmフォルダはわずか2週間(A6)をカバーしています。2016–2018年のピークは主にbundesschiedsgericht@フォルダで、これは仲裁裁判所のメール(A2)よりもはるかに多くのメールを保持しています。空のセルは、アーカイブにその年のそのフォルダからのメールがないことを意味します。

A2・DATA.mdに非常に異なる数値を持つ2つのメールテーブルがあるのはなぜか

docs/DATA.mdは、メールボックスごと(例:bundesschiedsgericht@は101,078通のメールを保持)と、アドレスごと(同じアドレスが「受信」したのはわずか8,800通)のテーブルを示しています。どちらも正しいです。それらは異なる質問に答えます。

tablequestion it answers
per mailboxメールはアーカイブのどのフォルダに保存されていますか?
per addressアーカイブ内のメールのFrom/To/Cc/Bcc行に、アドレスが何回記載されていますか?

フォルダ内のすべてのメールがそのフォルダの名前から送受信されている場合のみ、それらは一致します。しかし、そうではありません。メールはBcc、メーリングリスト、エイリアス、または転送ルールを介してメールボックスに到達する可能性があるため、名前はヘッダーに記載されていません。また、フォルダには他人のメールがそのまま含まれることがあります。受信メールサーバーは、真の受信者をDelivered-Toヘッダーに記録し、何が起こったかを示します。

[画像]

3つのフォルダでその効果が明確に示されています。

  • Gauland: 32,615通のメールが保存されています。彼のメールアドレスはTo/Ccに13,167回しか表示されません(DATA.mdの「受信」の数値、14,482は他のフォルダでの言及を含みます)。それにもかかわらず、サーバーは彼を32,600(100%)で実際の受信者として記録しました。彼のメールのほとんどは、Bcc、リスト、またはエイリアスを介して彼に届きました。そして彼が送信したのはわずか15通です。これは受信トレイであり、送信済みフォルダではありません。
  • bundesschiedsgericht@(連邦仲裁裁判所):101,078通のメールですが、ヘッダーにそのアドレスが関与しているのはわずか14,311通(14%)です。このフォルダは主に他人のメールです。Sankey図は、Alice Weidel、paypal@、Magnus Heutmannなどのメールを示しています。フォルダ名はソースがメールをどこに保存したかを示しており、それが誰のメールボックスであったかを示していません。
  • leif.erik.holm@(ドット付き):60,215通のメールがありますが、そのアドレスはどれにも(0%)表示されません。これは、leif-erik.holm@(ハイフン付き)、MV党事務所buero@afd-mv.de、報道官などのメールです。

経験則:「このフォルダにはどれくらいのメールがありますか?」という質問には、メールボックスごとのテーブルを使用してください。「Xさんはどれくらいのメールを送受信しましたか?」という質問には、アドレスを使用してください。理想的には配信ヘッダーを使用し、1人の人物が複数のアドレスを持つ可能性があることを覚えておいてください(Jacobiは3つ持っています)。

緑色のリンク:フォルダ自身の名前に配信されました。紫色:誰か他の人に配信されました。灰色:配信ヘッダーなし(サーバーが記録しなかった)またはその他に折りたたまれた小規模な受信者。リンクをホバーするとカウントが表示されます。

A3・メールスレッドは何通?

ここではスレッドとは、メールがIn-Reply-To/Referencesヘッダーで参照するMessage-IDを介してリンクされた一連のメールです(コーパス内のthreads/;件名の一致なし)。見出しの数値は、スレッドを何と呼ぶかによって異なります。

  • 300,807スレッド:返信のない各メールが独自の Сスレッドと見なされる場合。
  • 49,554会話:スレッドが少なくとも2通のメールを必要とする場合。これらは169,925通のメール(全体の40%)を保持しています。

スレッドの84%は単一のメールです:ニュースレター、通知、スパム、誰も返信しなかった単発メッセージ、またはアーカイブに先行メールがない返信です。[画像]メールボックスが不完全である2つの兆候:63,718スレッド(21%)は、アーカイブにない少なくとも1通の以前のメールを参照しています(合計98,919通の欠落メール、例:返信の送信済みコピー)。そして、スレッドが複数のメールボックスフォルダにまたがるのはわずか9,111スレッドであり、これはMessage-IDの重複排除(A1)によるものです。

A4・誰がメールを送信していますか?スパム、政治家、AfD、企業、個人

各メールは、送信者アドレスから1つのカテゴリを受け取ります。ルールは単純で、順番に適用されます(最初に一致したものが勝ちます)。それらはsrc/analysis/senders.pyにあります。

#categoryrule
0No sender address送信者ヘッダーに解析可能なアドレスがない
1Spamサーバーのスパム判定、スパムタグ付き件名、使い捨てトップレベルドメイン(.su, .mom, .makeup, …)、またはローテーションドメイン:≥10通のメール、各回で異なるアドレスから≥80%
2AfD党ドメイン(afd…, alternativefuer…、党のショップ/ホスティング)
3Politics & state国会(Bundestag, Landtage, EU)、他の政党、政府、警察、裁判所、市町村役場
4Automated & newsletters自動返信またはメーリングリストヘッダー、no-reply/ニュースレター形式のアドレス、プラットフォーム(PayPal, Twitter, Amazon, …)
5Private personsフリーメールプロバイダー(gmail, web.de, gmx, t-online, …):個人アカウントから書いた個人
6Companies & orgsその他すべて:独自の非党ドメインを持つ送信者(ビジネス、協会、メディア、法律事務所)

これらはアドレスに関する記述であり、確認された身元ではありません。AfDの議員が@bundestag.deから書いた場合はPolitics & stateに分類され、gmailから書いた場合はPrivate personsに分類されます。

[画像]

短い回答:メールの約半分はAfD関連(53%)です:党事務所、役員、党システムから、わずか2,785アドレス。個人が次に多く(18%)、圧倒的に多くのアドレス(17,247)から来ており、次に企業(15%;印刷業者、商品供給業者、IT、弁護士、協会)と自動メール(10%;PayPalだけで22,000通)が続きます。AfDドメイン外のPolitics & stateは少なく(2%;主に@bundestag.de)。スパムは8,618通(2%)ですが、ほぼ同数の異なるアドレスから来ており、これはスパムの典型的な特徴です。

[画像]

スパム:サーバーのフラグとこれらのルールの比較

はい、メールサーバーからのスパムフラグ(X-Spam-Flag、およびX-Spam-Score)があります。しかし、それだけでは「どれくらいがスパムか」という質問には答えられません。ほとんどのメールには判定がありません。なぜなら、それらは判定を追加しなかったサーバーを通過したからです。判定が存在する場合、それは上記のルールをチェックすることを可能にします。

  • 421,178通のメールのうち51,998通(12%)にサーバーの判定があります:1,227通がYES、50,771通がNOです。カバレッジはメールサーバーによって異なります:ハイフン付きHolmフォルダでは100%、bundesschiedsgericht@では1%未満です。
  • 判定が隠されている場合、ルールは依然としてサーバーがYESと判定したメール1,227通のうち815通(66%)を検出します。
  • また、サーバーがNOと判定したメール2,036通をスパムと判定します(その4%)。ランダムサンプル(下記)は、これらがサーバーが見逃したスパムであり、誤検知ではないことを示しています。
  • 判定がない369,180通のメールのうち、ルールは5,324通のスパムを見つけます。

したがって、8,618通のスパムメールという数は控えめな推定値です。サーバーフラグだけでは1,227通のフロアが得られ、ルールはサーバーフラグ付きスパムの約3分の1を見逃すため、真の数値はやや高くなる可能性があります。いずれにせよ、スパムは全体像を歪めていません。それはコーパスの約2%です。

ランダムサンプル:サーバーはNOと言ったが、ルールはスパムと判定した

subject (server said: not spam)rule
Gelenkschmerzen loswerdenrotating sender addresses
Effektive Schmerzbehandlungrotating sender addresses
Toxictm Off - Reinigt das Blut und Organe von Giftenthrowaway top-level domain
Ist dein Messer unscharf? Mit Wolframcarbid-Messerschärfer kannst du irotating sender addresses
Die Verbesserung der Potenz und der Libido in jedem Alterrotating sender addresses
Richtige Behandlung fur Bluthochdruckrotating sender addresses
=?UTF-8?Q?St=C3=B6rt_dich, _dass_deine_Z=C3=A4hne_nicht_makellos_sind=rotating sender addresses
Hochkonzentriertes Cannabisölrotating sender addresses
Gelenkschmerzen loswerdenrotating sender addresses
RE: Shipping services from China to worldwiderotating sender addresses
Die Psoriasis kann endlich geheilt werdenthrowaway top-level domain
Plus 1 Duschkopf als Geschenk: hautfreundliche Dusche zaubert seidigrotating sender addresses

12 rows

AfDとPolitics & State:具体的に誰か?

左(青):AfD。 221,769通のメールが党のアドレスから来ており、428のドメイン(アドレスの@より後の部分)と2,785のアドレスに分散しています。グラフは最も多くのメールを送信した10のドメインを示しています。各バーは1つのドメインです。その長さと末尾の数字は、そのドメインのアドレスから10個のメールボックスに含まれるメールの数を示します。これら10のドメインでAfDメール全体の85%を占めています。右(オレンジ):Politics & State、これは国会、他の政党、政府、裁判所、警察(8,770通のメール)を意味し、送信者の種類別に分割されています。ここでも、各バーの数字はメールの数です。[画像]連邦議会(Bundestag)のメール(155アドレスから7,068通)は集中しています。90%はmarkus.frohnmaier、leif-erik.holm、beatrix.vonstorch、enrico.komning、alice.weidel、michael.espendiller、anton.friesenとそのスタッフ(.maNN)に属する15のアドレスから来ています。これらはAfDの連邦議員であり、Politics & Stateのほとんどは実際には連邦議会のアカウントから書いているAfDの人々です。他の政党は送信者としてはほとんど現れません。

[画像]各バーはカテゴリの送信者アドレスを、それぞれが送信したメール数で分割しています。個人は主に一度きりの書き手です:17,247人の個人のアドレスのうち13,199(77%)がちょうど1回だけ書き込みました。一般市民が党に宛てて書いています。AfDのアドレスは少ないですが、多作です。スパムはほぼすべて1通のメールです:毎回新しいアドレスです。

A5・ネットワークとしてどのように見えるか?

すべてのアドレスがノードです。エッジは送信者からTo/Cc/Bccの各アドレスへ、メール数で重み付けされて伸びます。

送信または受信したアドレス

77,610

送信者→受信者のペア

294,621

1つの連結クラスター内

86%

66,512アドレス

双方向に書き込んだペア

13%

短い回答:少数のハブと巨大なフリンジ。 86%のアドレスは1つのクラスターにまとまっており、数百または数千の他アドレスにメールを送信する少数の党アドレスによって結びつけられています。ほとんどのエッジは一方向です:送信者→受信者のペアの13%しか返信していません。残りの5,087の小さなクラスターは、ほとんどが孤立したペア(そのうち4,415)です:他の誰とも接続しない外部アドレス1つと受信者1つ。

[画像]行をこの種の送信者、列をこの種の受信者に書き込むとして読んでください。配信は1つの(メール、受信者)ペアなので、100人の受信者への1通のメールは100回カウントされます。これにより、大量送信者が大きく目立ちます。

  • AfD → AfD が最大のブロックです:内部メールと党メーリングリスト。
  • 個人 → Politics が大きく見えます(10%)が、これは人々が国会全体にメールを送っていることによって膨張しています:最も忙しい10人の個人送信者は、その34%と、個人送信者によるすべての配信の25%を占めています。
  • 企業 → 企業 も同様です:アーカイブで最大の単一送信者であるmusik-baron.deは、各々約100人の受信者に約1,900通のメールを送信しました(党アドレス、議員、メディア)。

[画像]双方向の連絡は、実際の通信の最も単純な兆候です。個人や企業の少数しかアーカイブ内で返信を受け取っていません。(アーカイブ外のアドレスやメールボックスから送信された返信はここで見えません。したがって、これは下限です。)

[画像]2つのクラスターが支配的です。一方にはNRW(州事務所、仲裁裁判所、Jacobiの3つのアドレス、州理事会)、これはMV事務所(7, 16)とファンショップ(5, 6)にリンクされています。もう一方には、GaulandとWeidelを中心とした連邦党(17, 11)があり、個人や企業の大量送信者に囲まれています。彼らは議員やすべての政党の議員にメールを送信しています(大きな緑色の点、番号1はこのような送信者です)。表示されていないもの:PayPalのpaypal@alternativefuer.deへの通知は、別の島を形成しています。個人は名前で表示されていません:それらはメールプロバイダーによってのみリストされ、独自のドメインから独自のドメインとして書いているものは、それなしで(送信者ルールはそのようなドメインを企業としてカウントします。ここでは個人として表示されています)表示されます。ポイントは構造であり、個人を特定することではありません。

A6・奇妙な構造

メールデータの中で、見た目とは異なるもの:

  1. 2つのHolmメールボックス、そして大きい方は名前を一度も名乗らない。 ドット付きのleif.erik.holm@afd-mv.deフォルダは2019年から2026年までの60,215通のメールを保持していますが、そのスペルはアーカイブのメールのヘッダーには一切表示されません。実際のメールアドレスはハイフン付きのleif-erik.holm@であり、その独自のフォルダは2022年12月25日から2023年1月9日までのわずか2週間をカバーする247通のメールしか保持していません。ソースのブリーフィングにはハイフン付きアドレスのみがリストされています。
  2. 1つのアドレスの名前が付いたフォルダが他人のメールを保持している。 bundesschiedsgericht@は主にAlice Weidel、paypal@、Magnus Heutmannのメールです(A2)。フォルダ名はソースがメールをどこに保存したかを示しており、それが誰の受信トレイであったかを示していません。
  3. unknown/は未知ではない。 その7,237通のメールにはフォルダの所有者がいませんが、配信ヘッダーが存在する場合、それは実際のメールアドレスを指しています:bundesgeschaeftsstelle@alternativefuer.de(1,147)、fabian.jacobi@afd.nrw(342)、buero@afd-mv.de(245)。
  4. 受信トレイと送信済みメールはフォルダごとに異なる。 名前と同じアドレスはalexander.gauland@のメールの0%を送信しましたが、bundesgeschaeftsstelle@では68%を送信しました。Gaulandのフォルダは受信トレイです(6年間で15通の送信メール)。「Xさんはどれくらいの頻度で返信しましたか?」のような質問は、送信済みメールがアーカイブにある場合にのみ回答できます。
  5. sebastian.lux@は2021年に実質的に停止する。 その32,020通のメールのうち31,817通は2022年より前のもので、その後2026年までわずか203通しかありません。
  6. 配信ヘッダーは、個人ではなくサーバーに依存する。 メール(sebastian.lux@)の0%から(leif-erik.holm@)の100%まで。それらが欠落している場合、Bccとリスト受信者は表示されません。
  7. 大量メール。 31,750通のメールは、他のメールと全く同じテキスト(ニュースレター、通知、1人の受信者に1通ずつ送信されたメーリングリスト)を持っていますが、それぞれ独自のMessage-IDを持っています。
  8. 送信も受信もしないアドレス。 93,635アドレスのうち14,774は、Reply-Toヘッダーにのみ表示されます。これは通常、ウェブフォームやニュースレターです(「この人に返信してください、私にではなく」)。これが、DATA.mdが全体で93,635アドレスをカウントする一方で、送信者または受信者としては78,861アドレスしかカウントしない理由です。

A7・メールはどれくらい完全で、どれくらい本物か?

データの品質に関する2つのチェック。第一に、読み取り可能なテキストがないメールはどれくらいか?第二に、メールは送信されたときと全く同じ状態か?多くのメールでは、DKIM署名(後述)を通じてこれをチェックできます。DKIMの結果はuv run verify-dkimから取得されます(REPRODUCE.mdを参照)。

[画像]4,283通のメール(1.0%)に読み取り可能なテキストがありません。 そのほとんどは壊れていません。3,513通は添付ファイルのみ(PDF、スキャン、カレンダー招待)、281通は自動開封確認、230通はOutlookがテキストをwinmail.dat添付ファイルにパックしたものです。132通はテキストのないHTML部分(通常は画像で構成されたニュースレター)、67通は暗号化されており、わずか60通が完全に空です。どのフォルダも際立っていません。その割合は0.2%から2.0%(schiedsgericht@)の間です。これらのメールは、ヘッダーに基づいたすべての数値に引き続きカウントされます。

DKIMとは? 送信者のメールサーバーが送信時にメールに添付するデジタル署名です。後でテキストまたは署名されたヘッダー(送信者、件名、日付など)のいずれかが変更された場合、署名は一致しなくなります。[画像]100,929通のメール(24%)にDKIM署名があります。 その割合は年によって異なり、11%(2018年)から44%(2026年)です。(56通のメールは検証ツールで解析できませんでした。それらは署名なしとしてカウントされます。)今日の署名が示すこと:

  • 27,120通は完全に検証されます:テキスト、ヘッダー、および送信者のキー(まだ公開されています)。
  • 7,628通は数学的に完全ですが、期限切れまたは古いSHA-1で作成されています。
  • 20,993通は変更されていないテキストを持っていますが、送信者のドメインはもはやキーを公開していないため、ヘッダー部分をチェックできません。これは古いメールでは正常です。キーは交換されます。
  • 11,204通は変更されていないテキストを持っていますが、ヘッダーチェックが失敗します。 メールゲートウェイが件名をタグ付けするなど、途中でヘッダー行が変更されたか、またはドメインが同じ名前で新しいキーを公開した可能性があります。
  • 33,805通は、もはや送信者が署名したものと一致しないテキストを持っています。 このチェックにはキーは必要ないため、古いメールでも信頼性があります。

壊れた封印は偽造を証明するものではありません。完全な封印は、テキストが送信サーバーが署名したものであることを示すだけで、それが真実であることを示すものではありません。

[画像]編集されたメール?変更されたテキストは技術的なパターンであり、個々の編集ではありません。 テキストが変更された33,805通のメールのうち31,690通(94%)は1つのフォルダ、bundesschiedsgericht@にあります。そこでは、2015年2月から2019年9月17日までの署名付きメールの92%が影響を受けており、あらゆる種類の送信者(PayPal領収書、Gmail、Twitter…)から来ています。その後、ある日から次の日まで停止します。その日付以降の1,397通の署名付きメールのうち、1通が影響を受けています。フォルダのボリュームは同時に急激に減少します。他のすべてのフォルダでは、署名付きメールの3.3%が変更されたテキストを持っており、比較可能なクラスターはありません。手動編集は、選択された少数のメールに影響を与えるでしょうが、1ヶ月のPayPal領収書のほとんどすべてではありません。このパターンは、例えばメールボックスが別のシステムに移動されたときに、メールを再エンコードしたソフトウェアに適合します。このフォルダからの200件の変更されたメールと200件の変更されていないメールの別のチェック(このノートブックでは実行されていません)はこれを支持しています。変更されたもののうち171件は、76文字で均一にラップされたbase64ブロックを含んでおり、変更されていないものは85件です。同じチェックでは、追加またはプリペンドされたテキスト、改行、mbox >Fromクォーティングは、変更のいずれも説明しませんでした。


パートB:ウェブサイトデータ

B0・どこから来て、ウェブサイトはメールにつながったのか?

ここでは2つのアカウントを相互にチェックできます:アーカイブ自体と、Lilith WittmannとHoodinformatikによる再構築("Zweimal gehackt"、2026年10月20日)、これはハッカーとホスティングプロバイダーに近い人々からの声明に基づいています。記事が述べたこと:安全でないWordPressサイト、wahlkampf.afd.deが侵入口でした。プラグイン(WP-Console)がサーバー上でコマンドラインを提供し、そこからメール管理に到達しました。党役員のメールボックスのパスワードが変更され、IMAP経由でメールがダウンロードされました。最初の実行は9月9日(約180GB)に気づかれ、2回目の実行は9月14日の午前6時頃に約300GB全体で停止されました。システムは党自身のサービス会社であるAlternita Dienstleistungs GmbHに属しており、多くの州および地方支部向けのホスティングを運営しています。アーカイブがそれ自体を示していること:04_TABULAR_DATA/000428_raw_console.jsonlは、12月12日に実行された201個のシェルコマンドのログです。これは、wahlkampf.afd.deウェブサイトのユーザー権限で、そのサイトのフォルダ内で実行されました。コマンドとその出力には、動作中のパスワードとAPIキーが含まれているため、ノートブックはコマンドがいつ実行されたか、およびどのような種類のステップであったかのみを示します(コマンドから読み取り、analysis/access.pyを参照)。

[画像]同じログの出力から読み取ります。

  • ウェブサーバーからのパスワード。 マシン上のすべてのサイトの設定ファイルが読み取られ、データベースパスワードも含まれます。
  • メール管理システムが応答します。 mail-management.afd.deの背後にある内部アプリがディスクから読み取られます。そこにあるキーを使用して、そのAPIは最初に拒否され(HTTP 401)、次にデータを返します(HTTP 200)。約16:30に、すべてのメールユーザーのリスト(約0.9MB)がダウンロードされ、メールボックステーブルに変換されます。アーカイブのメールボックス管理テーブル(000678_mm_mailboxes.tsv)は同じ種類のレコードです。
  • メールサーバーログインが機能します(3つのメールホスト上のシステムアカウントno-reply@…)。
  • 直接ルートは失敗します。 2時間、ウェブサーバーからメールストレージ(NFS_…_MAIL_BACKEND)をマウントしようと試みられますが、すべての試みが拒否されます。
  • このログには表示されません:WP-Consoleプラグイン(サイトのアクティブプラグインのリストにもありません)、およびメールボックスパスワードの変更。どちらもこの単一セッション外で発生した可能性があります。これは、ある午後の201コマンドしかカバーしていません。

[画像]2番目のレコードが記事の時間とクロスチェックされます。アーカイブには、メール管理システムのメールボックステーブル(000678_mm_mailboxes.tsv、2,219個のメールボックス;パスワード列はここで読み取られません)も含まれています。これは、9月14日の04:24から04:27 UTC(ドイツ時間06:24–06:27)の間に6つの新しいメールボックスを示しており、それぞれが「Backup-Account von …@afd.nrw」として記録されています。そのうちの1つは、アーカイブに含まれているfabian.jacobi@afd.nrwのバックアップです。テーブルは誰がそれを作成したか、またはなぜ作成したかは示していません。タイミングは記事の「午前6時頃に検出」に合致します。テーブルの最新の変更は、その朝の08:47 UTCからのものです。したがって、このコピーは検出後に行われました。パスワード変更の確認:漏洩したメールボックスフォルダのうち9つがこのテーブルに表示されます(ドット付きleif.erik.holm@は表示されません。これは独自のメールボックスではないため、A2に適合します)。9月には1つだけ変更されました(2026年9月14日05:24 UTCにschiedsgericht@afd.nrw)。テーブルはメールボックスごとに最新の変更のみを保持するため、以前の変更は上書きされる可能性がありますが、変更されていないものについては、このシステムを通じてパスワードが変更された兆候はありません。パスワードが変更された場合、それはこのテーブルが記録していない場所で発生した可能性があります。

記事とアーカイブの連携:

Claim in the articleWhat the archive says
The way in was the WordPress site wahlkampf.afd.deSupported. The shell log runs as that site's user, in its folder.
WP-Console gave the command lineNot shown. Neither the shell log nor the site's exported settings name it.
From there into the mail administrationSupported. The log reads the mail-management app and pulls the full user list through its API.
Mailbox passwords were changed, mail downloaded over IMAPIMAP plausible, password changes not seen. IMAP logins work in the log; the mail-management table shows no September change on the mailboxes in the archive before the detection (see above).
First run noticed on 9 SeptNot confirmed. No email in the corpus mentions an incident. The only notice is planned "further server work" on the party's member system for 14–15 Sept, announced on 10 Sept; that may or may not be related.
Access kept after the first runConsistent. The shell session was on 12 Sept, and the newest emails in the mailboxes are from 11 to 14 Sept.
Second run detected around 6 a.m. on 14 SeptSupported. 6 "Backup-Account" mailboxes appear between 06:24 and 06:27 German time. The newest emails are from 08:29 and 09:04 German time, so mail still arrived, or was still copied, after that.
≈300 GB in totalMatches the publication. The archive is 302 GB, of which 225 GB is email; the rest is website databases, documents and images. The split into 180 GB and 120 GB can't be checked: the source's upload records only cover the three oldest mailboxes.
The same mailboxes were copied twiceConsistent. Only 42 emails share a Message-ID, so the second copies were removed before publishing.
AfD: mainly older mailboxesPartly. Three folders end before September 2026 (Gauland 2023, Bundesgeschäftsstelle 2018, the hyphenated Holm address 2023), but the large ones reach into September 2026.
Access to ≈300 mailboxes, largest firstConsistent. The archive holds 10 named mailbox folders, a small, large-volume selection out of the 2,219 the mail-management system lists.
Alternita runs 300+ domainsNot comparable. That counts domains (the mail system alone lists 500); B1 counts the WordPress databases that were exported.

メール以外に、ソースの作業ファイルはさらなるウェブサイトへのアクセスを記録しています:設定ファイル(wp-config)やバックアップからの認証情報を使用したデータベースログイン、およびafd-fraktion-hessen.deへの管理者アクセスを許可したとされる独自のシングルサインオン(SSO)トークン(000264_SERVER_ACCESS_LEDGER.tsv)。wahlkampf.afd.deとalternita.deはどちらもエクスポートされたサイトに含まれています。Alternitaは、注文システム(bestellung.alternita.de)のオペレーターとしても、党サイトの管理者アカウントalternita_*としても登場します。

B1・ウェブサイトデータは何件漏洩し、どのドメインか?

短い回答:139のウェブサイト:www.afd.deに加えて138の他の党関連サイト。その数が、DATA.mdの「140」と異なる理由:

  • 04_TABULAR_DATA/には142の異なるエクスポート名の下にテーブルエクスポートがあります。
  • そのうちの1つ(h4_route_samples)はウェブサイトではありません(ソースのツールの1つの出力)。
  • 1つ(afd_de)はwww.afd.deの後続コピーであり、そのメインデータベースは02_DATABASES/にあります。
  • これにより、140のエクスポート名(DATA.mdの「他のウェブサイト140件」)が残ります。各サイト独自のsiteurl設定は、2つのペアが同じサイトであることを示しています:afd-dessau-rosslau_de、afd_dessau_rosslau_de、ruben-rupp_de、test-micro_afd_de(afd-dessau-rosslau.de、ruben-rupp.de)。test-micro.afd.deはruben-rupp.deのステージングコピーです。したがって、138の個別のドメインに加えて、www.afd.deがあります。

以下のすべてのドメインは、サイトのファイル名から推測するのではなく、サイト独自のデータベース(siteurl設定)から読み取られています。サイトタイプは、ドメインから読み取られたこのノートブック独自のグループ分けです。

[画像]漏洩した139のウェブサイトすべて(個別のドメインごとに1行、サイトタイプ別にグループ化;カウントは漏洩したデータベースの個別のレコード数、B2と同様)。リストをスクロールすると、リンクが開きます。

domain

site title (its own setting)

accounts

form entries

posts & pages

comments

newest entry

National party, campaigns & media

1
afd.de

Alternative für Deutschland

7

138,049

5,214

0

2026-10-04

2
afdkompakt.de

AfD Kompakt

18

5,080

12,166

0

2026-09-29

3
bilddatenbank.afd.de

bilddatenbank.afd.de

2

0

2

0

2026-09-29

4
gemeinsam-fuer-das-grundgesetz.de

Gemeinsam für das Grundgesetz

6

0

20

0

2025-07-07

5
generationdeutschland.de

Generation Deutschland

8

53

9

0

2026-08-28

6
mitmachen.afd.de

Mitmachen in der AfD

4

0

16

0

2026-09-29

7
sachsen-anhalt.afd.de

AfD Sachsen-Anhalt

0

0

9

0

2025-05-13

8
spenden.afd.de

AfD Spenden

4

0

9

0

2026-09-29

9
wahlkampf.afd.de

Wahlkampfportal der AfD

6

0

39

0

2025-12-10

State association

10
afd-brandenburg.de

AfD Brandenburg

7

0

248

7

2026-09-03

11
afd-frauen.nrw

Frauen in der AfD

4

0

12

3

2026-09-29

12
afd-lsa.de

AfD Sachsen-Anhalt

9

8,573

288

0

2025-10-17

13
afd-mv.de

Alternative für Deutschland Mecklenburg-Vorpommern

11

1,548

4,367

3

2026-10-05

14
afd-thueringen.de

AfD Thüringen

39

3,512

4,819

79

2026-10-03

15
afd.berlin

AfD Landesverband Berlin

10

546

60

0

2026-10-02

16
afd.nrw

AfD NRW

9

1,106

2,118

8

2026-10-03

17
afd.saarland

AfD Saarland

5

1,237

811

4

2026-10-03

18
afdbayern.de

AfD Bayern

16

9,485

1,625

4

2026-10-04

19
alternative-rlp.de

AfD Rheinland-Pfalz

8

969

751

4

2026-01-02

20
in.afdbayern.de

Bayern intern

477

556

360

0

2026-09-09

21
plakatshop.afdbayern.de

AfD Bayern Plakatshop

66

0

18

109

2026-09-29

22
russlanddeutsche-afd.nrw

Russlanddeutsche für die AfD NRW

6

416

1,194

3

2026-08-24

Regional association

23
afd-bezirk-arnsberg.de

AfD Bezirk Arnsberg

8

352

75

53

2026-09-15

24
afd-bezirk-duesseldorf.de

AfD Bezirk Düsseldorf

9

215

95

0

2024-08-09

25
afd-bezirk-muenster.de

AfD Bezirk Münster

9

195

63

15

2026-09-24

26
afd-bezirk-owl.de

AfD Bezirk Ostwestfalen-Lippe

9

223

457

18

2026-09-29

27
afd-oberbayern.de

AFD Oberbayern | Bezirksverband Oberbayern | Alternative für

7

89

102

19

2026-09-30

Local chapter

28
afd-anhalt-bitterfeld.de

AfD Kreisverband Anhalt-Bitterfeld

10

439

173

24

2026-10-01

29
afd-aw.de

AfD Ahrweiler

10

161

564

0

2026-09-30

30
afd-bad-kissingen.de

AfD Bad Kissingen

5

74

20

0

2026-10-02

31
afd-bgl.de

AfD Berchtesgadener Land

7

0

126

6

2026-09-04

32
afd-bielefeld.de

AfD Kreis Bielefeld

17

133

3,237

4

2026-10-03

33
afd-bottrop.de

AfD Kreis Bottrop

10

370

194

45

2026-10-04

34
afd-dessau-rosslau.de

AfD Kreis Dessau-Roßlau Stadt

8

296

619

15

2026-01-07

35
afd-dortmund.de

AfD Kreis Dortmund

8

787

543

50

2026-10-02

36
afd-duisburg.de

AfD Kreisverband Duisburg

6

708

95

27

2026-09-29

37
afd-ennepe-ruhr.de

AfD - Kreisverband Ennepe-Ruhr

5

412

15

0

2026-09-30

38
afd-essen.de

AfD Kreis Essen

4

707

297

52

2026-09-08

39
afd-euskirchen.de

AfD Kreis Euskirchen

7

483

47

3

2026-06-10

40
afd-hagen.de

AfD Kreisverband Hagen

7

272

230

46

2026-09-23

41
afd-harzkreis.de

AfD Kreisverband Harz

8

135

24

1

2026-09-10

42
afd-hassberge.de

AfD Haßberge / Rhön-Grabfeld

7

71

20

0

2026-09-30

43
afd-herford.de

AfD Kreis Herford

8

204

500

28

2026-10-05

44
afd-hochsauerlandkreis.de

AfD Hochsauerlandkreis

7

121

58

9

2026-10-04

45
afd-hro.de

AfD Hansestadt Rostock

9

111

23

0

2026-09-18

46
afd-iserlohn.de

AfD Fraktion im Stadtrat Iserlohn

5

262

46

3

2025-12-01

47
afd-kelheim.de

AfD Kreisverband Kelheim

4

4

55

0

2026-10-04

48
afd-krefeld.de

AfD Kreis Krefeld

10

423

143

9

2026-10-05

49
afd-kreis-borken.de

AfD Kreis Borken

7

350

189

13

2026-09-29

50
afd-kreis-coesfeld.de

AfD Kreis Coesfeld

9

258

199

9

2026-09-29

51
afd-kreis-duesseldorf.de

AfD Kreis Düsseldorf

8

625

248

32

2025-10-10

52
afd-kreis-hamm.de

AfD Kreis Hamm

7

484

160

7

2026-10-04

53
afd-kreis-olpe.de

AfD Kreis Olpe

9

44

153

5

2026-09-30

54
afd-kreis-recklinghausen.de

AfD Kreis Recklinghausen

9

686

1,392

104

2026-09-30

55
afd-kreis-wesel.de

AfD Kreisverband Wesel

5

551

283

61

2026-05-21

56
afd-kreisverband-rottal-inn.de

AfD Kreisverband Rottal-Inn

0

0

47

0

2026-10-03

57
afd-landsberg-lech.de

Afd Landsberg Lech

8

85

23

7

2026-09-30

58
afd-lichtenfels.de

AFD Kreisverband Lichtenfels

9

75

55

0

2026-09-30

59
afd-main-spessart.de

AfD Kreisverband Main-Spessart

6

89

15

0

2026-09-30

60
afd-mettmann.de

AfD Kreis Mettmann

13

581

1,319

18

2025-08-18

61
afd-minden-luebbecke.de

AfD Kreisverband Minden-Lübbecke

5

519

426

45

2026-10-03

62
afd-moenchengladbach.de

AfD Kreis Mönchengladbach

12

666

39

0

2025-12-03

63
afd-mse.de

AfD Kreisverband Mecklenburgische Seenplatte

6

575

185

14

2026-10-01

64
afd-muelheim.de

AfD Kreis Mülheim

10

672

343

32

2026-10-04

65
afd-muenchen-land.de

Kreisverband München Land

6

78

15

51

2026-10-02

66
afd-muenchen-ost.de

AfD Kreis München Ost

7

108

122

4

2026-02-20

67
afd-muenchen.de

AfD München

18

143

917

0

2026-10-01

68
afd-muenster.de

AfD Kreisverband Münster

8

794

1,109

52

2026-09-29

69
afd-neuburg-schrobenhausen.de

AfD Kreis ND-SOB

1,932

293

16

0

2026-09-30

70
afd-nwm.de

AfD Kreisverband Nordwestmecklenburg

9

273

1

0

2026-09-29

71
afd-oberberg.de

AfD Kreisverband Oberberg

1,816

498

863

288

2026-10-04

72
afd-oberhausen.de

AfD Oberhausen

7

311

1,148

2

2026-10-04

73
afd-passau.de

AfD Kreisverband Passau

7

74

55

3

2026-10-03

74
afd-rhein-kreis-neuss.de

AfD Rhein Kreis Neuss

14

373

369

0

2025-09-25

75
afd-ro.de

AfD Kreisverband Landkreis Rostock

7

557

284

12

2026-09-29

76
afd-schwarzwald-baar.de

AfD Kreisverband Schwarzwald-Baar

8

218

20

0

2026-10-03

77
afd-schweinfurt-land.de

AfD Kreisverband Schweinfurt-Land

5

4

5

0

2026-09-30

78
afd-siegen-wittgenstein.de

AfD Kreis Siegen-Wittgenstein

7

489

403

17

2026-03-03

79
afd-sn.de

AfD Kreisverband Schwerin

4

326

17

13

2026-06-25

80
afd-swm.de

AfD Kreis Südwestmecklenburg

7

181

36

16

2026-07-05

81
afd-trier.de

AfD Kreisverband Trier

6

261

50

10

2026-09-30

82
afd-unterallgaeu-memmingen.de

AfD Kreis Unterallgäu-Memmingen

9

255

426

37

2026-09-30

83
afd-vg.de

AfD Kreisverband Vorpommern-Greifswald

7

239

1,999

0

2026-10-02

84
afd-vr.de

AfD Kreisverband Vorpommern-Rügen

7

383

190

26

2025-10-25

85
afd-weiden.de

AfD Weiden | Kreisverband

5

26

696

0

2026-10-02

86
afd-weilheim-schongau.de

AfD Kreisverband

7

8

116

30

2026-09-09

87
afd-wuerzburg.de

AfD Kreis Würzburg

4

284

53

14

2026-09-30

88
afd-wuppertal.de

AfD Kreis Wuppertal

5

0

29

12

2026-09-29

89
afd.koeln

AfD Köln

13

1,402

651

16

2026-10-05

90
afdosnabrueck.de

AfD Kreisverband Osnabrück

6

368

193

30

2026-10-04

91
afdsaarpfalz.de

AfD Saarpfalz

5

39

18

0

2026-09-30

92
alternative-fuer-mk.de

AfD Märkischer Kreis

9

816

184

16

2026-10-03

93
kebst-blue.volker-heinecke.de

Katrin Ebner-Steiner

13

366

199

58

2026-09-29

Berlin district

94
friedrichshain-kreuzberg.afd.berlin

AfD Bezirk Friedrichshain-Kreuzberg

17

18

24

0

2026-08-31

95
lichtenberg.afd.berlin

AfD-Bezirksverband Lichtenberg

9

18

153

0

2026-10-02

96
marzahn-hellersdorf.afd.berlin

AfD Bezirksverband Marzahn-Hellersdorf

10

18

208

70

2026-09-14

97
mitte.afd.berlin

AfD Bezirksverband Berlin Mitte

9

18

12

0

2026-08-31

98
neukoelln.afd.berlin

AfD Bezirksverband Neukölln

6

18

49

0

2026-08-25

99
pankow.afd.berlin

AfD Berlin-Pankow

10

1,782

80

86

2026-10-02

100
reinickendorf.afd.berlin

AfD Bezirksverband Reinickendorf

11

18

145

110

2026-08-31

101
spandau.afd.berlin

AfD Bezirk Spandau

8

18

16

48

2026-09-06

102
steglitz-zehlendorf.afd.berlin

AfD Steglitz-Zehlendorf

12

18

13

0

2026-09-18

103
tempelhof-schoeneberg.afd.berlin

AfD Bezirksverband Tempelhof-Schöneberg

11

18

33

0

2026-09-10

104
treptow-koepenick.afd.berlin

AfD Treptow-Köpenick

8

18

87

18

2026-09-30

Parliamentary group

105
afd-do-fraktion.de

Aktuelles

6

27

887

12

2026-09-30

106
afd-fraktion-duisburg.de

AfD-Fraktion im Rat der Stadt Duisburg

9

82

360

12

2026-10-04

107
afd-fraktion-en.de

Alternative für Deutschland, Kreistagsfraktion Ennepe-Ruhr

6

29

97

17

2026-09-30

108
afd-fraktion-hessen.de

AfD-Fraktion Hessen

9

939

1,354

14

2025-09-08

109
afd-fraktion-luenen.de

AfD Fraktion im Stadtrat Lünen

9

75

115

118

2026-09-30

110
afd-fraktion-rkn.de

AfD-Fraktion Rhein-Kreis Neuss

6

39

26

2

2025-09-25

111
afd-fraktion-siegen.de

AfD-Ratsfraktion Siegen

4

158

52

3

2026-09-30

112
afd-fraktion-tk.de

AfD Fraktion Treptow-Köpenick

8

375

607

45

2026-09-30

113
afd-fraktion-vg.de

AfD-Fraktion Vorpommern-Greifswald

9

22

85

0

2026-09-30

114
afd-fraktion-witten.de

Alternative für Deutschland Ratsfraktion Witten

5

147

118

22

2026-10-02

115
afd-fraktion-wuppertal.de

AfD-Fraktion im Rat der Stadt Wuppertal

8

32

48

9

2026-09-30

116
afd-fraktion.koeln

AfD-Fraktion im Rat der Stadt Köln

7

370

814

27

2026-10-01

117
afd-fraktion.saarland

AfD Fraktion Saarlandes

5

105

48

7

2026-10-03

118
afd-im-roemer.de

AfD-Fraktion im Römer

7

224

918

20

2026-09-30

119
afd-kreistag-abi.de

AfD im Kreistag Anhalt-Bitterfeld

7

114

49

8

2026-09-30

120
afd-kreistag-rostock.de

AfD Fraktion - Bündnis Deutschland

7

53

165

29

2026-09-30

121
afd-kreistag-siwi.de

AfD im Kreistag Siegen-Wittgenstein

6

22

67

10

2026-09-30

122
afd-kreistagsfraktion-hsk.de

afd-kreistagsfraktion-hsk

0

0

29

0

2026-10-03

123
afd-ratsfraktion-bottrop.de

AfD-Ratsfraktion Bottrop

9

7

219

10

2026-09-30

124
afd-stadtrat-muenchen.de

Offizielle Seite der AfD im Münchner Stadtrat.

8

0

459

2

2026-09-30

125
afd-stadtrat-trier.de

Die Demokraten im Stadtrat Trier

8

24

145

13

2026-03-16

Politician's own site

126
afd-gottschalk.de

Kay Gottschalk | Mitglied des Deutschen Bundestages

7

175

891

40

2026-09-30

127
alice-weidel.de

Alice Weidel - AfD Kanzlerkandidatin 2025

2

0

658

0

2026-06-29

128
bernd-schattner.de

Bernd Schattner

10

0

99

60

2026-09-22

129
daniel-roi.de

Daniel Roi

8

209

133

35

2026-10-01

130
horst-foerster.de

Horst Förster, MdL

6

45

136

14

2026-09-28

131
kay-uwe-ziegler.de

Kay-Uwe Ziegler, Mitglied des Deutschen Bundestages

4

264

283

21

2026-09-30

132
richard-graupner.de

Richard Graupner, MdL

7

30

812

17

2026-10-01

133
ruben-rupp.de

Ruben Rupp - Ihr Landtagsabgeordneter im Wahlkreis Schwäbisc

26

206

656

0

2024-12-01

134
thomas-roeckemann.de

Abgeordneter Thomas Röckemann

7

780

382

2

2026-10-04

135
wolfgang-wiehle.de

Wolfgang Wiehle

11

19

241

0

2026-10-03

Not a party site

136
alternita.de

Alternita

5

0

21

65

2026-09-30

137
bestellung.alternita.de

bestellung.alternita.de

5

0

4

0

2025-06-24

138
die-demokraten-trier.de

Die Demokraten im Stadtrat Trier

8

29

191

23

2026-09-30

139
ngofakten.de

NGO Fakten

5

0

38

0

2026-06-03

B2・ウェブサイトデータには何が含まれているか?

WordPressサイトはすべてをデータベーステーブルに保存します。重要なもの(個別のレコードとしてカウント、多くのサイトは2回エクスポートされたため、行数をカウントすると重複カウントになります):

whatrecords (138 sites)on how many siteswww.afd.de (later copy)
site accounts (admins, editors: name, email, password hash)5,3751377
form submissions (contact, membership, donation, volunteer forms: names, emails, phones, addresses)62,318 + 3,031 Elementor119138,049
reader comments (name, email, IP)2,697950
published articles & pages64,3521405,214
all posts entries (incl. drafts, revisions, uploads, plugin records)319,14814047,972
copies of emails the site sent (postman_sent_mail)20,297110250
admin activity log (who did what, with IP)2,007,0881240

個人データはフォームに含まれています。 200,367件のフォーム送信(その3分の2はwww.afd.de)には、訪問者が入力した内容が含まれています:名前、メールアドレス、電話番号、住所、場合によっては生年月日。(すべての送信が個別の人物であるとは限りません。以下のバーストを参照してください。)これらは党のサイトであるため、送信はGDPR第9条の下で特別なカテゴリである政治的共感のヒントも示唆します。数値について:それらはsrc/analysis/wordpress.pyから来ており、個別の(サイト、テーブルプレフィックス、ID)をカウントします。同じテーブルに対するDATA.mdの数値は、ほとんどが2〜13%低いです(例:282,734件の投稿エントリ、59,446件のフォーム送信;コメントは例外で2,708件)。リポジトリにはそれらのためのスクリプトが存在しないため、差を追跡できません。送信メールのカウントは、9つの小さな4〜11ファイルのサイトキャプチャを除外すると、ほとんどのサイトで正確に一致します(20,047件、109サイト)。したがって、DATA.mdはそれらのいくつかを排除した可能性があります。

[画像]州支部(バイエルン、ザクセン=アンハルト、テューリンゲン)と党新聞AfD Kompaktが最も多くの送信を保持しています。in.afdbayern.de(その名前から、バイエルン党の内部サイト)は圧倒的に多くの口座(477)を持っています。管理者ログ列は、多くのサイトがIPアドレスとともにすべての管理者ログインと編集を記録したことを示しています。送信メールログはほとんどのサイトで正確に250件で停止します。ロギングプラグインは最新のもののみを保持します。

[画像]曲線は平坦です(月に数百から数千件)が、バーストを除きます。これは、1つのフォームが1日に500件以上の送信を受け取った日です。このような日は11日あり、42,166件の送信(全期間の21%)を保持しています。2つの大きなバーストはwww.afd.deで発生しており、通常の日は20〜150件の送信があります。それらが何であるかは、これらのテーブルからはわかりません:ボットの洪水、大量インポート、または調整されたキャンペーンはすべて同じように見えます。IPアドレスはwww.afd.deでは決定的なものではありません。これは、毎日わずかな数の個別のIPアドレス(おそらくプロキシ)のみを記録します。実際の訪問者のIPアドレスを記録するサイトでは、1〜3のIPアドレスからのバースト(例:afd-lsa.de、afdbayern.de)は自動化されている可能性が最も高いです。いずれにせよ、フォーム送信は個人と同じではありません。

最大のバースト

siteform iddatesubmissionsdistinct IPs that day
afd.de842022-11-0214,9274
afd.de332023-12-1113,4961
afd.de332023-12-105,2391
afd-lsa.de32023-05-031,8553
afdbayern.de62024-01-091,8333
afd.de842022-11-041,2002
afdkompakt.de22020-06-271,0772
afdkompakt.de22020-06-267002
afd.de1152023-11-056371
afd.de532018-11-236312
afd.de532018-11-225712

11 rows

[画像]ほとんどのデータベースは2026年9月/10月にコピーされました。 各データベースの最新のエントリがこれを示しています:コピーは、それが取得された後に作成されたエントリを含むことはできません。138サイトのうち106サイトでは、最新のエントリは2026年9月または10月のものであり、これらのデータベースはこれらの週にコピーされました。最後のコピーは2026年10月5日です。他のサイトはより古い最新のエントリを持っています。それは必ずしもそれらがより早くコピーされたことを意味するわけではありません。サイトでしばらく何も起こらなかったか、またはコピーが古いバックアップから来たかのどちらかです。比較のために、アーカイブの最新のメールは2026年9月14日付けです。

B3・ソースはどのようにデータを処理したか?

ソースはデータベースをコピーしただけではありません。アーカイブの大部分は彼ら自身の作業です:作業キュー、AIスコア、ツールの出力、および個人データを使いやすい形式に再ソートするリスト。以下のフローはサイズ別のアーカイブを示しています:各フォルダ、次にどのような種類の資料が含まれているか。「ソースによって作成された」は、システムから取得されたものではなく、データについて生成されたすべてのものを意味します。青 = システムから取得された元のデータ(290 GB、98,917ファイル)。オレンジ = ソースによって作成されたもの、コピーされたサーバーファイルも保持する一部の混合作業フォルダを含む(11.0 GB、2,050ファイル)。灰色 = 公開APIスナップショットと公開パスワードリスト。サイズ別では、ソースの資料はメールに比べて小さいですが、ファイル数ではそうではなく、プライバシーにとって最も重要なリストが含まれています。

[画像]ソースがウェブサイトデータベースの上に構築したもの(ファイル名によるグループ化;ファイル内のカウントはソースのもの、DATA.mdから):

  • すぐに使える個人データリスト。 119個の*.gf_named.tsvファイルは、各フォーム回答をそのフィールドラベルとクラス(メール、名/姓、電話、都市、会員番号、生年月日)に一致させます。さらに226個のTSVは、すべてのサイトのすべてのテーブルを検索して、個人データのように見えるものをすべて見つけます(362,398行、ほとんどがノイズ)。000072_inf6_identities.tsvは665万件の識別子(IP、メール、電話)をリストしています。www.afd.deについては、02_DATABASES/の別のバンドルに抽出されたメール(86,237件)、電話番号、名前、住所が含まれています。
  • トリアージ。 キーワード検索、cat_illegal_activityのようなカテゴリラベル、読み取りキュー(MAIL_QUEUE_V2.tsv、2.7 GB)、および言語モデルスコア。ブリーフィングの「主要な発見」はここから来ています:約263,000件のキーワードランク付けされたレコード→490件がモデルによってスコアリング→136件が高/クリティカルと評価→手動チェックサンプル。
  • アクセス記録。 プローブ結果、ダウンロードリスト、資格情報再利用テスト、およびサーバーアクセスの台帳。

これらは元のテーブルに含まれていない情報を追加するものではありません。労力を削減します。これらのリストがあれば、大規模な連絡先情報の収集はデータベース作業を全く必要としません。


注記

  • 私の知識と信念の限りでデータを分析しました。
  • 私の知識と信念の限りで、ここに示された結果から個人に関するデータを削除しました。
  • 分析にはAIを使用しました。ローカルで実行されたモデルのみがソースデータを見ました。他のプロバイダーのモデルはコード生成に使用されました。
  • このページのすべてのステップを再現するためのコードは、リポジトリgithub.com/erikgoldenstein/afd-emailsにあります(REPRODUCE.mdに指示があります)。リポジトリは現在オフラインであり、これが許可されることが法的に明確になったら公開されます。
  • メール内容の分析はすでに存在します。これも、法的な明確性が高まったら公開されます。
  • 連絡先:afd-emails@erik.gdn
チャートのダウンロード

すべての21のチャートを、ドイツ語または英語のベクトルPDFで、選択可能なテキスト付きで提供します。

ドイツ語のチャート(PDF、zip)英語のチャート(PDF、zip)


[2] タイトル: Trials and Tribulations of Native Lua Compilation
URL: https://samyeyo.github.io/clx/blog.html
本文:

clx

ネイティブLuaコンパイルの試行錯誤

2026年10月・12分読書

私は長年Luaを扱ってきましたが、Luaの好きな点の一つは、その必要とするものが非常に少ないことです。小さく、エレガントで、ポータブルで、そして組み込みが驚くほど簡単です。最後の特性はおそらくLuaが成功した理由の一つでしょう:ゲーム、アプリケーション、ツール、あるいはほぼ何にでもLuaインタープリタを組み込むことができ、すぐに強力なスクリプト言語を得ることができます。

しかし、長年Luaを使用してきた後、私はその設計の別の側面に行き当たりました。

Luaアプリケーションをビルドして配布したいときは、常にLua VMが関わっていました。LuaRTとそのrtcコンパイラを使えば、少なくともWindows上では、デプロイメント問題の大部分をすでに解決していました。Luaアプリケーションをスタンドアロン実行可能ファイルとしてパッケージ化でき、ユーザーにLuaを別途インストールするように依頼する必要がなくなりました。

それはうまくいきましたが、別の疑問が残りました。インタープリタが実行可能ファイルに組み込まれていたとしても、アプリケーションは最終的にLua VMを介してLuaコードを実行していました。実行可能ファイルは外部からはネイティブアプリケーションのように見えましたが、その下では依然として解釈されているLuaプログラムでした。

私は一歩先へ進んだらどうなるか見てみたかったのです。

Lua VMに依存することなく、真にネイティブなLua体験を求めていました。lua55.dll、liblua55.so、または組み込みLua VMなしでアプリケーションを実行したかったのです。ランタイムを完全に排除しようとしていたわけではありません。コンパイルされたLuaプログラムは、テーブル、文字列、ガベージコレクション、コルーチン、その他のLuaセマンティクスのようなものにはネイティブサポートが必要です。私が求めていたのは、汎用Lua VMを、コンパイルされたネイティブLuaコードをサポートするために特別に設計されたランタイムに置き換えることでした。

もしプロセスから追加のパフォーマンスを得ることができれば、それは素晴らしいボーナスになるでしょう。

そのアイデアはやがてclxになりました。

VMのパッケージング vs プログラムのコンパイル

rtcとclxの重要な違いは、問題へのアプローチ方法です。

Lua VMを中心としたシステムは、アプリケーションを非常に便利にパッケージ化できます。Luaソースまたはバイトコードはインタープリタと一緒にバンドルされ、インタープリタがそれを実行します。デプロイメントの観点からは、それは完全に合理的です。

clxは異なるアプローチを取ります。Lua 5.5ソースコードを解析し、分析し、プログラムを表すC++コードを生成します。生成されたC++は、Clang、GCC、またはMSVCのような通常のネイティブコンパイラによってコンパイルされます。

結果として得られる実行可能ファイルは、Luaプログラムから生成されたネイティブコードと、プログラムが必要とするclxランタイムを含みます。その下にLuaバイトコードを実行するLuaインタープリタはありません。

その区別は重要です。clxにはまだランタイムがあります。それは単にLua VMではないだけです。

clxランタイムは、コンパイルされたプログラムがまだ必要とするLuaの部分のネイティブ実装を提供します:テーブル、文字列、メモリ管理、ガベージコレクション、コルーチン、標準ライブラリ、その他のランタイム機能。違いは、アプリケーション自体がネイティブコードにコンパイルされ、そのランタイムに直接呼び出すことです。

これは数段落で説明されるとかなり単純に聞こえます。それを構築することは全く別の問題です。

Luaは欺瞞的に小さな言語です。構文はコンパクトですが、セマンティクスはそうではありません。テーブル、複数の戻り値、クロージャ、コルーチン、メタテーブル、環境、数値変換、アップバリュー、イテレーション、エラー処理、そしてこれらの機能間のすべての相互作用は、Luaを正しくコンパイルすることを単に構文をC++に翻訳するよりもはるかに複雑にします。

さらに進むにつれて、ネイティブLuaコンパイラの興味深い部分は、if、while、または算術式のコードを生成することではないことに気づきました。難しい部分は、ターゲットがネイティブコードであるという事実を利用しながら、Luaのセマンティクスを維持することでした。

Luaソースからネイティブ実行可能ファイルへ

clxの基本的なワークフローは意図的にシンプルです。

次のようなLuaプログラムを与えると:

print("Hello clx!")

次のようにコンパイルできます:

clx hello.lua

ネイティブ実行可能ファイルを取得します。

特別なLuaコードの調整は必要ありません。Luaを記述すれば、clxがコンパイルプロセスを処理します。

コンパイラは、ネイティブコンパイラをすぐに呼び出す代わりに、C++ソースコードを生成することもできます:

clx hello.lua --cpp

これは、コンパイラ自体のデバッグに役立つだけでなく、生成されたコードを独自のビルドシステムに統合したい人々にも便利です。

clxはオブジェクトファイルや静的ライブラリも生成できます:

clx hello.lua --object
clx hello.lua --static

これは設計において重要な部分でした。clxを「Luaスクリプトが実行可能ファイルになる」というユースケースに限定したくありませんでした。ネイティブコンパイルは、コンパイルされたLuaコードを、より大きなネイティブアプリケーションのコンポーネントとして使用する可能性を開きます。

Luaモジュールは期待通りに動作し続けます

このプロセスで犠牲にしたくないことの一つは、Luaのモジュールシステムでした。

プロジェクトには複数のLuaファイルを含めることができます:

main.lua
greet.lua
utils.lua

そしてそれらを一緒にコンパイルできます:

clx main.lua greet.lua utils.lua --output app

次のような通常のLua呼び出し:

local greet = require("greet")

引き続き機能します。

違いは、モジュールが実行時に個別のLuaソースファイルから解釈されるのではなく、結果のネイティブプログラムにコンパイルできることです。

これはプログラム全体をコンパイルする nice な結果の一つです。require()呼び出しは、プログラム実行中に別のLuaファイルを見つけて解釈する必要があることを必ずしも意味しません。モジュールはすでにネイティブ実行可能ファイルの一部になっている可能性があります。

ネイティブモジュール

私がC++を出力言語として選択した理由の一つは、clxにネイティブライブラリへの自然なブリッジを提供することです。

ネイティブモジュールは、clx C++ APIを使用して記述できます。たとえば、Lua引数を受け取りLua値を返す単純な関数は次のようになります:

static clx::MultiValue add(clx::LState* L, const clx::LValue* args, size_t n) {
    double sum = 0;
    for (size_t i = 0; i < n; i++) {
        sum += clx::check_number(L, args[i]);
    }
    return {clx::number(sum)};
}

モジュールは、Luaアプリケーションと一緒にコンパイルおよびリンクできます:

clx main.lua --modules fastmath

そしてLuaから通常通りロードします:

local fastmath = require("fastmath")

これは、ネイティブアプローチが特に有用になる領域の1つです。Luaを分離されたスクリプト環境として扱う代わりに、コンパイルされたLuaコードはC++コードと一緒に存在し、clx APIを介してネイティブライブラリに直接呼び出すことができます。

また、CまたはC++で書かれたライブラリを特別なLua固有の実装に翻訳する必要がないことも意味します。それらはネイティブライブラリのままで、Luaに機能を提供する薄いclxバインディングレイヤーを持っています。

コンパイルされたLuaライブラリ

同じアイデアは逆方向にも機能します。

Luaモジュールは静的ライブラリとしてコンパイルできます:

clx mylib.lua --static --output mylib

そしてclx APIを介してC++アプリケーションに公開されます。

その結果、Luaコードは、単にそのアプリケーションによってロードされるスクリプトであるのではなく、より大きなアプリケーションのネイティブコンポーネントになることができます。

これは、最初から求めていたことの一つでした:Luaは、プログラムの他のネイティブコンポーネントと同じレベルに置くことができるべきです。

しかし、時にはLua VMが必要になることもあります

clxを開発中に明らかになったもう一つの重要な区別があります。

通常の実行パスからVMを削除しても、Lua VMが決して有用ではないという意味ではありません。

一部のアプリケーションは、アプリケーションがコンパイルされたときには知られていなかったLuaコードを実行する必要が本当にあります。プラグイン、ユーザー スクリプト、設定コード、または意図的にスクリプト機能を提供するアプリケーションが良い例です。

そのため、clxには--dynamicモードもあります。

このモードが有効な場合、clxはLua 5.5 VMを組み込み、コンパイルされたプログラムとインタープリタの間の必要なブリッジを提供します。これにより、アプリケーションの残りの部分に対して通常のAOTコンパイルモデルを維持しながら、load()のようなランタイム機能が可能になります。

したがって、実際には2つの異なる実行モデルがあります。

通常のAOTコンパイルでは、Luaコードはネイティブコードになり、clxランタイムを使用します。--dynamicを使用すると、実際にLuaコードを動的にロードして実行する必要がある場合に、Lua VMをさらに利用できます。

私はこれが、一方のアプローチが「ランタイムを持っている」ともう一方が持たない」と言うよりも、はるかに有用な区別だと考えています。どちらにしてもランタイムは必要です。興味深い質問は、そのランタイムが何をしているかです。

パフォーマンスも動機の一部でした

実行パスからLua VMを排除することがclxの開発を開始した主な理由でしたが、パフォーマンスも別の動機でした。

ネイティブコンパイルは、インタープリタのLuaバイトコードよりもコンパイラにかなりの自由を与えます。clxはコンパイル中にプログラムを分析し、その後、基盤となるネイティブコンパイラによって最適化できるC++を生成できます。

これによって大幅な違いが生じるワークロードがありますが、clxがLuaJITや他のすべてのLua実装よりも普遍的に高速であるとは考えていません。パフォーマンス特性はプログラムに大きく依存し、コンパイラがどれだけ効果的にプログラムを最適化できるかにも依存します。

私にとって、より興味深い部分は、パフォーマンスの向上は、単に高速なLuaインタープリタを構築しようとするのではなく、プログラム自体をコンパイルすることから来るということです。

それは最適化問題を完全に変えます。

コンパイラは実行前にプログラムについて推論し、特定の操作を特化し、不要な作業を排除し、ネイティブコンパイラに通常のC++コードを最適化のために残すことができます。

改善の余地はまだたくさんありますが、この方向はすでにいくつかのワークロードで意味のある結果を生み出しています。

サイズも重要です

clxを開発中に私を驚かせたもう一つのことは、結果のプログラムがどれほど小さくなるかということでした。

些細なプログラムでも、ネイティブ最適化とデッドコード削除の後では驚くほど小さな実行可能ファイルを生成できます。特に不要なclxランタイムの部分が除外される場合です。

同じ原則がより大きなアプリケーションにも適用されます。ネイティブSokolモジュールを使用した完全なPongゲームは、必要なclxランタイムとネイティブ機能を含めて、わずか数百キロバイトのスタンドアロン実行可能ファイルにコンパイルできます。

デプロイメントサイズが重要なアプリケーションでは、実際に必要な機能のみをコンパイルできることは非常に役立ちます。

ここでも、重要な区別は、ランタイムが消えたわけではないということです。それはネイティブプログラムの一部になり、コンパイラは必要とされない機能を含まないようにすることができます。

難しいのはその間のすべてです

コンパイラ自体も、そこに至るまでに多くのイテレーションを経てきました。

テーブルはおそらく最大の課題の一つでした。Luaテーブルは同時に配列、ハッシュマップ、オブジェクト、モジュールコンテナ、環境、そして言語の基盤の多くです。ネイティブ表現は、すべてのテーブル操作を不必要に高価にすることなく、それらすべての役割を処理する必要があります。

複数の戻り値も別の例です。Luaの呼び出し規約は、従来のC++関数呼び出しとは根本的に異なり、return f()、異なる数の値を持つ代入、可変長引数、式の中にネストされた呼び出しなどを処理するには、専用の表現が必要です。

コルーチンは、Luaの実行モデルが通常のC++制御フローに自然にマッピングされないため、別のクラスの問題をもたらしました。clxは、Luaコルーチンのセマンティクスを維持しながら、必要なコンテキストスイッチを実装するために、最終的にプラットフォーム固有のメカニズムを使用する必要がありました。

ガベージコレクションは、C++に単純に委任できないもう一つの部分です。コンパイルされたLuaプログラムは依然としてLuaのメモリ管理セマンティクスを必要とするため、clxは独自のインクリメンタルマークアンドスイープガベージコレクタを持っています。

さらに、環境、メタテーブル、整数セマンティクス、文字列処理、クロージャ、エラー伝播、イテレーション、モジュールロード、そしてこれらすべての機能間の相互作用など、あまり明白でないケースがたくさんあります。

特定のサブシステムが完了したと思うたびに、別のLuaプログラムが私が考慮していなかったエッジケースを見つけました。

おそらく、ネイティブLuaコンパイラ開発の最も正確な説明はこれでしょう:個々の部分は管理可能ですが、それらすべてを正しく動作させることが実際の仕事です。

なぜC++なのか?

他のネイティブコード形式をターゲットにする可能性を検討しましたが、C++は非常に実用的な選択肢であることがわかりました。

Clang、GCC、MSVCは、私が関心のあるプラットフォームに対して成熟した最適化バックエンドを提供しています。完全なマシンコードバックエンドを実装する代わりに最新のC++20を生成することで、clxはネイティブコンパイラにすでに費やされた数十年の作業から恩恵を受けることができます。

また、既存のネイティブソフトウェアとの統合も大幅に容易になります。

誰かがすでにC++ライブラリを持っている場合、それを薄いclxモジュールでラップすることは、完全に別の外部関数インターフェースとコード生成バックエンドを作成するよりもはるかに簡単です。

もちろん、トレードオフがあります。生成されたC++は大きくなる可能性があり、非常に大きな生成された翻訳単位はコンパイルにかなりの時間がかかることがあります。これは、コンパイラが成長するにつれて私がまだ取り組んでいる問題の1つです。

ネイティブコンパイルは複雑さをなくすものではありません。それはツールチェーンの別の部分にその一部を移動させます。

clxの現状

clxはまだ進化していますが、もはや単に少数のLua例をコンパイルする実験とは見なしていません。

Lua 5.5構文をサポートし、実際のマルチファイルプロジェクトをコンパイルでき、ネイティブモジュールを統合でき、スタンドアロン実行可能ファイルとライブラリを生成でき、必要に応じてオプションでLua VMを組み込むことができます。

まだ粗いエッジがあり、私がまだ実装または最適化していないものを明らかにするLuaプログラムも確かにあります。このようなコンパイラは、「完了」と宣言するのが難しいです。なぜなら、新しいプログラムは、注意に値する言語やランタイムのコーナーを発見する機会だからです。

しかし、基本的なアイデアは機能しています。

Luaプログラムを書き、clxでコンパイルし、スタンドアロンのLuaインストール、lua55.dll、またはliblua55.soを必要としないネイティブ実行可能ファイルで終わることができます。実行可能ファイルにはclxランタイムが含まれていますが、そのランタイムはアプリケーションを解釈するためではなく、Luaのランタイムセマンティクスをネイティブ実装するために存在します。

これが、プロジェクトを開始したときに私が求めていたことです。

clxを構築した理由

振り返ってみると、clxはLuaにもう1つのコンパイラが必要だと思ったから始まったわけではありません。

Luaを長年使用し、その周りでツールを構築してきた経験から、Luaを主に組み込みスクリプト言語としてではなく、ネイティブプログラミング言語として扱ったらどうなるかという好奇心が次第に高まったからです。

Luaは30年以上、他のプログラムの中に組み込むのに最適な言語の一つでした。私は、Luaをプログラムの中心に置くことがどのようなものかを見たかったのです。

それは予想以上に困難であることが判明しました。

インタープリタモデルに戻る、別のVM依存を受け入れる、あるいは「Luaはとにかく動的だから」と特定のコーナーケースを気にしないことを選択する方が簡単な瞬間がたくさんありました。

代わりに、コンパイラをもう少し先に進め続けました。

そして、それがまさに今日のclxです。そのプロセスの結果です。

これはすべてのLua実装を置き換える試みではなく、ネイティブコンパイルが常に正しい答えであるという主張でもありません。それは単に、言語がネイティブプログラムに直接コンパイルされ、専用のネイティブランタイムによってサポートされるときにLuaが何になるかを探求する試みです。

長年Lua VMをアプリケーションにパッケージ化してきた後、Luaプログラムをコンパイルして、結果の実行可能ファイルを誰かに手渡すときに、Luaインタープリタに依存するアプリケーションではなく、ネイティブプログラムを渡していることを知ることは、本当に満足のいくことです。


[3] タイトル: New plastic pollution discovered: 'Plasticorals' coral rubble fused with plastic
URL: https://www.oist.jp/news-center/news/2026/9/18/new-form-plastic-pollution-discovered-shores-vulnerable-coral-reefs
本文:

新たなプラスチック汚染が発見される:脆弱なサンゴ礁の海岸で見つかった「プラスチックコーラル」

2026年9月18日

プラスチックと融合したサンゴの破片である「プラスチックコーラル」は、人間の活動の永続的な証拠であり、重要な海洋環境への潜在的な脅威を浮き彫りにしています。

日本の亜熱帯の島、沖縄での定期的な海岸ゴミ調査中、研究者たちは、淡いサンゴの破片の中に、小さく鮮やかな色の斑点を発見しました。

研究室に戻り、分光分析と顕微鏡分析を行った結果、これらの斑点が、死んだサンゴの破片の骨格の細孔に不可分に染み込んだ、一般的な家庭用プラスチックからの溶融ポリマーであることが明らかになりました。

Marine Pollution Bulletinに掲載された新しい論文で、沖縄科学技術大学院大学(OIST)と琉球大学の研究者たちは、第一著者であるIfenna Ilechukwu博士とシニア著者であるJames D. Reimer教授が「プラスチックコーラル」と名付けたものを記述しています。プラスチックと天然素材から形成されたハイブリッド廃棄物であるプラスチック凝集体の一種であり、気候変動やその他の人間の活動によってすでに脅かされているサンゴ礁生態系へのプラスチック汚染の長期的な影響を表しています。

沖縄島のビーチから収集されたプラスチックコーラル

画像をクリックすると、高解像度バージョンが表示され、プラスチックコーラルの標本について詳しく読むことができます。各標本は幅20〜30ミリメートルです。

伊武ビーチのプラスチックコーラル

蘇州ビーチのプラスチックコーラル

蘇州ビーチのプラスチックコーラル

蘇州ビーチのプラスチックコーラル、別アングル

蘇州ビーチのプラスチックコーラル

ビーチで見つかるサンゴの破片は海に戻される可能性があり、そこでサンゴ礁にいくつかの重要な役割を果たします。新しいサンゴは破片を安定した基質として利用し、破片の不規則な形状は、若い魚や他の小さな海洋生物を強い潮流や捕食者から保護する隠れ家を作り出します。

プラスチックコーラルの正確な起源(最も可能性の高い発生源はビーチでの焚き火ですが)と、サンゴ生物への具体的な、潜在的に毒性のある影響を判断するにはさらなる研究が必要ですが、一般的なポリマーから溶出する化学物質がサンゴの繁殖を妨げ、プラスチック片がサンゴ病原体を宿し、海洋食物連鎖を通じて伝播することが以前の研究からわかっています。

プラスチックは、セメントと鋼鉄に次いで世界で3番目に広く製造されている材料です。しかし、後者の2つが千年単位で劣化するのに対し、プラスチックはそれよりもはるかに長くそのまま残ります。将来の地質学者は、一般にプラスチック時代と呼ばれる1950年代以降の時代を、地球の地殻の明確なプラスチック層として特定できるでしょう。

Creator

Article Information

Title:

Journal:

Marine Pollution Bulletin

Author(s):

Ifenna Ilechukwu, Mackenzie Stoeltje, Edith Conn, Guillermo Mironenko Castelló, Jeffrey Jolly, Kazuhiko Fujita, Timothy Ravasi, James Davis Reimer

Date:

04 September 2026

DOI:

Specialties

Research Unit

Submit a press inquiry