Beranda

Education

Forensik Digital Kasus Hoax Sekolah #5

Forensik Digital Kasus Hoax Sekolah #5

Bagian penutup: menggabungkan timeline lintas perangkat, membangun graf penyebaran dengan networkx, menguji hipotesis alternatif agar tidak sekadar mengonfirmasi dugaan awal, dan menyusun laporan yang bertanggung jawab ketika semua pihak yang terlibat masih anak-anak.

6 dibaca
Belum ada penilaian

Empat bagian sebelumnya menghasilkan data. Bagian ini mengubahnya menjadi kesimpulan — dan di sinilah letak risiko terbesar seluruh investigasi.

Analisis forensik jarang gagal karena kekurangan data. Ia gagal karena pemeriksa memutuskan siapa pelakunya di jam kedua, lalu menghabiskan sisa waktunya mengumpulkan bukti yang mendukung dugaan itu. Dalam kasus sekolah, dengan tekanan dari orang tua dan keinginan cepat menutup perkara, godaan itu berlipat ganda.

Prasyarat

  • Satu CSV timeline per perangkat dalam UTC (bagian ketiga)
  • Tabel provenance media (bagian keempat)
  • Catatan selisih jam per perangkat (bagian kedua)
  • Python dengan pandas dan networkx

1. Normalisasi waktu, lalu gabungkan

Semua CSV sudah dalam UTC, tapi jam perangkat bisa meleset. Terapkan koreksi yang Anda catat saat akuisisi.

#!/usr/bin/env python3
import pandas as pd
from pathlib import Path

CASE = Path.home() / "cases/2026-08-HOAX-SMPN12"
ANALYSIS = CASE / "03-analysis"

# Selisih dalam detik: waktu_perangkat - waktu_referensi
CLOCK_OFFSET = {"S-04": +2, "S-07": 0, "S-11": -14, "S-02": +1}

frames = []
for csv in ANALYSIS.glob("S*-timeline.csv"):
    df = pd.read_csv(csv)
    dev = df["device"].iloc[0]
    df["utc_raw"] = pd.to_datetime(df["utc"], utc=True)
    df["utc"] = df["utc_raw"] - pd.to_timedelta(CLOCK_OFFSET.get(dev, 0), unit="s")
    df["wib"] = df["utc"].dt.tz_convert("Asia/Jakarta")
    frames.append(df)

allmsg = pd.concat(frames, ignore_index=True).sort_values("utc")
allmsg.to_csv(ANALYSIS / "master-timeline.csv", index=False)

print(f"{len(allmsg)} baris dari {allmsg.device.nunique()} perangkat")
print(f"Rentang: {allmsg.wib.min()} s.d. {allmsg.wib.max()}")

Koreksi selisih dua detik terasa berlebihan sampai Anda menemukan dua pesan berjarak tiga detik yang menentukan siapa yang lebih dulu. Terapkan koreksinya, dan tulis di laporan bahwa koreksi itu diterapkan.

2. Validasi silang: apakah jamnya bisa dipercaya?

Ini langkah yang membedakan pekerjaan serius dari sekadar membaca database. Karena key_id (ZSTANZAID di iOS) identik di semua perangkat, pesan yang sama bisa dibandingkan antar-sumber.

xcheck = (allmsg.groupby("msg_id")
                .agg(n_device=("device", "nunique"),
                     t_min=("utc", "min"),
                     t_max=("utc", "max"))
                .query("n_device > 1"))

xcheck["spread_s"] = (xcheck.t_max - xcheck.t_min).dt.total_seconds()

print(xcheck.spread_s.describe())
print("\nPesan dengan selisih > 60 detik antar-perangkat:")
print(xcheck[xcheck.spread_s > 60].sort_values("spread_s", ascending=False).head(10))

Kalau sebagian besar pesan sinkron dalam beberapa detik, jam seluruh perangkat konsisten dan timeline Anda kokoh. Kalau satu perangkat konsisten meleset besar, jamnya bermasalah — kembali ke auto_time yang Anda catat, dan pertimbangkan mengecualikan perangkat itu sebagai penentu urutan.

3. Kapan pesan pertama kali muncul di tiap grup

target = allmsg[allmsg.text.str.contains("kata_kunci", case=False, na=False)
                | allmsg.media_hash.isin(HASH_MEDIA_HOAX)]

first_per_group = (target.sort_values("utc")
                         .groupby("group_jid")
                         .first()
                         .reset_index()
                         .sort_values("utc"))

print(first_per_group[["wib", "group_name", "sender",
                       "is_forwarded", "fwd_score", "device"]]
      .to_string(index=False))

Hasil tipikal:

                       wib          group_name  sender  is_forwarded  fwd_score device
 2026-08-12 13:47:02+07:00     Kelas 9B Squad    S-04             0          0   S-04
 2026-08-12 13:52:41+07:00     Basket SMPN 12    S-07             1          1   S-07
 2026-08-12 14:23:15+07:00     OSIS 2026         S-11             1          2   S-11
 2026-08-12 19:08:33+07:00     Wali Murid 9B     ORTU-03          1          4   S-02

Baca dengan hati-hati. Kemunculan paling awal yang Anda temukan adalah 13:47 di Kelas 9B, dari S-04, tanpa flag penerusan. Itu kandidat penyebar pertama.

Bukan kesimpulan. Ada tiga alasan.

4. Tiga peran yang tidak boleh disamakan

Originator — yang membuat kontennya. Dalam kasus daur ulang, sering bukan siswa sama sekali; bisa akun anonim di luar sekolah, bertahun-tahun lalu.

First spreader — yang pertama memasukkan konten itu ke ekosistem sekolah. Ini yang biasanya bisa Anda identifikasi.

Amplifier — yang membuatnya viral. Sering bukan pengirim pertama, melainkan orang yang meneruskan ke grup wali murid.

Dalam contoh di atas, S-04 kemungkinan first spreader. Tapi kalau S-04 menerima gambar lewat DM Instagram lalu mengunggahnya ulang ke WhatsApp, dia bukan originator — dan mungkin bukan aktor utama sama sekali. Yang meneruskan ke grup wali murid pukul 19:08 mungkin menyebabkan kerugian jauh lebih besar.

Kepala sekolah akan meminta satu nama. Tugas Anda menjelaskan mengapa satu nama adalah jawaban yang salah, dan menyajikan ketiga peran itu secara terpisah dengan tingkat keyakinan masing-masing.

5. Bangun graf penyebaran

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()

# Urutkan tiap klaster media/teks berdasarkan waktu, lalu tarik
# sisi dari kemunculan lebih awal ke kemunculan berikutnya
for cluster_id, grp in target.groupby("cluster_id"):
    grp = grp.sort_values("utc")
    rows = list(grp.itertuples())
    for i, row in enumerate(rows):
        G.add_node(row.sender, first_seen=str(rows[0].wib))
        if i > 0:
            prev = rows[i - 1]
            if prev.sender != row.sender:
                G.add_edge(prev.sender, row.sender,
                           delta_s=(row.utc - prev.utc).total_seconds(),
                           group=row.group_name)

roots = [n for n in G.nodes if G.in_degree(n) == 0]
print("Node tanpa pendahulu (kandidat asal):", roots)

for n in sorted(G.nodes, key=lambda x: -G.out_degree(x))[:5]:
    print(f"{n}: meneruskan ke {G.out_degree(n)} node")

nx.draw_networkx(G, pos=nx.spring_layout(G, seed=42),
                 node_size=1400, font_size=8, arrows=True)
plt.savefig(ANALYSIS / "propagation-graph.png", dpi=200, bbox_inches="tight")

Dua metrik yang berbeda maknanya:

  • Node tanpa pendahulu → kandidat titik masuk konten
  • Node dengan out-degree tertinggi → amplifier utama

Graf ini adalah inferensi, bukan pengamatan. Ia menyimpulkan arah dari urutan waktu, dan urutan waktu tidak membuktikan hubungan sebab. Dua siswa bisa saja menerima gambar yang sama dari sumber luar yang sama, berselang dua menit, tanpa ada satu pun yang mengirim ke yang lain. Beri label pada gambar di laporan sebagai model, bukan fakta.

6. Uji hipotesis tandingan

Sebelum menulis kesimpulan, tuliskan hipotesis alternatif dan uji satu per satu terhadap bukti. Ini bukan formalitas — ini pengaman utama Anda terhadap bias konfirmasi.

Hipotesis Prediksinya Bukti mendukung Bukti menyanggah
H1: S-04 penyebar pertama di sekolah Kemunculan paling awal, tanpa flag penerusan, media ada di folder Sent Ada ketiganya
H2: Ada penyebar lebih awal di perangkat yang tidak diperiksa Ada pesan lebih awal di grup yang tidak dicakup Tiga grup diketahui ada tapi tak diakuisisi Tak ada kutipan yang merujuk pesan lebih awal
H3: Konten masuk lewat DM/media sosial, bukan WhatsApp Tidak ada rantai penerusan sebelum 13:47 Konsisten dengan H1 Tak dapat diverifikasi tanpa akses DM
H4: Akun S-04 dipakai orang lain Aktivitas menyimpang dari pola normal Pola penggunaan normal sepanjang hari itu

H2 dan H3 tidak bisa Anda tutup. Katakan begitu. Kalimat "tiga grup tidak dapat diakuisisi karena pemiliknya tidak memberi persetujuan, sehingga kemungkinan adanya kemunculan lebih awal tidak dapat disingkirkan" jauh lebih kuat daripada kesimpulan yang terdengar pasti lalu runtuh saat diuji.

7. Bahasa tingkat keyakinan

Pakai skala yang konsisten dan definisikan di laporan:

  • Terverifikasi — teramati langsung pada bukti, dapat direproduksi dengan kueri yang dilampirkan
  • Sangat mungkin — didukung banyak artefak independen, tidak ada bukti yang bertentangan
  • Mungkin — didukung sebagian bukti, hipotesis alternatif belum sepenuhnya tertutup
  • Tidak dapat disimpulkan — data tidak memadai

Terapkan pada setiap temuan:

TERVERIFIKASI    Media M-01 muncul pertama kali pada 12 Agu 2026 13:47:02 WIB
                 di grup "Kelas 9B Squad", dikirim oleh S-04, tanpa penanda
                 penerusan, dengan salinan di folder Sent perangkat S-04.

SANGAT MUNGKIN   S-04 adalah orang pertama yang membawa konten M-01 ke dalam
                 lingkungan komunikasi sekolah.

MUNGKIN          S-04 memperoleh M-01 dari sumber di luar WhatsApp.

TIDAK DAPAT      Siapa yang membuat konten M-01. Penelusuran gambar terbalik
DISIMPULKAN      menemukan versi identik yang dipublikasikan Maret 2024 pada
                 sebuah akun di luar sekolah.

Perhatikan baris terakhir. Kalau penelusuran menemukan gambar itu sudah beredar dua tahun sebelumnya, maka tidak ada satu pun siswa yang menjadi originator — dan seluruh kerangka "mencari pelaku" perlu disampaikan ulang kepada sekolah.

8. Struktur laporan

Pembaca Anda kepala sekolah dan TPPK, bukan sesama praktisi forensik. Susun berlapis: mereka membaca bagian awal, lampiran teknis untuk yang perlu memverifikasi.

  1. Ringkasan eksekutif — maksimal satu halaman, tanpa jargon, dengan tingkat keyakinan dinyatakan
  2. Ruang lingkup dan wewenang — siapa yang menugaskan, apa yang boleh dan tidak diperiksa
  3. Daftar barang bukti — ID, deskripsi, hash, chain of custody
  4. Metodologi — tools beserta nomor versinya, langkah akuisisi, cara verifikasi integritas
  5. Temuan — fakta saja, satu per artefak, tanpa interpretasi
  6. Rekonstruksi — timeline dan graf penyebaran, ditandai sebagai model
  7. Hipotesis tandingan — yang diuji dan hasilnya
  8. Keterbatasan — semua, tanpa kecuali
  9. Kesimpulan — per tingkat keyakinan
  10. Rekomendasi
  11. Lampiran — kueri SQL, skrip, manifes hash, formulir persetujuan

Catat versi tools secara otomatis:

{
  echo "## Versi tools — $(date -u +%Y-%m-%dT%H:%M:%SZ)"
  echo "macOS: $(sw_vers -productVersion)"
  echo "exiftool: $(exiftool -ver)"
  echo "sqlite3: $(sqlite3 --version)"
  echo "ffmpeg: $(ffmpeg -version | head -1)"
  echo "adb: $(adb version | head -1)"
  pip freeze | grep -Ei "mvt|whatsapp|imagehash|pandas|networkx"
} > $CASE/04-report/tool-versions.txt

9. Keterbatasan yang wajib dicantumkan

Salin daftar ini dan sesuaikan:

  • Akuisisi bersifat logis, bukan fisik. Data yang terhapus dan tidak tertangkap backup harian atau carving tidak dapat dipulihkan.
  • Pesan yang diteruskan tidak membawa identitas pengirim aslinya. Rantai penerusan direkonstruksi dari urutan waktu, bukan dari metadata asal.
  • Waktu pada perangkat dapat diubah pengguna. Validasi silang dilakukan, hasilnya dicantumkan.
  • Hanya N dari M perangkat yang diketahui berhasil diakuisisi; sisanya tanpa persetujuan.
  • Konten media sosial yang diarsipkan hanya yang bersifat publik. Data server platform tidak dapat diakses tanpa proses hukum.
  • Perceptual hash memiliki tingkat positif palsu; ambang batas yang dipakai dinyatakan.
  • Analisis ini merupakan audit internal untuk kepentingan penanganan satuan pendidikan, bukan penyidikan pro justitia.

10. Rekomendasi ketika semua pihak adalah anak

Ini bagian tempat pemeriksa teknis paling mudah keliru — dengan menulis rekomendasi seolah-olah ini investigasi korporat.

Kerangkanya sudah ditetapkan pada bagian pertama seri ini: Permendikbudristek 46/2023 mengarahkan penanganan pada pemulihan, dan UU Sistem Peradilan Pidana Anak mengedepankan keadilan restoratif dan diversi. Ditambah putusan Mahkamah Konstitusi yang mempersempit makna "kerusuhan" ke ruang fisik, kegemparan yang murni daring tidak masuk jangkauan pasal pidana hoax.

Yang layak direkomendasikan:

  • Prioritaskan pemulihan bagi pihak yang difitnah — klarifikasi resmi ke seluruh grup yang terdampak, dan dukungan psikologis
  • Tangani lewat TPPK dengan pendekatan restoratif, bukan sanksi yang dipublikasikan
  • Perhatikan bahwa siswa yang meneruskan sering tidak sadar bahwa konten itu palsu; membedakan niat dari kelalaian adalah bagian dari keadilan
  • Perkuat literasi digital: ajarkan arti label "diteruskan berkali-kali" pada WhatsApp
  • Tinjau tata kelola grup WhatsApp resmi sekolah — siapa admin, siapa boleh bergabung
  • Konsultasikan ke penasihat hukum sebelum langkah apa pun ke aparat penegak hukum

Yang tidak boleh ada di laporan Anda: nama lengkap siswa, foto profil, sanksi yang direkomendasikan, atau apa pun yang layak dibagikan di luar TPPK.

11. Serah terima dan pemusnahan data

# Paket laporan final
cd $CASE/04-report
shasum -a 256 laporan-forensik-final.pdf > laporan.sha256

# Verifikasi integritas bukti untuk terakhir kalinya
hashdeep -c sha256 -r -a -k $CASE/00-admin/evidence-manifest-20260814.txt \
  $CASE/01-evidence && echo "INTEGRITAS TERVERIFIKASI SAAT SERAH TERIMA"

Sepakati masa retensi secara tertulis. Setelah kasus ditutup dan masa itu lewat, musnahkan salinannya:

# Pada SSD, gunakan enkripsi volume sejak awal; penimpaan tidak andal.
# Cara paling bersih: simpan kasus di disk image terenkripsi,
# lalu musnahkan dengan menghapus kunci dan image-nya.
hdiutil detach /Volumes/CASE-2026-08
rm -P ~/cases/2026-08-HOAX-SMPN12.sparsebundle.key

Catat pemusnahan di log, dan konfirmasikan ke sekolah secara tertulis.

Penutup seri

Lima bagian, dan tidak satu pun tools berbayar. Yang membuat pekerjaan ini kredibel bukan perangkat lunaknya — melainkan bahwa setiap angka dalam laporan bisa ditelusuri kembali ke sebuah kueri, setiap kueri ke sebuah berkas, dan setiap berkas ke sebuah hash dan tanda tangan pada formulir chain of custody.

Sedikit ironi untuk ditutup: seri ini berjudul mencari penyebar hoax, tetapi hasil paling umum dari investigasi semacam ini bukanlah nama seorang pelaku. Hasil yang paling sering muncul adalah sebuah gambar berusia dua tahun dari peristiwa yang tak berhubungan, diteruskan oleh dua puluh anak yang tak satu pun berniat jahat, dan seorang guru yang berhak atas klarifikasi resmi.

Menyampaikan temuan itu dengan jujur — termasuk ketika ia mengecewakan pihak yang menugaskan Anda — adalah keseluruhan isi pekerjaan ini.

Penafian: seluruh seri ini bersifat edukatif dan bukan nasihat hukum. Untuk kasus nyata, libatkan penasihat hukum dan koordinasikan dengan Satgas PPKSP daerah sejak awal.

Post Terkait

Forensik Digital Kasus Hoax Sekolah #4

Bagian keempat: membaca konvensi penamaan file WhatsApp, apa yang tersisa dari EXIF setelah kompresi, perceptual hashing...

27 Agt 2026

Forensik Digital Kasus Hoax Sekolah #3

Bagian ketiga: dekripsi backup crypt15, bedah skema msgstore.db pada Android dan ChatStorage.sqlite pada iOS, konversi t...

27 Agt 2026

Forensik Digital Kasus Hoax Sekolah #2

Bagian kedua: cara mengambil bukti dari ponsel siswa tanpa merusaknya. Isolasi perangkat, akuisisi logis Android tanpa r...

27 Agt 2026

© 2026 Yowisben. Semua hak dilindungi.

Powered by LONTAR CMS v1.71.0