xtables-addons: ipp2p: bittorrent commands patch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello guys,

After testing I decide to write my patch to bittorrent
GET commands from xt_ipp2p.c because old procedure is
useless for modified and/or private trackers. teh new
works fine but maybe someone can rewrite it to better C
(yeah, im C/C++ n00b ;)
btw. info_hash may be 3rd argument, passkey (private trackers)
may be 1st argument (or not) etc. etc. so we need to search.


---
--- xtables-addons-1.22.old/extensions/xt_ipp2p.c       2010-01-22 20:14:37.000000000 +0100
+++ xtables-addons-1.22/extensions/xt_ipp2p.c   2010-01-26 06:05:47.000000000 +0100
@@ -505,19 +505,18 @@
  if (payload[0] == 0x13)
    if (memcmp(payload + 1, "BitTorrent protocol", 19) == 0)
      return IPP2P_BIT * 100;
-
    /*
-    * get tracker commandos, all starts with GET /
-    * then it can follow: scrape| announce
-    * and then ?hash_info=
+    * any tracker command starts with GET / then *may be* some file on web server
+    * (eg. announce.php or dupa.pl or whatever.cgi or NOTHING for tracker on root dir)
+    * but *must have* one (or more) of strings listed below (true for scrape and announce)
     */
    if (memcmp(payload, "GET /", 5) == 0) {
-     /* message scrape */
-     if (memcmp(payload + 5, "scrape?info_hash=", 17) == 0)
-       return IPP2P_BIT * 100 + 1;
-     /* message announce */
-     if (memcmp(payload + 5, "announce?info_hash=", 19) == 0)
-       return IPP2P_BIT * 100 + 2;
+     if(strstr(payload, "info_hash=") != NULL)
+       return IPP2P_BIT * 100 + 1;
+     if(strstr(payload, "peer_id=") != NULL)
+       return IPP2P_BIT * 100 + 2;
+     if(strstr(payload, "passkey=") != NULL)
+       return IPP2P_BIT * 100 + 4;
    }
  } else {
    /* bitcomet encryptes the first packet, so we have to detect another
---

-- 
Tomasz 'BloodMan' Tomkowiak

Attachment: xt_ipp2p.patch
Description: Binary data


[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux