Show newer

If u didnt want ur robots tipped, ya shouldn't have sold footage to the cops 🤷‍♀️ idk what else to tell ya

Show thread

A popular German baking blog turned off RSS (EDIT: It works again!) 

The RSS feed (ploetzblog.de/feed) works again!

In a reply below, I also "converted" the email newsletter to an RSS feed.

Original message:

Oh no, ploetzblog.de/ turned off #RSS after he redesigned the website. I mean, the redesigned website is nice and well arranged, but I can't follow it any more.

Has anyone written a RSS bridge for the new blog, or should we petition Lutz Geißler to re-enable RSS? The site seems to be based on #TYPO3.

(No, I definitely don't want to sign up with *any* ✉️ newsletter. Hm, I remember that there was a service that converts newsletters into RSS feeds)

#Brot #Brotbacken #PlötzBlog @teamsauerteig

SBC manufacturers be like:
"yes, 5V at 8A is perfectly reasonable and not absurd at all"

Didn't realize that that particular error survived from the IRC times all the way into the Discord era :p

Show thread

... wait, did the Discord folks just add every active user IP to their WAF banlist?

If only Discord's "servers" were actually independent servers

re: shooting, fascism 

Dutch media now seem to be confirming that this identification was correct.

Show thread

If these silicon valley types had any soul left beneath a life of ordering at restaurants and word documents, the revolution they would be automating would be... the revolution

this has been my avatar image for when my camera is off during video calls at work for a few months now and I still laugh when I see it

(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' */));
}

Show thread

Many countries have digital public transport chip cards.

I'm really lacking a European standard for them as we have it with UIC 918 for railway Aztec tickets. Though also this is not perfectly established, it is at least a portable system.

Why can't I load a digital :deutschlandticket: D-Ticket on my :ovchipkaart: OV chip card ? Why no weekend vrij on a a :mobib: MoBIB card ?

Why can't :delijn: De Lijn deduct their a bus trip single ticket from the funds of an :ovchipkaart: OV chip kaart ?

These cards could be such an easy and portable standard, but any country and any transport company aims to re-invite the wheel again and again.

#CrossBorderRail

Levi vanochtend op NPO1 over de 'coronaherdenking'.
Zit te zeiken over dat de scholen niet dicht hadden gemoeten en dat ze dat toch In Zweden beter hadden gedaan.
Niets over hoe de scholen *veilig* open hadden kunnen blijven/gaan.
Levi is uiteraard (lang) niet de enige die weinig van deze pandemie heeft geleerd. Toch teleurstellend.

I'm pretty fucking done paying for games before I can play them. Too many purchases of "oh this looks fun!" and it's way to fucking hard.

"fun platforming" my back-side! This is a precision platformer. I don't care what the author says. I'm out. I'm done. Somebody please make fun games again.

And be honest if you've made a difficult game. That's fine. You're allowed to make them. But be honest about it.

nearly 8% of Melvor Idle players have died in melee combat to a potato plant

there's nothing special going on in the encounter

it's a normal potato plant and you're the only other thing in the area

shooting, fascism 

So I'm reading up on the apparent background of the shooter in Rotterdam (note: identity not *officially* confirmed) who killed 3 people, and well...
- Seemingly traumatized by their treatment as an autistic person growing up (the "doesn't have empathy" claim was mentioned, among other things)
- Socially isolated, with a history of being abusive
- Shooting appears to have been a revenge shooting on people that they felt had slighted them in some manner
- Active 4chan user (an archived thread is where most of the background comes from, and enough details match the person that it looks credible to me)
- Supporter of the FvD (essentially the Dutch alt-right party) as well as Putin
- Slurs and conspiracy theories all over the place, is also an anti-vaxxer

This is possibly the clearest case I've seen so far of the recruitment process described by many folks; vulnerable/isolated/traumatized young guys are targeted with gradual fascist rhetoric, and that becomes their only social space.

I'm hesitant to post the link to the thread, because well, it's unfiltered 4chan. I'm not sure how other folks feel about this. Feedback is welcome.

And to be clear, none of this *justifies* what they have done. They are ultimately personally responsible for the actions they have taken.

But... the responsibility doesn't *end* with the shooter either. There's a very clear path towards how this happened, and a lot of people are not taking these origins (I don't want to call them 'root causes') seriously enough. This is absolutely a collective, societal problem too. Because there is more where that came from.

food 

I wish those wasabi nut things from Lidl contained less salt, I'd be eating *so many* of them :blobcatdroolreach:

Semantic versioning ("semver") is for the boring. My next project will use "emdocver" (Emailed Document Versioning). The 1st major release will be FINAL. Next will be FINAL_FINAL. After 1 bug fix, it will be FINAL_FINAL_UPDATED, then FINAL_FINAL_UPDATED_UPDATED with 2 fixes, etc.

With news of #Bandcamp being sold, and advice that you should download your purchases now, I haven't published it yet, but I actually wrote a post recently about downloading from Bandcamp, and here were the three options that took my eye:

github.com/Otiel/BandcampDownl

github.com/RyanBluth/Bandcamp-

github.com/easlice/bandcamp-do

I used bandcamp-downloader, and here is an extract of my post using it:

"I easily managed to install it and configure to download to a chosen directory and in the FLAC format with the following command, replacing the terms `USERNAME` and `/path/to/directory/` accordingly:

`./bandcamp-downloader.py USERNAME -d /path/to/directory/ -f flac`

And then the downloads slowly started to trickle in, all zipped up underneath directories with the artists' name. As such, the music still needs unzipping, but that was the case when downloading manually as well, and then music can be organised however you like.

I like how I can run it the leave it to do all the work in the background with me needing to monitor it or it be too intrusive as I work on something else, but the other two options may be more suitable if you prefer to work with a graphical interface and aren't too comfortable with the command line."

Show older
Pixietown

Small server part of the pixie.town infrastructure. Registration is closed.