diff --git a/README.md b/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
diff --git a/ircp.py b/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:
| |