OTOY vs Kozlov

Eelmisel kuul otsustas Uus-Meremaa kõrgem kohus, et OTOY endine töötaja Andrey Kozlov varastas meie kontoris krüptitud draivist lähtekoodi OctaneRenderile. Kohus mõistis temalt välja kahjutasu, OctaneRenderi kui oma originaalse toote „FstormRender” ümberpakendamise ja edasimüügi ning lõpetas kõik varastatud lähtefailide ja nendest tuletatud teoste ülekandmise ja hävitamise.

Praegu Venemaal asuv Kozlov väidab, et ta ei saa seda kohtuotsust täita, kuna tal pole kunagi olnud ühtegi OctaneRenderi lähtekoodi.

Oktaanarvu lähtekoodi varguse tõendid

Kozlov esitas 25. juulil 2017 kohtule järgmised tõendid, et tõestada kohtule, et “FstormRender” ei kasutanud ühtegi OctaneRenderi lähtekoodi:

Jah. Püha pask.

Ta ei mõistnud, et tema Microsofti visuaalstuudio kasutajaprojekti failid - FstormRender.suo ja Fstorm3dsmax.suo… osutavad sõna-sõnalt ikkagi meie arvuti varastatud Octane lähtekoodifailidele ja kaustadele - samal ajal kui ta neid aktiivselt Fstormi laadib.

Rekordiks on see kuueteistkümnenda vorminguga täpse baidisisaldusega kohtudokumentide esitamine:

Visual Stuudio salvestatud arvuti nimi on “Karba DRON-PC” (Karba ja Dron Kozy - on Kozlovi varjunimed)

Struktureeritud salvestusevaatur, mis parsib .suo-faile, annab ülevaate igast avatud lähtekoodi aknast ja selle asukohast Visual Stuudios alates ajast, kui Kozlov viimati Fstormi lähtefailid avas (vt allpool). Oktaanarvu lähtekoodifailid loetletakse Venemaal tema personaalarvutites FstormRender ja Fstorm3dsmax avatud dokumentidena.

Kui ta oleks oma Venemaal asuvast korterist endast pildi teinud - meie monitoril oleva meie lähtekoodi ees -, oleks see varguse kohta vähem süütõend.

Fstormi laaditud oktaanarvu failinimed ja kataloogid, mida näete ülal ja all, vastavad identselt meie algsete lähtekoodinimedega OTOY sisemises SVN-puus (mille peamine haru on Octane_Trunk).

Seda teavet ei teata ega jagata väljaspool ettevõtte aktiivset põhitehnoloogia meeskonda. Ühelgi töötajal pole lubatud neid faile mujalt kui meie krüpteeritud draividest meie kontoris eemaldada ega nendega töötada.

Allpool oli Kozlov teinud ka oktaanarvu lähtekoodi koopia, seekord samas draivis ja kataloogis (“D: \ Works \ C ++ _ Works \”) kui Fstormi lähtekoodiga. Nendes näidetes kontrollitakse Visual Studio'is Octane-failide lähtekoodi aktiivselt (.suo loendis „OutliningStateEx” kuvatakse failid, mille lähtekoodi funktsioonid on laiendatud või ahendatud vidina +/- abil VS-is)

Nagu ülalpool, laaditi Fstormi laaditud kopeeritud oktaanarvestuse lähtefailid Kozlovile esimeseks sammuks, enne kui meie failid Fstormi kausta pisut teistsuguse nime all salvestati, meie koodis mõned väikesed muudatused või mõnikord üldse mitte.

Kozlov väitis kohtule, et iga meie esitatud duplikaadi kood pärineb MAX SDK-st või vastaselt, et ta kirjutas sama koodi juhuslikult kaks korda. Ta viitas sellele avalikult. See on väidetavalt vale.

Jättes 3DS max koodi kõrvale, oli Kozlov kindel, et Fstorm GPU renderdaja oli 100% tema algne kood ja kasutas (ega saanudki) kasutada ühtegi Octane lähtekoodi, kuna tal ei olnud samal ajal juurdepääsu ühelegi Octane lähtekoodile Fstormi loomine.

Fstormi ja Octane GPU renderdamise lähtekoodi võrdlus

Kozlovi kohtu esitatud lähtekoodi GPU renderdaja varaseim osa on QMC (Quasi Monto Carlo) proovivõtja - see kaust loodi 4. mail 2015. GPU renderdamise lähtepuul pole varasemat faili ega kausta:

Kozlovi esitatud QMCSampler.cpp kaks versiooni on suures osas muutmata ja aastatel 2016 kuni 2017. Ta ei esitanud 2015. aasta või varasema versiooni koodi. Kõik Fstormi GPU renderdustuumad ühendatakse uuesti QMCSampleriga. Fstormis tehtud kõigi kujutiste iga kiir läbib selle koodi. See on renderdaja selg, seetõttu asub see lähtekoodi varaseimas osas.

Kozlov tõendina esitatud “QMCSampler.cpp” 2016. aasta versioon on esitatud allpool. Vasakul on Octane lähtekoodifail, mille esitasime võrdluseks samanimelise nimega (väiketähtedega) “qmcsampler.cpp”, ja see pärineb vaid mõni kuu enne seda, kui Kozlov ettevõttest lahkus (meie allpool näidatud kuupäev meie failis on alates hetkest, kui fail meie kohalikku masinasse kopeeriti, kuvatakse järgmistes SVN-ekraanipiltides faili valmistamise algne kuupäev).

Kasutades tasuta Windowsi rakendust „Tekstide võrdlus”, saame nende kahe faili vahel triviaalselt identset teksti võrrelda ja kuvada kõik leitud identsed tekstid üksteise kõrval, mida oleme teinud allpool.

Fstormi “QMCSampler.cpp” fail on 13 517 baiti.

Uskumatult, ainult 964 baiti selles failis pole identne meie algse koodiga „qmcsampler.cpp”.

Siin on kõik identsed koodiplokid koos algse rea nihkega:

MÄRKUS. Kirje jaoks tuli vasakpoolses veerus reas 167 eemaldada kaks Unixi topeltkelku, et teksti võrdlusrakendus näitaks esiletõstetud identseid jooni kõrvuti.

Pange tähele, et isegi vormindamine, vahelehed, muutujate nimed - need on täpselt samad. See pole lihtsalt identne kood - see on identne tekst.

Teil võib tekkida küsimus, kas see on veidrik õnnetus? Võib-olla kasutasid mõlemad failid täpselt sama teksti saamiseks Internetist leitavat üldkoodi?

Ei. Sellel konkreetsel lähtekoodi tekstil on ainulaadne päritolu, mille saame täpselt kindlaks teha.

Selle koodi oleks võinud kirjutada teisiti - tegelikult muudeti seda oluliselt enne ja pärast siin näidatud versiooni.

Kuid ülaltoodud täpne konkreetne tekst loodi 10. septembril 2014 Octane'il töötava vaneminseneri poolt - ja rekordiline, et see polnud Kozlov (ja isegi kui see nii oleks, ei muuda see meie ettevõtte koodi vargust) .

Allpool leiate meie inseneri lisatud ainulaadseid vormingumuudatusi ja muutujate nimesid. See kood on esimest korda olemas ja kui see on selge, siis kui Kozlov selle faili meie SVN-ist ei varastanud, on võimatu, et identset koodi sisaldav 13 Kb plokk ilmuks muutumatuna Fstormi identses “QMCSampler.cpp” ja sobitage kokku teksti tekst ja kood, mille OTOY arendaja on loonud meie sisemises SVN-is.

Väärib märkimist, et Kozlov ei varastanud selle faili eelmist versiooni (näidatud vasakul), mis oli ainus, millega ta OTOY-s töötades tegelikult töötas. Ta otsustas varastada uue juhtmehaaniku tehtud uuema versiooni Fstormi lisamiseks.

Rekordiks jääb see identse koodi plokk viimases Fstormis (25. juuli 2017 seisuga) isegi kahe ja poole aasta pärast muutmata. Kohtutoimikus väitis Kozloz, et see konkreetne toimik on 100% tema algne kood ja töö ning seda ei ole Octane'ist kopeeritud. Nüüd võite kõik ise otsustada, kas see vastab tõele või mitte, ja kas midagi, mida ta on öelnud kohtumenetluse kohta avalikes postitustes, vastab tõele - näiteks meie tõend koodivarguse kohta oli üks Max UI ekraanipilt.

Mis puutub 964 baiti koodisse, mis selles failis meie omaga ei kattu? Me kinnitasime, et Fstormi viimast paari rida ei kuvata tegelikult üheski Octane'i saatmisversiooni lähtekoodis.

BUT - nad ilmuvad veel ühe teise oktaani juhtiva inseneri loodud oktaanilähtede koodide avaldamata haru. Ilmselt varastas Kozlov selle koodi ka meie SVN-i privaatsest lähtekoodide harust (millele Kozlovil oli juurdepääs), ehkki Kozlov polnud selle koodi üheski osas üldse osalenud ja keegi muu kui see ei töötanud see arendaja:

Kozlov on proovinud kohtu lähtekoodi kontrollimise protsessi tahtlikult maha mängida

Vahetult pärast meie kohtuasja esitamist tegi Kozlov muudatusi saidil ProxyGeometryIO.cpp (mis tema teada oli osa tõenditest, mida me eelmise aasta juulis ettekirjutuse saamiseks kasutasime) ja nimetas selle ümber GeometryExport.cpp. Võib-olla kohtuasja tõttu või kuna tegemist oli ühega neist failidest, mille kohta ta enne Fstormi kausta salvestamist isegi nime ega failinime juhtumit ei muutnud, ei esitanud ta oma algset ProxyGeometryIO.cpp-faili kohtu lähtekoodi võrdluseks meie esitatud ProxyGeometryIO.cpp. Ta ei ole ikka veel ProxyGeometryIO.cpp-d pakkunud - kuid me teame, et see on olemas.

Isegi modifitseeritud fail „GeometryExport.cpp” sisaldab naeruväärselt pikki ja samasuguse koodiga versioone, mis on mõnikord purustatud triviaalsete muudatustega, näiteks „oktaani” asendamisega „Fstorm”:

Varasemas versioonis on palju rohkem süüdistavaid identseid koode, sealhulgas identseid kirjavigu, mis lahendavad erinevused, mis tekkisid, kui Fstormi ProxyGeomtryIO.cpp sai GeometryExport.cpp.

Siin on erinevad koodiosad ProxyGeomtryIO.cpp alguses ja aadressil GeometryExport.cpp:

Allpool on toodud tõendid selle kohta, kus erinev kood (getFirtZeroBit), mida GeometryExporter.cpp-failis, mida Kozlov analüüsiks esitas, GeometryExporter.cpp-is puudub - on tegelikult rakenduses ProxyGeometryIO.cpp. Kozlov ei esitanud teadlikult kohtuekspertiisi - see toimik oli Fstormi kaustas (enne meie kohtuasja esitamist) ja see oleks pidanud olema lisatud lähtekoodi ülevaatesse, mille ta esitas Fstormi 2016. aasta haru jaoks:

Fstorm ei ole eraldiseisev kestaprojekt, mis hiljem täidetakse oktaanarvu lähtekoodiga - see on sõna otseses mõttes meie oktaanprojekt ümbernimetatud Fstormiks

Alates 6. augustist 2015 sisaldas „Fstorm” sõna otseses mõttes meie „oktaanarvu” aknaid, klassi, nime, funktsioone, tagasihelistamist ja koodi kõikjal. Muidugi muutis Kozlov seda hiljem ja ei esitanud seda versiooni kunagi teadlikult tõendusmaterjalina, kuid unustas pühkida varasema osaliselt kompileeritud Fstormi koodi, kus näete ikka veel „Octane“ aknaklasside nimesid kogu koha peal oletatavasti originaalfailides nagu FstormMaterial.cpp. , FstormBitmap, FstormColorCorrection.cpp ja palju, palju muud:

Vaadake ülalolevat Fstormi silumisinfot ja seejärel allpool olevat oktaanarvu lähtekoodi (Kozlov ei ole tootnud ühtegi faili, mis ülaltoodut selgitaks). Meie allolev kood on see, mis paneb kõik need aknad ja funktsioonid kuvama sama oktaanarühma ja funktsiooni nimega Fstormis ja oktaanis:

Kui Kozlov oleks tegelikult alustanud meie projekti muutmise ja hiljem nime muutmise asemel uue projektiga, siis arvatavasti aja kokkuhoiu huvides, poleks ükski ülaltoodud oktaaniarvestuse koodidest kunagi üheski Fstormi koodis kohtus aset leidnud.