-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsfr-neufbox-change-ip.sh
executable file
·128 lines (100 loc) · 3.04 KB
/
sfr-neufbox-change-ip.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/bash
CREDENTIALS=".credentials"
IP="192.168.1.1"
LIBS="./libs"
PHANTOM="$LIBS/phantomjs-1.9.7-linux-x86_64/bin/phantomjs"
TMP="./tmp"
COOKIES_FILE="$TMP/cookies"
GET_IP_URL="http://myip.leveugle.net"
TEMPLATES_DIR="./templates"
FILE_HASH="getHash.js"
FILE_WAN_LOGIN="getCurrentWanLogin.js"
FILE_WAN_PASSWORD="getCurrentWanPassword.js"
getCurrentIp ()
{
wget -q -O - $GET_IP_URL
}
waitfor ()
{
LIMIT=$1
i=0
while [ $i -lt $LIMIT ]
do
echo -n '.'
sleep 1
i=$((i+1))
done
}
copyAndReplaceTemplate()
{
FILE="$TMP/$1"
cp $TEMPLATES_DIR/$1.tpl $FILE
sed -i 's/%%IP%%/'$IP'/' $FILE
sed -i 's/%%challenge%%/'$ZSID'/' $FILE
sed -i 's/%%login%%/'$WEBLOGIN'/' $FILE
sed -i 's/%%password%%/'$WEBPASS'/' $FILE
}
clean()
{
rm -rf $TMP/
}
init()
{
if [ -e $CREDENTIALS ]
then
WEBLOGIN="$(cat $CREDENTIALS | cut -d: -f1)"
WEBPASS="$(cat $CREDENTIALS | cut -d: -f2)"
else
echo -e "Error: Missing $CREDENTIALS file.\nThis file have to contains login and password used to connect on the web interface.\nFormat of this file is:\nlogin:password"
exit 1
fi
mkdir -p $TMP
}
main()
{
clean
init
echo "Current IP is $(getCurrentIp)"
echo -n "Authenticating..."
wget -q -O /dev/null \
--keep-session-cookies --save-cookies=$COOKIES_FILE \
--referer=http://$IP/login \
--post-data='action=challenge' \
--header='Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
--header='X-Requested-With: XMLHttpRequest' \
http://$IP/login
ZSID=$(cat $COOKIES_FILE | grep sid | cut -f7)
copyAndReplaceTemplate $FILE_HASH
HASH=$($PHANTOM $TMP/$FILE_HASH)
POST_AUTH="method=passwd&page_ref=&zsid=$ZSID&hash=$HASH&login=&password="
wget -q -O /dev/null \
--load-cookies $COOKIES_FILE \
--referer=http://$IP/login \
--post-data="$POST_AUTH" \
--header='Content-Type: application/x-www-form-urlencoded' \
http://$IP/login
echo "OK"
copyAndReplaceTemplate $FILE_WAN_LOGIN
WAN_LOGIN=$($PHANTOM $TMP/$FILE_WAN_LOGIN)
copyAndReplaceTemplate $FILE_WAN_PASSWORD
WAN_PASSWORD=$($PHANTOM $TMP/$FILE_WAN_PASSWORD)
echo -n "Changing IP."
wget -q -O /dev/null \
--load-cookies $COOKIES_FILE \
--referer=http://$IP/network/wan \
--post-data="action=form_ppp&ppp_login=$WAN_LOGIN&ppp_password=WRONG$WAN_PASSWORD&submit=" \
--header='Content-Type: application/x-www-form-urlencoded' \
http://$IP/network/wan
waitfor 10
wget -q -O /dev/null \
--load-cookies $COOKIES_FILE \
--referer=http://$IP/network/wan \
--post-data="action=form_ppp&ppp_login=$WAN_LOGIN&ppp_password=$WAN_PASSWORD&submit=" \
--header='Content-Type: application/x-www-form-urlencoded' \
http://$IP/network/wan > /dev/null
waitfor 10
echo "OK"
echo "New IP is $(getCurrentIp)"
clean
}
main