เอา Router ต่อ truewifi แบบออโต้!!

posted on 07 Jun 2012 11:54 by s4m3l0 in Tech directory Tech, Knowledge
ที่จิงเอาเราว์เตอร์ยี่ห้อไหนก็ได้นะที่ลง Openwrt ได้อ่ะคับส่วนลิสรายการ Router ที่ลง Openwrt ได้ http://wiki.openwrt.org/toh/start
หรือจะไม่ใช้ Openwrt ก็ได้ อาจจะเป็น DD-Wrt หรืออื่นๆ แต่ต้องรัน shell script ได้

เราว์เตอร์ที่ใช้ในตัวอย่าง wrt54gl
ตัวเฟิมแวร์ Openwrt
คำเตือน : โปรดใช้อย่างระมัดระวัง และควรศึกษาให้ดีก่อนที่จะทำ ผมไม่รับผิดชอบต่อความเสียใดๆ ทั้งสิ้นน่ะคับ

ตัวเฟิมแวร์ที่จะลง
http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/openwrt-wrt54g-squashfs.bin
(ถ้าจะลงรุ่น backfire ก็ได้นะ แต่พื้นที่การลงโปรแกรมจะไม่พอ ต้องเอา SDCard,USB,ฯลฯ มาเพิ่มพื้นที่ ซึ่งส่วนนี้ศึกษาเอาเองนะคับ)

หลังจากลงเสร็จแล้ว ให้ทำการ

telnet 192.168.1.1

และทำการตั้งพาสเวิด

passwd

หลังจากนั้นจะสามารถล็อกอินแบบ ssh ได้

ssh root@192.168.1.1 

หลังจากล็อกอินเสร็จจะเป็นในรูป(เอารูปเก่ามาโชว์ ขี้เกียจเอารูปใหม่ = =")


ใส่สคิปส์ไปที่ /usr/bin/truecond โดสยใช้คำสั่ง

vi /usr/bin/truecond

ทำการวางโค้ด ก่อนจะวางโค้ดให้ทำการแก้ไข้ username,password ก่อน
#! /bin/sh
utime=`echo ICT-7 > /etc/TZ`
sleep 10
trueusername='username' truepassword='password' logout() { curl --user-agent "Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0" --cookie /tmp/cookiejar.txt --cookie-jar /tmp/cookiejar.txt --insecure "https://portal.trueinternet.co.th/wifiauthen/logout_result.php" } logout_para() { curl --user-agent "Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0" --cookie /tmp/cookiejar.txt --cookie-jar /tmp/cookiejar.txt --connect-timeout 5 --location --insecure --data "param=$parameter" 'https://portal.trueinternet.co.th/wifiauthen/web/wifi-logout-success.php?param=$parameter' } login() { param=$(curl -iI www.google.com |grep login |sed -e 's/.*login.do?//') parameter=$(curl --user-agent "Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0" --location --cookie /tmp/cookiejar.txt --cookie-jar /tmp/cookiejar.txt --insecure "https://portal.trueinternet.co.th/wifiauthen/login.do?$param" | grep param= | sed -e 's/.*param=//' -e 's/\".*>//') curl --user-agent "Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0" --location --cookie /tmp/cookiejar.txt --cookie-jar /tmp/cookiejar.txt --insecure "https://portal.trueinternet.co.th/wifiauthen/web/wifi-login.php?param=$parameter" curl --user-agent "Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0" --referer "https://portal.trueinternet.co.th/wifiauthen/login.php" --cookie /tmp/cookiejar.txt --cookie-jar /tmp/cookiejar.txt --data "username=$trueusername&password=$truepassword&param=$parameter" --insecure "https://portal.trueinternet.co.th/wifiauthen/login_result.php" } logout login sleep 5
while [ 1 ]; do up=`curl 'www.google.com/search?q=ip' | grep 'Client IP address:'` #check web external site if [ "$up" ]; then # synctime to avoid crontab time missing sync=`ntpdate ntp.ubuntu.com` # delay for 175 minute which is default truewifi disconnect every 180 minute sleep 10500 logout logout_para login else logout logout_para login fi sleep 2 rm /tmp/cookiejar.txt done

code on Github

ทำการเซฟในโปรแกรม vi โดยการพิมพ์ :wq

:wq

ทำการเปลี่ยน permission เพื่อทำให้สคิปส์รันได้

chmod a+x /usr/bin/truecond

ทำการเชื่อมต่ออินเตอร์เน็ตกับ Router โดยเข้าไปที่

http://192.168.1.1

และทำการสแกนหา @Truewifi และทำการเชื่อมต่อ

จากนั้นก็ให้ล็อกอิน truewifi เหมือนปกติผ่านทาง router
ทำการล็อกอินเข้า Router อีกครั้ง

ssh root@192.168.1.1

ทดสอบการเข้าอินเตอร์เน็ต

ping google.com

ถ้าทดสอบแล้วใช้ได้ ก็ทำการอัพเดต Package

opkg update

ทำการติดตั้ง ntp-update เพื่อให้เวลาถูกต้อง

opkg install ntpdate

ทำการติดตั้ง cURL ใช้ในการเชื่อมต่อ truewifi ในสคิปส์

opkg install curl

ทำการติดตั้ง libopenssl ใช้ในการรับรองหน้าเวบที่เข้ารหัสแบบ https ในสคิปส์

opkg install libopenssl

ต่อไปทำให้สคิปส์รันเมื่อเปิด Router ทุกครั้ง

vi /etc/init.d/truenet

ทำการวางโค้ด
#!/bin/sh /etc/rc.common
START=99 start() { /usr/bin/truecond > /dev/null 2>&1 & } stop() { killall -9 truecond killall -9 sleep }
และทำการเซฟ :wq

:wq

chmod a+x /etc/init.d/truenet

และทำให้เมื่อเปิดเครื่องให้ทำการรันสคิปส์

ln -s /etc/init.d/truenet /etc/rc.d/S99truenet

และทำการรีสตาร์ท Router

reboot

ในที่นี้ผมเปลี่ยนจากการใช้ wget เป็น cURL นะคับ จึงไม่ต้องติดตั้ง wget ของ gnu
Scrpit version เก่า
ทำการแก้ไขสคิปใหม่ให้ตรงกับ parameter ของ truewifi

edit @ 25 Jul 2012 17:50:31 by s4m3l0 

Treuwifi เปลี่ยน parameter อีกแล้ว แล้วก็มีตัวแปร param เพิ่มมาอีก Yell แต่ผมได้ทำแก้ไข bash script แล้วลองใช้ดูกันครับ Embarassed

edit @ 1 Aug 2012 18:11:45 by s4m3l0

update script 

edit @ 2 Dec 2012 13:51:41 by s4m3l0 

update script to version 2.0 Cool

แก้ไขลิงค์การติดตั้ง cURL ให้ถูกต้อง

edit @ 9 May 2013 19:56:01 by s4m3l0

แก้ไข scirpt V2.0 ให้ถูกต้อง

edit @ 22 May 2013 02:57:44 by s4m3l0

fixed check web external site

edit @ 15 Jul 2013 01:43:50 by s4m3l0

fixed code error.Recommend for code on github.

edit @ 22 Aug 2013 20:09:59 by s4m3l0

เพิ่มการตรวจจับ ค่า VLAN

edit @ 23 Aug 2013 16:18:01 by s4m3l0

fixed format code html error for this web. Recommend for code on github.

edit @ 24 Aug 2013 03:27:32 by s4m3l0

fix indent and remove check ip

edit @ 28 Aug 2013 01:08:15 by s4m3l0

fix detail

edit @ 29 Aug 2013 21:53:29 by s4m3l0

Comment

Comment:

Tweet

ขอความช่วยเหลือหน่อยครับ ผมมือใหม่เรื่องเน็ตเวิร์ค

ผมใช้ Ubiquiti NanoStation Loco M2 จับสัญญาณจาก TrueWifi ​แล้วมาปล่อยด้วย AP ให้อุปกรณ์ต่างๆ โดย M2 ทำหน้าที่เป็น router และ DHCP ซึ่งใช้งานได้เป็นปกติดี พอดีมาเจอบทความนี้น่าสนใจมากเลยลองทำดู

หลังจากที่ลง OpenWrt (Barrier Breaker 14.07) จับสัญญาณ TrueWifi ได้ แต่เข้าหน้า Login TrueWifi ไม่ได้ ที่ address bar ขึ้น URL ของ TrueWifi แต่ Chrome บอกว่าหาไม่เจอ มีข้อความประมาณว่า failed ... nxdomain

ผมเช็คค่าต่างๆ ได้ดังนี้
ที่ OpenWrt WWAN จับสัญญาณ TrueWifi ได้ DNS เป็น 10.42.254.35 และ 10.42.254.35
ส่วนที่เครื่อง Macbook Pro ของผม รับ IP จาก DHCP ของ OpenWrt ได้ค่า DNS 192.168.1.1 และมี Search Domain เป็น lan

ผมลองลบ lan ออกจาก Search Domain ของ DHCP ที่ OpenWrt แล้วรีบูท ทำให้ที่ Search Domain lan ที่ Macbook Pro หายไป แต่ก็ยังเข้าหน้า Login TrueWifi ไม่ได้

ผมลองใส่ DNS ที่ Macbook เป็น 10.41.254.35 จึงเข้าหน้า Login TrueWifi ได้

ตอนที่ใช้ Firmware ของแท้ของ M2 ซึ่งทำงานได้ปกติ ผมเช็คค่าต่างๆ ได้ดังนี้
ที่ M2 WLAN0 จับสัญญาณ TrueWifi ได้ DNS เป็น 10.42.254.35 และ 10.42.254.5
ส่วนที่ Macbook ซึ่งรับค่าจาก DHCP ของ M2 ได้ค่า DNS 192.168.1.1 และไม่มีค่า Search Domain

ไม่ทราบว่า OpenWrt ทำไมไม่ได้ มีวิธีแก้ไขไหมครับ ช่วยแนะนำด้วยครับ ขอบคุณมากครับ

#24 By rtsplix on 2015-05-23 21:13

ออ หาข้อมูลมา ไม่แน่ใจเข้าใจถูกหรือเปล่า
สรุปว่า busybox
...
น่าจะต้อง mount แล้ว สร้าง script ไว้ที่อื่น
แต่จะทำให้ มัน เริ่มตอน start ต้องไปสั่งไว้ใน web gui มันมี save start
ผมอ่อนด๋อยกับเรื่องพวกนี้มากเลย ถ้ามีคำแนะนำ รบกวนด้วยนะครับ

#23 By อืมม (1.46.228.40|1.46.228.40) on 2015-02-12 07:49

Read only file system 
ไม่สามารถ สร้างไฟล์ใน /usr/bin ได้
ขอคำแนะนำหน่อยครับผม
WRT54GL with dd-WRT 24sp2
telnet ผ่าน telnet ของ windows7 และ putty ได้ผลเหมือนกันครับ
login โดย root
เสร็จ สั่ง ssh root@ip  
ใส่ pass
แจ้ง key ไม่ตรง กด continue
ผมทำอะไรตกหล่น หรือว่าต้อง set อะไรผ่าน web ก่อนหรือเปล่า
รบกวนด้วยนะครับ

#22 By อืมม (103.254.153.139|103.254.153.139) on 2015-02-10 00:42

@Nismo อืมม ผมลองล่ะ ทำไม่ได้ผมหมายถึงพวกติดตั้ง optware อ่ะ... ติดตั้ง curl ไปทีก็เกือบจะเด็มแล้ว แล้วติดตั้ง openssl อีกไม่น่าจะได้ครับ
ผมใช้ curl ในการ post-data ไปที่ truewifi น่ะครับ
แล้วก็ openssl สำหรับการเข้าหน้าเว็บแบบ https เพื่อความปลอดภัยทำให้ผู้ที่ไม่หวังดีที่ทำการ sniff packet ไม่สามารถที่จะถอดรหัสได้ตรงๆ
ผมแนะนำ DD-wrt มากว่า หรืออันที่ดีที่สุดก็ Openwrt ครับ(แต่ GUI ห่วยมาก เหอๆ ส่วนมากมันทำได้เยอะกว่า firmware อื่นๆ อ่ะ แต่ต้องทำใน CLI(Command line) เท่านั้น ใน GUI ทำไม่ได้ แต่สามารถใช้ UCI ใน CLI เพื่อความง่ายครับ ==" (ซึ่งผมมองมันไม่ต่างกันเท่าไรอ่ะ ไอ้ UCI VS CLI แค่เพิ่มความสะดวกนิดนึง ))
ไม่ทราบว่าใช้ wrt54* ใช่ไหมหว่า
ถ้าใช่ ตัว Driver wireless มันเหมือนกันกับ tomato สามารถทำ repeater ได้เหมือนกันอ่ะครับ แต่ต้องลง brcm-2.4 kamikaze น่ะครับ
brcm-2.4 ตัว ไดร์เวอร์ไวเลส มันเป็น Proprietary จาก broadcom ไม่ใช่ Opensource อ่ะเห็น developer บอกว่าได้มากจาก third party ไม่ได้จาก boardcom โดยตรง มันเลยเป็นปัญหา... หลายอย่างมาก!!
ที่จิงผม จะทำ GUI ให้มันใช้ง่ายๆ น่ะ https://github.com/blackb1rd/Openwrt-wrt54gl แต่ Luci ที่เป็น GUI มันไม่ง่ายเลยอัพเดตรโครงสร้างให้เป็น Luci เวอร์ชั่นใหม่ง่ะ

#21 By s4m3l0 on 2013-09-18 19:59

ผมพิมพ์ mount -o remount,rw / เข้าไปแล้ว แต่ก็ยัง Read-Only อยู่ครับ
ปล.ต้องใส่ตอนไหนอย่างไงครับ wink
ขอบคุณคับ

#19 By Nismo (171.99.44.209) on 2013-09-15 13:40

@baraqkak
สำหรับค่า vlan ดูไฟล์ truecond ใหม่ได้เลยครับ
ไม่ต้องใส่ค่า vlan แล้วน่ะคับ ผมเปลี่ยนให้มันเช็คค่าได้ล่ะ(งมแปปเดียวได้เลย ฮ่าๆ) confused smile

#18 By s4m3l0 on 2013-08-23 16:24

@Nismo @hibeamz
ให้ทำการเปลี่ยนจาก Read-only เป็น Read-write ด้วยครับใน Tomato
โดยพิมพ์
mount -o remount,rw /
big smile

#17 By s4m3l0 on 2013-08-22 20:25

@baraqkak เวลา login truewifi ค่า VLAN แต่ล่ะทีไม่(น่าจะ)เหมือนกัน
วิธีดูค่า VLAN
ก่อน redirect ไปยังหน้า login truewifi จะมีทั้ง mac address และก็ค่านี้คับ(ซึ่งผมก็ไม่เข้าใจว่ามันคือค่าอะไร)
เด๋วว่างๆ อาจจะทำวิดีโอ หรืออาจจะเขียนใน script เพิ่มเติมถ้ามีเวลาว่างพออ่ะครับ big smile

#15 By s4m3l0 on 2013-08-22 20:18

กะกำ ไม่ได้เข้านาน
@hibeamz เพิ่งเห็นว่าโค้ด error แหะๆ ตรง login(น่าจะเพราะ format ของการแก้ไขในเวบมันเพี้ยนๆ)
แนะนำดูโค้ดใน github ครับ https://github.com/blackb1rd/auto-truewifi-router/blob/master/truecond.sh

#14 By s4m3l0 on 2013-08-22 20:13

ใน Tomato ใส่แล้วพอเซฟ ขึ้น read-only พอหาโดย ls /usr/bin ก็ไม่เจอที่เซฟ แนะนำด้วยครับ

#13 By Nismo (171.99.46.238) on 2013-08-09 18:22

แก้ไข ค่านี้ครับ
VLAN='eth/15/0/0:xxx.xxx'

#12 By baraqkak (49.0.72.101) on 2013-08-05 12:12

สวัสดีครับ รบกวนถามนิดครับ ผมนำ scripts ของท่านไปใช้ใน Tomato router ครับ โดยที่ไฟล์อยู่ /opt/bin/truecond และ /opt/etc/init.d/S99truenet
ผมสามารถติดต่อได้แต่ไม่ auto connect อาจเป็นเพราะค่านี้
<span class="\"pln\"">vlan</span><span class="\"pun\"">=</span><span class="\"str\"">\'eth/x/x/x:xxx.xxx\' ซึ่งผมไม่เข้าใจจะใส่อะไร?
ขอบคุณท่านมากครับ</span><span class="\"pln\""> </span>

#11 By baraqkak (49.0.72.101) on 2013-08-05 12:09

ผมทำตามขั้นตอนแล้วไม่ได้คับ
อยากรบกวนขอไฟล์ truecond หน่อยในหน้าเว็บรันแล้วerror T_T
hibeamz@hotmail.com
ขอบคุณครับ

#10 By hibeamz (171.99.114.19) on 2013-07-18 23:29

ทดลอง ล่าสุด 9 may 2556 ใช้ได้ปกติน่ะคับbig smile

#9 By s4m3l0 on 2013-05-09 20:57

@JOJO
ต้องแปลงไหม?
อืมม ใช้แต่สคริปต่อ truewifi(ที่มีใส่ username&password) น่าจะอันเดียวอ่ะครับ
แล้ววิธีทำให้มัน autorun script
http://www.dd-wrt.com/wiki/index.php/Script_Execution big smile

#8 By s4m3l0 on 2013-05-04 03:34

ถ้าใช้ใน DD-WRT ต้องแปลงสคริปมั๊ยครับ ตอนนี้ใช้เร้าเตอร์ ASUS RT-N10 C+ ยังไม่กล้าลง Openwrt ครับ

#7 By ๋JOJO (103.7.57.18|202.151.6.29) on 2013-03-25 13:00

@somkiat8080
ไม่ทราบว่าใช่ putty ใช่ไหมครับ ถ้าใช่ก็กดปุ่มตรงกลาง mouse ที่ใช้สำหรับเลื่อ scollbar ขึ้นลง ก็สามารถวางโค้ดได้
จะรู้ได้ไงว่า save?
vi คือ text editor ...
หลังพิมพ์ :wq
ลองพิมพ์ ls (คำสั่งโชว์ไฟล์และโฟลเดอร์)
แล้วจะเห็นชื่อไฟล์ที่เราเซฟคับ big smile
เช่น
vi /usr/bin/truecond
ทำการเซฟ :wq
แล้วลองพิมพ์ ls /usr/bin
ลองหาไฟล์ truecond แล้วจะเจอคับsad smile (จะงงไหมเนี่ย)
ทั้งหมดนี้เป็นคำสั่ง linux น่ะคับลองหาเอาได้คับ

#6 By s4m3l0 on 2012-12-02 14:02

สามารถล็อกอินแบบ ssh ได้แล้ว
แต่ทำการวางโค้ดไม่ได้
และ save ยังไง จะรู้ได้ยังไงว่า save แล้วครับ
ขอคำแนะนำด้วยครับ [มือใหม่]

#5 By somkiat8080 (103.7.57.18|125.24.89.5) on 2012-09-14 00:12

ผมแก้ไขสคิปต่อให้แล้วนะคับ ผมลองกับตัวเองล่ะใช่ได้ cry
ส่วนข้างล่างนี้ผมไม่แน่ใจว่าเหมือนกันทุกคนไหม อ่ะคับ
ถ้าใครลองแล้วก็ช่วยบอกหมายเลขด้านล่างด้วยนะครับ เอามาเทียบกับผมว่าตรงไหม ถ้าตรงผมจะได้ตัดโค้ดตรงนี้ออก
wlanip='xxx.xxx.xxx.xxx'
nasip='xxx.xxx.xxx.xxx'
VLAN='eth/15/0/0:xxx.xxx'

#4 By s4m3l0 on 2012-07-25 17:55

ขอขอบคุณที่ได้มีของเล่นใหม่ๆให้เล่นคับ
ผมได้ทำตามขั้นตอนสมบรูณ์ครบทั้งหมด แต่ไม่สามารถ login เลยอยากจะขอคำแนะนำ debug บรรทัด login ไปเก็บ log เพื่อตรวจสอบ error ว่าโชว์ปัญหาอะไรถึงเข้าไมไ่ด้ ขอคำชี้แนะหน่อยคับ 
ขอบคุณล่วงหน้า

#1 By pok1800 (103.7.57.18|203.144.144.164) on 2012-07-13 10:51