# ส่งออกและตรวจสอบ

Canonical page: https://phishdestroy.github.io/TgWitness/th/docs/exports/

แบ่งปันบันทึกที่มีลายเซ็นเพื่อให้ผู้อื่นสามารถตรวจสอบได้

เก็บไว้เป็นข้อมูลอ้างอิงส่งออก ZIP ที่มีลายเซ็นผู้รับยืนยัน

ยังไม่คุ้นเคยกับลายเซ็นและจุดตรวจสอบ? [ลองแก้ไขบันทึกตัวอย่าง](https://phishdestroy.github.io/TgWitness/th/docs/concepts/#chain)และดูว่าการตรวจสอบใดจะตรวจพบการเปลี่ยนแปลงนั้น

ต้องการเก็บสำเนาไว้แยกจากผู้เก็บข้อมูล? ไปที่[การตั้งค่า S3](https://phishdestroy.github.io/TgWitness/th/docs/exports/#s3), [Object Lock](https://phishdestroy.github.io/TgWitness/th/docs/exports/#s3-retention) หรือ[การกู้คืนที่ได้รับการยืนยัน](https://phishdestroy.github.io/TgWitness/th/docs/exports/#s3-restore)

## เก็บรักษาแหล่งอ้างอิงที่น่าเชื่อถือ

บันทึกลายนิ้วมือของกุญแจสาธารณะของพื้นที่ทำงานไว้ภายนอกตัวเก็บข้อมูล ระหว่างการเก็บข้อมูล ให้เก็บจุดตรวจสอบที่ลงนามไว้ที่อื่น หรือใช้[พยานอิสระ](https://phishdestroy.github.io/TgWitness/th/docs/witness/) การอ้างอิงเหล่านี้ช่วยให้ผู้รับสามารถตรวจสอบกุญแจและขอบเขตของบันทึกก่อนหน้านี้

## ดาวน์โหลดไฟล์ ZIP ที่ลงนามแล้ว

คลิก "Open **Exports" (ส่งออก)** และสร้างไฟล์ ZIP ของหลักฐานที่ลงนามแล้ว ซึ่งรวมถึงบันทึกพื้นที่ทำงานและไฟล์ manifest ที่ลงนามแล้ว ตัวกรองในแผงควบคุมไม่จำกัดการส่งออกบันทึกฉบับเต็มนี้: โปรดตรวจสอบเนื้อหาให้ละเอียดก่อนที่จะแบ่งปัน

ไฟล์ HTML และ CSV ที่ดาวน์โหลดมาแบบแยกส่วนมีประโยชน์สำหรับการอ่านและวิเคราะห์ ให้เก็บไฟล์ ZIP ที่มีลายเซ็นไว้เป็นต้นฉบับที่ตรวจสอบได้; ส่วนไฟล์ HTML หรือ CSV ที่แยกออกมาไม่มีลายเซ็นแบบแยกส่วน

## ตรวจสอบด้วยสำเนา TgWitness ที่เชื่อถือได้

ในสภาพแวดล้อมโครงการที่ติดตั้งแล้ว ให้เปลี่ยนลายนิ้วมือตัวอย่างและเส้นทางไฟล์:

```
python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_PUBLIC_KEY_SHA256 --checkpoint retained-checkpoint.json
```

เมื่อการอ้างอิงทั้งสองผ่านแล้ว ผลลัพธ์จะรายงาน `key_pinned: true` และ `checkpoint_checked: true` ให้เก็บผลการตรวจสอบไว้พร้อมกับไฟล์เก็บถาวรต้นฉบับ จุดตรวจสอบที่เก็บไว้ต้องอยู่ ณ หรือก่อนขอบเขตของการส่งออก

## เข้าใจผลลัพธ์

- **ความสมบูรณ์:** ประวัติที่บันทึกไว้และไฟล์ที่ส่งออกตรงกับลายเซ็นของพวกมัน
- **ข้อสังเกตก่อนหน้านี้:** จุดตรวจสอบภายนอกช่วยให้คุณสามารถเปรียบเทียบข้อมูลที่ส่งออกกับส่วนต้นของบันทึกที่เก็บไว้ก่อนหน้านี้
- **วิธีการดำเนินการ:** การทดสอบแบบควบคุม (ส่ง → แก้ไข → ลบ) เพื่อตรวจสอบเหตุการณ์เฉพาะกับบันทึกที่เก็บไว้

ลายเซ็นที่ถูกต้องไม่ได้เป็นหลักฐานว่าทุกเหตุการณ์ใน Telegram ได้ส่งถึงผู้รับแล้ว ว่าแหล่งข้อมูลได้พูดความจริง หรือว่านาฬิกาของผู้เก็บข้อมูลถูกต้อง

## ตั้งค่าสำเนาสำรอง S3 นอกสถานที่

ในพื้นที่ทำงานของคุณ ให้เปิด **Exports → Off-site copy** (ส่งออก → สำเนาภายนอกระบบ) คุณสมบัตินี้เป็นตัวเลือกเสริมที่ทำงานร่วมกับ AWS S3 และบริการอื่น ๆ ที่รองรับ S3 มันจะคัดลอกส่วนต่าง ๆ ของบันทึก รูปภาพและไฟล์ที่เก็บรักษาไว้ จุดตรวจสอบพร้อมข้อมูลเวลาตอบสนอง และไฟล์ส่งออกการสนทนาที่เสร็จสมบูรณ์ ทุกวัตถุจะถูกเข้ารหัสบนเครื่องเก็บข้อมูลด้วย`AES-256-GCM` ก่อนการอัปโหลด

การสาธิตออนไลน์แสดงปุ่มควบคุมเดียวกัน แต่ปิดฟังก์ชันการอัปโหลดไว้ โปรดป้อนข้อมูลรับรองการเข้าถึงพื้นที่จัดเก็บข้อมูลเฉพาะในพื้นที่ทำงานของคุณเองเท่านั้น

[![แผงคัดลอกข้อมูลนอกไซต์แบบครบถ้วน: จุดปลายทาง (endpoint), ภูมิภาค (region), บักเก็ต (bucket), กุญแจเข้าถึง (access keys), ตารางเวลา (schedule), การล็อกวัตถุ (Object Lock) และการควบคุมกุญแจกู้คืน (recovery key controls)](https://phishdestroy.github.io/TgWitness/assets/off-site-copy.png)](https://phishdestroy.github.io/TgWitness/assets/off-site-copy.png)

แผงควบคุมแบบเต็มที่มีตัวเลือกขั้นสูงถูกขยายออกแล้ว ไม่แสดงข้อมูลรับรองการเข้าถึงพื้นที่จัดเก็บข้อมูล

| Field | สิ่งที่ต้องกรอก |
| --- | --- |
| Endpoint | URL ของบริการจัดเก็บข้อมูล โดยไม่รวมเส้นทาง bucket หรือข้อมูลรับรอง ตัวอย่างสมมติ: `https://s3.example.invalid`. |
| ภูมิภาค | ภูมิภาคที่ผู้ให้บริการของคุณกำหนด ค่าเริ่มต้นของแอปพลิเคชันคือ `us-east-1` |
| Bucket | บัคเก็ตที่มีอยู่แล้วที่คุณสามารถเข้าถึงได้ ตัวอย่างสมมติ: `example-case-backup`. |
| โฟลเดอร์ใน bucket | คำนำหน้าของวัตถุ; ค่าเริ่มต้นคือ`tgwitness` แอปพลิเคชันจะเพิ่มคำนำหน้าที่สร้างขึ้นจากลายนิ้วมือของกุญแจลงนามของพื้นที่ทำงานนี้ |
| ID กุญแจการเข้าถึง / กุญแจการเข้าถึงลับ | ป้อนข้อมูลรับรองการเข้าถึงพื้นที่จัดเก็บทั้งสองรายการพร้อมกัน ข้อมูลเหล่านี้จะถูกเก็บไว้ใน vault ของพื้นที่ทำงาน เมื่อบันทึกข้อมูลในครั้งต่อไป ให้ปล่อยทั้งสองช่องว่างไว้เพื่อรักษาคู่ข้อมูลที่บันทึกไว้ |
| ที่อยู่แบบ Path | ใช้ `endpoint/bucket` เมื่อเปิดใช้งาน หรือ `bucket.endpoint` เมื่อปิดใช้งาน ตามที่ผู้ให้บริการกำหนด |
| ช่วงเวลาการคัดลอก | ตั้งแต่ 1 ถึง 1,440 นาที; ค่าเริ่มต้นคือ 5 นาที แอปพลิเคชันต้องกำลังทำงานอยู่เพื่อดำเนินการคัดลอกตามกำหนดเวลา |
| การเก็บรักษาข้อมูลตามหลัก Object Lock | จำนวนวันและวิธีการเก็บรักษาข้อมูลสำหรับ bucket ที่สนับสนุน Object Lock หากตั้งค่าเป็น Zero days จะทำให้การเก็บรักษาข้อมูลตามค่าเริ่มต้นของ bucket ยังคงมีผล |

1. ป้อนปลายทางและข้อมูลรับรองระบบ ปล่อยให้ตัวเลือก **“เก็บสำเนาไว้นอกไซต์”** ไม่ถูกทำเครื่องหมายขณะเตรียมการ แล้วเลือก **“เก็บสำเนาไว้นอกไซต์**”
2. เลือก "**Test connection**" (ทดสอบการเชื่อมต่อ) เพื่ออัปโหลดวัตถุทดสอบที่เข้ารหัสและตรวจสอบการตอบสนองจากระบบจัดเก็บข้อมูล
3. เลือก **"ดาวน์โหลดกุญแจการเข้ารหัส" (Download encryption key**) เก็บไฟล์นั้นแยกจากโปรแกรมเก็บข้อมูล (collector) เพราะจำเป็นต้องใช้สำหรับการกู้คืนข้อมูล
4. ทำเครื่องหมายในช่อง **“เก็บสำเนาไว้นอกเว็บไซต์**” และบันทึกอีกครั้ง เลือก **“คัดลอกทันที**” เพื่อดำเนินการด้วยตนเอง หรือปล่อยให้กำหนดเวลาทำงานต่อไป

ไม่สร้าง bucket เก็บข้อมูล การอัปโหลดตามกำหนดเวลาจะหยุดลงเมื่อแอปพลิเคชันหยุดทำงาน

## ตรวจสอบระยะเวลาการเก็บรักษาข้อมูลและสถานะการคัดลอก

ในส่วน **“More options**” (**ตัวเลือก**เพิ่มเติม) ให้เลือกจำนวนวันเก็บรักษา และเลือก `GOVERNANCE` หรือ `COMPLIANCE` หาก bucket ของคุณสนับสนุน Object Lock TgWitness จะอ่านกลับโหมดการเก็บรักษาและวันหมดอายุของวัตถุที่อัปโหลดมา รายงานสถานะจะยืนยันการเก็บรักษา การเก็บรักษาที่ขาดหายไป หรือการตรวจสอบล้มเหลว; การอัปโหลดที่สำเร็จเพียงอย่างเดียวไม่ถือเป็นการยืนยันการเก็บรักษา

แผงควบคุมจะรายงานรอบการประมวลผลครั้งล่าสุด จำนวนวัตถุ ไบต์ที่ถ่ายโอน ขอบเขตของบันทึกที่คัดลอก และข้อผิดพลาดใดๆ สื่อท้องถิ่นที่ขาดหายไปหรือถูกเปลี่ยนแปลงจะถูกรายงานและระบบจะลองใหม่ในรอบการประมวลผลครั้งถัดไป ไฟล์ จุดตรวจสอบ และการส่งออกที่อยู่ในคิวหลังจากสื่อดังกล่าวนั้นยังสามารถคัดลอกได้

การอัปโหลดใช้เส้นทาง Direct, SOCKS5 หรือ HTTP ของพื้นที่ทำงาน การคัดลอกไปยัง S3 ไม่สามารถใช้งานได้ผ่าน MTProxy; แอปพลิเคชันจะไม่เปลี่ยนไปใช้การเชื่อมต่อโดยตรง

**ไม่**บังคับผู้ให้บริการให้บังคับใช้ Object Lock เพียงเพราะการอัปโหลดได้รับการยอมรับ

## เก็บกุญแจกู้คืนไว้แยกต่างหาก

ไฟล์ JSON ที่ดาวน์โหลดมาประกอบด้วยกุญแจถอดรหัส การตั้งค่าปลายทาง คำนำหน้าของอ็อบเจ็กต์พื้นที่ทำงาน และลายนิ้วมือของกุญแจลงนาม แต่ไม่รวมถึงข้อมูลรับรองการเข้าถึง S3: การกู้คืนข้อมูลจำเป็นต้องใช้ข้อมูลรับรองแยกต่างหากที่มีสิทธิ์อ่านใน bucket

หากเปลี่ยนจุดปลายทาง (endpoint), บักเก็ต (bucket) หรือคำนำหน้าโฟลเดอร์ (folder prefix) ให้ดาวน์โหลดไฟล์กุญแจใหม่เพื่อให้การตั้งค่าจุดหมายปลายทางตรงกัน แอปพลิเคชันจะสร้างสำเนาใหม่ของบันทึก ไฟล์ และจุดตรวจสอบ (checkpoints) ที่เก็บไว้ท้องถิ่นไปยังจุดหมายปลายทางใหม่ ส่วนการส่งออกการสนทนาที่เสร็จสิ้นแล้วและถูกลบออกจากคิวอัปโหลดท้องถิ่นจะยังคงอยู่ที่จุดหมายปลายทางเดิม

**ไม่ทำ** ไม่ถอดรหัสสำเนาหากไม่มีกุญแจที่ส่งออก ข้อมูลรับรองการเข้าถึงระบบจัดเก็บข้อมูลไม่สามารถแทนที่กุญแจดังกล่าวได้

## กู้คืนและตรวจสอบบนเครื่องอื่น

ใช้การติดตั้ง TgWitness ที่เชื่อถือได้, ไฟล์ JSON ของกุญแจที่ดาวน์โหลดมา, ข้อมูลการเข้าสู่ระบบของพื้นที่จัดเก็บที่มีสิทธิ์อ่าน, และไดเรกทอรีผลลัพธ์ที่ว่างเปล่า ให้แทนที่ข้อมูลการเข้าสู่ระบบตัวอย่างที่สมมติไว้ด้านล่าง

### Windows PowerShell

```
$env:TGWITNESS_S3_ACCESS_KEY = 'YOUR_READ_ACCESS_KEY'
$env:TGWITNESS_S3_SECRET_KEY = 'YOUR_READ_SECRET_KEY'
python -m tgwitness.replica restore --key-file tgwitness-replica-key.json --out restored-evidence
```

### Linux / macOS

```
export TGWITNESS_S3_ACCESS_KEY='YOUR_READ_ACCESS_KEY'
export TGWITNESS_S3_SECRET_KEY='YOUR_READ_SECRET_KEY'
python -m tgwitness.replica restore --key-file tgwitness-replica-key.json --out restored-evidence
```

ไฟล์ที่ดาวน์โหลดและไฟล์ที่ถอดรหัสแล้วจะถูกเก็บไว้ในพื้นที่จัดเก็บชั่วคราวส่วนตัว ในขณะที่บันทึกทั้งหมด จุดตรวจสอบที่เก็บไว้ รวมถึงค่าแฮชและขนาดของสื่อที่เก็บรักษาไว้จะถูกตรวจสอบ เส้นทางที่ไม่ปลอดภัย ส่วนบันทึกที่ขัดแย้งกัน และบันทึกที่มีขนาดสั้นกว่าจุดตรวจสอบจะถูกปฏิเสธ หากการตรวจสอบล้มเหลว ไฟล์ที่กู้คืนมาจะไม่ถูกเผยแพร่

การกู้ข้อมูลที่สำเร็จจะให้ผลลัพธ์เป็น `events.jsonl`, `media/`, `checkpoints/` และ `exports/` สำหรับข้อมูลที่มีอยู่ในสำเนา เก็บผลลัพธ์ JSON ของคำสั่งไว้พร้อมกับข้อมูลที่กู้คืนได้

**ไม่ทำ** ไม่สร้างใหม่ข้อมูลที่ไม่ได้บันทึกในสมุดบันทึก หรือแทนที่จุดตรวจสอบหรือพยานที่เก็บรักษาไว้อย่างอิสระ
