นี่คือการแชทที่เข้ารหัสผ่านบรรทัดคำสั่ง! มันทำโดยใช้ NCurses เพื่อสร้างส่วนต่อประสานผู้ใช้ทั้งหมด ฉันต้องการทำตัวอย่างไคลเอนต์-เซิร์ฟเวอร์ของการแชทด้วยข้อความจะถูกเข้ารหัสตั้งแต่ต้นจนจบ
เมื่อยอมรับการเชื่อมต่อของไคลเอนต์ใหม่ข้อความแรกที่เซิร์ฟเวอร์ได้รับคือ public key จากไคลเอนต์ซึ่งจะถูกส่งไปยังซ็อกเก็ตฟังทั้งหมด (ไคลเอนต์) ข้อความจะถูกเข้ารหัสครั้งแรกโดยใช้ public keys ของไคลเอนต์ที่เข้าสู่ระบบก่อนที่จะถูกส่งไปกลับไปยังเซิร์ฟเวอร์ ลูกค้าที่ฟังคนอื่น ๆ จะไม่ได้เข้ารหัสข้อความของพวกเขาโดยใช้ private key
โครงการประกอบด้วย 3 ส่วนหลัก
ใน GIF ด้านล่างเทอร์มินัลด้านขวาถูกเปิดโดยใช้ Telnet (ติดตั้งบน Linux) เพื่อแสดงให้เห็นว่าบุคคลที่ไม่ได้ใช้ไคลเอนต์จะเห็นข้อความจากผู้ใช้ที่ใช้ไคลเอนต์โครงการนี้อย่างไร
| ลูกค้าอย่างเป็นทางการ | เชื่อมต่อโดยใช้ telnet |
|---|---|
![]() | ![]() |
ตัวอย่างด้านล่างแสดงลูกค้าสองรายคือข้อความถูกเข้ารหัสจนจบ
ลูกค้าอย่างเป็นทางการ A | ลูกค้าอย่างเป็นทางการ B |
|---|---|
![]() | ![]() |
เชื่อมโยงฉันบน Twitter | สร้างปัญหา
ฉันจะพูดอะไรได้บ้างฉันรัก ncurses และฉันต้องการทำตัวอย่างของสิ่งที่ต้องมีการเข้ารหัสความคิดของการแชท TCP เป็นสิ่งแรกที่เข้ามาในใจของฉัน
นี่เป็นเพียงโครงการที่ทำจากความอยากรู้อยากเห็นการใช้งานที่คุณอาจมอบให้กับเครื่องมือนี้เป็นความเสี่ยงของคุณเอง
การแชทบรรทัดคำสั่งนี้ถูกสร้างขึ้นโดยใช้ NCURSES
เซิร์ฟเวอร์ทำงานอยู่ตลอดเวลาและสามารถใช้กับ Raspberry Pi ร่วมกับ Ngrok ได้ ด้วยการทำเช่นนั้นคุณสามารถเปิดการแชทกับเพื่อนคนอื่น ๆ และมีวิธีการส่งข้อความที่ปลอดภัย
ลูกค้ามี UI ที่ดีที่จะใช้กับเทอร์มินัล ไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ก่อนและส่ง public key ไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์ดึงข้อมูลนี้และส่งไปยังผู้ใช้ทั้งหมดโดยใช้ไคลเอนต์นี้
ลูกค้าทุกคนจะเข้ารหัสข้อความของพวกเขากับ public keys ของลูกค้าฟังคนอื่น ๆ เซิร์ฟเวอร์จะได้รับข้อความการฟังที่เกี่ยวข้องแต่ละรายการและส่งตามนั้น
เมื่อได้รับข้อความที่เข้ารหัสไปทางด้านลูกค้าอื่นแล้วจะไม่ได้รับการเข้ารหัสโดยใช้ private key ของผู้ใช้
ลูกค้าต่ออายุคู่สำคัญทุกครั้งที่คุณเริ่มต้น
เมื่อการติดตั้งเสร็จสิ้นแล้ว
ตามค่าเริ่มต้นพอร์ตที่เซิร์ฟเวอร์กำลังเชื่อมต่ออยู่คือ 54000
เริ่มต้นเซิร์ฟเวอร์ (ในกรณีที่คุณเรียกใช้เซิร์ฟเวอร์)
source silver_serverเริ่มต้นลูกค้า
source silver_sniffle -a 127.0.0.1 54000 127.0.0.1 และพอร์ต 54000 สามารถเปลี่ยนแปลงได้เช่นที่อยู่ TCP ของคุณเองหากคุณมี แน่นอนเซิร์ฟเวอร์จะต้องทำงานบนที่อยู่นั้น
sudo apt install libncurses5-dev libncursesw5-devsudo apt-get install libssl-devsudo apt-get -y install cmake โคลนพื้นที่เก็บข้อมูลนี้เช่นนั้น
git clone https://github.com/edghyhdz/silver-sniffle.git เมื่ออยู่ในโฟลเดอร์ Root Project silver-sniffle
# Lets start by creating the build directory
mkdir build && cd build
# cmake that guy
cmake ..
# Finally
source install.sh install.sh จะเรียกใช้การติดตั้งขั้นสุดท้ายที่จะสร้างทางลัด terimal ชื่อ silver_server และ silver_sniffle
โครงสร้างโฟลเดอร์โครงการสุดท้ายมีดังต่อไปนี้
.
├── ...
├── build # Directory were project was built
│ ├──silver_server # Server executable
│ ├── executable # Client executable location
│ │ └─── silver_sniffle # Client executable
│ └── certificates # key pair location
└── ...
หากทุกอย่างเสร็จสมบูรณ์คุณควรจะสามารถเรียกใช้เซิร์ฟเวอร์ได้โดยทำสิ่งต่อไปนี้
source silver_serverเมื่อเซิร์ฟเวอร์เปิดใช้งานแล้วคุณควรจะสามารถเรียกใช้ไคลเอนต์ได้เช่นนั้น
source silver_sniffle -a 127.0.0.1 54000คุณสามารถกำหนดเส้นทางไคลเอนต์ไปยังที่อยู่อื่นได้ตลอดเวลา
การอ้างอิงที่เกี่ยวข้องมากที่สุดมีดังต่อไปนี้
การอ้างอิงเพิ่มเติมสามารถพบได้ภายในรหัส
เอ็ดการ์เฮอร์นันเดซ