Πώς να χαράξετε ένα αυτοκίνητο - μια γρήγορη πορεία σύγκρουσης

Ο στόχος αυτού του άρθρου είναι να ξεκινήσετε να χαράζετε αυτοκίνητα - γρήγορα, φθηνά και εύκολα. Για να το κάνουμε αυτό, θα παραποιήσουμε το δείκτη RPM ως παράδειγμα.

Το παρακάτω δεν είναι καθόλου εξαντλητικό σεμινάριο. Αντίθετα, στοχεύει να παράσχει αρκετές πληροφορίες για να σας ξεκινήσει. Εάν θέλετε να σκάψετε βαθύτερα, μπορείτε να δείτε τις απαραίτητες αναγνώσεις στο τέλος.

Εάν αποφασίσετε να πραγματοποιήσετε αυτό το σεμινάριο στην πραγματική ζωή, θα χρειαστείτε έναν υπολογιστή Linux (ή μια εικονική μηχανή Linux) και μια συσκευή CAN-to-USB (την οποία θα εξετάσουμε αργότερα).

Ένα αυτοκίνητο είναι ένα δίκτυο

Ένα αυτοκίνητο αποτελείται από πολλούς υπολογιστές για τον έλεγχο του κινητήρα, του κιβωτίου ταχυτήτων, των παραθύρων, των κλειδαριών, των φώτων κ.λπ. Αυτοί οι υπολογιστές ονομάζονται ηλεκτρονικές μονάδες ελέγχου (ECU) και επικοινωνούν μεταξύ τους μέσω ενός δικτύου.

Για παράδειγμα, όταν πατάτε το κουμπί στο τιμόνι σας για να αυξήσετε την ένταση του ραδιοφώνου, το τιμόνι ECU στέλνει μια εντολή για αύξηση της έντασης στο δίκτυο, το ραδιο ECU βλέπει τότε αυτήν την εντολή και ενεργεί ανάλογα.

Υπάρχουν πολλά δίκτυα σε ένα αυτοκίνητο, γενικά τουλάχιστον δύο:

  • Ένα για κρίσιμα δεδομένα, όπως μηνύματα κινητήρα και κινητήρα
  • Και ένα για λιγότερο κρίσιμα δεδομένα όπως ραδιόφωνο και κλειδαριές πορτών

Το κρίσιμο δίκτυο χρησιμοποιεί ένα γρήγορο και αξιόπιστο πρωτόκολλο ενώ το μη κρίσιμο δίκτυο χρησιμοποιεί ένα πιο αργό, λιγότερο αξιόπιστο αλλά φθηνότερο πρωτόκολλο. Ο αριθμός των δικτύων καθώς και τα ECU που συνδέονται μεταξύ τους εξαρτάται από την κατασκευή του αυτοκινήτου, το μοντέλο και το έτος. Ένα ECU θα μπορούσε επίσης να συνδεθεί σε πολλά δίκτυα.

Σύνδεση σε δίκτυο

Ορισμένα δίκτυα είναι προσβάσιμα μέσω της θύρας OBD-II. Το OBD-II είναι υποχρεωτικό σε όλα τα αυτοκίνητα και τα ελαφρά φορτηγά που κατασκευάστηκαν στις ΗΠΑ μετά το 1996 και στην Ευρώπη μετά το 2004.

Ο σύνδεσμος βρίσκεται σε όπλα από το κάθισμα του οδηγού. Ίσως χρειαστεί να σηκώσετε κάποιο πλαστικό κάλυμμα, αλλά είναι πάντα προσβάσιμο χωρίς εργαλεία.

Το πρότυπο OBD-II επιτρέπει πέντε πρωτόκολλα σηματοδότησης. Εναπόκειται στον κατασκευαστή να αποφασίσει ποιο θα χρησιμοποιήσει. Το CAN είναι το πιο δημοφιλές και αυτό θα συζητήσουμε. Είναι προσβάσιμο μέσω των ακίδων 6 και 14 του συνδέσμου OBD-II. Εάν το αυτοκίνητό σας διαθέτει λεωφορείο CAN, θα δείτε μεταλλικά καλώδια στις καρφίτσες όπως στην παραπάνω εικόνα.

Το CAN bus είναι ένα αξιόπιστο, υψηλής ταχύτητας bus που χρησιμοποιείται για την αποστολή κρίσιμων δεδομένων. Δυστυχώς, τα πακέτα δεδομένων στο λεωφορείο δεν είναι τυποποιημένα, οπότε θα πρέπει να τα αντιστρέψετε για να μάθετε τι σημαίνουν. Το πρότυπο OBD-II αφήνει επίσης περιθώρια για καρφίτσες συγκεκριμένου προμηθευτή που μπορούν να χρησιμοποιηθούν για πρωτόκολλα συγκεκριμένου προμηθευτή. Αυτό διευκολύνει τον αντιπρόσωπο να διαγνώσει προβλήματα.

Στο αυτοκίνητό μου (GM), έχω ένα τυπικό δίαυλο CAN στους ακροδέκτες 6 και 14, και ένα μόνο bus καλώδιο CAN για έναν προμηθευτή στον ακροδέκτη 1. Το τυπικό δίαυλο CAN είναι ένα αξιόπιστο πρωτόκολλο υψηλής ταχύτητας (500 kbps) που αναφέρεται επίσης ως CAN υψηλής ταχύτητας (HS-CAN). Χρησιμοποιείται για κρίσιμα δεδομένα. Το μονό καλώδιο CAN bus (SW-CAN) ή GMLAN είναι πιο αργό (33,3 kbps) και λιγότερο αξιόπιστο αλλά φθηνότερο, καθώς χρησιμοποιεί μόνο ένα καλώδιο. Αυτό το λεωφορείο χρησιμοποιείται για μη κρίσιμα δεδομένα.

Εάν βλέπετε μια συγκεκριμένη καρφίτσα για έναν προμηθευτή και δεν ξέρετε ποιο πρωτόκολλο χρησιμοποιείται, το Google "OBD pinout". Υπάρχει επίσης CAN χαμηλής ταχύτητας (LS-CAN) και CAN μέσης ταχύτητας (MS-CAN). Το MS-CAN είναι γενικά στις ακίδες 3 & 11, με ταχύτητα 125 kbps σε αυτοκίνητα Ford και Volvo.

Εργαλεία

Θα χρειαστείτε και μια συσκευή ικανή να ερμηνεύσει δεδομένα CAN καθώς και λογισμικό για την ανάλυση των δεδομένων

Σκεύη, εξαρτήματα

Για να λαμβάνετε και να μεταδίδετε πακέτα CAN, χρειάζεστε μια συσκευή ικανή για αυτό. Συχνά θα συναντήσετε συσκευές που βασίζονται στο ELM327. Ενώ αυτά έχουν τη χρήση τους, είναι τρομερά για hacking. Είναι πολύ αργά για την παρακολούθηση του διαύλου CAN.

Υπάρχουν επίσης συσκευές προηγμένης τεχνολογίας όπως Kvaser, Peak ή EMS Wünsche. Αυτά θα κάνουν τη δουλειά, αλλά είναι υπερβολικά και αρκετά ακριβά.

Ορισμένες συσκευές προηγμένης τεχνολογίας απαιτούν επίσης να αγοράσετε λογισμικό μαζί με αυτό. Το USB2CAN είναι μια εγγενής διεπαφή CAN για Linux που προσφέρει εξαιρετική σχέση ποιότητας / τιμής.

Θα μπορούσατε επίσης να χρησιμοποιήσετε το Cantact ή το CANUSB. Ωστόσο, αυτές δεν είναι εγγενείς συσκευές CAN στο Linux και χρησιμοποιούν ένα πρωτόκολλο που βασίζεται σε ASCII. Αυτό σημαίνει ότι είναι ελαφρώς πιο περίπλοκες στη ρύθμιση και έχουν μικρότερη απόδοση. Από την άλλη πλευρά, υποστηρίζονται καλά σε πολλά λειτουργικά συστήματα.

Χρησιμοποιώ το CANalyze που έχω σχεδιάσει για τις ανάγκες μου. Είναι παρόμοιο με το USB2CAN στο ότι είναι μια προσιτή εγγενής διεπαφή CAN αλλά χρησιμοποιεί έναν νεότερο μικροελεγκτή, είναι ανοιχτού κώδικα και μπορεί να δημιουργηθεί χρησιμοποιώντας εργαλεία ανοιχτού κώδικα. Το υπόλοιπο αυτού του σεμιναρίου προϋποθέτει ότι χρησιμοποιείτε μια εγγενή διεπαφή CAN.

Λογισμικό

Για να επικοινωνήσετε με τη συσκευή πρέπει να εγκαταστήσετε το πακέτο can-utils στον υπολογιστή σας Linux. Μπορείτε να το κάνετε αυτό πληκτρολογώντας τα ακόλουθα στην προτροπή Linux:

sudo apt-get install can-utils

Τα Can-utils καθιστούν εξαιρετικά εύκολη την αποστολή, λήψη και ανάλυση πακέτων CAN. Αυτές είναι οι εντολές που θα χρησιμοποιήσουμε.

  • Το cansniffer εμφανίζει μόνο τα πακέτα που αλλάζουν
  • candump dump όλα τα ληφθέντα πακέτα
  • μπορεί να στείλει ένα πακέτο

Το Linux διαθέτει υποστήριξη CAN ενσωματωμένη στον πυρήνα μέσω SocketCAN. Αυτό καθιστά εύκολο να γράψετε τα δικά σας πρόσθετα προγράμματα. Μπορείτε να αλληλεπιδράσετε με το λεωφορείο CAN με τον ίδιο τρόπο που θα αλληλεπιδράτε με οποιοδήποτε άλλο δίκτυο, π.χ. μέσω πριζών.

ΜΠΟΡΕΙΤΕ λεωφορείο

Πριν ξεκινήσετε την αναστροφή, θα πρέπει να έχετε κάποια κατανόηση του τρόπου λειτουργίας του διαύλου CAN. Αποτελείται από 2 καλώδια και χρησιμοποιεί διαφορική σηματοδότηση. Δεδομένου ότι είναι ένα λεωφορείο, πολλές συσκευές μπορούν να συνδεθούν σε αυτά τα δύο καλώδια. Όταν αποστέλλεται ένα πλαίσιο CAN στο δίαυλο, λαμβάνεται από όλα τα ECU αλλά υποβάλλεται σε επεξεργασία μόνο εάν είναι χρήσιμο για το ECU. Εάν σταλούν ταυτόχρονα πολλαπλά πλαίσια CAN, κερδίζει ένα με την υψηλότερη προτεραιότητα. Ένα πλαίσιο CAN έχει 3 μέρη που σχετίζονται με εμάς.

  • αναγνωριστικό διαιτησίας Το αναγνωριστικό ενός μηνύματος. Ένα ECU το χρησιμοποιεί για να αποφασίσει να επεξεργαστεί ή να αγνοήσει το ληφθέν πλαίσιο. Αντιπροσωπεύει επίσης την προτεραιότητα του μηνύματος. Ένας χαμηλότερος αριθμός έχει υψηλότερη προτεραιότητα. Έτσι, για παράδειγμα, εάν είστε μηχανικός που σχεδιάζει το δίκτυο, θα δώσετε στο πλαίσιο για την ανάπτυξη αερόσακων μια πολύ υψηλή προτεραιότητα ή ένα αναγνωριστικό χαμηλής διαιτησίας. Από την άλλη πλευρά, θα δώσετε χαμηλότερη προτεραιότητα ή υψηλότερο αναγνωριστικό διαιτησίας σε δεδομένα που προορίζονται για τις κλειδαριές της πόρτας.
  • κωδικός μήκους δεδομένων (DLC) Υποδεικνύει το μήκος του πεδίου δεδομένων σε byte. Ένα πλαίσιο CAN μπορεί να έχει έως 8 byte δεδομένων.
  • πεδίο δεδομένων Περιέχει έως και 8 byte δεδομένων.

Αντιστροφή του διαύλου CAN

Η γενική προσέγγιση για την αναστροφή του διαύλου CAN είναι να δημιουργήσετε τη συμπεριφορά που θέλετε να μιμηθείτε και να βρείτε το μήνυμα που προκαλεί αυτήν τη συμπεριφορά. Για παράδειγμα, ας υποθέσουμε ότι το σύστημα υποβοήθησης διατήρησης λωρίδας (LKAS) στο αυτοκίνητό σας είναι άχρηστο και έχετε δημιουργήσει το δικό σας.

Για να ελέγξει το τιμόνι, πρέπει να γνωρίζετε ποια μηνύματα θα στείλετε. Ο τρόπος για να το καταλάβετε είναι να ενεργοποιήσετε το αρχικό LKAS, να παρακολουθήσετε το λεωφορείο CAN και να προσδιορίσετε τα πακέτα που είναι υπεύθυνα για την περιστροφή του τιμονιού. Μόλις εντοπίσετε αυτά τα πακέτα, μπορείτε να έχετε το δικό σας LKAS να στείλει αυτά τα πακέτα στο λεωφορείο CAN για να ελέγξετε το τιμόνι.

Στην περίπτωσή μας, θέλουμε να πλαστογραφήσουμε το στροφόμετρο, οπότε πρέπει να αλλάξουμε το RPM πατώντας το αέριο με το αυτοκίνητο ενεργοποιημένο και σε ουδέτερο και στη συνέχεια προσπαθούμε να βρούμε το πακέτο υπεύθυνο για την αλλαγή του RPM.

Ρύθμιση

Συνδέστε τη συσκευή CAN στη θύρα OBD-II του αυτοκινήτου και στη θύρα USB του υπολογιστή. Ανακαλύψτε τη διεπαφή CAN εκτελώντας τα ακόλουθα στην προτροπή Linux:

sudo ip link set can0 up type can bitrate 500000

η οποία εμφανίζει τη can0διεπαφή (πάντα can0εάν έχετε μόνο μία συσκευή συνδεδεμένη) με ρυθμό bit 500 kbps, κάτι που είναι τυπικό.

Αναγνωρίζω

Όταν το αυτοκίνητο είναι απενεργοποιημένο, τα ECU συνήθως κοιμούνται, οπότε πρέπει να ενεργοποιήσετε το αυτοκίνητο ή να το θέσετε σε λειτουργία αξεσουάρ. Μπορείτε να δείτε ακατέργαστα δεδομένα CAN εκτελώντας αυτό στην προτροπή Linux:

candump can0

Αυτό εκτυπώνει δεδομένα CAN στην οθόνη μόλις ληφθούν. Αυτό όμως είναι πολύ ανοργάνωτο και είναι πολύ δύσκολο να δούμε ποια πακέτα αντιστοιχούν σε ένα συγκεκριμένο γεγονός. Μπορείτε να πατήσετε ctrl + c για να σταματήσετε το πρόγραμμα. Για να κάνουμε τα δεδομένα πιο ευανάγνωστα, χρησιμοποιούμε cansniffer που ομαδοποιεί τα πακέτα με αναγνωριστικό διαιτησίας και δείχνει μόνο τα πακέτα που αλλάζουν. Για να το ξεκινήσετε, εκτελέστε την εντολή στη γραμμή εντολών Linux:

cansniffer -c can0

όπου -cχρωματίζει τα μεταβαλλόμενα byte και can0είναι η διεπαφή για να μυρίζει. Χρειάζονται λίγα δευτερόλεπτα για να αφαιρέσετε τα σταθερά πακέτα.

Θα πρέπει να δείτε κάτι παρόμοιο με την παρακάτω εικόνα, αν και οι αριθμοί πιθανότατα θα είναι εντελώς διαφορετικοί.

Η πρώτη στήλη (δέλτα) δείχνει το ρυθμό σε δευτερόλεπτα κατά την οποία λαμβάνονται τα πακέτα με αυτό το αναγνωριστικό διαιτησίας. Η δεύτερη στήλη (ID) περιέχει το αναγνωριστικό διαιτησίας. Οι υπόλοιπες αλφαριθμητικές στήλες (δεδομένα…) περιέχουν τα byte δεδομένων. Εάν τα δεδομένα έχουν αναπαράσταση ASCII, μπορούν να φανούν δεξιά, αλλιώς είναι τελεία.

Όταν πατάτε το γκάζι με τον κινητήρα σε λειτουργία για να αυξήσετε το RPM, ενδέχεται να εμφανίζονται νέα μηνύματα CAN στην οθόνη ή / και να αλλάζουν τα υπάρχοντα.

Πρέπει να βρούμε ένα μήνυμα CAN όπου τα μεταβαλλόμενα byte συσχετίζονται με την αλλαγή στο RPM. Μπορούμε πιθανώς να αναμένουμε ότι η τιμή θα αυξηθεί / μειωθεί καθώς το RPM αυξάνεται / μειώνεται.

Το πρώτο πλαίσιο CAN στο cansniffer που φαίνεται να διαφέρει ανάλογα με το RPM είναι το πλαίσιο με αναγνωριστικό διαιτησίας C9. Υπάρχουν πιθανώς πολλά πιθανά πακέτα που διαφέρουν ανάλογα με το RPM, αυτό είναι μόνο το πρώτο.

Υπάρχουν 4 byte που αλλάζουν (έγχρωμο κόκκινο) σε αυτό το μήνυμα, αλλά δεν δείχνουν απαραίτητα όλα αυτά τα RPM. Οι παραλλαγές στο τρίτο byte 07δεν φαίνεται να συσχετίζονται με ποικίλο RPM. Το τελευταίο byte 1Bκάνει.

Ωστόσο, μόλις πάρουμε το πόδι μας από το γκάζι, πηγαίνει στο 00. Αυτό υποδηλώνει ότι αντιπροσωπεύει τη θέση του γκάζι και όχι το RPM.

Τέλος, υπάρχουν τα δύο byte 21 C0που φαίνεται να αντιστοιχούν σε αλλαγή στο RPM. Επιπλέον, ποικίλλει ως ακέραιος αριθμός 16 byte, δηλαδή όταν C0ξεχειλίζει το δεύτερο byte , το πρώτο byte 21αυξάνεται κατά ένα. Επίσης φαίνεται ότι 21αντιστοιχεί σε περίπου 2000 RPM. Αυτό είναι καλό να σημειωθεί πότε θα αναπαραγάγετε το μήνυμα.

Επανάληψη

Μόλις έχετε υποψήφιο, στείλτε το στο λεωφορείο CAN με την ακόλουθη εντολή στη γραμμή εντολών Linux:

cansend can0 0C9#8021C0071B101000

όπου το πλαίσιο έχει τη μορφή #{data} και πρέπει να αντικατασταθεί με το δικό σας μήνυμα CAN.

Το αυτοκίνητό σας μπορεί να λειτουργεί ή σε λειτουργία αξεσουάρ για αυτό. Φροντίστε να χρησιμοποιήσετε ένα πακέτο που αποκτήσατε όταν ο κινητήρας ήταν αδρανής ή αλλιώς δεν θα δείτε τίποτα να αλλάζει όταν το αναπαράγετε ενώ ο κινητήρας σας είναι σε αδράνεια.

Εάν στείλετε μόνο το πακέτο μία φορά, πιθανότατα δεν θα δείτε καμία αλλαγή στο ταμπλό οργάνων. Αυτό συμβαίνει επειδή το αρχικό μήνυμα στέλνεται συνεχώς στο λεωφορείο σε διαστήματα 0,2 δευτερολέπτων από το ECU, οπότε το μήνυμά σας θα αγνοηθεί.

Θυμηθείτε ότι η τιμή δίνεται στην πρώτη στήλη του cansniffer. Υπάρχουν δύο τρόποι για να το ξεπεράσετε εκτός από την αποσύνδεση του ECU που δημιουργεί αυτά τα μηνύματα. Μια επιλογή είναι να στείλετε τα πακέτα σε πολύ υψηλότερη συχνότητα από αυτά που αποστέλλονται αυτήν τη στιγμή. Μπορείτε να το κάνετε αυτό εκτελώντας τα ακόλουθα στην προτροπή Linux:

while true; do cansend can0 0C9#8021C0071B101000; sleep 0.002; done

και αντικαθιστώντας το μήνυμα CAN με αυτό που έχετε προσδιορίσει. Πατήστε ctrl + c για διακοπή.

Μια άλλη επιλογή είναι να παρακολουθείτε το λεωφορείο και κάθε φορά που εντοπίζετε το πακέτο που θέλετε να πλαστογραφήσετε, στέλνετε το δικό σας πακέτο αμέσως μετά. Αυτό μπορεί να γίνει εκτελώντας την προτροπή Linux:

candump can0 | grep " 0C9 " | while read line; do cansend can0 0C9#8021C0071B101000; done

όπου πρέπει να αντικαταστήσετε το μήνυμα CAN και 0C9με το μήνυμα CAN που προσδιορίσατε και το αναγνωριστικό διαιτησίας αντίστοιχα. Μπορείτε να πειραματιστείτε και με τις δύο προσεγγίσεις για να δείτε ποια λειτουργεί καλύτερα.

Εάν το ταχύμετρο αλλάξει, καλή δουλειά, το βρήκατε! Εάν όχι, προσδιορίστε το επόμενο μήνυμα που σχετίζεται με το RPM και επαναλάβετε το.

Ασαφές

Τώρα που έχετε το πλαίσιο CAN που ορίζει το RPM στο ταμπλό οργάνων, μπορείτε να παίξετε με τα δεδομένα που στέλνετε για να δείτε τι συμβαίνει. Έχουμε σημειώσει ότι τα δύο byte που αντιστοιχούν στο RPM συμπεριφέρονται ως ακέραιος αριθμός 16bit, οπότε προκειμένου να ρυθμίσουμε το ταχύμετρο σε 8k RPM, εκτελούμε τα ακόλουθα στην προτροπή Linux:

while true; do cansend can0 0C9#0080000000101000; sleep 0.002; done

και το αποτέλεσμα είναι…

Αυτό είναι! Τώρα μπορείτε να δοκιμάσετε τον έλεγχο του ταχύμετρου, του ραδιοφώνου, των φώτων, των κλειδαριών πόρτας κ.λπ.

Πιθανά προβλήματα

  • Ενώ το λεωφορείο CAN είναι το πιο δημοφιλές δίκτυο, δεν είναι το μόνο δίκτυο. Εάν δεν μπορείτε να βρείτε το μήνυμα που αναζητάτε στο λεωφορείο CAN, δοκιμάστε ένα διαφορετικό δίκτυο. Ιδιαίτερα μη κρίσιμα μηνύματα όπως ραδιόφωνο, φώτα και κλειδαριές θυρών πιθανότατα να βρίσκονται σε διαφορετικό δίκτυο.
  • Όπως αναφέρθηκε, τα ακριβή δεδομένα που μεταδίδονται μέσω του CAN εξαρτώνται από την μάρκα, το μοντέλο και το έτος του αυτοκινήτου. Ορισμένα αυτοκίνητα χρησιμοποιούν έναν μετρητή στο μήνυμα CAN για να διασφαλίσουν ότι το ίδιο μήνυμα δεν υποβάλλεται σε επεξεργασία πολλές φορές. Αυτό είναι λίγο πιο δύσκολο, αλλά θα πρέπει να μπορείτε να το κάνετε με τις παρεχόμενες πληροφορίες. Ορισμένα αυτοκίνητα χρησιμοποιούν επίσης ένα άθροισμα ελέγχου για να διασφαλίσουν την ακεραιότητα των δεδομένων. Ο υπολογισμός αυτού του αθροίσματος ελέγχου μπορεί να είναι δύσκολος. Εάν διαθέτετε Toyota, δείτε το Adventures in Automotive Networks and Control Units, p10, Checksum-Toyota. Όλοι πρέπει πραγματικά να διαβάσουν ολόκληρο το χαρτί.
  • Κατά την αναπαραγωγή του αναγνωρισμένου πακέτου στο δίαυλο, η συσκευή CAN σε USB ενδέχεται να μεταβεί στην κατάσταση "bus off". Αυτό είναι μέρος του προτύπου CAN και συμβαίνει όταν η συσκευή αντιμετώπισε πάρα πολλά σφάλματα. Αυτό συμβαίνει γενικά όταν υπάρχει πολλή κίνηση στο λεωφορείο. Για να το ξεπεράσετε αυτό, μπορείτε να παίξετε με καθυστερήσεις και χρονοδιάγραμμα, ίσως δοκιμάστε να αναπαράγετε το μήνυμα αμέσως μετά τη θέση του αυτοκινήτου σε λειτουργία αξεσουάρ, δοκιμάστε να περιμένετε λίγο, δοκιμάστε το με το αυτοκίνητο κλπ. Εάν έχετε προσδιορίσει τι είναι τα ECU συνδεδεμένο στο λεωφορείο, μπορείτε επίσης να τραβήξετε την ασφάλεια τους για να τους σταματήσετε να στέλνουν μηνύματα και να μειώνουν την κίνηση στο λεωφορείο.

Πρέπει να διαβάζει

  • Εγχειρίδιο αυτοκινήτου χάκερ
  • Η έρευνα του Charlie Miller και του Chris Valasek, ναι όλα
  • Πανεπιστήμιο της Καλιφόρνια Σαν Ντιέγκο και έρευνα του Πανεπιστημίου της Ουάσιγκτον.

Φροντίστε επίσης να δείτε το Open Garages και τα βίντεό του.