PazerOP / tf2_bot_detector

Automatically detects and votekicks cheaters/bots in TF2 casual.
MIT License
404 stars 56 forks source link

Detect Invisible Characters #204

Open id-rotatcepS opened 3 years ago

id-rotatcepS commented 3 years ago

I forgot I did a debug report a few days ago. Attached. I think it was just somebody with bad characters in their name used to blank out the chat, but it seemed fancier than that. debug_report.zip

ClusterConsultant commented 3 years ago

Snippet.txt This could be used to help identify new name stealing bots. I've attached a snippet that contains the message in question. It is just using new lines to 'clear' chat by just pushing it up. From what I can tell the special characters used are U+200E (Left-To-Right Mark), U+200D (Zero Width Joiner), U+200C (Zero Width Non-Joiner), U+200B (Zero Width Space), U+2060 (Word Joiner), U+202C (Pop Directional Formatting), U+FEFF (Zero Width No-Break Space), and finally the U+200F (Right-To-Left Mark).

ClusterConsultant commented 3 years ago

There has been a lot of discussion over on the discord about the merits of catch all rules for zero width (and other non-rendered) characters.

The general break down is around the fact that there are users who are not cheating who do have these characters in their name. While there may not be a true good intention use case for a user ever having certain characters (e.g. 200B) there are legitimate uses for others (e.g. 200F).

Right now the plan seems to be an implementation of transient rules that kick (call vote kicks against) but don't ban (add to users list). This will still annoy users who choose to use these characters but these users are already pretty rare so this should be a good stopgap measure. Also I'm going to rename this issue to directly be about the usage of invisible characters in a players name