Certificate is a joke does not work
Moderators: Bill Smith, Pilot
You can run Asterisk through a proxy too... even a proxy on the same machine as Asterisk. Or if you know how to compile Asterisk and are somewhat familiar with the source it would be a pretty easy modification. It wouldn't be that hard to compile a proxy for OpenWRT. Also would be interesting to patch siphon for the iphone since it is open source.
As far as changing the algorithm, I'm fairly sure it isn't specified in the provisioning file so that would mean pushing out another update to everyone. I don't see them continually doing that. A more logical step is to start banning accounts. Doesn't seem unreasonable because you have to make a considerable effort to sidestep this new protection. If we knew how the Call-ID was generated we could completely cloak the SIP part of the dongle. They could still cross reference with the provisioning calls, 911 and ad servers so that would have to be simulated for perfect emulation. Maybe it's worth the effort if you are using it heavily on a mobile device like iphone. As for me I'm probably going to stick to thin client and sipgate+GVoice for now.
As far as changing the algorithm, I'm fairly sure it isn't specified in the provisioning file so that would mean pushing out another update to everyone. I don't see them continually doing that. A more logical step is to start banning accounts. Doesn't seem unreasonable because you have to make a considerable effort to sidestep this new protection. If we knew how the Call-ID was generated we could completely cloak the SIP part of the dongle. They could still cross reference with the provisioning calls, 911 and ad servers so that would have to be simulated for perfect emulation. Maybe it's worth the effort if you are using it heavily on a mobile device like iphone. As for me I'm probably going to stick to thin client and sipgate+GVoice for now.
netdata / az1324
What I've done for now is install MJ on an HP Thin Client and feed the dial tone back into Asterisk through an FXO port. I don't like the D to A to D conversion process, but for now it works. I forward my MJ incoming calls to the DID of another SIP provider, thus allowing me to maintain the D to D connection of inbound calls.
It's a simple workaround as the Thin Client is a headless device that sits on my network, consuming about 14 watts.
What I've done for now is install MJ on an HP Thin Client and feed the dial tone back into Asterisk through an FXO port. I don't like the D to A to D conversion process, but for now it works. I forward my MJ incoming calls to the DID of another SIP provider, thus allowing me to maintain the D to D connection of inbound calls.
It's a simple workaround as the Thin Client is a headless device that sits on my network, consuming about 14 watts.
-
UncleRunkle
- magicJack Apprentice
- Posts: 27
- Joined: Tue Jun 09, 2009 11:20 am
-
hesantos2004
- MagicJack Newbie
- Posts: 6
- Joined: Sun Jun 22, 2008 12:02 am
I'd like to get an answer to that question. Subsequent posts imply that more programming assistance is required to solve the ATA problem. What exactly can az1234's program do for users NOW?UncleRunkle wrote:So we can set up a program like the one az1324 made in .NET and then use it as a proxy to connect to the MagicJack servers. We would then set our ATAs to the address of the server running the .NET program.
Ok here you go. If you save your settings next time you run it it will start minimized to system tray and automatically start the proxy.hesantos2004 wrote:hello az1324. this program works great. is there a way you can edit the program to remember the proxy and password because i'm trying to run it as a service but it forgets the proxy and password.
http://www.mediafire.com/?mmmt4wcnqyb
-
MJuser909909
- magicJack Apprentice
- Posts: 15
- Joined: Sat Jun 13, 2009 5:05 pm
-
hesantos2004
- MagicJack Newbie
- Posts: 6
- Joined: Sun Jun 22, 2008 12:02 am
Ok some people want more info on the proxy I made so here are some facts.
This is an sip-only proxy. It doesn't proxy the RTP stream so you should run it on the same LAN as your ATA.
You would setup your ATA the same way you did normally in the past for MJ but instead of the proxy address and port you would put the address of your computer running the proxy and the Listen Port. On the proxy itself you would put the proxy address that you normally would have put in the ATA, the Forward Port (5070), and also your MJ password.
Remember this is just something I threw together to experiment so use at your own risk.
This is an sip-only proxy. It doesn't proxy the RTP stream so you should run it on the same LAN as your ATA.
You would setup your ATA the same way you did normally in the past for MJ but instead of the proxy address and port you would put the address of your computer running the proxy and the Listen Port. On the proxy itself you would put the proxy address that you normally would have put in the ATA, the Forward Port (5070), and also your MJ password.
Remember this is just something I threw together to experiment so use at your own risk.
-
richardtaur
- Dan isn't smart enough to hire me
- Posts: 123
- Joined: Mon Mar 17, 2008 5:02 pm
Can you create a linux version for ubuntu?az1324 wrote:Ok some people want more info on the proxy I made so here are some facts.
This is an sip-only proxy. It doesn't proxy the RTP stream so you should run it on the same LAN as your ATA.
You would setup your ATA the same way you did normally in the past for MJ but instead of the proxy address and port you would put the address of your computer running the proxy and the Listen Port. On the proxy itself you would put the proxy address that you normally would have put in the ATA, the Forward Port (5070), and also your MJ password.
Remember this is just something I threw together to experiment so use at your own risk.
run it the same way as if you had caller id program on one computer and a ata. if not sure you can check some older posts on this forum.mel2000 wrote:How would I determine the listen port on the computer running the proxy?az1324 wrote:you would put the address of your computer running the proxy and the Listen Port.
nick
you need to install the .NET frameworkjamoke wrote:The proxy will run under Windows XP Pro, but I get an error when I try to execute it under XP Embedded, which would be the preferred low-power box to run the proxy. Any thoughts? The error that I receive is:
The application failed to initialize properly (0xc0000135)
Thanks
Nick
AZ1324 -
Thanks for the .net proxy application. I'm currently running Asterisk on Linux without an X server. I use mono to run .net applications, but without an X server, your proxy app won't run (presumably because it depends on the presence of a GUI).
Can you write a version that runs from the CLI and reads a config file instead? I hate to ask for specific requests like this, but it would be a big help.
To all those who want an OpenWRT port:
Making .net software run on OpenWRT is not *impossible*, but nearly so. In order to make it run, you would need a mips version of mono. According to the mono website, mono will run on mips, but I've never been able to make it happen. If someone can generate a mono package for OpenWRT, then running this .net application should be automatic (provided a non-GUI version can be written). Otherwise, the software would have to be re-written without .net.
Thanks for the .net proxy application. I'm currently running Asterisk on Linux without an X server. I use mono to run .net applications, but without an X server, your proxy app won't run (presumably because it depends on the presence of a GUI).
Can you write a version that runs from the CLI and reads a config file instead? I hate to ask for specific requests like this, but it would be a big help.
To all those who want an OpenWRT port:
Making .net software run on OpenWRT is not *impossible*, but nearly so. In order to make it run, you would need a mips version of mono. According to the mono website, mono will run on mips, but I've never been able to make it happen. If someone can generate a mono package for OpenWRT, then running this .net application should be automatic (provided a non-GUI version can be written). Otherwise, the software would have to be re-written without .net.
He'll need to change out the reading/writing of the ini files to use pure .NET rather than native calls.rusabus wrote:AZ1324 -
Thanks for the .net proxy application. I'm currently running Asterisk on Linux without an X server. I use mono to run .net applications, but without an X server, your proxy app won't run (presumably because it depends on the presence of a GUI).
Can you write a version that runs from the CLI and reads a config file instead? I hate to ask for specific requests like this, but it would be a big help.
To all those who want an OpenWRT port:
Making .net software run on OpenWRT is not *impossible*, but nearly so. In order to make it run, you would need a mips version of mono. According to the mono website, mono will run on mips, but I've never been able to make it happen. If someone can generate a mono package for OpenWRT, then running this .net application should be automatic (provided a non-GUI version can be written). Otherwise, the software would have to be re-written without .net.
The application does run fine under linux (assuming you have X installed/running)

You cannot save the config file however. Trying to do so just crashes the app:
Code: Select all
andy@deathstar> mono MJMD5.exe
System.DllNotFoundException: kernel32
at (wrapper managed-to-native) Ini.IniFile:WritePrivateProfileString (string,string,string,string)
at Ini.IniFile.IniWriteValue (System.String Section, System.String Key, System.String Value) [0x00000]
at MJMD5.MJMD5.SaveSettings () [0x00000]
at MJMD5.MJMD5.StartProxy (System.String LPort, System.String FPort, System.String Proxy) [0x00000]
at MJMD5.MJMD5.button1_Click (System.Object sender, System.EventArgs e) [0x00000]
at System.Windows.Forms.Control.OnClick (System.EventArgs e) [0x00000]
at System.Windows.Forms.Button.OnClick (System.EventArgs e) [0x00000]
at System.Windows.Forms.ButtonBase.OnMouseUp (System.Windows.Forms.MouseEventArgs mevent) [0x00000]
at System.Windows.Forms.Button.OnMouseUp (System.Windows.Forms.MouseEventArgs mevent) [0x00000]
at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00000]
at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x00000]
at System.Windows.Forms.ButtonBase.WndProc (System.Windows.Forms.Message& m) [0x00000]
at System.Windows.Forms.Button.WndProc (System.Windows.Forms.Message& m) [0x00000]
at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000]
at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x00000]
at System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr wParam, IntPtr lParam) [0x00000]
andy@deathstar> Andy Rogers
email me: U0pFTi16dxTvDdmlaK0+8bg2sZT+DlHLd6Jc7vG3M9ixlSKvrQgccJjf7tU=
email me: U0pFTi16dxTvDdmlaK0+8bg2sZT+DlHLd6Jc7vG3M9ixlSKvrQgccJjf7tU=
Ok you crazy cats here's the command line version. I didn't really test it.
http://www.mediafire.com/?cjztj0ug4xl
This isn't exactly a complicated program so it really would be better to just write one for the platform you want to run it on.
http://www.mediafire.com/?cjztj0ug4xl
This isn't exactly a complicated program so it really would be better to just write one for the platform you want to run it on.
Post source code
Could you post the code of your application.
I will be able to convert it to java.
Then we could have a solution that is multi plateform.
I will be able to convert it to java.
Then we could have a solution that is multi plateform.
-
MJuser909909
- magicJack Apprentice
- Posts: 15
- Joined: Sat Jun 13, 2009 5:05 pm
Hey az,
Proxy works great, running the command line version using mono on a freebsd box, love it.
Is there any options for verbose output? Or log file usage?
Also, can u make a program which will fully emulate the dongle? IE: hit the 911.talk4free.com, provision.talk4free.com etc.. So that way it looks like were actually running the dongle?
Would u be willing to release ur source so others could experiment?
Either way, thanks
Proxy works great, running the command line version using mono on a freebsd box, love it.
Is there any options for verbose output? Or log file usage?
Also, can u make a program which will fully emulate the dongle? IE: hit the 911.talk4free.com, provision.talk4free.com etc.. So that way it looks like were actually running the dongle?
Would u be willing to release ur source so others could experiment?
Either way, thanks
I checked the yum respositories for trixbox which is centos based and came up with these:jamoke wrote:rusabus,
Do you know if mono will run under CentOS?
Code: Select all
mod_mono.i386 1.2.1-1.el5.centos extras
mono-basic.i386 1.0.6-1.el5.rf rpmforge
mono-complete.i386 1.0.6-1.el5.rf rpmforge
mono-core.i386 1.2.4-2.el5.centos extras
mono-data.i386 1.2.4-2.el5.centos extras
mono-data-firebird.i386 1.2.4-2.el5.centos extras
mono-data-oracle.i386 1.2.4-2.el5.centos extras
mono-data-postgresql.i386 1.2.4-2.el5.centos extras
mono-data-sqlite.i386 1.2.4-2.el5.centos extras
mono-data-sybase.i386 1.2.4-2.el5.centos extras
mono-devel.i386 1.2.4-2.el5.centos extras
mono-extras.i386 1.2.4-2.el5.centos extras
mono-jscript.i386 1.2.4-2.el5.centos extras
mono-locale-extras.i386 1.2.4-2.el5.centos extras
mono-nunit.i386 1.2.4-2.el5.centos extras
mono-nunit-devel.i386 1.2.4-2.el5.centos extras
mono-web.i386 1.2.4-2.el5.centos extras
mono-winforms.i386 1.2.4-2.el5.centos extrasThis is an awesome app!
If you could post the source that would be great! I want to rewrite it in C and have it load on startup on my Asterisk server so that it can register to itself. If you don't want to share the source, could you at least give us details the algorithm?
Whoever figured this out is the man.
If you could post the source that would be great! I want to rewrite it in C and have it load on startup on my Asterisk server so that it can register to itself. If you don't want to share the source, could you at least give us details the algorithm?
Whoever figured this out is the man.
ameir,
All the details with the exact algorithm are on the page 3 of this thread, dtm's post. There's really nothing else you can get from the az1324 sources.
But I just wrote the same thing in plain C last night, and it's running on my linux-based router already along with the Asterisk server
. Can be compiled for any other Linux distribution of course. I'll post it later when I get back home tonight - unless of course someone else beats me to it - it's really not a complex app to write.
All the details with the exact algorithm are on the page 3 of this thread, dtm's post. There's really nothing else you can get from the az1324 sources.
But I just wrote the same thing in plain C last night, and it's running on my linux-based router already along with the Asterisk server
running the script on asterisk
Rusabus,
Could you give me a rundown on how you configured the .Net app to run?
That would be a great help.
I "yummed" Mono on my Trixbox today and want to know how the rest integrates..
Thanks!
Could you give me a rundown on how you configured the .Net app to run?
That would be a great help.
I "yummed" Mono on my Trixbox today and want to know how the rest integrates..
Thanks!
I'm running CentOS, but I installed mono from sources, not from an RPM. The mono webpage has an easy-to-use installer.jamoke wrote:rusabus,
Do you know if mono will run under CentOS?
Code: Select all
[cmpc.lan ~]# /opt/mono/bin/mono -V
Mono JIT compiler version 1.9.1 (tarball)
Copyright (C) 2002-2007 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Notifications: epoll
Architecture: x86
Disabled: none
Then, in /etc/rc.local, I added the following line:
Code: Select all
/opt/mono/bin/mono /etc/asterisk/MJMD5CL.exe proxy01.saltlakecity.talk4free.com 5070 5070 <my password> &under Outgoing Peer details:
Code: Select all
context=from-trunk
username=E<my phone number>01
type=peer
secret=<my password>
host=127.0.0.1
port=5070
nat=yes
insecure=very
fromuser=E<my phone number>01
dtmfmode=inband
qualify=2000
Code: Select all
E<my phone number>01:<my password>@127.0.0.1:5070FWIW: the only reason that I used the installer is that I have a .net application that is very particular with mono versions. It seems like every time I upgrade mono, my other application breaks. Using an RPM presents the risk that mono could be upgraded at any time, and I didn't want that. The most current mono installer is found here http://ftp.novell.com/pub/mono/archive/ ... taller.bin.
For this application, you could probably just do a yum install mono-core and it would work, but I haven't tested that.
Using Proxy with multiple MJ's
I have 2 Linksys Pap2 and 4 Magic Jack's has anybody tested this with multiple Magic Jack's
Craig
Craig
Thanks rusabus,
So far I have reinstated by magicJack trunk in Trixbox but pointed it do my PC running the .net proxy for now. I didn't want to play around with mono yet. Also there is someone else here that looks like they are compiling C code native for linux which would remove the need for mono.
Darn and I just spent $100 bucks on a two port FXO card and got that working yesterday and now I am back to jack less magicJack...oh well if the proxy stops working I alway have a backup via the FXO card.
But its great having the better sound quality and call control that Asterisk gives vs. the magicJack dongle.
So far I have reinstated by magicJack trunk in Trixbox but pointed it do my PC running the .net proxy for now. I didn't want to play around with mono yet. Also there is someone else here that looks like they are compiling C code native for linux which would remove the need for mono.
Darn and I just spent $100 bucks on a two port FXO card and got that working yesterday and now I am back to jack less magicJack...oh well if the proxy stops working I alway have a backup via the FXO card.
But its great having the better sound quality and call control that Asterisk gives vs. the magicJack dongle.
That's what I've been saying. Your source will be more useful than mine so I'll defer to you on that.teddy_b wrote:ameir,
All the details with the exact algorithm are on the page 3 of this thread, dtm's post. There's really nothing else you can get from the az1324 sources.
But I just wrote the same thing in plain C last night, and it's running on my linux-based router already along with the Asterisk server. Can be compiled for any other Linux distribution of course. I'll post it later when I get back home tonight - unless of course someone else beats me to it - it's really not a complex app to write.
Ok, here's the plain C version of the simple MJ proxy:
http://www.mediafire.com/file/yzwmjzotm ... y.c.tar.gz.
It works exactly the same as the az1324's app - the only difference is that it doesn't need mono to run on Linux - can be compiled for [almost] any linux distribution, including embedded systems like OpenWRT.
Of course, you need to know how to compile applications from sources for your linux system. You can create a Makefile, or just run gcc to compile it, somethig like:
gcc -o mjproxy md5.c mjproxy.c
Run it using the following command:
mjproxy listen-ip(can use 0.0.0.0) listen-port your-preferred-mj-proxy-server-addr mj-proxy-port(should be 5070) your-mj-password
The listen port should also be 5070 for incoming calls to work, however outgoing should work with any listen port.
Then configure your client the same way as you did for az1324's proxy - specify the listening IP and port of the proxy as the outbound proxy on your ATA or * trunc. Just remember not to expose this proxy to the Internet without additional protection, as anybody who can connect to it will only need to know your MJ phone number to be able to register and make calls using your MJ account.
You can modify the app as you wish - clean up the mess in my code (I've been doing .NET stuff for too long), add more console output or logging, add support for config file, make it to replace user-agent, etc etc... But I suggest you don't spend too much time on it - MJ seems to be determined to screw up any attempts to use MJ service without the dongle, so I bet it's not going to last long... And the next time dtm may not be around to discover the changed algorithm, or it will take someone too long to figure it out...
http://www.mediafire.com/file/yzwmjzotm ... y.c.tar.gz.
It works exactly the same as the az1324's app - the only difference is that it doesn't need mono to run on Linux - can be compiled for [almost] any linux distribution, including embedded systems like OpenWRT.
Of course, you need to know how to compile applications from sources for your linux system. You can create a Makefile, or just run gcc to compile it, somethig like:
gcc -o mjproxy md5.c mjproxy.c
Run it using the following command:
mjproxy listen-ip(can use 0.0.0.0) listen-port your-preferred-mj-proxy-server-addr mj-proxy-port(should be 5070) your-mj-password
The listen port should also be 5070 for incoming calls to work, however outgoing should work with any listen port.
Then configure your client the same way as you did for az1324's proxy - specify the listening IP and port of the proxy as the outbound proxy on your ATA or * trunc. Just remember not to expose this proxy to the Internet without additional protection, as anybody who can connect to it will only need to know your MJ phone number to be able to register and make calls using your MJ account.
You can modify the app as you wish - clean up the mess in my code (I've been doing .NET stuff for too long), add more console output or logging, add support for config file, make it to replace user-agent, etc etc... But I suggest you don't spend too much time on it - MJ seems to be determined to screw up any attempts to use MJ service without the dongle, so I bet it's not going to last long... And the next time dtm may not be around to discover the changed algorithm, or it will take someone too long to figure it out...
Last edited by teddy_b on Tue Jun 30, 2009 11:50 pm, edited 1 time in total.
Thank you and to all those who contributedteddy_b wrote:Ok, here's the plain C version of the simple MJ proxy:
http://www.mediafire.com/file/yzwmjzotm ... y.c.tar.gz.
It works exactly the same as the az1324's app - the only difference is that it doesn't need mono to run on Linux - can be compiled for [almost] any linux distribution, including embedded systems like OpenWRT.
Of course, you need to know how to compile applications from sources for your linux system. You can create a Makefile, or just run gcc to compile it, somethig like:
gcc -o mjproxy md5.c mjproxy.c
Run it using the following command:
mjproxy listen-ip(can use 0.0.0.0) listen-port your-preferred-mj-proxy-server-addr mj-proxy-port(should be 5070) your-mj-password
Then configure your client the same way as you did for az1324's proxy - specify the listening IP and port of the proxy as the outbound proxy on your ATA or * trunc. Just remember not to expose this proxy to the Internet without additional protection, as anybody who can connect to it will only need to know your MJ phone number to be able to register and make calls using your MJ account.
You can modify the app as you wish - clean up the mess in my code (I've been doing .NET stuff for too long), add more console output or logging, add support for config file, make it to replace user-agent, etc etc... But I suggest you don't spend too much time on it - MJ seems to be determined to screw up any attempts to use MJ service without the dongle, so I bet it's not going to last long... And the next time dtm may not be around to discover the changed algorithm, or it will take someone too long to figure it out...
Works perfect calling out but incoming goes straight to vm
Sorryteddy_b wrote:Well... Did you read the post above yoursvMAC wrote:Any progress on getting this to run as a service/ addon for OpenWRT?? Just compile it using OpenWRT toolchain, and you're good to go...
You may want to setup a donation page for all those thankful for the help you all have provided.
I used the following commandteddy_b wrote:Don't know why - here incoming works perfect, as well as outgoing, with Asterisk and this command to run the proxy:samdaman wrote:Works perfect calling out but incoming goes straight to vm
mjproxy 0.0.0.0 5070 proxy01.my_favorite_proxy.talk4free.com 5070 XXXXXXXXXXXXXXXXXXXX
Code: Select all
mjproxy 0.0.0.0 6987 proxy01.my_favorite_proxy.talk4free.com 5070 XXXXXXXXXXXXXXXXXXXXPOST EDIT: YES! it now works and very clear audio both ways
My answere to your question is "Yes, I am a newbie for putting 6987 for my listening port as you can see hahaha
thanks for the c code, compiled nicely and works great on my WRT54G w/Kamikaze 8.09.
for anyone with a similar setup, here is the binary(for brcm-2.4, ymmv on other platforms), directly from teddy_b's code without modification
http://www.mediafire.com/download.php?m3tymmejhwu
download, unzip and install with opkg
and to make it run on startup, create /etc/init.d/mjproxy
then run
for anyone with a similar setup, here is the binary(for brcm-2.4, ymmv on other platforms), directly from teddy_b's code without modification
http://www.mediafire.com/download.php?m3tymmejhwu
download, unzip and install with opkg
and to make it run on startup, create /etc/init.d/mjproxy
Code: Select all
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org
START=70
STOP=70
start() {
mjproxy 0.0.0.0 5070 proxy01.your_city.talk4free.com 5070 your_password
}
stop() {
pkill -9 mjproxy
}
Code: Select all
chmod a+x /etc/init.d/mjproxy
/etc/init.d/mjproxy enable
Last edited by pagemen on Wed Jul 01, 2009 9:09 pm, edited 1 time in total.
Thanks for the C version. I compiled it with no problem and was up and running in about 5 minutes after I repointed my MJ Trunk on my PBX to 127.0.0.1.teddy_b wrote:Ok, here's the plain C version of the simple MJ proxy:
http://www.mediafire.com/file/yzwmjzotm ... y.c.tar.gz.
It works exactly the same as the az1324's app - the only difference is that it doesn't need mono to run on Linux - can be compiled for [almost] any linux distribution, including embedded systems like OpenWRT.
Since I don't take inbound calls on the MJ trunk I have upped the proxy port number not to conflict with my PBX's inound ports.
Many, many thanks to dtm, az1324, teddy_b, Stewart and to all those who contributed to this thread! Great job and good stuff here! This is definitely a start and it will be interesting how long it will last! A true, genuine Tip/Trick/Hack!
I'm curious - if it weren't for algorithm:MD5 in the initial wireshark captures could this have even been accomplished? Could this be done on their end where they don't expose the encryption algorithm or can all things eventually be decrypted, even if the info isn't given?
Synchron
I'm curious - if it weren't for algorithm:MD5 in the initial wireshark captures could this have even been accomplished? Could this be done on their end where they don't expose the encryption algorithm or can all things eventually be decrypted, even if the info isn't given?
Synchron