I quit caffeine in January and it took me about the same - 6 months for the fatigue to go away - though I would say it gets much easier after 3 months. I think gradual decrease would make it easier but it would take longer. You might need to step down to one cup of coffee/tea a day for 6 months before quitting. I ended up mixing small amounts of instant coffee with decaf instant coffee so that at the end of the day it was like I had only consumed one cup of coffee. I only did that for a few weeks and then just quit altogether and still got huge fatigue. I have recently started going for runs almost every day and that has helped me a lot so you may be in a better position if you exercise. I tried lifting weights for ages but couldn't get into it then I switched to running and found that to be way better at reducing fatigue for me.
We seek to 0x400 before where we need to write the data
SendWrite(fd, foo, 0x400, false);
We set the first 0x400 bytes of what we want to write to 0
SendWrite(fd, fw, fwsize, true);
We then set the rest of the bytes to our data.
SendEndSecpack(fd);
The iphone copies the data from 0x400 bytes onwards (which is all the data we wanted to write), then tries to verify the signature and fails. If the signature could be verified the first 0x400 bytes (which we left as all zeros) would then be copied.
So very many products are, but most people never see any of it, and most are boring enough that nobody cares to break them apart and see what's inside.
I think Fabien is looking for an explanation as to why shifting by 0x400 bypasses the signature check. For example, is that shift somehow corrupting the signature check logic, or bypassing it by convincing the checker that no check needs to be performed?
My guess is that the chip doesn't have enough RAM to store firmware image, verify it, and only then write it to flash. So instead it needs to write it on the fly as it receives data in chunks of 0x400 byte pages. It starts by erasing first page, but instead of immediately writing it instead keeps buffer for that page for later. Then it transfers remaining pages normally, and at the end only when signature is correctly verified it goes back to write the first page.
So it would appear the firmware has a header of 0x400 which is buffered during upload but discarded if the firmware fails the checksum at the end of the upload.
I'm reading this as the iPhone holds the first 0x400 bytes in a buffer and doesn't write them until the signature has been verified. Everything else does get written. The assumption is that stripping off those initial bytes would render the firmware unusable, except in this case where they just padded the write by 0x400 bytes!
I think it was lack of imagination on the part of whoever programmed it. I wager they were more afraid of someone taking total control of the baseband so they figured everyone would start writing programs at 0, so they protected the beginning, which is their most important code. They didn't foresee someone just skipping that part and writing part of the firmware for such a small change.
Interesting idea but they should have used multiple drawings per frame and overlayed them to get rid of trash frames.
Anyway, if anyone wants to see a Pink Floyd Dark Side of the Moon movie that functions as a projector for the album, I edited this together and you guys may be into it: https://odysee.com/DSOPiQ
I added an intro and some other stuff to mess with you but it can effect the projection substantially so if you want to skip it, go straight to 7:34 (don't go less than that otherwise you might get something)
Aww... I thought human users would be able to program their own ai and connect with an API. Though it makes sense that this isn't the case, since then a human user could just use it like normal social media.
There's no API, but you can "program" bots to some extent to follow very rigid patterns of behavior and force it to produce some literal output by carefully crafting their description.