SyncthingïŒåçäžé 眮
åŒæºçç¹å¯¹ç¹ïŒP2PïŒæä»¶åæ¥å·¥å ·ïŒæ éäžå€®æå¡åšïŒæ°æ®å šçšå å¯äŒ èŸã
æ žå¿æ¶æ
âââââââââââââââââââââââ âââââââââââââââââââââââ
â çµèïŒWindowsïŒ â â ææºïŒAndroidïŒ â
â âââââââââââºâ â
â Syncthing å®äŸ A â P2P å å¯ â Syncthing å®äŸ B â
â 192.168.1.2 â çŽè¿ â 10.0.0.1ïŒæµéïŒ â
âââââââââââââââââââââââ âââââââââââââââââââââââ
â â
â ââââââââââââââââââââ â
ââââââºâ åç°æå¡åšïŒå¯éïŒ âââââââ
â åž®äœ æŸå°å¯¹æ¹ IP â
ââââââââââââââââââââ
äžå€§æ žå¿æºå¶
1. 讟å€åç°ïŒDevice DiscoveryïŒ
- 讟å€å¯åšæ¶ååç°æå¡åšïŒDiscovery ServerïŒæ³šåèªå·±çå°åïŒIP + 端å£ïŒ
- 对æ¹è®Ÿå€éè¿åç°æå¡åšæ¥è¯¢å°äœ çåœåå°å
- åç°æå¡åšåªç¥é"åªäžªè®Ÿå€åšåªäžªIP"ïŒäžç¥éäœ åšåæ¥ä»ä¹æä»¶
- å¯å ³éïŒæåšå¡«å对æ¹è®Ÿå€ ID + IP å³å¯ç»è¿åç°æå¡åš
2. ç¹å¯¹ç¹äŒ èŸïŒP2P TransferïŒ
- åæ¹è®Ÿå€çŽæ¥å»ºç« TLS å å¯è¿æ¥
- äœ¿çš TLS 1.3 å å¯ïŒå¯é¥åªæäœ ç䞀å°è®Ÿå€ææ
- äŒ èŸå å®¹æ¯æä»¶çå·®åŒåæ¥ïŒç±»äŒŒ rsync ç®æ³ïŒïŒäžæ¯æŽäžªæä»¶éäŒ
- å±åçœäžèµ°å±åçœçŽè¿ïŒå»¶è¿äœãé床快
ä»ä¹æ¯ TLS å å¯ïŒ
TLSïŒTransport Layer SecurityïŒäŒ èŸå±å®å šåè®®ïŒââäºèçœäžæ°æ®å å¯çäºå®æ åïŒHTTPS å°±æ¯ HTTP + TLSã
没æ TLS çææäŒ èŸïŒ
çµè ææº
â â
â "cat /root/flag.txt" â
âââââââââââââââââââââââââââââââºâ â è·¯ç±åšAçå°å
容äº
â â
â picoCTF{xxxx} â
ââââââââââââââââââââââââââââââââ â Wi-Fi çç¹ä¹çå°äº
æä»¶å 容åšäŒ èŸè·¯åŸäžçæ¯äžªè·¯ç±åšãæ¯äžªè¿è¥åèç¹éœæ¯ææå¯è§çã
æäº TLSïŒ
çµè ææº
â â
â æ¡æäº€æ¢å
¬é¥ â
âââââââââââââââââââââââââââââââºâ
ââââââââââââââââââââââââââââââââ
â â
â "cat /root/flag.txt" â
â âââââââââââââââââââââââ â
â â TLS å å¯ â ä¹±ç âââââºâ â è·¯ç±åšçå°çæ¯ä¹±ç
â âââââââââââââââââââââââ â
â â
â picoCTF{xxxx} â
â ââââââââââââââââââââââââââââ
â â TLS è§£å¯ â ä¹±ç ââ
â ââââââââââââââââââââââââ
ç®èŠæµçšïŒ
1. æ¡æé¶æ®µ
ææº ââââ äœ å¥œïŒæçš TLS 1.3 ââââ⺠çµè
ææº ââââ 奜çïŒè¿æ¯æçè¯ä¹Š ââââââ çµè
ææº ââââ éªè¯è¯ä¹Š âïŒäº€æ¢å¯é¥ ââ⺠çµè
2. å å¯äŒ èŸ
ææº ââââ ð å å¯åçæä»¶æ°æ® ââââ⺠çµè
ææº ââââ ð å å¯åç确讀 ââââââââ çµè
å¯é¥äº€æ¢ç宿Žè¿çš
åŸå€äººäŒå°æïŒäžºä»ä¹ TLS éèŠäž€ç§å å¯ç®æ³ïŒåå åŸç®åââ
对称å å¯å¿«ïŒäœäžå®å šãé对称å å¯å®å šïŒäœæ ¢ã
æä»¥ TLS çåæ³æ¯ïŒçšé对称å å¯å®å šå°äŒ éäžäžª"䞎æ¶å¯é¥"ïŒç¶ååæ¹çšè¿äžªäžŽæ¶å¯é¥å对称å 坿¥äŒ èŸå®é æ°æ®ã
1. é对称å å¯é¶æ®µïŒæ
¢ïŒäœå®å
šïŒ
âââââââââââââââââââââââââââââââââââââââââââââ
â ææº ââââ çšçµèçå
¬é¥å å¯äžŽæ¶å¯é¥ ââââ⺠çµè â
â ææº ââââ çšææºçå
¬é¥å å¯äžŽæ¶å¯é¥ ââââââââ çµè â
âââââââââââââââââââââââââââââââââââââââââââââ
â
ç°åšåæ¹éœæåäžäžª"䞎æ¶å¯é¥"äº
â
âŒ
2. 对称å å¯é¶æ®µïŒå¿«ïŒçšäºå®é
äŒ èŸïŒ
âââââââââââââââââââââââââââââââââââââââââââââ
â ææº ââââ çšäžŽæ¶å¯é¥å å¯æä»¶æ°æ® ââââââââ⺠çµè â
â ææº ââââ çšäžŽæ¶å¯é¥å å¯ç¡®è®€æ¶æ¯ ââââââââ çµè â
âââââââââââââââââââââââââââââââââââââââââââââ
æ"é对称"å"对称"诎人è¯
对称å å¯ ââ äžæé¥ååŒäžæé
ðïŒåäžæé¥åïŒ
ââââââââ ââââââââ
â ææº âââå å¯/è§£å¯âââºâ çµè â
ââââââââ ââââââââ
- ææºåçµèçšåäžæé¥åå å¯åè§£å¯
- é床快ïŒAES-256ïŒïŒéåäŒ å€§æä»¶
- é®é¢ïŒåŠæé¥ååšäŒ èŸè¿çšäžè¢«å«äººæªè·ïŒå å¯å°±åºäº
é对称å å¯ ââ äžæå ¬é + äžæç§é¥
ð å
¬é¥ïŒå
¬åŒç»ææäººïŒ ð ç§é¥ïŒåªæèªå·±ççïŒ
ââââââââ ââââââââ
â ææº âââçšçµèçå
¬é¥éäœæ°æ®ââ⺠â çµè âââçšç§é¥è§£åŒ
ââââââââ ââââââââ
- å ¬é¥åäžæéïŒè°éœå¯ä»¥æ¿æ¥éäžæ°æ®
- ç§é¥åå¯äžçé¥åïŒåªæææè èœæåŒ
- å°±ç®å«äººæ¿å°äºå ¬é¥ïŒä¹è§£äžåŒéäœçæ°æ®
- éåºŠæ ¢ïŒäžéåäŒ å€§æä»¶
䞺ä»ä¹é对称å å¯èœå®å šå°äŒ é对称å¯é¥ïŒ
å ³é®ïŒé对称å å¯äžéèŠå åéå¯ç ïŒå ¬é¥æ¯å ¬åŒçã
1. çµèçæäžå¯¹å¯é¥ïŒå
¬é¥ïŒå
¬åŒïŒ + ç§é¥ïŒèªå·±è奜ïŒ
2. ææºæ¿å°çµèçå
¬é¥ïŒä»è¯ä¹ŠéïŒ
3. ææºèªå·±çæäžäžªéæºäžŽæ¶å¯é¥ "abc123"
4. ææºçšçµèçå
¬é¥æ "abc123" éäœïŒåç»çµè
ææº ââââ ð å å¯åç "abc123" ââââ⺠çµè
â â
å«äººæªè·äºä¹çäžæ â
å 䞺没æçµèçç§é¥ âââ çšç§é¥è§£åŒ â "abc123" â
5. ç°åšåæ¹éœç¥é "abc123" äº
6. åç»æææä»¶æ°æ®éœçš "abc123" + AES-256 å å¯äŒ èŸïŒé床快
æä»¥é对称å å¯åªçšæ¥è§£å³äžäžªé®é¢ïŒ“æä¹å®å šå°åè¯å¯¹æ¹å¯¹ç§°å¯é¥”ãäžæŠåæ¹éœæäºå¯¹ç§°å¯é¥ïŒåé¢å°±çšå¯¹ç§°å 坿¥äŒ å®é æ°æ®ã
è¯ä¹Šçäœçš
é£é®é¢åæ¥äºïŒäœ æä¹ç¡®å®äœ æ¿å°ç"å ¬é¥"ççæ¯çµèçïŒèäžæ¯äžéŽäººäŒªé çïŒ
âââ ææ¯çµèïŒè¿æ¯æçå
¬é¥ âââ
â äœå®é
äžææ¯é»å®¢ïŒ â
ââââââ â â ââââââ
âææºâ ââââââââââââââââââââââââââââ âé»å®¢âââ⺠çµè
ââââââ â â ââââââ
ââââââââââââââââââââââââââââ
è¯ä¹ŠïŒCertificateïŒ å°±æ¯è§£å³è¿äžªé®é¢çââå®ç±å¯ä¿¡çç¬¬äžæ¹æºæïŒCAïŒåŠ DigiCertãLet’s EncryptïŒæ°åçŸåïŒè¯æ"è¿äžªå ¬é¥ç¡®å®å±äºè¿å°è®Ÿå€"ã
- æäœç³»ç»/æµè§åšå 眮äºåä¿¡ä»»ç CA å衚
- ææºæ¶å°çµèçè¯ä¹ŠåïŒéªè¯ CA çŸå â ç¡®è®€å ¬é¥å¯ä¿¡ â
3. NAT ç©¿éäžäžç»§ïŒRelayïŒ
- ææºåš 4G/5G äžå€äºè¿è¥å NAT åïŒæ²¡æå ¬çœ IP
- Syncthing äŒå°è¯ UPnP / STUN ææŽïŒå»ºç«çŽè¿
- ææŽå€±èŽ¥æ¶é级å°äžç»§æš¡åŒïŒ
çµè ââå å¯ââ⺠å
Œ
±äžç»§æå¡åš ââå å¯âââº ææº
- äžç»§æå¡åšåªèœ¬åå 坿°æ®å ïŒæ²¡æè§£å¯å¯é¥ïŒçäžå°å 容
- ä» åš P2P äžéæ¶äœ¿çšïŒäžåœ±åæ°æ®å®å š
- å¯å ³éïŒäœå ³éå䞀å°è®Ÿå€å¿ é¡»åšåäžå±åçœäžæèœåæ¥
ä»ä¹æ¯ NATïŒ
NATïŒNetwork Address TranslationïŒçœç»å°å蜬æ¢ïŒ
äœ çææºè¿æ¥ 4G/5G æ¶ïŒå¹¶æ²¡æäžäžª"å ¬çœ IP"ïŒèæ¯åå ¶ä»çšæ·å ±çšè¿è¥åçå äžªå ¬çœ IPãNAT å°±æ¯è¿è¥åè·¯ç±åšå¹²ç掻ââæææäººçå çœ IP + ç«¯å£æ å°å°åäžäžªå ¬çœ IP + äžå端å£ã
ææº A: 192.168.0.2:54321
ææº B: 192.168.0.3:54321 WiFi/åºç«
â â
⌠âŒ
âââââââââââââââââââââââââââââââââ
â è¿è¥å NAT è·¯ç±åš â
â å
¬çœ IP: 120.xxx.xxx.50 â
â æ å°è¡š: â
â 192.168.0.2:54321 â 50001 â
â 192.168.0.3:54321 â 50002 â
âââââââââââââââââââââââââââââââââ
é®é¢ïŒ äºèçœäžçå ¶ä»è®Ÿå€åªç¥éå ¬çœ IPïŒ120.xxx.xxx.50ïŒïŒäœè¿äžª IP èåæå åäžªçšæ·ã宿³äž»åšè¿äœ çææºæ¶ïŒNAT è·¯ç±åšäžç¥éåºè¯¥æè¿æ¥èœ¬åç»è°ïŒäºæ¯æç»ã
ä»ä¹æ¯ NAT ç©¿éïŒ
让 NAT åé¢ç䞀å°è®Ÿå€äºçžæŸå°å¯¹æ¹å¹¶å»ºç«çŽè¿çææ¯ãSyncthing çšçæ¯ UDP ææŽïŒUDP Hole PunchingïŒïŒ
䞺ä»ä¹å¿ é¡»æ¯ UDPïŒTCP äžè¡ïŒ
NAT è·¯ç±åšå¯¹åŸ UDP å TCP çæ¹åŒå®å šäžåïŒ
UDP æ¯æ ç¶æçïŒ
ææº ââââ åäžäžª UDP å
廿å¡åš âââââº
NAT è·¯ç±åšçå°è¿äžªå
ïŒåšæ å°è¡šè®°äžç¬ïŒ
"ææº 192.168.0.2:54321 â å
¬çœ 120.x:50001"
ââ ç¶åå°±äžç®¡äº ââ
è¿äºäžäŒïŒå
¬çœäžä»»äœäººåŸ 120.x:50001 å UDP å
NAT è·¯ç±åšïŒåŠïŒè¿äžªç«¯å£æææ å° â 蜬åç»ææº â
- NAT åªæ¯è®°äºäžªå°åæ å°ïŒäžç®¡æ¯è°å忥ç
- åªèŠæ å°æ²¡è¿æïŒä»»äœå€éšäž»æºåŸè¿äžªç«¯å£åå éœèœç©¿é
TCP æ¯æç¶æçïŒ
ææº ââââ TCP SYNïŒè¯·æ±å»ºç«è¿æ¥ïŒâââââº
NAT è·¯ç±åšè®°äžæ å°ïŒåæ¶æ è®°ç¶æäžº"SYN_SENT"
ââ çåŸ
SYN-ACK ââ
è¿äºäžäŒïŒåŠäžå°çµèåŸ 120.x:50001 å TCP SYN
NAT è·¯ç±åšïŒççïŒæçç¶ææ¯ SYN_SENTïŒäœäœ è¿äžªå
æ¯
äžäžªæ°ç SYNïŒäžæ¯é¢æç SYN-ACK â 䞢æ â
- NAT äŒç»Žæ€ TCP è¿æ¥ç¶ææºïŒSYN â SYN-ACK â ACK â ESTABLISHEDïŒ
- åªæç¬Šååœåç¶æçå ææŸè¡
- å€éšäž»åšåæ¥ç SYN äŒè¢«è§äžºéæ³å 䞢åŒ
å ³é®å·®åŒïŒ
| UDP | TCP | |
|---|---|---|
| NAT è®°åœ | IP:ç«¯å£æ å° | æ å° + è¿æ¥ç¶æ |
| å€éšäž»åšåå | â åªèŠç«¯å£æ å°ååšå°±èœ¬å | â ç¶æäžå¹é å°±äž¢åŒ |
| éåææŽ | â | â |
è¿å°±æ¯äžºä»ä¹ SyncthingãWebRTCãBTäžèœœéœçš UDP ææŽãåŠæéèŠçš TCPïŒéèŠé¢å€ææ¯ïŒåŠ TCP æåžŠãSOCKS 代çïŒïŒå€æåŸå€ã
Syncthing å ·äœçææŽæµçšïŒ
1. ææºåçµèéœå
è¿äžåäžäžª"äžéŽäºº"ïŒåç°æå¡åšïŒ
ââââââ è¿äžäºïŒIP æ¯ 120.x:50001 ââââââââ
âææºâââââââââââââââââââââââââââââââºâåç°æå¡åšâ
ââââââ ââââââââ
ââââââ è¿äžäºïŒIP æ¯ 8.x:22000 ââââââââ
âçµèâââââââââââââââââââââââââââââââºâåç°æå¡åšâ
ââââââ ââââââââ
2. åç°æå¡åšåè¯åæ¹å¯¹æ¹ç IP
ææº âââââ çµèåš 8.x:22000 âââââââ çµè
ææº âââââ ææºåš 120.x:50001 âââââ çµè
3. 忹忶åŸå¯¹æ¹ç IP:ç«¯å£ åäžäžªå
ââââââ ââââ å» 8.x:22000 ââââ⺠ââââââ
âææºâ âçµèâ
ââââââ ââââ å» 120.x:50001 ââââ ââââââ
4. NAT è·¯ç±åšæ¶å°"æ¥èªçµèçå
"ïŒåç°æ å°è¡šéåå¥œæææºé£æ¡è®°åœ
â æŸè¡ïŒçŽè¿å»ºç«æå â
åŠæææŽå€±èŽ¥ïŒè¿è¥å NAT è¿äºäž¥æ ŒïŒïŒé级å°äžç»§æš¡åŒââåæ¹éœè¿å°äžäžªå ¬å ±äžç»§æå¡åšïŒæå¡åšèœ¬åå 坿°æ®ã
忥æµçš
1. æä»¶åæŽïŒæ°å¢/ä¿®æ¹/å é€ïŒ
â
2. æ¬å°çŽ¢åŒæŽæ°ïŒæ«ææä»¶ååïŒ
â
3. éç¥è¿ç«¯è®Ÿå€"æææŽæ°"
â
4. è¿ç«¯è¯·æ±å·®åŒæèŠ
â
5. æ¬å°åéå·®åŒåïŒååäŒ èŸ + SHA256 æ ¡éªïŒ
â
6. è¿ç«¯éç» + æ ¡éª â åå
¥ç£ç
ç¹ç¹
- åå忥ïŒä»»äžç«¯çä¿®æ¹éœäŒåæ¥å°åŠäžç«¯
- å²çªå€çïŒäž€ç«¯åæ¶ä¿®æ¹åäžæä»¶ïŒä¿çäž€äžªçæ¬ïŒ
file.å²çª-讟å€å-æ¶éŽ.mdïŒ - çæ¬ç®¡çïŒå¯é 眮ä¿çåå²çæ¬ïŒé²æ¢è¯¯å
åäžå¿åæ¹æ¡å¯¹æ¯
| ç¹æ§ | SyncthingïŒP2PïŒ | OneDrive / iCloud | èªå»º NextCloud |
|---|---|---|---|
| æ¯åŠéèŠäžå€®æå¡åš | â äžéèŠ | â 埮蜯/è¹ææå¡åš | â èªå»ºæå¡åš |
| æ°æ®äŒ èŸ | çŽè¿å å¯ | ç»ç¬¬äžæ¹ | ç»èªå»ºæå¡åš |
| éç§æ§ | æé« | äœïŒæå¡åå¯è®¿é®ïŒ | äžïŒèªå·±ç®¡ïŒ |
| é床 | å±åçœæå¿« | åäºæå¡éé | åæå¡åšåžŠå®œéé |
| å¯çšæ§ | åæ¹åšçº¿æèœåæ¥ | 犻线ä¹èœäžäŒ | æå¡åšåšçº¿å³å¯ |
å®é äœéª
- åšå®¶è¿åäžäžª Wi-FiïŒç§çº§åæ¥ïŒåæ¬å°æäœæ²¡åºå«
- ææºçšæµéïŒè¥ NAT ææŽæå â 1-2ç§å»¶è¿ïŒè¥èµ°äžç»§ â å ç§å»¶è¿
- åå® Obsidian ç¬è®°æ
Ctrl+SïŒæ¿èµ·ææºçŽæ¥çââäžéèŠæåšäžäŒ æå·æ°
é 眮è¿çš
ç¯å¢
| è®Ÿå€ | ç³»ç» | å®è£ æ¹åŒ |
|---|---|---|
| çµè | Windows | å®çœäžèœœ zipïŒè§£åè¿è¡ |
| ææº | Android | Google Play / F-Droid å®è£ Syncthing-Fork |
è®Ÿå€ ID
çµè: ABCDE12-FGHIJK3-LMNOPQ4-RSTUVW5-YZABCD6-EFGHIJ7-KLMNOP8-QRSTUV9
ææº: ZYXWV9-UTSRQP8-NMLKJI7-HGFEDC6-BAZYXW5-VUTSRQ4-PONMLK3-JIHGFE2
è®Ÿå€ ID = 讟å€è¯ä¹Šå ¬é¥ç SHA-256 æçº¹ïŒçšäºèº«ä»œéªè¯ïŒäžèœä» çš IP æ¿ä»£ã
é 眮æ¥éª€
çµè端
- ä» syncthing.net/downloads äžèœœ Windows çïŒè§£å
- åå»
syncthing.exeè¿è¡ - æµè§åšæåŒ
http://127.0.0.1:8384è¿å ¥ Web UI - ç¹å³äžè§ æäœ â æ·»å è¿çšè®Ÿå€
- å¡«å
¥ææºçè®Ÿå€ IDïŒåç§°å¡«
Phone - å ±äº«æä»¶å€¹åŸééèŠåæ¥çç®åœ
- ç¹ ä¿å
ææºç«¯
- å®è£ Syncthing App
- ç¹å³äžè§ + â æ·»å 讟å€
- å¡«å
¥çµèçè®Ÿå€ IDïŒåç§°å¡«
DESKTOP - ç¹ ä¿åïŒæ¶å°é 对请æ±åç¹ æ¥å
宿Žåæ¥æµçš
åç° â 身仜éªè¯ â TLS å å¯ â äŒ èŸæ°æ®
Step 1: åç°
ææº âââ åç°æå¡åšïŒ"ABCDE12-... åšçº¿åïŒ"
åç°æå¡åš âââ ææºïŒ"åšçïŒIP æ¯ x.x.x.x:22000"
Step 2: 身仜éªè¯
ææº âââ çµè忥å
¬é¥
ææº SHA-256(å
¬é¥) = ABCDE12-... â
ïŒèªå·±æåšèŸå
¥çïŒå¯ä¿¡ïŒ
ææº âââ åèµ·ææïŒå 坿¶æ¯ïŒ
çµè âââ çšç§é¥è§£å¯ â å倿£ç¡® â
ïŒæ²¡æç§é¥ç人è¿äžäºè¿å
³ïŒ
Step 3: TLS æ¡æ
åæ¹éªè¯éè¿ â é对称å å¯äº€æ¢å¯¹ç§°å¯é¥ â 建ç«å å¯éé
Step 4: äŒ èŸæ°æ®
çµè âââ ææºïŒTLS å å¯åçæä»¶å·®åŒæ°æ®
ææºè§£å¯ â åå
¥ç£ç â 忥宿
å ³äºçœç»ç¯å¢
ç®åææºäœ¿çšæ¢¯åæèœè¿æ¥å°çµèïŒ
- Syncthing çå šçåç°æå¡åšåäžç»§æå¡åšè¢« GFW å°é
- ææºåŒæ¢¯ååæµéå å å¯åºåœïŒç»è¿å°éïŒæèœåç°çµè
- 忥æååïŒå ³é梯åäŒå¯ŒèŽè¿æ¥æåŒ
åç»äŒåïŒ åšèªå»ºæå¡åšäžæäžç»§æå¡ïŒåœå çŽè¿å³å¯åæ¥ïŒæ 鿢¯åã