[SR-Users] New Kamailio module Obfuscate

Daniel-Constantin Mierla miconda at gmail.com
Fri Aug 8 13:31:44 CEST 2014


Here is the new function you added:

+int pv_get_raw_msg(sip_msg_t *msg, pv_param_t *param,
+	pv_value_t *res)
+{
+    str sb;
+    if(msg==NULL || res==NULL)
+        return -1;
+    sb.s = msg->buf;
+    sb.len = msg->len;
+    return pv_get_strval(msg, param, res, &sb);
+}

And next is the existing function for $mb:

int pv_get_msg_buf(struct sip_msg *msg, pv_param_t *param,
         pv_value_t *res)
{
     str s;
     if(msg==NULL)
         return -1;

     s.s = msg->buf;
     s.len = msg->len;
     return pv_get_strval(msg, param, res, &s);
}

They are the same apart of variables, so no matter where they will be 
used (before or after event route processing), they point to the same 
buffer, therefore they will return the same.

Cheers,
Daniel

On 08/08/14 12:23, Muhammad Shahzad wrote:
> humm, it is suppose to contain the original message that was feed to 
> event_route[network:msg], it would be same as $mb till this route 
> changes the contents of it stores the new contents in $mb, then the 
> $mb and $raw_msg would contain different contents (original vs 
> modified), this may be useful in other routes, such as error_route or 
> local_route e.g. for comparison etc.
>
> Of course, you can remove this variable, since i don't have any 
> concrete use of it in my mind (other then comparing any changes to 
> message were done by event_route[network:msg] in other routes).
>
> Thank you.
>
>
>
>
> On Fri, Aug 8, 2014 at 11:07 AM, Daniel-Constantin Mierla 
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>     I see that the code introduces a new variable $raw_msg. It looks
>     like being message buffer which is returned by $mb, thus redundant.
>
>
>     Cheers,
>     Daniel
>
>     On 05/08/14 12:06, Muhammad Shahzad wrote:
>>     yup, i always download kamailio from official repo mentioned here,
>>
>>     http://www.kamailio.org/wiki/install/devel/git
>>
>>     Thank you.
>>
>>
>>
>>
>>     On Tue, Aug 5, 2014 at 3:03 PM, Daniel-Constantin Mierla
>>     <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>
>>
>>         On 05/08/14 11:55, Muhammad Shahzad wrote:
>>>         OK, created the patch finally...
>>>
>>>         http://webrtc.voip-demos.com/0001-added-support-for-network-io-intercept.patch
>>
>>         I will look over it and push it to the repository if
>>         everything is ok.
>>
>>
>>>
>>>         I had to add all file i wanted to include in the commit
>>>         using "git add", even the ones that are already included in
>>>         git repo, e.g. corex.xml and corex_mod.c.
>>         Strange, I never had to do it -- did you clone the git
>>         repository from sip-router.org <http://sip-router.org>?
>>
>>>
>>>         I will just let you know i hit my head on wall just 17 times
>>>         to make it work. :-(
>>         Hopefully it was facebook wall :-)
>>
>>         Daniel
>>
>>
>>>
>>>         Thank you.
>>>
>>>
>>>
>>>
>>>         On Tue, Aug 5, 2014 at 2:40 PM, Daniel-Constantin Mierla
>>>         <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>>
>>>             You should use:
>>>
>>>             git format-patch -1 <sha>
>>>
>>>             The <sha> in your case appears to be f415b0c . If it is
>>>             last commit, should work with:
>>>
>>>             git format-patch -1 HEAD
>>>
>>>             Cheers,
>>>             Daniel
>>>
>>>
>>>             On 05/08/14 11:25, Muhammad Shahzad wrote:
>>>>             These commands do not seem to work for me. Can you
>>>>             please do the patch?
>>>>
>>>>             1. adding files work,
>>>>
>>>>             git add modules/corex/corex_nio.c modules/corex/corex_nio.h
>>>>
>>>>             git status
>>>>             # On branch master
>>>>             # Changes to be committed:
>>>>             #   (use "git reset HEAD <file>..." to unstage)
>>>>             #
>>>>             #    new file: modules/corex/corex_nio.c
>>>>             #    new file: modules/corex/corex_nio.h
>>>>             #
>>>>             # Changes not staged for commit:
>>>>             #   (use "git add <file>..." to update what will be
>>>>             committed)
>>>>             #   (use "git checkout -- <file>..." to discard changes
>>>>             in working directory)
>>>>             #
>>>>             #    modified: modules/corex/README
>>>>             #    modified: modules/corex/corex_mod.c
>>>>             #    modified: modules/corex/doc/corex.xml
>>>>             #    modified: modules/corex/doc/corex_admin.xml
>>>>             #
>>>>
>>>>             2. making commit seems to work,
>>>>
>>>>             git commit -m "added support for network io intercept."
>>>>             [master f415b0c] added support for network io intercept.
>>>>              2 files changed, 268 insertions(+)
>>>>              create mode 100644 modules/corex/corex_nio.c
>>>>              create mode 100644 modules/corex/corex_nio.h
>>>>
>>>>             3. git format-patch does not work,
>>>>
>>>>             git format-patch
>>>>             [no-output]
>>>>
>>>>             4. Also tried,
>>>>
>>>>             git format-patch master --stdout
>>>>             [no-output]
>>>>
>>>>             git format-patch master --stdout > /tmp/nio.patch
>>>>             [no-output]
>>>>
>>>>
>>>>             I don't know what is wrong, i have git version 1.7.10.4
>>>>             on debian wheezy.
>>>>
>>>>             i miss subversion so badly...
>>>>
>>>>             Thank you.
>>>>
>>>>
>>>>
>>>>
>>>>             On Tue, Aug 5, 2014 at 1:26 PM, Daniel-Constantin
>>>>             Mierla <miconda at gmail.com <mailto:miconda at gmail.com>>
>>>>             wrote:
>>>>
>>>>                 Can you do a commit on your local git clone and
>>>>                 send the patch? It is easier to review the changes.
>>>>                 Practically use:
>>>>
>>>>                 - git add -- to add new files
>>>>                 - git commit -- to commit changes
>>>>                 - git format-patch -- to get the commit in a file
>>>>
>>>>                 Cheers,
>>>>                 Daniel
>>>>
>>>>
>>>>                 On 05/08/14 01:14, Muhammad Shahzad wrote:
>>>>>                 Done all changes as you suggested.
>>>>>
>>>>>                 1. The code is embedded in corex module. Two new
>>>>>                 files added named, corex_nio.h and corex_nio.c.
>>>>>                 Some minor changes to corex_mod.c to call the
>>>>>                 methods defined in corex_nio.h.
>>>>>                 2. Event route name changed to
>>>>>                 event_route[network:msg].
>>>>>                 3. function name changed from is_msg_obfuscated to
>>>>>                 is_incoming.
>>>>>                 4. one additional module parameter is added, named
>>>>>                 network_io_intercept, to enable disable the whole
>>>>>                 functionality. (default is disabled)
>>>>>                 5. The README file and doc folder is updated with
>>>>>                 relevant documentation, examples and use cases etc.
>>>>>
>>>>>                 The code is available for review and download at,
>>>>>
>>>>>                 http://webrtc.voip-demos.com/corex.tbz2
>>>>>
>>>>>                 Regarding the actual encryption / compression
>>>>>                 etc., i am planning to add some example PERL / LUA
>>>>>                 scripts later on.
>>>>>
>>>>>                 Thank you.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                 On Mon, Aug 4, 2014 at 8:19 PM, Muhammad Shahzad
>>>>>                 <shaheryarkh at gmail.com
>>>>>                 <mailto:shaheryarkh at gmail.com>> wrote:
>>>>>
>>>>>                     Thank you for your valuable suggestions, i
>>>>>                     appreciate it.
>>>>>
>>>>>                     I agree about module name, in fact a couple
>>>>>                     friends have already sent me email privately
>>>>>                     suggesting the same. May be something like
>>>>>                     "nio_intercept" would be better, since module
>>>>>                     only intercepts the network in/output and
>>>>>                     leaves it to script writer what to do with it.
>>>>>
>>>>>                     Regarding embedding in corex, that is
>>>>>                     interesting, however i need to go through its
>>>>>                     code to understand it a bit and then attempt
>>>>>                     to embed it. Later on, i will create separate
>>>>>                     module which import this functionality from
>>>>>                     corex and do specific tasks such as
>>>>>                     compression and faking http etc.
>>>>>
>>>>>                     There is a good progress on doubango SDK side
>>>>>                     as well and at least idoubs would be ready
>>>>>                     soon (7 to 10 days approx). Then mobile voip
>>>>>                     developers can fully test this functionality
>>>>>                     at both ends.
>>>>>
>>>>>                     Anyways let me look at corex module and see if
>>>>>                     and how can i embed this. In the meantime more
>>>>>                     suggestions and comments on this are warmly
>>>>>                     welcome from everyone.
>>>>>
>>>>>                     Thank you.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                     On Mon, Aug 4, 2014 at 7:55 PM,
>>>>>                     Daniel-Constantin Mierla <miconda at gmail.com
>>>>>                     <mailto:miconda at gmail.com>> wrote:
>>>>>
>>>>>                         Hello,
>>>>>
>>>>>                         I looked at the code and my conclusion was
>>>>>                         that the name is a bit confusing.
>>>>>
>>>>>                         While indeed you can do obfuscation using
>>>>>                         some embedded language or other meanings
>>>>>                         from the config file, the module itself
>>>>>                         doesn't do anything related. It executes
>>>>>                         an event route for network packet in/out.
>>>>>
>>>>>                         Such functionaly is of course useful, just
>>>>>                         to remind the given example with
>>>>>                         obfuscation. But I think a better name to
>>>>>                         reflect the behaviour should be given.
>>>>>
>>>>>                         Maybe obfuscate should be a module that
>>>>>                         implement some algorithms for
>>>>>                         obfuscations, like you mentions:
>>>>>                         - simply compressing (gz)
>>>>>                         - compressing and encapsulation as body in
>>>>>                         a http request/reply
>>>>>                         - itv
>>>>>
>>>>>                         My proposal would be:
>>>>>                         - either rename the module or embed in
>>>>>                         another module (e.g., corex) what was
>>>>>                         developed for these event route execution.
>>>>>                         The event route name should be related to
>>>>>                         network reception/transmission (e.g.,
>>>>>                         network:msg). Also the is_obfuscated_msg()
>>>>>                         should be something like is_incoming()
>>>>>                         - have a new module obfuscate to implement
>>>>>                         some algorithm as proof of concept (e.g.,
>>>>>                         gzip -- i guess plenty of code from
>>>>>                         gzcompress module is very useful just to
>>>>>                         take from there). Then others may
>>>>>                         contribute more, as they have new ideas or
>>>>>                         from what you listed (http ecapsulation is
>>>>>                         at least interesting, considering many
>>>>>                         allow port 80 and inspect for http).
>>>>>
>>>>>                         Of course, these are my opinions, so the
>>>>>                         discussion can go on for deciding on how
>>>>>                         to proceed.
>>>>>
>>>>>                         Cheers,
>>>>>                         Daniel
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                         On 02/08/14 23:57, Muhammad Shahzad wrote:
>>>>>
>>>>>                             Hi,
>>>>>
>>>>>                             As already discussed in detail in
>>>>>                             following email thread,
>>>>>
>>>>>                             https://www.mail-archive.com/sr-users@lists.sip-router.org/msg19922.html
>>>>>
>>>>>                             The new Kamailio module obfuscate is
>>>>>                             ready for testing and can be
>>>>>                             downloaded at,
>>>>>
>>>>>                             http://webrtc.voip-demos.com/obfuscate.tbz2
>>>>>
>>>>>                             It contains full code, with
>>>>>                             documentation and usage scenarios etc.
>>>>>
>>>>>                             Adding Kamailio dev team, can you guys
>>>>>                             review the code and add this module to
>>>>>                             Kamailio trunk if possible? I will be
>>>>>                             responsible for its maintenance and
>>>>>                             bug fixes etc. if any.
>>>>>
>>>>>                             Thank you.
>>>>>
>>>>>
>>>>>
>>>>>                         -- 
>>>>>                         Daniel-Constantin Mierla -
>>>>>                         http://www.asipto.com
>>>>>                         http://twitter.com/#!/miconda
>>>>>                         <http://twitter.com/#%21/miconda> -
>>>>>                         http://www.linkedin.com/in/miconda
>>>>>
>>>>>
>>>>>
>>>>
>>>>                 -- 
>>>>                 Daniel-Constantin Mierla -http://www.asipto.com
>>>>                 http://twitter.com/#!/miconda  <http://twitter.com/#%21/miconda>  -http://www.linkedin.com/in/miconda
>>>>
>>>>
>>>
>>>             -- 
>>>             Daniel-Constantin Mierla -http://www.asipto.com
>>>             http://twitter.com/#!/miconda  <http://twitter.com/#%21/miconda>  -http://www.linkedin.com/in/miconda
>>>
>>>
>>
>>         -- 
>>         Daniel-Constantin Mierla -http://www.asipto.com
>>         http://twitter.com/#!/miconda  <http://twitter.com/#%21/miconda>  -http://www.linkedin.com/in/miconda
>>
>>
>
>     -- 
>     Daniel-Constantin Mierla
>     http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -
>     http://www.linkedin.com/in/miconda
>
>     Next Kamailio Advanced Trainings 2014 -http://www.asipto.com
>     Sep 22-25, Berlin, Germany ::: Oct 15-17, San Francisco, USA
>
>

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Next Kamailio Advanced Trainings 2014 - http://www.asipto.com
Sep 22-25, Berlin, Germany ::: Oct 15-17, San Francisco, USA

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140808/65bcc9b8/attachment.html>


More information about the sr-users mailing list