Vcdiff рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

tortoise.jpg tortoise_bad.jpg


рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рджреМрд░рд╛рди JPEG рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд╣рд╛рдБ рдФрд░ рдХреИрд╕реЗ рднреНрд░рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред


VCDIFF - рдбреЗрд▓реНрдЯрд╛ рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдк рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдоред рдЖрд░рдПрдлрд╕реА 3284 рдореЗрдВ рд╡рд░реНрдгрд┐рддред

рдбреЗрд▓реНрдЯрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (Engред рдбреЗрд▓реНрдЯрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ) - рдбреЗрдЯрд╛ рдХреЗ рдмрдЬрд╛рдп рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ (рдбреЗрд▓реНрдЯрд╛) рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП Windows-1251 рдореЗрдВ рдПрдиреНрдХреЛрдбреЗрдб рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЙрд╕реА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде, рдпреЗ рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓реЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред


рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:


"  " ( source.txt ) "  " ( target.txt ) 

рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 "  " ( source.txt -> target.txt ) "  " ( target.txt -> source.txt ) 

рдореИрдВ xdelta3 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЬреЛ vcdiff рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдХрд░реЗрдЧрд╛ред


рдХреИрд╕реЗ рдорд┐рд▓реЗрдЧрд╛?


рд╣рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рднрд░реА рдПрдХ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:


 " " ( spaces.txt ) 

рдпрд╣ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдмрдбрд╝рд╛ рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (source.txt)


рдЯреАрдо:


 xdelta3 -e -A -n -s source.txt target.txt | xdelta3 -d -s spaces.txt 

рдкрд░рд┐рдгрд╛рдо:


   

рдкреНрд░рдпреБрдХреНрдд рдЭрдВрдбреЗ:
-e - рдПрдХ рдбреЗрд▓реНрдЯрд╛ рдмрдирд╛рдПрдБ
-A - рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЗрдбрд░ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ
-n - crc рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ (рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдбреЗрд▓реНрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ)
-s [] - рд╡рд╣ рд╕реНрд░реЛрдд рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рдХреА рддреБрд▓рдирд╛ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
-d - рдбреЗрд▓реНрдЯрд╛ рдФрд░ рд╕реНрд░реЛрдд рд╕реЗ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ


рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


рдпрджрд┐ рдЖрдк рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ:


 xdelta3 -e -A -n -s source.txt target.txt | xdelta3 printdelta 

рдлрд┐рд░ рд╕рднреА рд╣реЗрдбрд░ рдХреЗ рдмрд╛рдж рд╣рдо VCDIFF рдХрдорд╛рдВрдб рджреЗрдЦреЗрдВрдЧреЗ


  Offset Code Type1 Size1 @Addr1 + Type2 Size2 @Addr2 000000 025 CPY_0 9 S@0 000009 010 ADD 9 000018 025 CPY_0 9 S@14 

VCDIFF рдкреНрд░рд╛рд░реВрдк рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЗрд╕рдореЗрдВ 3 рдЯреАрдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред


COPY - рдХрд┐рд╕реА рд╕реНрд░реЛрдд рдпрд╛ рд▓рдХреНрд╖реНрдп рд╕реЗ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИ
ADD (рдРрдб) - рдбреЗрд▓реНрдЯрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЛ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ (рдЕрджреНрд╡рд┐рддреАрдп рдбреЗрдЯрд╛ рдЬрд┐рд╕рдХрд╛ рд╕реНрд░реЛрдд рдореЗрдВ рдирд╣реАрдВ рд╣реИ)
RUN (рджреЛрд╣рд░рд╛рдирд╛) - рдбреЗрд▓реНрдЯрд╛ рд╕реЗ рдПрдХ рдмрд╛рдЗрдЯ рдХреЛ рдХрдИ рдмрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ


рдбреЗрд▓реНрдЯрд╛ рдХреЗрд╡рд▓ рдЕрджреНрд╡рд┐рддреАрдп рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд░реЛрдд рд╕реЗ рдмрд╛рдХреА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ:


 xdelta3 -e -A -n -s source.txt target.txt > target.vcdiff 

рд╣рдо рдбреЗрд▓реНрдЯрд╛ рдореЗрдВ рдХреЗрд╡рд▓ "рдкрд░рд┐рд╡рд░реНрддрди" рд╢рдмреНрдж рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рдХреЗрд╡рд▓ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ


 D0A6D093D094200102011720131B2009 0302190D0A19200E 

( JSON рдХреЛ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ HEX рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ )


рдпрджрд┐ рдбреЗрд▓реНрдЯрд╛ рд╕реНрд░реЛрдд (source.txt) рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ (target.txt) рдорд┐рд▓рддреА рд╣реИ


 xdelta3 -d -s source.txt target.vcdiff    

рд░рд┐рдХреНрдд рд╕реНрдерд╛рди (рд░рд┐рдХреНрдд рд╕реНрдерд╛рди) рд╕реЗ рднрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд (source.txt) рдХреА рдЬрдЧрд╣ рд╣рдордиреЗ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╕реНрд░реЛрдд рдореЗрдВ рдФрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


 xdelta3 -d -s spaces.txt target.vcdiff  

рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ space.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВред рдореБрдЦреНрдп рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ space.txt рдлрд╝рд╛рдЗрд▓ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдмрдбрд╝реА рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реИред


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВрдиреЗ JPEG рдлрд╛рдЗрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдЗрд╕ рддрд░рд╣ рдХреА рд╣реИ:


 xdelta3 -e -A -n -s bad_image.jpg good_image.jpg | xdelta3 -d -s spaces.txt 

рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо:


рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ
  F488A2 F2AB 

рдХрдИ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдФрд░ рдмрд╛рдЗрдЯ рдЬреЛ "рдкреАрдЯрд╛" рдЧрдпрд╛ рдерд╛ред рдЦрд░рд╛рдм рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╣реЗрдХреНрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред


рдЬрд┐рди jpeg рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЖрдк рддреБрд▓рдирд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:


рдЪреБрдВрдмрдХ tortoise.jpg (18 821 рдмреА)рдЪреБрдВрдмрдХ tortoise_bad.jpg (18 829 рдмреА)
tortoise.jpgtortoise_bad.jpg

 xdelta3 -e -A -n -s tortoise_bad.jpg tortoise.jpg | xdelta3 -d -s spaces.txt 

рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо:


рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ
  F1BF F0B786 F39BAF F3BD94 

рдЦрд░рд╛рдм рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╣реЗрдХреНрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

Source: https://habr.com/ru/post/hi419883/


All Articles