News for hackers. Stuff that matters.
Re:You either die an MVP or live long enough to build conten... by Y_Y on Tuesday September 28, 2021 @12:53PM (#28684882)
If your eyes can "normalize" a unusual symbols to a common one to make an English word then so can a lookup table. I feel like this isn't a case where you'd reach first for a neural net.
Re:You either die an MVP or live long enough to build conten... by jffry on Tuesday September 28, 2021 @01:25PM (#28685229)
In fact, the Unicode consortium provides a report and extensive list of "confusable" symbols, which you could use alongside Unicode normalization tables to map adversarial back into more ASCII-equivalent text before running it through anti-spam mechanisms that are interested in the content of the message.

https://www.unicode.org/reports/tr39/

Re:You either die an MVP or live long enough to build conten... by wanderingstan on Tuesday September 28, 2021 @01:36PM (#28685341)
I built a Python library for finding strings obfuscated this way. Was critical when moderating our telegram channel before an ICO.

https://github.com/wanderingstan/Confusables

E.g. "๐“—โ„ฎ๐ฅ1เณฆ" would match "Hello"

Re:You either die an MVP or live long enough to build conten... by Alir3z4 on Tuesday September 28, 2021 @01:40PM (#28685370)
I should have had better eyes while searching, could find this and saved some hours.
Re:You either die an MVP or live long enough to build conten... by jffry on Tuesday September 28, 2021 @02:01PM (#28685602)
I only learned about it myself after spending too long building my own half-baked version. I think it's in pretty opaque language that makes it hard to find even if you know what you want.

Maybe somebody else on here will see it and learn about it before they need it, and at least you still have a new tool to reach for in the future.

Re:You either die an MVP or live long enough to build conten... by mr_toad on Tuesday September 28, 2021 @08:49PM (#28689154)
What I donโ€™t understand is who sees spam that looks like an old school ransom note and thinks โ€˜seems legitโ€™, and then actually buys something?
Re:You either die an MVP or live long enough to build conten... by airstrike on Tuesday September 28, 2021 @02:08PM (#28685680)
You should post this to Show HN. Also you have a typo on your README ("characgters")
Re:You either die an MVP or live long enough to build conten... by jart on Tuesday September 28, 2021 @03:38PM (#28686564)
The one built-in to Python will get you most of the way there:

    >>> import unicodedata
    >>> unicodedata.normalize('NFKD', '๐“—โ„ฎ๐ฅ1เณฆ๐—ต๐—ฒ๐—น๐—น๐—ผ')
    'Hโ„ฎl1เณฆhello'
Obviously it isn't going to remap leetspeak characters like 1 -> l but it covers a lot of cases.
Re:You either die an MVP or live long enough to build conten... by zerocrates on Wednesday September 29, 2021 @12:40AM (#28690372)
Obviously you're saying it doesn't cover everything, but a big thing it's not going to catch beyond leetspeak-type situations is the kinds of thing you (used to) see in internationalized domain spoofing: legitimate non-Latin-script letters that just look the same or nearly the same.

NFKC/NFKD will handle "this is another form of the Latin letter A" type stuff but not "Cyrillic A looks like Latin A."

Re:You either die an MVP or live long enough to build conten... by wanderingstan on Tuesday September 28, 2021 @02:19PM (#28685809)
Thanks, I've fixed the typo! It was such a simple project, hardly seems worthy of a "Show HN".
Re:You either die an MVP or live long enough to build conten... by jonplackett on Tuesday September 28, 2021 @02:48PM (#28686078)
I've seen crazier things get to #1
Re:You either die an MVP or live long enough to build conten... by 8note on Tuesday September 28, 2021 @03:03PM (#28686196)
Test for the library: would it catch that that typo still refers to characters?
Re:You either die an MVP or live long enough to build conten... by JanisL on Tuesday September 28, 2021 @07:39PM (#28688720)
Thank you for making this!
Re:You either die an MVP or live long enough to build conten... by jonplackett on Tuesday September 28, 2021 @02:46PM (#28686063)
There should be a 'bad symbols' list you can block like you do expletives. There's surely zero need to support that kind of thing in comments.
Re:You either die an MVP or live long enough to build conten... by jcims on Tuesday September 28, 2021 @07:18PM (#28688581)
One term used to describe this is homoglyph, as in homoglyph attacks for phishing.

Back in 2015 I did some work just using simple bitmap rendering plus OCR to find text that looked like a small selection of known words. It was actually reasonably effective.

Re:You either die an MVP or live long enough to build conten... by nradov on Tuesday September 28, 2021 @01:10PM (#28685068)
Those are known as homoglyphs. This issue has been studied and best practices are documented. There's no complete solution but it can be mitigated.

https://en.wikipedia.org/wiki/Homoglyph

Re:You either die an MVP or live long enough to build conten... by dredmorbius on Wednesday September 29, 2021 @05:58AM (#28691894)
All kinds of possibilities there.

Unicode Character โ€œอพโ€ (U+037E) is a beaut.

https://news.ycombinator.com/item?id=28621681

Re:You either die an MVP or live long enough to build conten... by Alir3z4 on Tuesday September 28, 2021 @01:14PM (#28685110)
Yeah, then someone has to create or find that whole table and make.

The initial problem wasn't those symbols but the content itself, the symbols and special characters came into the problem later.

Later on as mentioned in my original comment, that they would use positive content from other blog posts that were published/passed the moderation to mix up their bad content.

Probably could use a different method, but at that time needed something quick and fast and it worked and still works with very little tweaking.

Although we don't have massive amount of threats or abusers anymore to exactly know the effect, but again, so far it works.

That time, they would coming several thousands per minute, IP blocking, range blocking, USER AGENT, captcha or anything such didn't work on them.

Re:You either die an MVP or live long enough to build conten... by jffry on Tuesday September 28, 2021 @01:27PM (#28685246)
The good news is that the Unicode consortium has a report on this issue, and the tables already exist for normalization and mapping of confusables to their ASCII lookalikes: https://www.unicode.org/reports/tr39/
Re:You either die an MVP or live long enough to build conten... by Alir3z4 on Tuesday September 28, 2021 @01:32PM (#28685300)
Oh, that's nice.

I guess I can use that next time time to work on the data cleaning for that model.

Thanks.

Re:You either die an MVP or live long enough to build conten... by wanderingstan on Tuesday September 28, 2021 @04:59PM (#28687433)
As I commented above:

I built a Python library for finding strings obfuscated this way. Was critical when moderating our telegram channel before an ICO. https://github.com/wanderingstan/Confusables E.g. "๐“—โ„ฎ๐ฅ1เณฆ" would match "Hello"

Re:You either die an MVP or live long enough to build conten... by infogulch on Tuesday September 28, 2021 @01:47PM (#28685449)
If you can identify text written with mixed glyphs just ban it outright. Normal users don't use text like this, the pure binary presence of such "homomorphic" text at all is probably a better signal for spam than whatever your neural net when running it after normalization.
Re:You either die an MVP or live long enough to build conten... by chefandy on Tuesday September 28, 2021 @02:10PM (#28685706)
> Normal users don't use text like this

I think that depends on the users. People copying and pasting bits of text that was in English or another common languageโ€” think documentation, code, news articles, tweets, etc.โ€” with a different character set could be problematic.

Also, ๐’ฎโ„ด๐“‚โ„ฏ ๐’œ๐“…๐“…๐“ˆ marketed as "๐”ฝ๐• ๐•Ÿ๐•ฅ๐•ค ๐•—๐• ๐•ฃ ๐•ค๐• ๐•”๐•’๐• ๐•ž๐•–๐••๐•š๐•’" would be โ„ญ๐”ž๐”ฒ๐”ค๐”ฅ๐”ฑ ๐”ฒ๐”ญ ๐”ฆ๐”ซ ๐”ฑ๐”ฅ๐”ฆ๐”ฐ. (math symbols) A user base with young people getting bounced or shadow banned for trying to express themselves or distinguish themselves from their peers would be like เฒ _เฒ  (Kannada letter ttha)

I think targeting the language they're using is a better bet.

ยฏ\_(ใƒ„)_/ยฏ (Hirigana letter tsu)

Re:You either die an MVP or live long enough to build conten... by ronsor on Tuesday September 28, 2021 @03:05PM (#28686209)
I can especially echo the "social media fonts" trend. They're quite popular on certain Discord guilds at least.

Minor nitpick, but ใƒ„ is the katakana tsu.

Re:You either die an MVP or live long enough to build conten... by chefandy on Tuesday September 28, 2021 @06:22PM (#28688189)
Oh, fact. Not a Japanese speaker. (or reader)
Re:You either die an MVP or live long enough to build conten... by cutemonster on Tuesday September 28, 2021 @10:07PM (#28689534)
> pasting bits of text that was in English or another common language

If they use many (maybe three? four? or more) character sets in the same post, or different character sets in any single word, then that'd be highly suspicious?

Whilst still letting people copy paste from another language

Special case needed for the shoulder shrug with an Hirigana letter tsu I mean katakana tsu

Re:You either die an MVP or live long enough to build conten... by zerocrates on Wednesday September 29, 2021 @12:44AM (#28690388)
I've noticed much more usage of alternative Unicode ranges for numbers/letters in email subjects lately to make marketing messages stand out, too (in addition to emoji of course), though I wouldn't necessarily mind banning that...
Re:You either die an MVP or live long enough to build conten... by v_london on Tuesday September 28, 2021 @04:49PM (#28687321)
Bizarrely, I'm seeing recruiters using this on LinkedIn.
Re:You either die an MVP or live long enough to build conten... by chefandy on Tuesday September 28, 2021 @06:23PM (#28688201)
huh. For any specific purpose? Does it seem like they avoiding paying for recruiter accounts or something by evading algorithms designed to detect their activity, or is it just for the heck of it?
Re:You either die an MVP or live long enough to build conten... by TheSmiddy on Tuesday September 28, 2021 @07:50PM (#28688797)
It's following some business wank advice to stand out from the crowd like printing your resume on A3 card stock.
Re:You either die an MVP or live long enough to build conten... by chefandy on Wednesday September 29, 2021 @02:58PM (#28698268)
Ah. Sounds like something one of those pickup artists would say if they blindly pivoted into marketing.
Re:You either die an MVP or live long enough to build conten... by NavinF on Tuesday September 28, 2021 @03:00PM (#28686176)
> Normal users don't use text like this

Sounds like you live in a filter bubble.

(โ•ฏยฐโ–กยฐ)โ•ฏ๏ธต โ”ปโ”โ”ป

(๏พ‰โ—•ใƒฎโ—•)๏พ‰*:๏ฝฅ๏พŸ

Re:You either die an MVP or live long enough to build conten... by jart on Tuesday September 28, 2021 @03:44PM (#28686646)
I know right? There are so many times when I've wanted to use something like box drawing unicode characters (cp437) to explain a complicated concept on hacker news, but alas I couldn't, due widespread computer fraud and abuse. How are we going to build a more inclusive internet that serves the interests all ALL people around the world, regardless of native language, if the bad guys are forcing administrators to ban unicode? (โ•ฏยฐโ–กยฐ)โ•ฏ๏ธต ฬฒโ”ปฬฒโ”ฬฒโ”ป
Re:You either die an MVP or live long enough to build conten... by falcolas on Tuesday September 28, 2021 @02:05PM (#28685654)
> Normal users don't use text like this

They kinda do. Check out the shrug "emoji", table flip, and so forth. Then there's the meme of adding text above and below by abusing Unicode's "super" and "sub" modifications.

You could block it to only ever represent ASCII, but then you've knocked out the ability to expand internationally.

Re:You either die an MVP or live long enough to build conten... by tgsovlerkhgsel on Tuesday September 28, 2021 @03:27PM (#28686459)
You can hardcode a rule for this specific bypass. Or you just retrain the neural net, and it learns that presence of these symbols = bad very quickly, and you spent less time writing and testing a custom solution.