+etmms project
[www.jankratochvil.net.git] / etmms / Index.html.pl
diff --git a/etmms/Index.html.pl b/etmms/Index.html.pl
new file mode 100755 (executable)
index 0000000..3481e7d
--- /dev/null
@@ -0,0 +1,167 @@
+#! /usr/bin/perl
+# 
+# $Id$
+# Contact page Perl template.
+# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; exactly version 2 of June 1991 is required
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+package Contact;
+require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
+use vars qw($VERSION $CVS_ID);
+$VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
+$CVS_ID=q$Id$;
+use strict;
+use warnings;
+
+BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
+use My::Web;
+require CGI;
+Wrequire 'My::Project';
+
+
+my $W=My::Web->init(
+               "__PACKAGE__"=>__PACKAGE__,
+               "title"=>"MMS Center Debugging",
+               );
+My::Web->heading();
+
+
+sub project ($)
+{
+my($name)=@_;
+
+       my %name_item=( My::Project->one_item_list_read($name) );
+       return a_href "/project/$name/",$name_item{"name"}.': '.$name_item{"summary"};
+};
+
+
+print <<"HERE";
+<h1>MMS Center Debugging</h1>
+
+<p>Here you can find description of very simple but technically interesting hack.
+You can provide your own MMS Center (MMS=Multimedia Messaging Service) in GSM
+network instead of the operator's one.</p>
+
+<p>There is only a limitation of a bearer data service - MMS is usually run
+over GPRS (General Packet Radio Service) channels while you cannot behave as
+GPRS callee in GSM network. Fortunately MMS can be run also over CSD (Circuit
+Switched Data - up to 14400bps) or HSCSD (High Speed CSD - up to 57600bps)
+services. GPRS is usually known as always-online while CSD/HSCSD you must dial
+some destination number. GPRS vs. CSD have usually also different GSM operator
+tariffication but it should not matter much for the short data messages.</p>
+
+<p>I did not provite a completely mine MMS center. I was involved in pilot MMS
+Center project where some compatibility issues of MMS message format between
+MMS phone and MMS center had to be solved. As I did not have technical access
+to the MMS center itself I setup two mobile phones
+(@{[ a_href 'http://www.nokia.com/','Nokia' ]} @{[ a_href 'http://www.communicator.org/','Communicator' ]}s)
+to setup sniffing tunnel. One of the phones were setup in answer mode to
+simulate the MMS center while the other one called to the real official (and
+buggy) MMS center accessible as regular service provided by the GSM operator.</p>
+
+@{[ centerimg 'gate','MMS Sniffing Diagram' ]}
+@{[ vskip "2ex" ]}
+@{[ centerimg 'triple.jpeg','MMS Sniffing Mobiles Setup' ]}
+
+<dl>
+       <dt>Answer side <i>pppd(8)</i> command</dt>
+       <dd><pre>
+pppd /dev/ttyS5 19200 modem lock crtscts connect "chat -vf /etc/ppp/answer-T68i.chat" @{[ "\\" ]}
+               noauth debug nodefaultroute 192.168.192.67:192.168.192.68 default-asyncmap
+       </pre></dd>
+       <dt>Answer side <i>/etc/ppp/answer-T68i.chat</i> file</dt>
+       <dd><pre>
+TIMEOUT 3 "" "ATZ" "OK-ATZ-OK" "" ABORT "BUSY" ABORT "NO CARRIER"
+ABORT "NO DIAL TONE" ABORT "ERROR" ABORT "VOICE" REPORT CONNECT ""
+ATL2 OK-ATL2-OK
+AT+CBST=7,0,1;+DS=3,0,1300,32;+CR=1;+DR=1 OK
+""
+TIMEOUT 300
+@{[ 'RING \d\d\d\d\d\dATA' ]}
+CONNECT "" ^M ""
+       </pre></dd>
+
+       <dt>Dial side <i>pppd(8)</i> command</dt>
+       <dd><pre>
+pppd /dev/ttyS4 19200 modem lock nocrtscts xonxoff connect "chat -vf /etc/ppp/mmsgate.chat" @{[ "\\" ]}
+               noauth debug nodefaultroute
+       </pre></dd>
+       <dt>Answer side <i>/etc/ppp/mmsgate.chat</i> file</dt>
+       <dd><pre>
+TIMEOUT 3 "" "ATZ" "OK-ATZ-OK" "" ABORT "BUSY" ABORT "NO CARRIER"
+ABORT "NO DIAL TONE" ABORT "ERROR" ABORT "VOICE" REPORT CONNECT ""
+#AT+CBST=7,0,1;+DS=3,0,1300,32;+CR=1;+DR=1 OK
+ATD+420602900666
+TIMEOUT 90 CONNECT "" ^M ""
+       </pre></dd>
+</dl>
+
+<p>Some decoded data illustration</p>
+<pre>
+MMS Message Encapsulation
+       Message-Type: m-retrieve-conf (0x84)
+       Transaction-ID: PVve-6DaCUEAAC5qAAAAAQAAAEoAAAAA
+       MMS-Version: 1.0
+       Date: Aug 15, 2002 19:25:20.000000000
+       From: +4206CENSORED/TYPE=PLMN
+       Subject: testidD
+       To: +4206CENSORED/TYPE=PLMN
+       Message-Class: Informational (0x82)
+       Delivery-Report: No (0x81)
+       Content Type: application/vnd.wap.multipart.related (0x33)
+               Type: application/smil
+               Start: AAAA
+       Multipart body
+               Part: 1
+                       Content Type: application/smil
+                               Charset: us-ascii (0x0003)
+                       Headers
+                               Content-Location: AAAA
+                       Data in this part
+               Part: 2
+                       Content Type: image/gif (0x1d)
+                       Headers
+                               Content-Location: postcard.gif
+                       Data in this part
+</pre>
+
+<p>@{[ a_href 'http://www.sonyericsson.com/T68i/','Sony Ericsson T68i' ]}
+MMS definition file URL decoded out of the data stream above:
+@{[ a_href 'http://wap.sonyericssonmobile.com/UAprof/T68R201.xml' ]}</p>
+
+
+<h2>Completed Subtasks</h2>
+<ul>
+       <li style="font-size: larger;">@{[ project 'etherealmmse' ]}</li>
+       <li style="font-size: larger;">@{[ project 'etherealwsp' ]}</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+HERE
+
+
+My::Web->footer();