# WRT54G/Tomato 1.21++ Reconnect-Batchfile

UPDATE! I’ve updated the script to work for Tomato 1.25 (and hopefully upwards) – links below updated.

Some of you pirating people are downloading stuff from Rapidshare. Rapidshare, among other providers of free online storage and downloads, employ a policy that lets the user download a certain amount of data and then forces him to wait for a couple of hours before being able to again download something.

People (who are on dynamic ip connections) usually circumvent this by restarting (also ‘resetting’) their router. Some are clever enough to utilize tools for that task that log into your router and reset the connection.

People using Tomato however have been unable to use some of the Software written for that task, because as of Tomato 1.14 (changelog), in which the author fixed a cross site scripting vulnerability, just calling a URL on the Web-Interface won’t do it anymore.

I have written a php-script started by a batchfile that will let you reconnect your Tomato-running router with one click and no other tools than the ones provided.

The thing that Jon, the author of the Tomato and previously Tofu Firmware did was the following: He introduced a POST-variable into every form of the Web-Interface that would be transmitted upon clicking a button. As the content of this variable is created randomly after the first bootup of your router, a perpetrator using javascript to access your router’s WebIf would have no way of executing anything, as he doesn’t know that particular, 19 character long code.

You only do get to see this code when you log into your router’s WebIf – for which you need your router’s password – and view the source code. Since you probably want to save yourself the trouble of everytime hitting a shitload of buttons to reconnect your router, i wrote a script that retrieves that aforementioned POST-variable by logging into your router’s WebIf and afterwards submitting the commands for disconnection of the WAN-port and consecutive reconnection of the latter.

A short explanation on the files contained in the package:

• routerreconnect.php
the script that i wrote and does all the work – edit this for your webif-password and router ip
• routerreconnect.bat
the batch-file that calls the script
• exec – a folder containing files required for the script to work
• php.exe, php.ini, php5ts.dll
a very rudimentary distribution of php5(.2.6) – the ini file is the recommended version with curl-support edited into it – PHP License 3.0.1
• php_curl.dll
the curl php module required to send the commands to the router – PHP License 3.0.1
• ssleay32.dll, libeay32.dll – Apache-style licence
openssl files that are required for the curl extension to run (we’re not accessing ssl sites, but go on and try to disable that function in the module!)

I have tested this combination on computers that run neither php, nor openssl and it should work just fine on yours as well. This script has been tested with Tomato 1.19 and 1.21 (the latest one at the time of this posting) and worked well with both of them. As the WebIf doesn’t return any data after triggering its reconnection-function, it’s hard to debug if something goes wrong, hence i didn’t include any real status messages.

I’m not guaranteeing anything, but since the script shouldn’t break anything either, just try it, alright?

## 30 responses to “WRT54G/Tomato 1.21++ Reconnect-Batchfile”

1. Hub's says:

Hi,

I’m french, excuse me my english.

Thank you very much, your script works great !!!

Bye bye 🙂

2. Kleeschen says:

Not working for my Tomato v_19

cmd :

oida reconnecten
GL script\routerreconnect.php on line 28
54GL script\routerreconnect.php on line 29

3. Kleeschen says:

The script is working just fine, after an update to the v_23 firmware, AND changing my big mistake in the php file :

$router_login=”admin”; // standard$router_pw=”admin2″; // pw des webif
$router_ip=”192.168.2.1″; // nach moeglichkeit ip und nicht den hostnamen, resolven isn umstand NO -> You have to leave “root” as “router_login !!! so it has to be like this :$router_login=”root”; // standard
$router_pw=”admin2″; // pw des webif$router_ip=”192.168.2.1″; // nach moeglichkeit ip und nicht den hostnamen, resolven isn umstand

Many thanks to “bogderpirat” who helped me out

Best regards

-Kleeschen-

4. diz says:

laeuft perfekt mit tomato 1.21 auf nem linksys wrt-54 gl … besten dank!

5. JT says:

Hello,

6. Julian says:

i have this feeling that comment might be more fitting for something jdownload-related…
if you are referring to the script: only to your router.

as for “compromising pc security”… security is a concept that in terms of network security, is made up of a great many of modular issues that, each for itself, has to be made certain to not be of any threat. you might say, the script provided here makes your home network “less secure”, in that it saves the login to your router on your computer in plain text. if however your computer is somewhat secure against intrusion and spying of your hdd, this script does not make your pc or network as a whole any more vulnerable than it already is. it just adds functionality.

7. TaToosh says:

not working for me in v1.23

8. TaToosh says:

• Julian says:

did you make sure that:
1. you entered both the username (usually “root”) and the password as well as
2. the router’s ip
correctly in the .php file as the instructions say?

9. TaToosh says:

yes i did it.

10. grw says:

Did not work with actual version of Tomato.
Same problem like TaToosh.

preset for tomato 1.19.XXXX.

after changing the TID code in the preset srcipt (it should be different for different routes).

i can use the modified preset to reset my WRT54GS tomato 1.19 router and obtain new ips correctly.

so i think maybe this php script will be not necessary for the latest jdownloader.

anyway, i still should say thanks to you, because i use your script before and it works as expected.

cheers.

12. tatoosh says:

i idid it the same way with Tomato 1.23VPN.

used tomato 1.19 script and changed ALL TIDs.
the TID from your router appears after logging out from the web interface in the addressline.

13. Ashish says:

Hi,
thanks for the script. It helped me complete a small project for one of my client. I needed to tweak the script a bit ( I know quite a bit of php & html) to automate mac address randomization but i guess, i would not have been able to login without it.

Thanks. I owe you some bucks. Feel free to ask for a favor if you need any of my help.

• i’ve been trying desperately to find a way to automate the mac address change, could you please share your work, it would be greatly appreciated. thanks.

14. Julian says:

as for the two guys for whom it does not work:
@tatoosh are you using the HTTPS-only login method? (administration/admin access) have you changed the port? if no, any other particular changes to the default setup of the firmware? from the error messages, it appears that the router’s page cannot be parsed in order to obtain the correct TID.

as for tomato 1.25… i will look into adapting the script as soon as i upgrade my router to 1.25. … which will have to wait until this lazy victek person upgrades his firmware mod. 🙂

15. Julian says:

i’ve optimized and thus repaired the script, something went awry after the update to 1.25. should now work very well, except if something major changes (this wasn’t the case from 1.23->1.25 apparently).

16. baer says:

Hi,

this don’t work for me: –> Tomato 1.23

PHP Notice: Undefined offset: 2 in J:\routerreconnectwan\routerreco
nect.php on line 24
found http_id=
disconnecting…
waiting…
reconnecting…
done!

17. baer says:

Now i have Updated my Router to Tomato 1.25 but still the same problem. Any Ideas?

I changed the Password and the IP in the routerreconect.php. Also http Access is enabled.

18. Julian says:

meh 😐
would you kindly open up routerreconnect.php in a text editor (such as wordpad) and look for the first occurrence of this line:

curl_close($ch); this should be in line 20 by my count. right after this line, insert the following lines:$fh=fopen(“./debug.txt”,”w”);
fwrite($fh,$quellkot);
fclose(\$fh);

this will create a file “debug.txt” in the directory your script resides that contains the HTML contents of the site your router sends you after you have logged in. now look at the file:
– if it is very small (<=1KB), there might be something wrong with your configuration or your network connectivity. you should post (or email/im me, details on the contact page) both your configuration (lines 7-9 of the script) and the debug.txt output.
– if it has a size of around 6-8KB, you should send me the debug.txt file, for the email address see the contact page.

– does the script take longer than 3 seconds to execute?
– are you using some sort of firewall you might have blocked php.exe in?

19. ali says:

hey the reconnect.bat doesnt excecute everytime i get the error : weil msvcr71.dll nicht gefunden wurde … he cant find the msvcr71.dll
I downloaded this dll copied it into thy \system32 folder and the reconnect folder but still the same error message ….
any help ?

20. ali says:

still the same
i tried this batch file 1 month ago on my last laptop using xp , which doesnt work anymore . now i got a fresh clean new one but using vista …. doesnt know if its more help

21. Julian says:

uhm, well..
did you try:
– rebooting
– moving the dll file to the exec\ directory
– registering the dll file like so: start -> run -> regsvr32 x:\path\to\msvcr71.dll
– running the batchfile as an administrator?

i have no problem running this thing on a vanilla windows vista and windows 7 install, if any of these things help, please let me know.
?

22. Taco says:

Thank you very much! You are my hero for today.

I can confirm this is working with Asus WL-520GU and 1.25 ND

23. Taco says:

Please note that Secunia has flagged the included version of PHP (5.2.6) as vulnerable. Thanks again!

24. Elmario says:

Thank you, it’s working great on my WRT54GL Tomato 1.25!

25. inb4thekill says:

Is there any alternative to the tomato firmwar?

I’m fuckin tired of searching for another reconnect method everytime the firmware gets an update. Why is this anyway?

26. youwish says:

@ inb4thekill

I don’t know what you’re talking about. This works perfectly on W7 Ult. 32-bit, Asus WL-520gu , running Tomato 1.28 ND USB mod.

27. WanneBeUser says:

Could you please UL the script again, it is no more available (both RS and closed down MU). Thank you!!