VW_Flash
openpilot
VW_Flash | openpilot | |
---|---|---|
11 | 839 | |
279 | 47,461 | |
- | 0.7% | |
4.7 | 10.0 | |
3 months ago | 7 days ago | |
Python | Python | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
VW_Flash
-
Can Injection: keyless car theft
I did find an older VW "emergency start" product that claims to only work with Bosch MED17 and MED9, and I suspect it's using a memory-access primitive (either UDS or CCP) to release the immobilizer.
It's trivial to disable an immobilizer in software by re-flashing the ECU, yes, but modern ECUs have two strong protections against this:
* Cryptographic signature checking against update/re-flash payloads (I've done extensive research on these on VW Continental ECUs - https://github.com/bri3d/VW_Flash )
and an even better and more obvious protection:
* The ECU application software won't descend into the re-flash software (Customer Bootloader) unless the immobilizer is free (a valid key is present).
This is a lot of what helps to reduce surface area from an "emergency start" style attack to an AKL attack - now that the Customer Bootloader won't start without the Immobilizer being unlocked, an attacker needs to remove the control unit to flash it with a Supplier Bootloader exploit ( https://github.com/bri3d/simos18_sboot ) or physical access (BDM/JTAG).
-
Ask HN: What Are You Working on This Year?
This year I don't anticipate having much free time, so I'm trying to engage more contributors in side projects,
* Automotive ECU tooling, https://github.com/bri3d/VW_Flash
* DJI FPV forward/reverse/all sorts engineering, https://github.com/fpv-wtf
I've been working a lot with various folks using Discord and contributions are gradually shifting from me towards others, which has been great to see. As the old adage goes, teaching a project is truly the final form of knowing one - much harder than hacking alone, but ultimately more fulfilling.
When I started my automotive ECU journey my goal was to demystify the "tuning" scene for a broader software engineering community, and I think I've generally been successful at this.
-
Ask HN: What not-profit-seeking project are you tinkering with this week?
This week, as most weeks, I split my time outside of the day job and my other hobbies and obligations between Discord collaboration, Ghidra, and VSCode:
https://github.com/bri3d/VW_Flash - Flashing tools for select control modules in VW MQB and now PQ35 platform cars. This week I'm working on old stuff: a simpler exploit chain for older Simos ECUs, as well as tweaks to expand support to older DSG control units used in PQ35 platform vehicles.
https://github.com/fpv-wtf/msp-osd - I pushed a rearchitect of this on-screen-display overlay system for DJI FPV Goggles last week that seems to have sorted out a lot of issues - I switched from just passing through the OSD drawing messages from the Flight Controller to a system where the video transmitter maintains the OSD character buffer and sends a compressed representation of the screen state. This makes the system much more robust to packet loss in situations where the Flight Controller sends delta updates rather than frame-at-a-time.
I only really started publishing Open Source projects a year or two ago, and while they're pretty much my worst code by any objective measure, I've met some great people and really enjoy working on these. It's fun making things that achieve a goal without so much pressure of deadlines, stakeholders, and competing priorities.
-
ECU resources
VW_Flash: https://github.com/bri3d/VW_Flash/blob/master/docs/docs.md . Modern UDS control unit flashing: Preconditions RemoteRoutine, Programming Session, SA2 Seed/Key, Workshop Identifier, RequestDownload, TransferData, ExitTransfer, Checksum RemoteRoutine, rinse and repeat. Pretty much the same for any UDS control unit. Other manufacturers have some little tweaks to the Preconditions and Workshop Identifier, but conceptually this is how UDS flashing works overall. Also contains examples of modern control unit encryption (rolling cipher for Temic DQ250, crappy XOR for Simos8, AES for Simos12 and up and DQ381) and checksums (mostly CRC based, some header-defined, some not). Crash course in SBOOT/CBOOT/ASW/CAL layout of modern control units.
-
Hyundai car software update private keys came from easily Googleable sample code
That's pretty cool! I wonder how properly they were really signed - there are _so many_ mistakes even in systems that at least don't use an example key off the Internet.
The most common ones I know of are:
* Out-of-bounds write issues allowing "signature was validated" flags to be overwritten in Flash memory, like https://github.com/jglim/UnsignedFlash
* State machine mistakes, like https://github.com/bri3d/VW_Flash/blob/master/docs/docs.md - allowing Flash to be written again after it was already written, without an erase first.
* Filesystem parsing mistakes, like those in a number of VW AG head units: https://github.com/jilleb/mib2-toolbox/issues/122
* The use of RSA with E=3 and inadequate padding validation, like https://words.filippo.io/bleichenbacher-06-signature-forgery... .
* Failure to understand the system boundaries, like in the second part of https://github.com/bri3d/simos18_sboot where "secret" data can be recovered by halting the system during a checksum process.
* Hardware fault injection issues, as used in https://fahrplan.events.ccc.de/congress/2015/Fahrplan/system... .
Fundamentally this is of course, a very hard problem, since in the "protect against firmware modification" case, the attacker has physical access. But, compared to the state of the art in mobile devices and game consoles, automotive stuff is still way behind.
-
Hacking a VW Golf Power Steering ECU
Here is link number 1 - Previous text "My"
No, this EPS control module is remarkably primitive even by late 2000s standards and several generations behind today's state of the art.
More modern control modules with a bit more resource available to them will use AES as the symmetric encryption (although there are also fixed-key XOR schemes and custom stuff used like this: https://github.com/bri3d/VW_Flash/blob/master/lib/decryptdsg... ).
The keys and even IV are usually fixed across a "model line" of ECUs, so once a decrypted flash memory can be extracted, this isn't much of a protection measure, but it's a lot better than XOR.
Then, in more modern control units, flash areas are also usually protected by both a checksum (usually some CRC permutation, although cute tweaks and random nonsense are common here too) and some form of digital signature.
-
Ask HN: What you up to? (Who doesn't want to be hired?)
I have been reverse engineering automotive ECUs for a while now - https://github.com/bri3d/VW_Flash . It's a nice change from my day job in enterprise engineering management, and I've met some fun people and taught several folks a lot of new concepts, which is always extremely rewarding.
My latest project has been reverse engineering the data-flash encryption in Simos18 ECUs. After some work, it oddly appears the encryption algorithm used is Mifare Hitag2. I'm hoping to be able to re-encrypt NVRAM channels soon, although the overall data flash "filesystem" / channel-system layout needs some more work before I am ready to release my findings.
- Exploit Chains in the Simos18 Engine Control Unit
-
Are expensive OBD2 scanners different in hardware or only in software from cheaper ones?
3) For highly specialized applications, additional hardware is necessary. For example, on modern ECUs, often read/write access via diagnostic protocol is secured via encryption and signature validation, so to flash custom firmware requires a bypass of these measures. Sometimes this bypass can be via a vulnerability in the diagnostic protocol requiring no additional hardware, like on VW Simos18 , but other times the bypass requires manipulating the control unit beyond what the diagnostic port allows - custom serial protocol, specific sequences of GPIO manipulation, or PWM signals applied to specific pins.
openpilot
-
Tinygrad: Hacked 4090 driver to enable P2P
Yes, but he spent several years in self-driving cars (https://comma.ai), which while interesting is also a space that a lot of players are in, so it's not the same as seeing him back to doing stuff that's a little more out there, especially as pertains to IP.
-
Imitation Learning
We have a product for sale: https://comma.ai
We raised $18.1M and have made $28M in lifetime revenue to date.
Where are you getting your narrative?
-
Driverless cars immune from traffic tickets in California under current laws
What about comma? https://comma.ai/ Seems like our old friend geohot built exactly what you want.
Positive HN discussion: https://news.ycombinator.com/item?id=36927971
-
No USS?
The issue was that the front camera on the windshield couldn’t see under the hood. You misunderstand how easy it is to solve for depth and distance with AI without requiring stereo cameras. Read https://github.com/commaai/openpilot
-
What car should I get for Seattle city and some ski/hike driving? Or not get a car at all?
Nice to have: I want to get a self-driving add-on that supports some cars better than others. Not a must but high up on my nice-to-have list.
- I need some help understanding video uploads.
-
I am nearing the end of my Kona 2020 lease, and I have an appointment at a dealer tomorrow had some questions about leasing an ioniq 6, hopefully someone can help me out.
EDIT: I probably should have added that I currently have the base model of the Kona the lowest model available, and I am looking for a similar thing in the ioniq 6, because my understanding is that it's fully compatible with the comma.ai device and therefore I am not planning on getting the better on board driving system, the Kona that I got unfortunately was not compatible with that device.
-
Tesla: Security Vulnerabilities
I wonder how bad this is compared to the competition. https://comma.ai allows you to add self-driving features to a large number of non-Tesla cars so, if we’re including physical firmware hacks as a threat vector, I’d bet tons of alternative cars (new enough Honda Odysseys, Toyota Siennas, etc: probably anything with adaptive cruise control and lane following) have the same sort of potential vulnerability.
- 2024 highlander has Toyota Security Key Now
-
Cruise co-founder and CEO Kyle Vogt resigns
Not sure, but from the first article from 4 years ago:
>Last month, we had 1,209 cars drive a little over 1,000,000 miles
Let's say they've had zero growth since then, so 48,000,000 conservatively?
Actually, from their website [1]:
>100+ million miles driven and 10k users.
[1]: https://comma.ai
What are some alternatives?
mib2-toolbox - The ultimate MIB2-HIGH toolbox.
sunnypilot - sunnypilot is a fork of comma.ai's openpilot, an open source driver assistance system. sunnypilot offers the user a unique driving experience for over 290 supported car makes and models with modified behaviors of driving assist engagements. sunnypilot complies with comma.ai's safety rules as accurately as possible.
ScrapMechanicSeedTool - A tool that allows you to modify the seed of scrap mechanic save files.
opendbc - democratize access to car decoder rings
esp32-isotp-ble-bridge - ESP32-IDF based BLE<->ISO-TP bridge targeting Macchina A0 hardware
carla - Open-source simulator for autonomous driving research.
VWsFriend - VW WeConnect visualization and control
dragonpilot - dragonpilot - 基於 openpilot 的開源駕駛輔助系統
ntfy - Send push notifications to your phone or desktop using PUT/POST
label-studio - Label Studio is a multi-type data labeling and annotation tool with standardized output format
Open-Assistant - OpenAssistant is a chat-based assistant that understands tasks, can interact with third-party systems, and retrieve information dynamically to do so.
netron - Visualizer for neural network, deep learning and machine learning models