Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

SWF files vergelijken

Pagina: 1
Acties:

Verwijderd

Topicstarter
In een applicatie verwerk ik geautomatiseerd user generated content, voornamelijk SWF animaties en applicaties. Om dubbele entries te voorkomen wordt in een database de MD5 hash van het bestand opgeslagen, een unieke hash mag slechts 1 keer in de database voorkomen.

Soms komt het echter voor dat bestanden ondanks dat ze vrijwel dezelfde inhoud hebben (bijvoorbeeld een ander logo tijdens de loader, soms zelfs geen zichtbare verschillen) andere hashes hebben.

Mijn vraag: is er een methode om deze bestanden op overeenkomsten te controleren. Zodat ik bijvoorbeeld een grens kan instellen, bijvoorbeeld 85%. Een hash is iedere keer totaal anders, dus dat betekent zelfs bij 1 bitje anders een andere hash. Zijn er guru's die hier iets nuttigs over kunnen zeggen? Zolang het op een linux server gedraaid kan worden komt het in principe in aanmerking.

(Aangezien ik tot nu toe vooral met PHP heb gewerkt heb ik het topic hier gezet, moet mischien naar SE&A?)

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

dat gaat je met een hash niet lukken. misschien kun je iets met de meta, daar was onlangs nog een topic over:

[PHP] Hoe verkrijg ik de meta data van een flv movie?

Aunt bunny is coming to get me!


Verwijderd

Je zou xdelta kunnen gebruiken. Die library kan binary files vergelijken en percentages geven. Er zijn voor meerdere talen bindings (in ieder geval voor Python) maar ik weet niet hoe PHP er mee kan werken, eventueel via command line :)

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Verwijderd schreef op dinsdag 12 augustus 2008 @ 10:24:
Je zou xdelta kunnen gebruiken. Die library kan binary files vergelijken en percentages geven. Er zijn voor meerdere talen bindings (in ieder geval voor Python) maar ik weet niet hoe PHP er mee kan werken, eventueel via command line :)
dan zou hij/zij met exec() of system() een heel eind kunnen komen. ik heb een hard hoofd in de daadwerkelijke uitwerking. youtube heeft ook nogsteeds geen fatsoenlijk filter ;)

Aunt bunny is coming to get me!


Verwijderd

iH8 schreef op dinsdag 12 augustus 2008 @ 10:34:
[...]


dan zou hij/zij met exec() of system() een heel eind kunnen komen. ik heb een hard hoofd in de daadwerkelijke uitwerking. youtube heeft ook nogsteeds geen fatsoenlijk filter ;)
Ik weet ook niet hoe dat werkt met video en/of flash games/filmpjes maar denk wel dat hij met xdelta de beste kans heeft :)

Verwijderd

Topicstarter
Thanks voor de replies.

Ik zal naar de metadata mogelijkheden kijken. Echter is het topic niet direct van toepassing aangezien ik geen flv bestanden zal analyseren, maar misschien is er iets soortgelijks voor SWFs.

Aan de andere kant, de metadata zal ook best verschillen tussen de files. XDelta was echt precies de software waar ik naar op zoek was. Of het vanuit PHP aan te roepen is maakt me niet zoveel uit, het kan net zo goed achter de schermen draaien.

Als iemand nog andere suggesties heeft houd ik me aanbevolen.

EDIT: zit met xdelta te klooien, maar het schiet nog niet echt op. Het is me niet duidelijk welke functie ik precies moet aanroepen. Als iemand me kan vertellen wat er in de commandline moet gebeuren om een percentage terug te krijgen bij 2 files, bij voorbaat dank.

[ Voor 20% gewijzigd door Verwijderd op 12-08-2008 14:14 ]


  • mnielsm
  • Registratie: September 2002
  • Laatst online: 17-11 20:29
Verwijderd schreef op dinsdag 12 augustus 2008 @ 10:24:
Je zou xdelta kunnen gebruiken. Die library kan binary files vergelijken en percentages geven. Er zijn voor meerdere talen bindings (in ieder geval voor Python) maar ik weet niet hoe PHP er mee kan werken, eventueel via command line :)
Een SWF file is opgebouwd volgens een open source standaard
Voor de exacte werking van de bits en bytes binnen een SWF file zie de volgende link:
http://www.adobe.com/devn...f_file_format_spec_v9.pdf

Echter de meeste flash files die je op internet tegenkomt zijn voorzien van compressie (zie ook de specificaties) en om deze files te vergelijken zul je deze eerst moeten uitpakken.
Daarna lijkt het mij het beste om te controleren hoeveel tags binnen de flash files overeenkomen (zie de SWF specification op pagina 13) en dan zeggen dat als 90% van de tags overeenkomen (hoe je dat bepaald kun je het beste zelf bepalen) dat een bestand dan identiek is.

Als je het document van de SWF file format doorneemt dan zie je dat je zelfs tot aan de code of de tijdens 2 SWF files met elkaar kunnen vergelijken.

Voor het eenvoudigste zoeken naar alle chinese webshops: www.chinapricefinder.com


Verwijderd

Topicstarter
mnielsm schreef op dinsdag 12 augustus 2008 @ 14:24:
[...]


Een SWF file is opgebouwd volgens een open source standaard
Voor de exacte werking van de bits en bytes binnen een SWF file zie de volgende link:
http://www.adobe.com/devn...f_file_format_spec_v9.pdf

Echter de meeste flash files die je op internet tegenkomt zijn voorzien van compressie (zie ook de specificaties) en om deze files te vergelijken zul je deze eerst moeten uitpakken.
Daarna lijkt het mij het beste om te controleren hoeveel tags binnen de flash files overeenkomen (zie de SWF specification op pagina 13) en dan zeggen dat als 90% van de tags overeenkomen (hoe je dat bepaald kun je het beste zelf bepalen) dat een bestand dan identiek is.

Als je het document van de SWF file format doorneemt dan zie je dat je zelfs tot aan de code of de tijdens 2 SWF files met elkaar kunnen vergelijken.
Kan ik hieruit opmaken dat compressie als gevolg heeft dat binaries vergelijken geen zin heeft?

  • mnielsm
  • Registratie: September 2002
  • Laatst online: 17-11 20:29
Door de bestanden te vergelijken op binair niveau heeft als er compressie gebruikt wordt inderdaad geen zin.
(Bij bestanden met compressie is de eerste byte een "C", zonder compressie is dit een "F")
Als bestanden gecomprimeerd zijn is alle informatie na de eerste 8 byte's gecomprimeerd volgens de ZLIB standaard.

Voor het eenvoudigste zoeken naar alle chinese webshops: www.chinapricefinder.com


Verwijderd

Topicstarter
mnielsm schreef op dinsdag 12 augustus 2008 @ 18:52:
Door de bestanden te vergelijken op binair niveau heeft als er compressie gebruikt wordt inderdaad geen zin.
(Bij bestanden met compressie is de eerste byte een "C", zonder compressie is dit een "F")
Als bestanden gecomprimeerd zijn is alle informatie na de eerste 8 byte's gecomprimeerd volgens de ZLIB standaard.
Dus de opties zijn:
-Tags in SWFs gaan vergelijken.
-SWF files ZLIB decompressen en vervolgens binair vergelijken.

Is dit correct? Beide methodes lijken me gezien het doel dat ik voor ogen heb nogal arbeidsintensief, maar de tweede lijkt me dan nog het toegankelijkst als het zo eenvoudig is als het klinkt.

  • mnielsm
  • Registratie: September 2002
  • Laatst online: 17-11 20:29
Verwijderd schreef op woensdag 13 augustus 2008 @ 18:07:
[...]


Dus de opties zijn:
-Tags in SWFs gaan vergelijken.
-SWF files ZLIB decompressen en vervolgens binair vergelijken.

Is dit correct? Beide methodes lijken me gezien het doel dat ik voor ogen heb nogal arbeidsintensief, maar de tweede lijkt me dan nog het toegankelijkst als het zo eenvoudig is als het klinkt.
Ik weet niet precies wat je ermee wilt gaan doen maar echt zeer eenvoudig gaat het zeker niet lukken.
De 2e optie lijkt mij de snelste, mist er een goed algoritme gebruikt wordt om binair te vergelijken...

Als je bijvoorbeeld 2 file's hebt die er als volgt uitzien:
1 - ABDAWQDASFNKBJAW
2 - ABDAWQODASFNKBJAW

Dan moet bij binair vergelijken wel gevonden worden dat er alleen 1 "O" tussengevoegd is en niet dat 60% van de file anders is (een gedeelte is alleen verschoven maar dat hoeft niet perse anders te zijn)

Voor het eenvoudigste zoeken naar alle chinese webshops: www.chinapricefinder.com


Verwijderd

Topicstarter
mnielsm schreef op woensdag 13 augustus 2008 @ 22:05:
[...]


Ik weet niet precies wat je ermee wilt gaan doen maar echt zeer eenvoudig gaat het zeker niet lukken.
De 2e optie lijkt mij de snelste, mist er een goed algoritme gebruikt wordt om binair te vergelijken...

Als je bijvoorbeeld 2 file's hebt die er als volgt uitzien:
1 - ABDAWQDASFNKBJAW
2 - ABDAWQODASFNKBJAW

Dan moet bij binair vergelijken wel gevonden worden dat er alleen 1 "O" tussengevoegd is en niet dat 60% van de file anders is (een gedeelte is alleen verschoven maar dat hoeft niet perse anders te zijn)
Goed. Hoop dat bestaande tools (xdelta, jdiff, ...?) daar slim genoeg voor zijn, anders gaat het allemaal iets te complex worden.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Een andere loader in een gecomprimeerde file levert je heel snel volstrekt onzin op. ZLIB compressie is onder water een Lempel-Ziv compressie, met backreferences. Dat betekent dus dat je byte sequence die vaker voorkomen vervangt door een verwijzing naar de eerste. Dit is dus redelijk rampzalig als je applicatie gecomprimeerd wordt met backreferences naar je loader.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1