Jump to content

- Absolute -


[::X-System::]

Recommended Posts

@x-system: from memory...

 

guarddog provided a lot better support than just the simple on text stuff, where users could use the dialog i provided to make their own kicks based on the inputs. i may not have had regular expressions implemented (just with my lack of knowledge 5+ years ago when i made it, but it would be easy as now), but Choke Chain Protection definitely had all the bells and whistles for the majority of user protections.

 

as for buffering, mIRC has had that on it's own for donks, though it wasn't very good i found, not for MSN type scripts. Thanks to Petertje, and a tweak of my own, i already had a buffering system in guarddog. I could eliminate 900 flood bots in an MSN room, without getting kicked. This can be backed by several people who witnessed it in action, travis for one. and i believe this has continued on in other works such as soulfly, and warriors' stuff. so buffering is definitely not new.

 

the example you provided to say that the regular expression would never have false positives is very incorrect. Given my knowledge of regular expressions, " ck ", " dck", "ddddddddddck", etc. would trigger the regular expression you provided as an example as not delivering "false positives". From my knowledge a * would mean 0 or more of the previous character/syntax. If it works differently (to say that * means that it is just a substitute for a character, like iswm would use), how about " dock "? You cannot tell me that regular expressions are full proof either. They are just as flimsy as isin and iswm. However, it does definitely provide more power and ability to cover a larger range, and that, so i do applaud you for implementing better techniques... but yes, regex has been used for quite some time.

 

And as for banning via regular expressions, i believe it was a limitation of the server, not our ability, which meant we couldn't do it that way.

 

 

I don't mean to tear down your work, but I will tear down your attitude if you don't fully understand that much of what you've done has been done before in some form or another. It is good to do it yourself, and perhaps you will find better ways to do things. Respect is the number one thing. You must respect those that came before you for the fact that much of your understanding of what you're doing now, came from their work. Whether that be something like Kenobi which was MSN only, or an IRCd script.

 

 

 

@dj: lol, you did love those whistles... what about the bells? :P

 

in general: i though MSN was the most abused of all. I though IRCd was the most protected server side, and that it didn't exactly need things like flood protection to be created cause the server normally takes care of it? or was that a misconception?

Edited by The Gate Keeper
Link to comment
Share on other sites

  • Replies 44
  • Created
  • Last Reply

Top Posters In This Topic

And as for banning via regular expressions, i believe it was a limitation of the server, not our ability, which meant we couldn't do it that way.

 

That is true. You can't do many things with regex unless you use an alias to accomplish what you need. That is what I did in Chat Guardian. My code made it to look for certain words, and performed an alias command to kick, and/or ban if Chat Defender was activated for that room. I am currently refining the code, and will have a new one available soon.

Link to comment
Share on other sites

@The Gate Keeper

 

The * in D*ck isn't a literal, its just coz i can't type D!ck on the forum, it'll be modified to something else, so yes regex is totally error proof specially with /\b ... \b/ around the pattern.

 

I sure know that what I've done has been done before in some form or another, I stated that clearly actually, and i also stated that most if not all of these previous attempts would be below average if compared to nowadays scripting skills and evolution, and that for sure is a fact.

 

Hybrid, for example, didn't have a real spam/swear kicking system, it only had a .mrc file with loads of on text events, one for each word/token, which is totally pathetic and a total waste of space & system resources, leaving aside the script's performance itself. Loops, hash tables, regex and all types of functions that could made the job easier did exist back then, yet the author chose to do it the noobish buggy speed-killing way. That's why i'd call these scripts "Below Average"

 

About banning via regular expressions, ofcourse you don't use the "server" to ban regex patterns, not on IRCx or IRCd servers. You use regex to match patterns and hunt them down, so it's not about server limitations coz its not a server side issue in the first place. Regex existed since creation of mirc but no scripter actually bothered to learn it except for eXonyte if i remember correctly.

 

It's just an example off the top of my head, but check how swear/spam kickers were on kenobi and hybrid, and now imagine them properly coded with loops and regex matching and a cache file with patterns like /fag?(?:g?[eio]t)?/ or /ass?(?:h[o0]le)?/ and do the math :) yet again, authors always chose the easy way of using basic bitwise operators like isin and iswm, or even worse: writing a full event for each single word. So yeah, i do think all the examples you stated are below average, coz - again - the methods i just stated in my examples are no magic, loops and regex and everything else existed back then, but were not used for some reason.

 

Separate commands is another thing i always hated about these scripts: doing command | command 2 | command 3 instead of using $crlf when/if possible was a common pitfall everyone had in their scripts, and worse: seeing scripts doing sockwrite -tn ... | sockwrite -tn ... | sockwrite -tn ... in kenobi, instead of using $lf to achieve faster performance.

 

I could keep counting pitfalls and weak points that could have been put in a way better/faster and more stable ways all night, but i'm just pointing out examples on the fly.

 

About booting 900 flood bots, that my friend can't be called a botnet attack. MSN never had a sendQ/rcvQ, not like IRCd nets have got anyways. MSN was way less strict regarding the buffer you send to the server, and the buffer the server sends you.

 

For whoever don't know what Sendq/RcvQ are, and what makes them a pain in the neck and makes MSN prots a piece of cake compared to IRCd, here's a short intro:

On an IRCd server, there is a Send Queue and a Receive Queue for each client. The Send Queue (or SendQ) is used to store data that is waiting to be sent from the server to the client. The Receive Queue (RecvQ) is used to hold data that was received from the client for processing.

 

When the server reads data from the client, the data goes into the RecvQ. The server will process the data a line at a time as commands. The server also keeps a variable associated with each client. This variable (dubbed 'since') will be less than or equal to the server's current time value while the client is idle. Each time the server reads and processes a command line from the RecvQ, it increments this value by 2 seconds. If the line is particularly long, the variable is also increased by $int($calc($len($1-) / 120)), where $1- is the line that was read. This is to say, for each multiple of 120 the length of the line is, an additional 1 second is added to the 'since' variable. When the server reads a command from your RecvQ, it skips processing that command if the 'since' variable is more than 10 seconds ahead of the current time.

 

In simpler terms, if you pasted 10 lines to a channel, 5 of them would show to everyone right away, and the other 5 would come through every two seconds or so.

MSN had none of the above, and i could safely assume that most scripts could boot 900 bots and even more in an eye blink, coz none of the above issues were to be taken in consideration, leaving aside that botnet attacks - ones that i see all the time - are usually 3000+ drones, and it takes alot more than luck to block such attacks

 

Least but not last, the "much of your understanding of what you're doing now, came from their work" is entirely false. I learned what i learned by myself and mIRC's help file. The only help i admit asking for is regex help, and i don't recall asking anyone for help except for eXonyte and a couple of Undernet scripters. I totally respect Ozzy and the time he dedicated to mIRC scripting, but by the time Kenobi was being made, i was writing proxy leechers and mIRC based tunnels.

Edited by [::X-System::]
Link to comment
Share on other sites

it's using a HORRIBLY long regex to match all types of urls, even the evading type ending with stuff like .c0m etc. ;)

Why makes you think that a regex has to be long to match all types of url, including the so-called evading type:
 if ($regex($1-,/(?<=^|\s)((?>\S{3,8}:\/\/|w{3}\56)\S+)/iS)) {

Edited by Fanfare
Link to comment
Share on other sites

If you reckon spammers will use something like come to blah.com or blah.tv or blah.org etc...without using http:// or www. , just modify the regex a bit to this:

if ($regex($1-,/(?<=^|\s)((?>\S{3,8}:\/\/|w{3}\56)\S+|\S+\56\S{2,3})$/iS)) {

This should cover every kind of url links.

Edited by Fanfare
Link to comment
Share on other sites

while you were writing proxy leechers and mIRC based tunnels. i was out getting laid :P

u win :<

 

Why makes you think that a regex has to be long to match all types of url, including the so-called evading type:
 if ($regex($1-,/(?<=^|\s)((?>\S{3,8}:\/\/|w{3}\56)\S+)/iS)) {

Here is your regex being tested against some false positive patterns, and returned true on all of them:

Result : 1 -- [1] http://www.

Result : 1 -- [1] www.com

Result : 1 -- [1] www./////////

Result : 1 -- [1] SCREW://YOU

Result : 1 -- [1] http://F

 

do you still think it's good? :)

If not, feel free to use mine:

; usage $isurl( )

alias isurl {
  var %p = /(?:^|[][()<>{}'"\s])((?:(?:irc|s?ftp|https?:)\/\/|www\d*\.)[^\s./]+\.(?:\[\S*?]|\(\S*?\)|\{\S*?}|[^][()<>{}'"\s]|['"](?!\s|$|[()\[\]<>]))++)/giS
  if ($regex($1,%p)) { 
    var %i 1, %rgml
    while ($regml(%i)) {
      %rgml = %rgml $ifmatch
      inc %i
    }
    return %rgml
  }
  else { return $false }
}

 

* Edit: just for the hell of it..

/(?:ftp:\/\/|https?:\/\/|www2?\.)[^<>\.\s]+(?:\.[^<>\.\s]+)+(?:\/[^<>\.\s]+)*|irc:\/\/[^<>\.\s]+(?:\.[^/<>\.\s]+)+(?:\/[^/<>\.\s]*)?\/?(?![^\s\x2c\.])|aim:goim\?screenname=[^\s&]+(?:&message=[^\s&=]+)?/

B)--~

Edited by [::X-System::]
Link to comment
Share on other sites

But who in the world would enter those false positive patterns you listed to spam? Chances are not that great. Besides, if anyone enter: come to blah.com etc.. without http:// or www. yours will return false.

check my edit :) and i am not trying to match stuff.com since they are not a real url pattern, i was trying to match tricky patterns like wwwww.blah.com and www.blah.c0m etc, thats what spammers use on the nets I'm on anyways.

Edited by [::X-System::]
Link to comment
Share on other sites

interesting points you bring up x, and i do see that you have a strong understanding of it. Things like pattern matching the user IDs werem't really possible on MSN due to it using that whole "@GateKeeperPassport" bs, so regex'ing that wasn't possible back in the day. But i will admit, the majority of the concepts of the protections you're writing up sound quite solid and strong.

 

There are still a couple of limitations to MSN which i think you may still not understand fully, such as MSN would only accept so many sockwrites/commands at one time. And yes, i was using the $crlf technique as well as it was a lot better, but it capped it at like 8 commands in 1 burst before it kicked you out of the room for flooding the server.

 

I applaud you for the technical aspect and knowledge, because you definitely have shown you know what you're talking about.

 

Back to what you have shown in the screenshots... I'm guessing you're trying to avoid using dlls to "pretty up" your dialog? If not, why not put a bit in? If so, all good and i understand that as well.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...