Upload ser beskadiget ud: sammenlign hashes i begge ender
Et mislykket upload er ikke bevis for, at tunnelen ændrede bytes. Sammenlign den tilsigtede fil med det gemte resultat, og find derefter den første grænse, hvor de afviger.
Modtagere, der ikke kan åbne en uploadet fil, hører ofte, at VPN'en har beskadiget den. Det er en hypotese, ikke en observation, og den kan testes. Før du rører ved tunnelen, skal du fastslå, om det objekt, der nu ligger på destinationen, afviger fra det objekt, der skulle sendes. Alt andet følger af det svar.
Start med de tilsigtede bytes, ikke med klagen
Vælg en uskadelig fil, der genskaber problemet, eller den rigtige fil, hvis politikken tillader, at den forlader kildemiljøet. Notér to ting før overførslen: den nøjagtige størrelse i bytes og en moderne indholdshash. Filnavne, tidsstempler og forhåndsvisninger er metadata, og ingen af dem identificerer indhold.
Beregn hashen med en algoritme, som begge ender kan køre, og skriv ned, hvilken du brugte. En sammenligning mellem SHA-256 og MD5 er ikke en sammenligning, og det er en sammenligning mellem to forskellige filer, der tilfældigvis deler navn, heller ikke.
PS> Get-FileHash -LiteralPath "C:\uploads\report.csv" -Algorithm SHA256
Hash Path
---- ----
9F2C... C:\uploads\report.csv
Microsofts Get-FileHash-reference dokumenterer kommandoen og dens algoritmeparameter, netop den del folk springer over, når en sammenligning giver en meningsløs uoverensstemmelse.
Én hash for hvert trin, samme algoritme
Beregn nu den samme algoritme på det gemte objekt, hvor det endeligt ligger, med en autoriseret metode i stedet for en kopi, der har været gennem et andet værktøj. At gemme den modtagne fil lokalt og hashe den kopi tilføjer et trin, du ikke har testet.
Hvis tjenesten selv viser en integritetsværdi, skal du behandle den som en separat observation. En kontrolsum, som udbyderen rapporterer, kan fortælle dig, hvad udbyderen mener at have gemt, og det er ikke det samme udsagn som det, din klient sendte.
Der er tre mulige udfald, og de peger i forskellige retninger. Ens hashes betyder, at bytes ankom uændret. Forskellige hashes med en kendt konvertering betyder, at tjenesten bevidst har skabt et nyt objekt. Forskellige hashes uden konvertering betyder, at noget mellem de to punkter ændrede indholdet, og næste skridt er at finde den tidligste grænse, hvor det skete.
Adskil overførselsfejl fra transformering
Et delvist upload og et beskadiget upload ser identiske ud i en filbrowser og er forskellige fejl. Kontrollér, om overførslen blev fuldført: en applikationslog, der viser en afbrudt anmodning, en gemt fil, hvis størrelse er et præfiks af kilden, eller et objekt, der faktisk er en fejlside gemt under den forventede filtypenavn, indikerer alle en ufuldstændig overførsel snarere end ændrede bytes.
Transformering er den anden almindelige forklaring. En tjeneste, der genkomprimerer billeder, omskriver CSV-linjeafslutninger eller konverterer et dokument, vil med rette producere en hash, der afviger fra kilden, og det er ikke korruption. Sammenlign det trin, der hævder at være den tro kopi, ikke det endelige præsentationsformat.
Forsinkelse og tab hører til en tredje kategori. De kan få en klient til at time out, prøve igen eller give op, og intet af det betyder, at bytes, som serveren accepterede, blev ændret i det skjulte. Se på overførselsresultatet, før du tilskriver tunnelen noget.
Prøv en anden vej uden at ændre alt
Hvis hasherne virkelig afviger, og der ikke er nogen konvertering, skal du gentage den samme fil, klient, protokol og destination over en anden understøttet vej, for eksempel et lokalt netværk i stedet for VPN'en. Ændr én variabel. Ændrer du klienten, endepunktet og værktøjet på én gang, får du et resultat, du ikke kan tilskrive.
Hold sammenligningen ærlig i begge retninger. En hash fortæller dig, at to punkter er uenige eller enige om indhold; den fortæller dig ikke, hvilken side der er troværdig, så hold den forventede værdi og verifikationen inden for den tillidsmodel, du faktisk bruger.
Afslut med en konkret sætning i sagen: overførslen stoppede tidligt, applikationen transformerede objektet, lageret ændrede det, eller bytes er ens, og det er læsningen, der fejler. Hver af dem har en anden ejer, og ingen af dem er VPN'en som standard.