3,406 karma · joined July 28, 2011
Please use they/them pronouns when referring to me.
I can be reached via email to hnpub-c5b3 * ryanc * org
[ my public key: https://keybase.io/ryanc; my proof: https://keybase.io/ryanc/sigs/JVwG0IkvYj5Tur8NJGrivRLWeKzDetQdNyb488EQp_8 ]
https://arstechnica.com/security/2024/08/home-energy-system-...
> Someone once asked me, as commentary on my ability to figure out email addresses, “Are you a Hacker or in sales?”
Just a bit of OSINT and educated guessing.
One of my suggestions to them was to switch to elliptic curve, but I imagine RSA 4096 "just worked".
I suspect they'll rework it later now that it's not "on fire".
The bugs I find are usually just ones I stumble across, I don't go looking for them.
Bug bounty programs generally aren't worth the trouble for me anyway - I have to file taxes in both the US and the UK so the paperwork gets really annoying.
# state class to contain the counter
class _spoiler:
count = defaultdict(lambda: 0)
def id(src):
_spoiler.count[src] += 1
src_hash = sha256(src.encode()).hexdigest()[:7]
return f'spoil-{src_hash}{_spoiler.count[src]:03}'
def spoiler_role(name, rawtext, text, lineno, inliner,
options={}, content=[]):
src = inliner.document.attributes['source']
html = (
'<input id="{id}" type="checkbox" class="spoiler" checked />'+\
'<label for="{id}" class="spoiler">{text}</label>'
).format(text=text, id=_spoiler.id(src))
return [nodes.raw('', html, format='html')], []
I don't want to do that manually, and this lets me write :spoiler:`Rosebud was the name of his sled`.(and pray to the gods I don't somehow leave the instances running by mistake)
`!("a" == "a"[0])` just detects IE6/7, as they return undefined for "a"[0]: https://unspecified.wordpress.com/2008/06/15/portable-javasc...
Here's the slide deck for a con talk I did a while back: https://rya.nc/files/A_nickel_tour_of_the_ad_fraud_ecosystem...
I haven't worked there for a couple of years though.
It was the first piece of code I put out that someone referred to as "art"[1].
Some others that hit the HN front page over the years:
https://news.ycombinator.com/item?id=10195358
https://news.ycombinator.com/item?id=9516824
https://news.ycombinator.com/item?id=26615938
I also had wrote some code for my former employer containing the magic string "haha jit go brrr" that raised some eyebrows when someone reverse engineering the code noticed it. It was part of a routine to try to coax the JIT into optimizing the code soon on low end Android devices for performance reasons, but someone who didn't understand what the code was doing thought it was part of an exploit... :facepalm:
A lot of people prefer dead kids to queer kids, unfortunately.
https://rya.nc/files/librejs-poc.html
<script id="harmlessNullScript" type="text/javascript"></script>
<skript id="derp" style="display:none;">
/**
* @license Proprietary
* @copyright Copyright 2018 Ryan Castellucci, All Rights Reserved
*/
// WARNING: Code here needs to avoid the "less than" symbol.
(function(){
// LibreJS modifies the text of script tags onced they've been
// checked, which offers a very convienant way to detect it.
if (harmlessNullScript.textContent.indexOf("LibreJS: ") > 0) {
eval("alert('LibreJS detected, but non-free eval works');");
}
})();
</skript>
<script type="text/javascript">
/**
* @license Proprietary
* @copyright Copyright 2018 Ryan Castellucci, All Rights Reserved
*/
// An eval that works in the WebExtension port of LibreJS.
// Untested on the original XPI version.
Function(derp.textContent)();
</script>
In any event, there are a lot of ways to eval code... 5 bits 0 0000-1111 acde fghi lmno rstu
7 bits 10 00000-11111 bjkp qvwx yzAB CDEF GHIK LMNO PRST UVWY
7 bits 110 0000-1111 JQXZ 0123 4567 89/.
8 bits 111 00000-11110 !@#$ $%^& *()_ {}[] `~+= |\"' ;:<> ,? (space at the end)
16 bits 11111111 00000000-11111111 plus UTF-8 1 to 256 unicode characters encoded as UTF-8
You could even include some bigrams in this sort of table.There's some code here that could maybe be used for that sort of static huffman tree:
https://github.com/ryancdotorg/lztp/blob/main/generate-seed....
Alternatively, have something like this:
00 000000-111111 1-64 characters, 5 bits each
01 000000-111111 1-64 characters, 6 bits each
10 000000-111111 1-64 characters, ~6.4 bits each (character set of 84 characters, every 5 packed into 32 bits)
11 000000-111111 1-64 characters, UTF-8
This is vaguely similar to how data is encoded for QR codes.As pointed out elsewhere, this will not outperform zstd with a dictionary trained on a corpus, but zstd would require pulling in a lot of code.
I normally target an estrogen level similar to an average woman and a testosterone level between the female and male reference ranges. I'm able to adjust the mix on the order of days when it suits me, and there absolutely is a difference. People who know me well can usually tell what mix I'm running.