mirror of
git://git.acid.vegas/IRCP.git
synced 2024-12-28 17:36:37 +00:00
Added CAP, MODULE, INFO, CREDITS, IRCOPS, STATS p, & MODULE replies stored in the snapshot
This commit is contained in:
parent
60ee352e9f
commit
45100452da
36
README.md
36
README.md
@ -11,7 +11,7 @@ The idea is to create a *proof-of-concept* documenting how large-scale informati
|
||||
## Order of Operations
|
||||
First, an attempt to connect using SSL/TLS on port 6697 is made, which if it fails, will fall back to a standard connection on port 6667.
|
||||
|
||||
Once connected, server information is gathered from `LUSERS`, `VERSION`, `LINKS`, `MAP`, `ADMIN`, `MOTD`, `LIST`, replies.
|
||||
Once connected, server information is gathered from `ADMIN`, `CAP LS`, `MODULES -all`, `VERSION`, `IRCOPS`, `MAP`, `INFO`, `LINKS`, `STATS p`, & `LIST` replies.
|
||||
|
||||
An attempt to register a nickname is then made by trying to contact NickServ.
|
||||
|
||||
@ -61,14 +61,16 @@ All of the raw data from a server is logged & stored. The categories below are s
|
||||
| 003 | RPL_CREATED |
|
||||
| 004 | RPL_MYINFO |
|
||||
| 005 | RPL_ISUPPORT |
|
||||
| 372 | RPL_MOTD |
|
||||
| 351 | RPL_VERSION |
|
||||
| 364 | RPL_LINKS |
|
||||
| 006 | RPL_MAP |
|
||||
| 018 | RPL_MAPUSERS |
|
||||
| 257 | RPL_ADMINLOC1 |
|
||||
| 258 | RPL_ADMINLOC2 |
|
||||
| 259 | RPL_ADMINEMAIL |
|
||||
| 351 | RPL_VERSION |
|
||||
| 364 | RPL_LINKS |
|
||||
| 371 | RPL_INFO |
|
||||
| 372 | RPL_MOTD |
|
||||
| 304 | RPL_TEXT |
|
||||
|
||||
###### Statistics Information (LUSERS)
|
||||
| Numeric | Title |
|
||||
@ -102,18 +104,23 @@ All of the raw data from a server is logged & stored. The categories below are s
|
||||
| 338 | RPL_WHOISACTUALLY |
|
||||
| 352 | RPL_WHOREPLY |
|
||||
|
||||
###### Bad Numerics
|
||||
###### Bad Numerics (channel)
|
||||
| Numeric | Title |
|
||||
| ------- | ------------------ |
|
||||
| 439 | ERR_TARGETTOOFAST |
|
||||
| 470 | ERR_LINKCHANNEL |
|
||||
| 471 | ERR_CHANNELISFULL |
|
||||
| 473 | ERR_INVITEONLYCHAN |
|
||||
| 474 | ERR_BANNEDFROMCHAN |
|
||||
| 475 | ERR_BADCHANNELKEY |
|
||||
| 477 | ERR_NEEDREGGEDNICK |
|
||||
| 489 | ERR_SECUREONLYCHAN |
|
||||
| 519 | ERR_TOOMANYUSERS |
|
||||
| 520 | ERR_OPERONLY |
|
||||
|
||||
###### Bad Numerics (server)
|
||||
| Numeric | Title |
|
||||
| ------- | -------------------- |
|
||||
| 470 | ERR_LINKCHANNEL |
|
||||
| 471 | ERR_CHANNELISFULL |
|
||||
| 473 | ERR_INVITEONLYCHAN |
|
||||
| 474 | ERR_BANNEDFROMCHAN |
|
||||
| 475 | ERR_BADCHANNELKEY |
|
||||
| 477 | ERR_NEEDREGGEDNICK |
|
||||
| 489 | ERR_SECUREONLYCHAN |
|
||||
| 519 | ERR_TOOMANYUSERS |
|
||||
| 520 | ERR_OPERONLY |
|
||||
| 464 | ERR_PASSWDMISMATCH |
|
||||
| 465 | ERR_YOUREBANNEDCREEP |
|
||||
| 466 | ERR_YOUWILLBEBANNED |
|
||||
@ -123,7 +130,6 @@ All of the raw data from a server is logged & stored. The categories below are s
|
||||
![](.screens/preview.png)
|
||||
|
||||
## Todo
|
||||
* Capture `IRCOPS` & `STATS p` command outputs
|
||||
* Built in identd
|
||||
* Checking for IPv6 availability *(SSL= in 005 responses may help verify IPv6)*
|
||||
* Support for IRC servers using old versions of SSL
|
||||
|
18
ircp.py
18
ircp.py
@ -49,10 +49,11 @@ donotscan = (
|
||||
snapshot = {
|
||||
'server' : None,
|
||||
'host' : None,
|
||||
'raw' : [], # all other data goes in here
|
||||
'NOTICE' : None,
|
||||
'services' : False,
|
||||
'ssl' : False,
|
||||
'raw' : [], # all other data goes in here
|
||||
'CAP' : None,
|
||||
'NOTICE' : None,
|
||||
|
||||
# server information
|
||||
'001' : None, # RPL_WELCOME
|
||||
@ -67,7 +68,9 @@ snapshot = {
|
||||
'259' : None, # RPL_ADMINEMAIL
|
||||
'351' : None, # RPL_VERSION
|
||||
'364' : None, # RPL_LINKS
|
||||
'371' : None, # RPL_INFO
|
||||
'372' : None, # RPL_MOTD
|
||||
'304' : None, # RPL_TEXT
|
||||
|
||||
# statistic information (lusers)
|
||||
'250' : None, # RPL_STATSCONN
|
||||
@ -108,9 +111,9 @@ snapshot = {
|
||||
'520' : None, # ERR_OPERONLY
|
||||
|
||||
# bad server numerics
|
||||
'464' : None, # ERR_PASSWDMISMATCH
|
||||
'465' : None, # ERR_YOUREBANNEDCREEP
|
||||
'466' : None, # ERR_YOUWILLBEBANNED
|
||||
'464' : None, # ERR_PASSWDMISMATCH
|
||||
'465' : None, # ERR_YOUREBANNEDCREEP
|
||||
'466' : None, # ERR_YOUWILLBEBANNED
|
||||
'421' : None # ERR_UNKNOWNCOMMAND
|
||||
}
|
||||
|
||||
@ -202,7 +205,10 @@ class probe:
|
||||
'pass': settings.ns_pass if settings.ns_pass else rndnick(),
|
||||
'mail': settings.ns_mail if settings.ns_mail else f'{rndnick()}@{rndnick()}.'+random.choice(('com','net','org'))
|
||||
}
|
||||
for command in ('ADMIN', 'VERSION', 'LINKS', 'MAP', 'PRIVMSG NickServ :REGISTER {0} {1}'.format(login['pass'], login['mail']), 'LIST'):
|
||||
cmds = ('ADMIN', 'CAP LS', 'INFO', 'IRCOPS', 'LINKS', 'MAP', 'MODULES -all', 'STATS p', 'VERSION')
|
||||
random.shuffle(cmds)
|
||||
cmds += ('PRIVMSG NickServ :REGISTER {0} {1}'.format(login['pass'], login['mail']), 'LIST')
|
||||
for command in cmds:
|
||||
try:
|
||||
await self.raw(command)
|
||||
except:
|
||||
|
Loading…
Reference in New Issue
Block a user