23.07.2012 | 22:45

Adam Haertle

Hakowanie kodów kreskowych w Tesco

Wpuść informatyka do sklepu, a zawsze coś nabroi. Jak się okazuje, zamiłowanie do inzynierii wstecznej może się przydać nawet w czasie zakupów. Brytyjski student fizyki twierdzi, że przypadkiem rozgryzł algorytm tworzenia kodów kreskowych dla przecenionych produktów w sklepach Tesco.

Matt Evans robił zakupy w brytyjskim Tesco, kiedy jego uwagę zwróciły batoniki energetyczne z bardzo niską ceną, których termin przydatności do spożycia upływał tego samego dnia. Zamiast zwyczajnych funta i 20 pensów, kosztowały one tylko 7 pensów za paczkę. Kiedy przyjrzał się ich kodowi kreskowemu, zwrócił uwagę na ciekawą zależność.

Matt zauważył, że kod kreskowy batonów z długą datą przydatności do spożycia to 5000221503354, podczas kiedy kod batonów przecenionych to 971500022150335460000708. Analiza kolejnych produktów wykazała, że kody rabatowe tworzone są według stałego algorytmu.

Po pierwsze, każdy z nich zaczyna się od cyfr 971. Potem pojawia się zwykły kod produktu. Kolejna cyfra (w tym wypadku 6) to na razie tajemnica. Po niej następuje 5 cyfr, które są ceną produktu po przecenie w pensach. Na końcu pojawia się jeszcze 0 oraz cyfra kontrolna. Cyfra kontrolna obliczana jest wg algorytmu: dodaj cyfry na parzystych pozycjach, dodaj cyfry na nieparzystych pozycjach i pomnóż sumę przez trzy, dodaj do siebie obie otrzymane sumy, policz resztę z dzielenia wyniku przez 10 i odejmij ją od 10.

Jedna cyfra w kodzie pozostaje tajemnicą – ale jako że jest tylko jedna, łatwo można ją potraktować jako zmienną i przetestować dla przedziału 0-9. Czy metoda działa? Według Matta sprawdza się dla przecenionych produktów, które znalazł w sklepie. Aby pozostać po dobrej stronie mocy, można próbować podawać kody kreskowe z klawiaturki czytnika kodów wyświetlającego ceny, w który wyposażony jest każdy sklep. Czy patent działa również w Polsce? Kiedyś okazało się, że można kupić w Tesco piwo za 6 groszy, więc wszystko jest możliwe. Nasi czytelnicy mieszkający blisko Tesco pewnie wkrótce sami sprawdzą. Pamiętajcie, aby nie skończyć jak pewien klient Tesco ze Stalowej Woli, informacje należy wykorzystywać tylko w celu edukacyjnym!

Aktualizacja 2012-07-24

W polskim Tesco schemat tworzenia kodów kreskowych towarów przecenionych jest identyczny, co widać na poniższych etykietach. Niestety kody rabatowe nie są prawidłowo odczytywane przez czytniki dostępne dla klientów znajdujące się w sklepie (brak odczytu), co utrudnia nieinwazyjne przeprowadzenie dalszych testów.


Eytkiety rabatowe Tesco

Powrót

Komentarze

  • 2012.07.24 11:39 kodzik

    rozgryzł algorytm kodów tylko właściwie do czego ta wiedza mu się przyda ? przeciętny oszust wybierze prostszą metodę i poprostu skopiuje gotowy kod produktu

    Odpowiedz
    • 2012.07.24 14:44 Adam

      Rożnica jest prosta. Albo w kasie pojawi się np. telwizor za 599 PLN, który wyskoczy na kasie jako spawarka, albo pojawi się telewizor za 599 PLN, który wyskoczy na kasie jako telewizor w promocji. Zakładając oczywiście, że manipulacja kodem faktycznie działa.

      Odpowiedz
      • 2016.09.26 12:13 Piotr

        Możesz sobie kupić nawet drukarkę zebra i gotowe rolki i co to ci da ? Nic bo każdy twój zrobiony kod nie bedzie istniał. Kazka przecena jest rejestrowana w gold i dopiero kod jest aktywny przez ok 14 dni. Mało tego wszystko widać ile takich kodów było zrobione i ile sie sprzedało. Nawet powiadomienie na kasie jest przy zakupie RTC.

        Odpowiedz
  • 2012.07.24 17:30 Krystian

    W jaki sposób to miałoby się przydać w Polsce? Czy ktokolwiek widział, by u nas sprzedawano powoli przeterminowywujące się produkty po promocyjnych cenach? Raczej kupisz już zepsute po normalnej…

    Odpowiedz
  • 2012.07.24 20:27 Tomek

    ten algorytm nie jest przecież niczym nowym

    Odpowiedz
  • 2012.07.24 21:13 Tomek

    to crc16 z powodeniem u nas wykorzystywany w życiu publicznym..

    Odpowiedz
  • 2012.07.25 06:52 Robert

    Sposób tworzenia algorytmów fajny, ale całkowicie nieprzydatny z pozycji klienta/oszusta. Żeby promocja działała, kod promocyjny MUSI być wgrany w systemie kasowym i tym samym rozpoznawalny przez czytnik. Samo wygenerowanie kodu i na tej podstawie domaganie się tańszego produktu nie przejdzie.

    A sposób generowania – no cóż, widocznie programiści uznali, że będzie łatwiej, jeśli dodane zostaną znaki do istniejącego już kodu, niż niepotrzebne generowanie następnych.

    Odpowiedz
    • 2012.07.26 11:10 snup

      A czy potem z kasy usuwane są te kody? Jeśli nie, to nawet jeśli nie ma promocji osoba jest w stanie stworzyć sobie własny kod [ jeśli kody na dany produkt w danym sklepie nie zmieniają się ] wydrukować, przykleić na oryginalny kod i kupić taniej. Jeśli natomiast są usuwane to lipa, chyba że w chwili kiedy jest wyprzedaż bo towar staje się przeterminowany my chcemy kupić dużo takiego samego lecz nie przeterminowanego, wtedy podmieniając taki kod system nie wykryje żadnego błędu i kupi się o wiele taniej dobry towar.

      Odpowiedz
  • 2013.09.06 14:54 jj

    Czyli nawet w kasie samoobsługowej to nie zadziała( gdzie sami możemy wpisać kod) , bo kod nie jest wpisany do bazy tak?

    Odpowiedz
  • 2013.09.20 21:07 zwykły_analityk

    Ale się uśmiałem – rewelacja co za haker.
    po pierwsze kod ten nie jest żadną tajemnicą wystarczy poczytać o kodach kreskowych i wszystko jest jawne i opisane jest to znana metoda wykonywania przecen w systemach gdzie kasami są komputery
    Jest prefiks trzycyfrowy później jest zwykły ean 13 cyfr jeżeli krótszy to uzupełniony zerami jeżeli z wagą to zawsze z 1 kg. oczywiście z cyfrą kontrolną kodu ean, następnie cena produktu i na końcu cyfra kontrola całości kodu.
    Proste jak drut.
    kody nie są ładowane do kas gdyż do kas ładowane są eany produktow a ten kod (jest de fakto w systemie ean128) interpretowany jest przez kasę a kasa wie na ile przecenić produkt bo jest też w nim cena, kasy to zwykłe koputery i codziennie otrzymują transmisję a drukarki fiskalne do nich podłączone pamiętają nazwa + przypisana do niej stawka vat.
    Co do możliwości zakupu to każda kasjerka sprawdzi co kupujesz po przecenionej cenie i na pewno nie sprzeda Ci telewizora za bzdurną cenę.
    Jeżęli ktoś chce dokładną specyfikację budowania kodów ean13 ean8 ean128 zarówno zwykłych jak i wagowych (mają dwie cyfry kontrolen jedna wagi a druga całości kodu) wraz z algorytmami obiczania cyfr kontrolnych i tworzenia pasków to oczywiście posiadam.

    Odpowiedz
    • 2013.09.20 21:17 zwykły_analityk

      a i jeszcze cyfra kontrolna niewiadoma (czyli ta 6 która de fakto nie jest 6) jest obliczana na podstawie ceny

      Odpowiedz
    • 2014.11.10 01:42 Romek

      Kod kreskowy to nie jest EAN128 tylko Code128. Różnica niby mała, ale jednak. Prefiks 971 nie jest używany przez system EAN – GS1 i dlatego został wybrany do tych towarów przecenionych.
      Aby uzyskać prawidłowy kod kreskowy dla przykładowego numeru 9715 9020 2049 5079 9001 5901 należy go wpisywać bez spacji w generatorze Code128.
      Niestety połowa zdania „Jest prefiks trzycyfrowy później jest zwykły ean 13 cyfr jeżeli krótszy to uzupełniony zerami jeżeli z wagą to zawsze z 1 kg. oczywiście z cyfrą kontrolną kodu ean, następnie cena produktu i na końcu cyfra kontrola całości kodu.
      Proste jak drut.
      ” jest błędna.

      Odpowiedz
  • 2013.11.22 19:23 rafikl

    Niby kody są tworzone w ten sam sposób lecz suma kontrolna liczona jest już w inny sposób. A co do algorytmu obliczania sumy kontrolnej batonika to wygląda on następująco: dodaj wszystkie cyfry z kodu kreskowego bez ostatniej czyli kontrolnej. Pomnóż przez 0.3 i odejmij od tego 10. I tyle. Jedno trywialne równanie, którego i tak nie możemy sprawdzić czy jest właściwe mając tylko jeden angielski kod kreskowy. Autor nie miał pojęcia jak i ten student, że mnożenie jest rozdzielne względem dodawania, oraz, że wynik dzielenia to iloraz a nie reszta, a z kolei autor tego artykułu bezmyślnie to przetłumaczył. Ogólnie cały opis obliczeń, które mają zostać wykonane został chyba bez sensu przetłumaczony z jakiegoś zagranicznego artykułu.

    Odpowiedz

Zostaw odpowiedź do Romek

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Hakowanie kodów kreskowych w Tesco

Komentarze