desperately hoping that the towel wrapped around my condensate pipe will prevent it from freezing up this week
as design flaws go, that one is particularly annoying... you'd think that a boiler would automatically figure out that it needed to send a blast of the hottest water it could make down the condensate pipe if it started backing up in freezing weather, but no - i have to take a boiled kettle round the back of the house and pour it onto the affected pipe
Uk spy cops
The British spy police infiltrated groups advocating against racism. Peaceful groups that were not even suspected of breaking any laws.
They stole the identities of dead children.
They got into long term relationships with women who they had children with. Until they faked their own deaths and vanished suddenly.
Their behaviour was absolutely shocking and was not lawful. The Tories responded by increasing the scope of how police are allowed to act.
Read more about them: https://www.theguardian.com/uk-news/series/spy-cops-scandal
Thats who raspberry pi, the beloved teaching platform, hired.
well, i know who's getting my vote for #MilkshakeDuck2022 - a late entrant, but my god, they left it all on the field
Poverty and war and fascism and greed, these are not laws of nature. Capitalism is not decreed by physics. Fascism is not the result of a natural, inevitable process. These are choices people made, make, and keep making.
(please boost to send this supposed "secret" across the fediverse) long, code. <=rpi3 codec licensing algorithm. replace the trigraphs (change ??= to # ) if your compiler doesn't like them.
// #RaspberryPi codec licensing serial algo (<=RPi3)
// shoutouts to fabien perigaud/synacktiv. your beerump 2017 presentation slides started me on this journey.
// (sure you redacted the fun stuff, I just rediscovered it myself)
// also shoutouts to everyone involved in BCM2708 reversing!
// greetings to elites, fuckings to lamers (second category includes broadcom and rpi foundation)
??=include <stdint.h>
??=include <stdio.h>
typedef uint8_t u8;
typedef uint16_t u16;
typedef uint32_t u32;
u8 vce_data[] = {
0x54, 0x6f, 0x76, 0x6b, 0x94, 0xce, 0x1a, 0x57, 0x56, 0x51, 0x0c, 0xb2, 0x72, 0xc9, 0xc3, 0x12,
0x13, 0xbc, 0xe8, 0xd2, 0x5b, 0xa3, 0x2d, 0x2a, 0x5a, 0x62, 0x4d, 0xeb, 0x16, 0x40, 0x05, 0x87,
0xe0, 0x98, 0x39, 0xf7, 0xac, 0xc6, 0xab, 0x7c, 0xe9, 0xfb, 0x07, 0xaa, 0x29, 0xcd, 0x1d, 0x9b,
0xf6, 0x0e, 0x01, 0xbb, 0x5c, 0xfc, 0x15, 0xae, 0xd9, 0xfa, 0x9c, 0xef, 0xf1, 0x75, 0x8e, 0x70,
0x46, 0x8b, 0xb0, 0x89, 0x50, 0xaf, 0x6e, 0x67, 0x18, 0xda, 0xee, 0xd4, 0x32, 0xbe, 0x4e, 0x58,
0x5d, 0x1f, 0x4b, 0x73, 0x88, 0xc0, 0x79, 0x02, 0xde, 0x47, 0xa0, 0x43, 0x9a, 0xdb, 0xc8, 0x35,
0x95, 0x3c, 0xcc, 0x8d, 0x64, 0x2f, 0x14, 0x68, 0x00, 0x71, 0x03, 0xb9, 0xed, 0x0b, 0xf3, 0x24,
0x60, 0xb1, 0x17, 0x63, 0xdf, 0x48, 0x41, 0xa4, 0x28, 0x5e, 0x2b, 0xd8, 0xb4, 0x90, 0xba, 0x83,
0xe4, 0x08, 0xd0, 0xe2, 0xb8, 0x6a, 0x10, 0x74, 0x9f, 0x7b, 0x19, 0x38, 0x8f, 0x91, 0xd6, 0xa8,
0x27, 0x06, 0x30, 0x33, 0x61, 0x34, 0x25, 0x21, 0x53, 0xc7, 0x66, 0x23, 0xff, 0xc5, 0x80, 0x85,
0xf4, 0xd7, 0x97, 0x99, 0x55, 0xf2, 0x8c, 0x04, 0x6c, 0x4f, 0xa1, 0x36, 0x20, 0x0a, 0xe1, 0x44,
0x59, 0xcf, 0x7d, 0xb6, 0xf9, 0x0f, 0x6d, 0x11, 0x78, 0x93, 0xe5, 0x3f, 0xf0, 0x9e, 0x84, 0xd3,
0x7e, 0xbd, 0xd1, 0xf5, 0xa5, 0x81, 0x22, 0x37, 0xf8, 0x52, 0xe3, 0x5f, 0xa9, 0xca, 0xfd, 0x42,
0x7f, 0x09, 0xa2, 0x9d, 0x8a, 0xb7, 0x4a, 0xe6, 0xa6, 0x77, 0x3d, 0x1c, 0x2e, 0xcb, 0x1b, 0x69,
0xb3, 0x1e, 0xc1, 0x7a, 0x82, 0xdd, 0x2c, 0xdc, 0x49, 0xea, 0x3a, 0xe7, 0x31, 0x4c, 0xad, 0xbf,
0x0d, 0xc2, 0xc4, 0x96, 0x65, 0x26, 0xfe, 0x92, 0x86, 0x3b, 0x3e, 0xec, 0xd5, 0xb5, 0xa7, 0x45
};
??=define INLINE static inline __attribute__ ((optimize (3))) __attribute__((always_inline))
INLINE u32 GET(u32 var, u8 bits) {
return vce_data[(var >> bits) & 0xff] << bits;
}
// should probably use bitwise OR, but this is what the vce code does
INLINE u32 GET32(u32 var) {
return GET(var,24) ^ GET(var,16) ^ GET(var,8) ^ GET(var,0);
}
// vce has no rotate instructions, so it does it the long way as in C
INLINE u32 ROR(u32 var, u32 right) {
return (var >> right) ^ (var << (32 - right));
}
u32 codec_license_hash(u32 board_serial /* r1 */,u32 codec /* r2 */) {
??=define CODEC_XOR_BOARD_ROR(bits) codec ^= ROR(board_serial,bits)
??=define BOARD_XOR_CODEC_ROR(bits) board_serial ^= ROR(codec,bits)
for (u32 i = 0; i < 17; i++) {
CODEC_XOR_BOARD_ROR(1);
BOARD_XOR_CODEC_ROR(6);
CODEC_XOR_BOARD_ROR(13);
BOARD_XOR_CODEC_ROR(17);
CODEC_XOR_BOARD_ROR(21);
BOARD_XOR_CODEC_ROR(29);
board_serial = GET32(board_serial);
codec = GET32(codec);
}
??=undef CODEC_XOR_SHIFTS_BOARD
??=undef BOARD_XOR_SHIFTS_CODEC
return codec;
}
// This board serial taken from hxxps://web.archive.org/web/20221208160705/forums.raspberrypi.com/viewtopic.php?t=38901
// The person who owns the SoC with this serial burned in fuses did a nice thing and provided their own WVC1 + MPG2 keys, we can use that to verify this implementation is correct:
// decode_MPG2=0x6fd66307
// decode_WVC1=0x01a512b0
??=define BOARD_SERIAL 0x9d3e8cb1
void main() {
printf("??= VC1 key\ndecode_WVC1=0x%08x\n\n", codec_license_hash(BOARD_SERIAL, 0xf00bad34 ^ 0x57564331 /* 'WVC1' */));
printf("??= MPEG-2 key\ndecode_MPG2=0x%08x\n\n", codec_license_hash(BOARD_SERIAL, 0xf00bad34 ^ 0x4D504732 /* 'MPG2 */));
printf("??= Super-secret key ;)\n??=\n"
"??= start.elf, before booting ARM, reads bootsig key from efuses, then compares against 1/2 of 5 hardcoded keys.\n"
"??= If not equal, then this key is checked, if not correct then infinite loop + LED flash\n"
"??= (same as if 3rdsig -- ARM kernel binary HMAC signature -- verification fails)\n"
"??= As to *why* this is done, I have no idea. Bootsig key is also 128-bit HMAC key and this reduces the available\n"
"??= possible entropy for unique bootsig key (necessary for boot-time security I would think!) down to either\n"
"??= 51, 52, or 77 bits depending on what key was burned into your Pi's efuses...\n"
"decode_0001=0x%08x\n\n", codec_license_hash(BOARD_SERIAL, 0xf00bad34 ^ 0x30303031 /* '0001' */));
}
I am gleefully ignorant of what the latest is with raspberry pi, but reading people's reactions to it makes me wonder if I should resurrect the #KestrelComputerProject under a new name and with a new set of goals.
trans woman in Michigan needs heating oil, forwarding her call for mutual aid
a friend of ours is in a rough spot and needs to be able to keep her house from freezing @mutualaid
----
Hey, so I ran out of heating oil a couple days ago, running on eight or nine gallons of diesel right now, and my whole big attempt to fundraise myself out of the hole I'm in didn't actually get where it needed to be, I just kind of burned out and gave up trying after a month. The good news is that the price of oil has gone down a lot. Not filling it until it ran out, which I thought would work against me, actually means I need $1,067, instead of over $1,500. Still way higher than it would usually take to pay for oil, but I'm not complaining about a more than five hundred dollar drop in the price.
So I'm asking for money again. (Theoretical total to get where I won't need to beg going forward is circa $2,000, but I have no expectations of being able to raise that, so I'm just trying to cover the $1,067 for oil.)
https://www.paypal.com/paypalme/christhecynic
Patreon & writing links re: trans woman in Michigan needs heating oil, forwarding her call for mutual aid
gonna also plug her Patreon: https://www.patreon.com/chris_the_cynic/
and her writing blog: https://stealingcommas.blogspot.com/
she's made a lot of really good fiction, fanfic and original, and some excellent blog posts like http://stealingcommas.blogspot.com/2020/03/economics-lesson-or-why-shelves-are.html about supply shortages early in the pandemic
she deserves a chance to live in a place that's hers and safe to inhabit, and we'd really appreciate any help people can give her
- Packbats π
meta, rpi self-immolation, acab
i suppose knowing up front is better than if it turned up a couple of weeks down the line, someone popping up and going "i remember that guy from when he nicked my mates"
still. the object lesson here is "mastodon is not a cop-friendly place" and before people start throwing accusations of bullying around, remember this:
NOBODY IS BORN A COP.
THINK ABOUT WHAT KIND OF PERSON CHOOSES TO HAVE, AND USE, VIOLENCE AND COERCION AGAINST THEIR FELLOW CITIZENS AS A FUNDAMENTAL ASPECT OF THEIR JOB.
...and then fuck off with that shit
@stavvers their greatest contribution to mastodon is uniting the tech nerds and the gay leftist shitposters against them
nine-headed hydragon
they (pl)/she (usually); β§s; UK based; late 40s
(with the wisdom of someone half her age)
autistic / adhd-i / stpd / q-bpd / avpd / non-24
forgotten mummy dust & proud!
if you can boost it, feel free to do so
follow reqs welcome (except from empty profiles)
~
π a π ohhhh it's a π it's a
𦑠𦑠𦑠𦑠𦑠𦑠𦑠𦑠𦑠𦑠𦑠𦑠π π