acess
V2EX  ›  Android

没有 Java 基础,想要自己撸一个 OpenWrt 自动拨号 APP,难度有多大?

  •  
  •   acess · Nov 3, 2015 · 15992 views
    This topic created in 3869 days ago, the information mentioned may be changed or developed.
    LZ 非计算机相关专业大学生一枚,南京电信校园宽带用户。
    以前电信还不让用路由器分享网络。今年 10 月学校进行了一次网络改造,初步部署校园内网,电信宽带拨号方式也改了标准 PPPoE ,以前的天翼客户端被弃用了。我们试了路由器,现在也能正常使用了。

    但是电信搞了宽带绑定手机,需要发短信来获取 PPPoE 密码,有效期只有 6 小时。而且学校规定晚上是会定时断网的。
    (其实今年新办的套餐还必须装电信的 APP 才能拿到密码,发短信已经不行了)
    所以,想上网的话,就得先拿手机发短信 /打开电信的 APP ,获取密码,然后填到路由器上面(或者电脑的 PPPoE 拨号界面里)。
    虽然学校要求晚上断网,但实际上电信还开了公共 WiFi 热点,这个热点也可以用 PPPoE 拨号连上,晚上不会断线。只是无线感觉不是稳定,而且应该是有限速的,下载速度大概只有有线宽带( 60 元 /月套餐)速度的一半不到。
    总之,只要想在宿舍上网,每天都要手动获取密码、设置路由,实在是比较烦。而且, OpenWrt 的 LuCI 界面比较笨,操作起来很卡……(据说是内置闪存太慢导致的)所以 LZ 产生了这个想法。
    以前从同学手里拷到过一个旧版本破解路由配套的一键上网 APP ,但这个 APP 在电信送的手机上会崩溃,而且没有自动连接功能。
    Supplement 1  ·  Nov 3, 2015
    好像我没表达清楚。我的需求就是在电信绑定的手机上自动发短信获取密码,然后自动设置 OpenWrt 拨号。
    电信还弄了一个 APP 来取代发短信获取密码(办套餐送的手机当然是 Android 咯),我觉得这个我大概是搞不定的,但发短信、设置路由应该不难做吧。
    24 replies    2015-11-05 09:12:33 +08:00
    yeyeye
        1
    yeyeye  
       Nov 3, 2015
    先抓包把协议研究出来,然后模拟请求, Openwrt 能用 JAVA ?好像一般都是 bash 脚本吧
    crazycen
        2
    crazycen  
       Nov 3, 2015 via Android
    如果是 java 写的, luci 没 2g 内存跑不起来!
    andyhuzhill
        3
    andyhuzhill  
       Nov 3, 2015
    Openwrt  一般不是用C的么?
    sandideas
        4
    sandideas  
       Nov 3, 2015 via iPhone
    我的思路应该会是读取短信,正则出验证码,然后脚本拨号。。。
    arens
        5
    arens  
       Nov 3, 2015
    什么学校,必须用电信校园宽带吗?
    Troevil
        6
    Troevil  
       Nov 3, 2015
    重写 pppd 需要的是 c 不是 java ,java 要写起来那得花大代价
    Cavolo
        7
    Cavolo  
       Nov 3, 2015 via Android
    居然不是闪迅,你就高兴吧
    neo2015
        8
    neo2015  
       Nov 3, 2015
    openwrt 用 java 吗?一般不是 shell 和 lua 吗
    myth
        9
    myth  
    PRO
       Nov 3, 2015
    楼主的意思应该是想在一个废旧 android 手机运行个 APP 实现自动拨号的功能
    lijsf
        10
    lijsf  
       Nov 3, 2015   ❤️ 1
    之前做过一点 openWRT 的东西。你这个需求我觉得最简单的可以这么来搞。
    1. 在 openwrt 上写个 bash 定时任务脚本,定时去一个 web 接口上拿密码,然后拨号。
    2. 在 web 服务器上写个程序发短信获取电信的密码。
    这个方案简单易行,但有两个问题, 1 是路由器先得联网才能拿到密码,不一定能行。 2 是你发短信可能必须得你那个手机号才行,比较麻烦。

    可以改成这个方案:
    1.openwrt 上写个 server 程序,用 c/lua 都可以。监听某个端口,接收密码,拨号。用 C 就是几十行程序。
    2.写个 JavaAPP ,连接 openwrt 的 server 程序,调发短信接口自动发短信,然后发送到 openwrt ,触发 openwrt server 程序自动拨号。

    这个方案实现起来稍麻烦点,不过也不难。
    Reficul
        11
    Reficul  
       Nov 3, 2015 via Android   ❤️ 1
    应该很快的吧,感觉 Android 主要是那堆函数怎么用。现查显用呗😃
    xmoiduts
        12
    xmoiduts  
       Nov 3, 2015 via Android
    我也有类似的问题,山寨版校园网客户端,现在有完整的 C 源代码,别人的 linux 可以编译+正常使用。但我不知道如何将它移植到 openwrt 平台。不懂 linux ,只用 mipsel 的 gcc 编译了一下,运行不了。现在路由器也在吃灰。
    little_cup
        13
    little_cup  
       Nov 3, 2015 via Android   ❤️ 1
    LZ 的需求不需要「编程」。
    电信手机上装一个 tasker+tasker ssh plugin 。
    手动编写规则定时发短信->正则提取出短信中验证码->ssh 连接路由并拨号。
    就可以了。
    以前玩过定时给 10086 发短信正则提取出余额显示在桌面,和 openwrt 上自动电信拨号(我们那里还没有验证码)。所以确定上述链条是走的通的。
    kenshinhu
        14
    kenshinhu  
       Nov 3, 2015
    首先要懂 linux 吧
    mortal
        15
    mortal  
       Nov 3, 2015
    唉,又想起了自己大学时候为了搞这些东西从小白成为了 Linuxer …然后变成了学渣。
    jasontse
        16
    jasontse  
       Nov 3, 2015 via iPad
    LZ 的需求应该是用 Java 写个 Android App 自动读短信,然后登录 OpenWrt 拨号。是这意思吧。
    skylancer
        17
    skylancer  
       Nov 3, 2015
    如果 lz 不用电信卡打电话上网的话还不如买个 3G 网卡和带 USB 的路由,然后用 chat 读出来短信用 uci 写进配置然后拨号,全套全自动完成
    acess
        18
    acess  
    OP
       Nov 3, 2015 via Android
    @lijsf 我看那个破解路由配套的 APP 貌似是走 LuCI 的,不知道有没有什么资料可以查?
    little_cup
        19
    little_cup  
       Nov 3, 2015
    @acess 如果你那里的电信解谜后就是 pppoe 拨号的话,直接使用 sed 命令修改 /etc/config/network 中的 option username 和 option password 两行,再 /etc/init.d/network restart 就可以了。
    acess
        20
    acess  
    OP
       Nov 3, 2015 via Android
    @little_cup 额,这个好像还可以用 uci 、 ifup 等命令搞定

    我还要控制 WiFi 那边的 PPPoE 定时连接和断线,但这个办法应该可行,我有空就试试,谢谢你的建议。
    电信已经换了标准的 PPPoE 协议,市面上的 SOHO 路由大多数都可以用。
    acess
        21
    acess  
    OP
       Nov 3, 2015 via Android
    @acess 奇怪,排版乱了……
    手机发的,见谅。
    liyvhg
        22
    liyvhg  
       Nov 3, 2015
    我觉得楼主的方向太过于中规中矩了, 电信装的 APP, 90%的可能是用的 HTTP 请求, 楼主可以抓包分析一下 URI 和请求参数之类的, 然后在 Op 里面 CURL 实现一套: Crontab 定时获取密码, UCI 更新 PPPOE
    acess
        23
    acess  
    OP
       Nov 3, 2015 via Android
    @liyvhg 额,应该用的是 HTTP 请求没错,但请求被加密了,还不是简单 base64 ……文件名里面有 zsm ,好像还是继承以前天翼客户端用的加密。
    以前 1.5.5 版本的天翼客户端被分析出用了 4 个加密函数,后来 1.5.6 还改成拨号前下载配置和动态链接库文件(zsm),我觉得这早就超出我能搞定的范围了……
    但是……或许反编译 Android 应用相对容易得多?这方面 LZ 不太了解,但好像也存在混淆技术,不知道电信用了没。
    lijsf
        24
    lijsf  
       Nov 5, 2015
    @acess 搞 Luci 还不如直接用 socket 通信呢。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   830 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 21:22 · PVG 05:22 · LAX 14:22 · JFK 17:22
    ♥ Do have faith in what you're doing.