3. tripex 1.2 |
Published: 2025-01-07 [Tue] 05:24, by |
>>2 tripex 1.2 release notes + -f flag to read a list of expressions from a file * -s flag now takes an argument for when to begin/end stacking. negative values mean to stop stacking after the absolute value of the index. apply the patch as follows (make sure to apply the previous patch first:) patch tripex.c tripex-1.2.patch then recompile the software as follows: gcc tripex.c -o tripex -O3 -lcrypt here's an example of the new features combined for efficient dictionary searches. because expressions from argv are parsed after files, we have to put our first expression in it's own file :(. '-s -1' means to stop stacking after the first expression, so it will first check if it is even possible to match with any of the dictionary expressions. aspell -d en dump master | grep "^[a-z]\{5,5\}$" > len5dict.txt echo "[a-z]\{5,5\}" > 5a-z.txt ./tripex -n $(nproc) -s -1 -f 5a-z.txt -f len5dict.txt -----BEGIN FILE tripex-1.2.patch----- 13a14 > #define MAX_EXPRS 262144 18a20,23 > /* if i put this garbage on the stack instead of bss, it will segfault. */ > size_t n_exprs = 0; > regex_t exprs[MAX_EXPRS]; > 21c26 < fprintf(stderr, "usage: tripex [-Ehilnmsv] expressions\n" --- > fprintf(stderr, "usage: tripex [-Ef:hil:n:m:s:v] expressions\n" 22a28 > " -f\tread expressions from file (use '-' for stdin)\n" 28c34,46 < " -s\tstack expressions (logical AND)\n"); --- > " -s\tstack (logical AND) expressions before/after expr #n (negative for before)\n"); > } > > void appendExpr(regex_t exprs[], size_t *i, char *str, int re_flags) > { > /* avoiding malloc like the plague, simple and fast shitware! > * if you somehow need more than MAX_EXPRS, change it & recompile. > */ > if (*i >= MAX_EXPRS) > errx(EXIT_FAILURE, "no %s-kun! it's too many exprs, it wont fit!", getlogin()); > if (regcomp(&exprs[*i], str, re_flags)) > errx(EXIT_FAILURE, "failed to compile regex '%s'", str); > (*i)++; 34a53 > long stack_after = 0; 40c59 < while ((opt = getopt(argc, argv, "E:hil:m:n:sv")) != -1) { --- > while ((opt = getopt(argc, argv, "E:f:hil:m:M:n:s:v")) != -1) { 44a64,81 > case 'f': > FILE *fp = stdin; > if (strcmp(optarg, "-") != 0) > fp = fopen(optarg, "r"); > if (!fp) > err(EXIT_FAILURE, "couldn't open regex file '%s'", optarg); > > char *line = NULL; > size_t len = 0; > ssize_t nread; > while ((nread = getline(&line, &len, fp)) != -1) { > *strchr(line, '\n') = '\0'; > appendExpr(exprs, &n_exprs, line, re_flags); > } > > free(line); > fclose(fp); > break; 64a102 > stack_after = atol(optarg); 67c105 < printf("tripex 1.1 by taocana\n"); --- > printf("tripex 1.2 by taocana\n"); 73d110 < 81c118,121 < if (argc < 1) { --- > for (size_t i = 0; i < argc; i++) > appendExpr(exprs, &n_exprs, argv[i], re_flags); > > if (n_exprs < 1) { 86,91d125 < size_t n_exps = argc; < regex_t *exps = malloc(sizeof(regex_t) * n_exps); < for (size_t i = 0; i < n_exps; i++) < if (regcomp(&exps[i], argv[i], re_flags)) < errx(EXIT_FAILURE, "failed to compile regex"); < 97c131 < unsigned char key[key_len + 1]; /* dynamic array, bad form but i'm lazy */ --- > unsigned char key[key_len + 1]; 100c134 < for (size_t n = 0; !max_tries || n < max_tries ; n++) { --- > for (size_t n = 0; !max_tries || n < max_tries; n++) { 111,113c145,151 < for (size_t i = 0; i < n_exps; i++) < if (regexec(&exps[i], trip, ARRAY_SIZE(pmatch), pmatch, 0)) < if (sflag) --- > for (size_t i = 0; i < n_exprs; i++) { > int stacking = (sflag > && ((stack_after >= 0 && i >= stack_after) > || (stack_after < 0 && i < -stack_after))); > > if (regexec(&exprs[i], trip, ARRAY_SIZE(pmatch), pmatch, 0)) > if (stacking) 117c155 < else if (!sflag || i >= n_exps - 1) --- > else if (!stacking || i >= n_exprs - 1) { 118a157,159 > break; > } > } 123,125c164,165 < for (size_t i = 0; i < n_exps; i++) < regfree(&exps[i]); < free(exps); --- > for (size_t i = 0; i < n_exprs; i++) > regfree(&exprs[i]); 134a175 > /* unsigned for array lookups by character */ 152c193 < if (!code) --- > if (!code) /* doesn't fully handle crypt_r(3) errors yet */ |
11. |
Published: 2025-01-06 [Mon] 11:09, by |
古 蛙 水 池 飛 の や 込 音 む |
2. tripex 1.1 |
Published: 2025-01-05 [Sun] 06:05, by |
version 1.1, cryptography patch. i forgot to audit the cryptography; i made a huge boneheaded mistake with the key filter (thing that turns pure random bytes into printable ascii) where it was skewing a lot. now it uses an 85 character subset (256 % 85 = 1) which has a very tiny amount of skew but doesn't lose as much entropy as an unskewed 64 character subset of ascii would. the default key length is also increased to 10, so that it would be ~64 shannons of entropy total (a tripcode has 60 shannons.) here is the patch file, apply it to the original as follows: patch tripex.c tripex-1.1.patch then recompile the program as follows: gcc tripex.c -o tripex -O3 -lcrypt -----BEGIN FILE tripex-1.1.patch----- 36c36 < size_t key_len = 8; --- > size_t key_len = 10; 67c67 < printf("tripex 1.0 by taocana\n"); --- > printf("tripex 1.1 by taocana\n"); 167a168,175 > /* we must get printable ascii from a random byte, > * but 256 % 94 = 68 which leaves too much skew. > * quantizing into 64 chars won't skew at all, but > * it only has 6 shannons of entropy per character. > * an 85 character quantization only skews by a > * remainder of one, which is miniscule enough and > * we average 6.41 shannons per character. > */ 169,176c177,192 < "{dDOFByx8Jdo=C.{hFw:'p%m+]E-*}~4" < "O)YiM99y?%A)tldRIN4!fat`J|(iI+}h" < "]59P#T_Qx#h0q8w+F,$}Vo5Gq;<rw]Y~" < "k6>O~Ge,.DW9`hqhaSf#A.vrnhy`[2Ct" < "Bb6|7Mr+iJZG5.&7>?K@{D~6*Vs'H_*>" < "$Mh3R-F$Sp^.E5R-W1DnQzXC@Tf']xxt" < "o`GLO'Ui`S/v,aegU2HkE3Y6y!WZm%?k" < "aD/H=yH4vQg7dC*(Gx$vV[<vV?jw8s^d"; --- > "!#$%&'()*+,-./012" > "3456789:;<=>?@ABC" > "DEFGHIJKLMNOPQRST" > "UVWXYZ^abcdefghij" > "klmnopqrstuvwxyz~" > "!#$%&'()*+,-./012" > "3456789:;<=>?@ABC" > "DEFGHIJKLMNOPQRST" > "UVWXYZ^abcdefghij" > "klmnopqrstuvwxyz~" > "!#$%&'()*+,-./012" > "3456789:;<=>?@ABC" > "DEFGHIJKLMNOPQRST" > "UVWXYZ^abcdefghij" > "klmnopqrstuvwxyz~" > "~"; |
1. tripex tripcode finding software |
Published: 2025-01-05 [Sun] 00:04, by |
releasing version 1.0 of my tripcode finding program, 'tripex' compile the program as follows: gcc tripex.c -o tripex -O3 -lcrypt example #1; find tripcodes containing 'nice' (case insensitive): ./tripex -n $(nproc) -i nice example #2; find tripcodes starting with either 'giko' or 'mona': ./tripex -n $(nproc) ^giko ^mona example #3; find fully lowercase tripcodes with quads: ./tripex -s -n $(nproc) "^[a-z]*$" "\(.\)\1\{3,\}" untested on anything but GNU/Linux with glibc, but it would probably work on FreeBSD too. don't trust any update posts unless they have my tripcode or you can audit them yourself! -----BEGIN FILE tripex.c----- /* CC0-1.0 */ #include <err.h> #include <crypt.h> #include <regex.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/random.h> #define ARRAY_SIZE(x) (sizeof((x)) / sizeof((x)[0])) static unsigned char saltFilter[256]; static unsigned char rngFilter[256]; char *tripcode(const char *key); void usage(void) { fprintf(stderr, "usage: tripex [-Ehilnmsv] expressions\n" " -E\tuse extended regular expressions\n" " -h\tshow usage\n" " -i\tignore case\n" " -l\tkey length\n" " -n\tnumber of threads\n" " -m\tmax number of tries (per thread!)\n" " -s\tstack expressions (logical AND)\n"); } int main(int argc, char *argv[]) { int re_flags = 0; int sflag = 0; size_t n_procs = 1; size_t key_len = 8; size_t max_tries = 0; int opt; while ((opt = getopt(argc, argv, "E:hil:m:n:sv")) != -1) { switch(opt) { case 'E': re_flags |= REG_EXTENDED; break; case 'i': re_flags |= REG_ICASE; break; case 'l': key_len = atol(optarg); if (key_len < 1) errx(EXIT_FAILURE, "key length must be at least 1"); break; case 'n': n_procs = atol(optarg); if (n_procs < 1) errx(EXIT_FAILURE, "need at least one process"); break; case 'm': /* ! PER THREAD ! */ max_tries = atol(optarg); if (max_tries < 1) errx(EXIT_FAILURE, "need at least one try"); break; case 's': sflag = 1; break; case 'v': printf("tripex 1.0 by taocana\n"); return EXIT_SUCCESS; case 'h': /* FALLTHROUGH */ default: usage(); return EXIT_FAILURE; } } argc -= optind; argv += optind; if (argc < 1) { usage(); errx(EXIT_FAILURE, "need at least one expression"); } size_t n_exps = argc; regex_t *exps = malloc(sizeof(regex_t) * n_exps); for (size_t i = 0; i < n_exps; i++) if (regcomp(&exps[i], argv[i], re_flags)) errx(EXIT_FAILURE, "failed to compile regex"); for (int i = 1; i < n_procs; i++) if (!fork()) break; regmatch_t pmatch[1]; unsigned char key[key_len + 1]; /* dynamic array, bad form but i'm lazy */ key[key_len] = 0; for (size_t n = 0; !max_tries || n < max_tries ; n++) { if (getrandom(key, key_len, 0) < 0) err(EXIT_FAILURE, "failed to get random key"); for (int i = 0; i < key_len; i++) key[i] = rngFilter[key[i]]; char *trip = tripcode(key); if (!trip) err(EXIT_FAILURE, "failed to generate tripcode"); for (size_t i = 0; i < n_exps; i++) if (regexec(&exps[i], trip, ARRAY_SIZE(pmatch), pmatch, 0)) if (sflag) break; else continue; else if (!sflag || i >= n_exps - 1) printf("%s %s\n", trip, key); free(trip); } for (size_t i = 0; i < n_exps; i++) regfree(&exps[i]); free(exps); return EXIT_SUCCESS; } char *tripcode(const char *key) { /* we don't do any sjis conversion, but who cares anyway? */ if (strlen(key) == 0) return NULL; unsigned char *tempKey = malloc(strlen(key) + 2); if (!tempKey) return NULL; strcpy(tempKey, key); strcat(tempKey, "H."); unsigned char salt[3]; for (int i = 0; i < 3; i++) salt[i] = saltFilter[tempKey[i+1]]; salt[2] = 0; free(tempKey); struct crypt_data data; bzero(&data, sizeof(struct crypt_data)); char *tempCode = crypt_r(key, salt, &data); unsigned char *code = malloc(strlen(tempCode) - 3); if (!code) return NULL; strcpy(code, tempCode + 3); return code; } static unsigned char saltFilter[256] = "................................" ".............../0123456789......" ".ABCDEFGHIJKLMNOPQRSTUVWXYZ....." ".abcdefghijklmnopqrstuvwxyz....." "................................" "................................" "................................" "................................"; static unsigned char rngFilter[256] = "{dDOFByx8Jdo=C.{hFw:'p%m+]E-*}~4" "O)YiM99y?%A)tldRIN4!fat`J|(iI+}h" "]59P#T_Qx#h0q8w+F,$}Vo5Gq;<rw]Y~" "k6>O~Ge,.DW9`hqhaSf#A.vrnhy`[2Ct" "Bb6|7Mr+iJZG5.&7>?K@{D~6*Vs'H_*>" "$Mh3R-F$Sp^.E5R-W1DnQzXC@Tf']xxt" "o`GLO'Ui`S/v,aegU2HkE3Y6y!WZm%?k" "aD/H=yH4vQg7dC*(Gx$vV[<vV?jw8s^d"; |
2. |
Published: 2024-12-30 [Mon] 04:25, by |
I don't like it at all but a drop/get all button would be an ok solution if too many people like the feature |
1. Streams open by default |
Published: 2024-12-30 [Mon] 04:17, by |
As a limited experiment, all streams are open by default when you join. How do you feel about this? Is it good or bad? Should there be a button somewhere to open/close all streams? I prefer if you share your opinions with your name so I can go with what the community wants, per this issue. Thank you and happy holidays |
1. merp! |
Published: 2024-12-26 [Thu] 00:07, by |
merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp |
2. |
Published: 2024-12-22 [Sun] 17:09, by |
Glad you're alive boardsmin! I don't think anyone here has your email address, but come play Gikopoi before the end of the year if you can :) I'm sure there'll be quite a few people showing up between Christmas and New Years wishing you well |
1. hello, old friends ^___^ |
Published: 2024-12-20 [Fri] 09:08, by |
doubt anyone remembers me around this corner of the internet anymore, but im indeed still around!! just lurking now can't beleaf it's been almost 8 months (?) since i last posted on one of these BBSes... i guess im posting here specifically because of its memorable-ness???? time flies man!!!!! i recently got into baking, i made a really good strawberry cake yesterday. im also an alcoholic now #lifesgood boards is still alive-iiiishhh, and it's about to turn a year old!! ive moved on to newer things, though. pikidiary is my new microblogging site, heavily inspired by its boardsian roots. much more normie-y, but still fun. anyways, i miss a lot of y'all!! email me if you know who i am (*´︶`) cya around!!!! |
9. |
Published: 2024-12-16 [Mon] 18:48, by |
Does The Sixth Sense count? me and waifu saw that recently and we had a lot of fun. Kind of a horror movie, kind of a detective movie... make sure to watch it without spoilers :) |
25. |
Published: 2024-12-05 [Thu] 17:45, by |
Recently produced ~12 liters of "low wines" from sugar washes. Biggest game changer in my fermentation for distillation lately: I add a tablespoon or two of diammonium phosphate and tiny pinch of magnesium sulfate per ~20L of ferment I do. Seems to make a pretty big difference: ferments go faster and cleaner. Picked up about 200g of baking soda (sodium bicarbonate) today and converted it to washing soda (sodium carbonate) by throwing it in a saucepan on the stove at a low heat and constantly stirring. Sure enough, I could see the powder "boiling" -- despite wearing a face mask, some funky smells came through. After about 20 minutes or so, the texture of the powder appeared to change, and the powder seemed to stop reacting. Spilled a little in the process. Post-cook weight of sodium carbonate was about 120g which is consistent with the theory. Tomorrow I'll be throwing my 12 liters of "low wines" into the pot still with 3-4 liters water and 4 tablespoons of washing soda. This should result in a large volume of hearts, which will be turned into... gin! this Saturday. Stay tuned for updates. |
3. |
Published: 2024-12-01 [Sun] 14:55, by |
tes |
2. |
Published: 2024-11-18 [Mon] 02:18, by |
Set up an XMPP server too. Contact me on Matrix or somewhere else for an account, if interested. |
27. |
Published: 2024-11-18 [Mon] 00:43, by |
[2024-11-18 00:38:14] gyudon_addict◆hawaiiZtQ6: persist this cock, persist these balls |
1. Matrix server launched |
Published: 2024-11-17 [Sun] 15:51, by |
In the past I have hosted matrix-synapse servers on multiple occasions; resource consumption was always the limiting factor that led me to pull the plug on them. Maybe someday I'll launch an XMPP server. Until then, please enjoy using our matrix-conduit server. Say hi in #lounge:gikopoi.com or swing by the #relay:gikopoi.com room to chat with our discord and irc friends. |
26. |
Published: 2024-11-15 [Fri] 13:38, by |
Archduke: what caste is your gf |
10. |
Published: 2024-11-14 [Thu] 21:25, by |
zzazzachu: >ginsberg zzazzachu: crooooooooognge zzazzachu: slam poetry tier shite zzazzachu: life is shit, capitalism. sucking cock. the material world. zzazzachu: - "The World" zzazzzachu zzazzachu: caravans, moving homes zzazzachu: the hum of the diesel engine zzazzachu: the sound of freedom zzazzachu: I take a drag zzazzachu: - "The FreeHum" zzazzachu zzazzachu: in summary, ginsberg is shit and anyone can write that fake deep garbage zzazzachu: he's a total fraud |
8. |
Published: 2024-11-05 [Tue] 20:02, by |
El Topo is a good one - a psychedelic Western released in 1970. It's about a gunslinger in a nameless desert searching for enlightenment. The movie deals heavily in Western and Eastern spiritual symbolism and philosophy. A lot of bizarre occurences and characters - the movie at parts is very surreal and almost comedic and in others is dramatic or very violent. It's been watched by and has inspired a lot of creatives and in my opinion should be watched at least once by anybody who says they enjoy cinema. |
4. (optional) |
Published: 2024-11-02 [Sat] 08:40, by |
in nostr - if Relay & Client go offline, where is content hosted? - Relay stores content. Does it store entire archive of whole network? And able to read and see data stored & who posted what. Or be flooded. - nostr seems like can't run decentralized sql, same poroblem of web3, ipfs (thats hosts only static content) |
4. |
Published: 2024-10-30 [Wed] 22:53, by |
/ ヽ / /i ヽ ___ / / .! 1 '、 _/ : : `:> / i. ! | |、 i Yi:ー==く / | l, 1 | 、 、1 1 __,ノ ゝ=='7’ / i _l,L..、ヽ ヘ '''T'弋-. V| } ,>'''^´ ' 、 ' ,ィ i .ィ7´ハ. \ヽ } 丶 i、 i| /::´-‐:::.::::::.:::.:::ー-:..ヽ /./ | | /}∥ マi、 `'ゝ り ヽ ト、 i} .∥:::.:::.:::.:::.:::.:::.:::.:::.:::.:::.::ハ / | 1 / リ i\ i ./リ _,,..、、,ユi_ヽi}. ∥__:::.:.::: :::.:::.:::.:::.: ::.:::.:::.} '´ | l.../ _ムxr=ュミト ヾ`ーゝノ゙斤^::心 `》j! ∥  ̄`^,,, ‐- 、:::.:::.:::.:::j { Yィi^ .わ^n;::h ´ {T::.゚:::ノ'} '/ ∥ `''ヾ7 1 い い、::゚ィリ ヾニ=‐′/ ,ィ∥ .′ }. ヽ '、 `'ー‐'゚ , , , , //..,/) ' l'、 \ '、 , , , , '´ /i/./''フ ┌v'^! | ゙、 .弋^ _,.._ .'/´,.ィ'´'"_フ ,, fヘ, l V { } ヽ ト .> (. ) イ7/_r≠'^フ r、人 ヾ. V} } i. ヘ, | i>.、,_ ,..イ... / / ,.ィ'''~ ヘ、`ミi, Y .}! :! | 'ミ=k,_,{ィ亥 | ...i:`:ト- - '^.{.....i.. 7 / ,\ ヽ V〈 j! } <少'^トミミk.j ,:r‐'1 | ̄`V ,F'''':::ー:...、,__ ` \ } ' '7 '″.| Y:_,...ノ≠ V'} ^''1∥ ∥:::.:::.::.:::.:::.:::.  ̄``:-.、,_ ./ .′ / /7 _,.x‐| 1 ヽ | i ∥:::.:::.:::.:::.:::.:::.:::.:::.:::.:::.::::;;/ j / / jィニh、| '、 ヽ ,....、 .r‐‐j7 {-ー-::.、,_:::::.:::.:::.:::.:::.:::;:;/ j / / /二ニニ{ トx. ヘ √く,_ `'7-=、:::.:::.``丶:、:_:.:::;:;{ jL.、 . . . |
6. |
Published: 2024-10-30 [Wed] 22:46, by |
weird, cuz gikopoi works only with JS turned ON. And normies in tor don't want it. >(yet mentally ill) don't automatically assume everyone else is diagnosed with same stuff as you. in the era of mass survelliance (IDK HOW TO SPELL IT CORRECTLY ! SIC , me being retarted) , wars, oppression, geo locks ... many people flow towards tunnels / anonymity / privacy |
5. |
Published: 2024-10-30 [Wed] 22:38, by |
it allows to spread the honest truth - which is valuable without being persecuted for it - which is very valuable >Anonymity lowers the barrier to entry it doesn't. it may require registration, and darknets+floss aren't easy nor popular. The main purpose of imageboards is said in my first 2 lines, which was formed by og Strange World ayashii author. You don't know history, you vernacular grug. Look at eternal summer, eternal september and how BBS spawned out of usenet groups. Chelsea Manning playing water polo in pool full of tears reading your shitpost. >Anonymous communities have no means by which to gatekeep they have, sometimes, iq captcha. Your post not passing it, do better, always strive for better. |
5. |
Published: 2024-10-29 [Tue] 19:23, by |
for those that don't already know, the tor ban has been reinstated after spammers abused in the game. i can't shake the unfounded feeling this has something to do with recent harassment of tor relay operators. the attacker is port scanning honeypots with spoofed source addresses of the relays to get abuse reports sent. https://gitlab.torproject.org/tpo/network-health/analysis/-/issues/85 concerted effort to get tor banned everywhere? who's to say. |
3. |
Published: 2024-10-28 [Mon] 17:01, by |
>>2 n i n n & F I ( S o t o o e a o s s s w e d n r t m t t h l o d r r a r r a s n y y t ' O j i m l t h i u p s a " i , f s o y R k n t s n e e e b m s o s l e t e p e t e a t d w r s e y h b e s m " e t d e v s e r w o i e a r l i e i n n n m v i s t ' g t e e k a t t s r e j r e a u l u e r u s n e s s s b p r s l t m a e i a e s i o n t m s , g r r a c o h e e l e d i l n t i o n o s v o l n f g t w s e r y c u u r n u d a n e a e e p p r d , l r p 2 o n a i & r p l a m z o o . i t e I e n a b s i n d d l a h o t n n d e n e n a e p o s m d l e r s s n o s d o t t o r f p r r o s e t p r . u f t b e h 2 i s r i c a p e t i r h t t p r t o j a t f e h n i r o s l m e r y / a o a e a t w y f i d . g h e l ! e b w w i t t 3 h e n o h e . o b g u q 3 l b b u " i e ) a h p s . t o o t r i s i e o t n c s n s t o o . " n l 2 f v c e e l o r d i r r . e e n s n S t c c p u e a c t . m o t n l i t e s e b n u n t t o t t m . a t y h e g o # 1 o f b f i l g i g n e e s . t i s s u e i n t h e b l o c k . T h e u s e r i n v o l v e m e n t i s . B B S d o n ' t h a v e e n o u g h u s e r c o n t r i b u t e d c o n t e n t . |