找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15287|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) @" P! R& d: m; N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 u6 E8 J4 A; q* @2 r& f9 L1 F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! [( j; s4 e3 \$ n4 L2 }usage: himr <address> <value>. sample: himr 0x80040000 0x0# O7 V+ V. C" R5 I; U* G1 c9 t

4 @4 _3 g2 z# }$ ~( K0 W, z! @& K0 A, r4 t' p. @6 t
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
5 G. R8 p* u  f5 \8 R0 a
( Q: i& A' p) V+ z( Y. N补充内容 (2012-3-8 09:42):- ?; {8 e9 P/ O0 O$ f: Y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% }( y5 i; }  V6 q. H1 t这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。) @3 A& `. I6 @! U$ @3 X
" n2 O+ P/ O5 l! W. U8 O
himr <address> <value>. sample: himr 0x80040000 0x04 G) y4 z& }9 Z4 b& O

3 p4 ]4 |/ [; ~: g+ M; j例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 r" z9 \, T  ~8 }" J6 T( Ahimr 0x80040000 0x00& e2 p. E  c% Y2 ]
himr 0x80040001 0x116 |% I% D; }: s+ }, d
himr 0x80040002 0x22+ Q: k) _' B2 R/ u
himr 0x80040003 0x33
+ t$ G+ E7 O( W) `, P# Dhimr 0x80040004 0x44
# i$ H0 x* R  t6 J5 W* K+ ahimr 0x80040005 0x55" s4 F! w% r$ e4 [

0 R- P# E8 m" eSN也是类似。5 P  ?$ c  f# O9 Z& F9 U% [7 Z
0 M& f' J$ H8 p7 F% ~& }: g
现在主要是,谁告诉我们MAC和SN的地址?
- m5 G! ~" n$ H
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 g  ^+ x. c3 F4 C( o6 f
一直想找到运程修改MAC和SN的办法,苦于无解啊
5 o' G4 N. b( l/ U- ~0 u& Q- @- M
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( j4 a8 K9 G, }) ?4 f! X7 C4 _

0 J# S7 r* f: [修改的代码早有了。到今天不会编译。. b7 {3 D! z# ^
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 e  V; g2 \" P* }0 b# t1 T
  2. #include <malloc.h>
    6 ~8 F7 J& X$ W+ |; F
  3. #include <sys/types.h>
    $ a5 r. a( i- O# E$ g$ E. z
  4. #include <sys/stat.h>
    ! i$ _# K2 q) J- M3 l9 h' l0 {
  5. #include <sys/ioctl.h>
    8 H$ Y# L  K8 m* B6 D" G2 ]4 N
  6. #include <stdio.h>& z9 }" T; j# G( ^3 D; V$ U2 \& q
  7. #include <string.h>
    $ v/ q+ W' s" u* |5 {

  8. 6 \4 y' t( L& h6 w7 l' x: Q- [
  9. typedef struct {
    ( ?9 ?3 K2 w* \  C
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 P2 h: f0 s/ B9 I' h7 n
  11.         unsigned int        sub_addr_count;! L- D& `  E! q' |
  12.         unsigned char*        e2prom_cmd_data;% g4 P$ ]. K! {# R9 a
  13.         unsigned int        data_count;
    $ f/ c5 p/ q2 |
  14. } e2prom_s_cmd;
    % X6 f: U4 a4 G/ {7 J) z

  15. 4 W6 V* b3 n7 z5 m1 Q1 c. _9 e' s, `
  16. #define E2PROM_CMD_READ 1: N  J$ L/ w9 p! ~! r6 ^* X" _
  17. #define E2PROM_CMD_WRITE 2$ X' m5 z- J' y/ m; b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! }6 V! J' T1 E0 P& ^$ R
  19. , ], }7 a) j) Y- U+ j8 c4 L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- `( e" L  w$ M2 v8 |
  21. {8 Z" t1 V0 d$ o& g- f
  22.         int fd, ret;
    & g6 I' Z) T0 ]# g0 a
  23.         e2prom_s_cmd arg;8 [! {3 D$ O& @& e5 ~1 Q, w/ l
  24.         unsigned char buf[0x18];9 }" }, v7 K2 V. j- W' y

  25. & [$ L2 M9 k6 y. V: ^  r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; l& i# U( [7 |# p: ~$ }& G* Q% }
  27.         if (fd  < 0) {" K- @: q3 Y  S3 T  S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - A0 J# ]) `; A) o+ x) \
  29.                 return -1;
    ! }7 P) ]0 b, Q2 R/ S
  30.         }
    " ^0 n  A- R# d# N9 b; V% h
  31.         arg.sub_addr_count      = 2;/ e$ [/ `; L! q
  32.         arg.data_count          = 0x18;
    6 ~! M9 c& ^/ S! ~4 d
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 [3 i" C2 O) Z$ D3 [1 Z! R7 A
  34.         arg.e2prom_cmd_data     = buf;
    ! T' ^0 V$ v" Q7 q; m# J  j4 o2 w
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);; d+ l2 x, `& S: P; `1 f) M
  36.         if (ret != 0) {
    & u& W9 z; f, V
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( o2 _- Q1 H: k1 {9 E* E( @
  38.                 return -1;! k( v: m# A. C
  39.         }; q/ ^2 i2 U9 M8 {# u. Q8 V) m3 ?
  40.         memcpy(mac, buf, 6);
    # d: Q. ?6 I1 C5 g* _; A
  41.         memcpy(stbid, &buf[6], 18);
    / F- X7 J9 z* s6 F$ I2 U
  42.         stbid[18] = '\0';
    0 K- M+ S% p8 D7 \! |, q4 p+ Z6 A+ G- X

  43. 3 W9 Z1 E9 d: F4 j( H: Q
  44.         return 0;
    . D, H. x# P. H8 t. `
  45. }3 N. ^$ c) A( y
  46. & l) |1 U$ V/ P2 T+ d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    2 s* K; r4 @; s" @8 s
  48. {9 b, T9 i2 s5 s) x3 D. |: E
  49.         int fd, ret;
    1 d. `$ R' G6 j4 p' j
  50.         e2prom_s_cmd arg;. ?2 G( n) l& h( ~# b) o
  51.         unsigned char buf[0x18];/ s% f$ `; v" o) o4 h

  52. ; q/ a& p3 G" }$ N' d* M) q9 m# Y/ I
  53.         memcpy(buf, mac, 6);5 X) J0 \; Q+ \! }
  54.         memcpy(&buf[6], stbid, 18);
    : p6 x* ?1 c" _. f( C3 J4 M; N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 X* B/ Z, w% g# F5 G  c2 q" i
  56.         if (fd  < 0) {. {7 g: y8 j4 I- A. e2 I% c( J3 M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, a7 t0 m! S8 m- \
  58.                 return -1;# E1 n$ }7 d3 q4 P7 d
  59.         }& \% T1 I- G3 Y, o0 a  D- y# c" b
  60.         arg.sub_addr_count      = 2;; {: ?6 @; P+ y* V1 k) F
  61.         arg.data_count          = 0x18;
    . T! q9 y. f. M9 j7 P
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; |7 @1 b" @5 a7 k" s4 d
  63.         arg.e2prom_cmd_data     = buf;
    " h$ k6 M4 A( [+ y( x, H0 ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ n8 t3 D" F+ d0 X" O2 ?  w8 O
  65.         if (ret != 0) {
    6 J6 I  S! e' J/ D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 \0 X0 R, o- p2 _5 B7 |* c
  67.                 return -1;$ r& ]0 I7 \* \' W3 u
  68.         }6 |9 Y" Q6 x9 u( Y, ^
  69. # P; C# F6 U) T% q% b) F3 I
  70.         return 0;
    5 B- U$ k- Y7 q% A$ u& _
  71. }# P, l/ U* m7 o$ x5 y, m
  72. 2 M6 a7 Z- j6 {
  73. int main()
    6 N$ }# U- k2 c  I" r$ M0 G
  74. {
    - F* e0 {: i% r/ G+ q1 f- ^
  75.         char c;" g, \) J# t" I- R! h) A8 s+ Y
  76.         int i, macs[6];
    - I' u5 ~2 [/ l2 X
  77.         unsigned char mac[6];( s" _+ b: T' U; m; ?/ i
  78.         unsigned char stbid[256];# O1 Y8 S7 X1 c* o
  79. 9 f$ F7 A  v4 w  Y
  80.         if (readparam(mac, stbid) < 0)
    6 D6 ?) |3 v5 u4 L* R
  81.                 return 1;
    ; v! t. Z+ X- W$ x" ]

  82. . g! Y* s! ~; [) k. V
  83.         printf("Current parameters: \n");. S& b. i! ^) N: }! B* ~1 u1 ?, h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 }+ j# f6 Y/ ]/ l/ ~+ R, {; Q
  85.         printf("  STBID: %s\n", stbid);
    8 B$ ~1 Z1 ^0 }* e
  86.         : |4 I* C% _/ D7 x* k' b* U/ V+ u; l& |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    # i+ i; j: @4 r- e+ x. _9 P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 ?+ c/ m. [; d: T
  89.                 printf("Input MAC error\n");
    ; C6 \! H# p, V
  90.                 return 1;1 M& J5 ^: j! k( g
  91.         }
    + ^! E* s6 n4 V/ o5 o# ~- F0 E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 q" y. e$ S2 `# U. {+ m
  93.         printf("\nPlease input new STBID: ");, o8 N' f( t! X6 d% B& G( a
  94.         scanf("%s", stbid);: Y9 @& J' C2 M# }
  95.         if (strlen(stbid) != 18) {9 A* E9 A- ]  q, l
  96.                 printf("Invalid stbid\n");
    5 E/ P! K* c0 ?8 Z
  97.                 return 1;
    9 U% V/ J* g" D! Q, v: m, y
  98.         }
    # x( G$ n" p, }0 [& w" ^* T
  99.         printf("\nNew parameters: \n");
    * s' ~. c7 b* i5 J) ]: L" k
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 H+ a# |7 h+ G  `% J2 R3 M0 ~! u
  101.         printf("  STBID: %s\n", stbid);
    & _7 ~4 p, \; F9 r, d

  102.   c; ]( y- a( b; `/ ?, P& [
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    $ G2 c' r' ]8 R, {: u; Q# [& |
  104.         for (;;) {
    ) Y! b/ {0 Z3 s+ L, e' S% h% o
  105.                 c = getchar();& X0 }1 Q1 y* A4 A; k9 Q/ H
  106.                 if (c == 'y' || c == 'Y')
    6 D; [% i) K6 b
  107.                         break;
    * e/ r6 j% U* ]* p
  108.                 if (c == 'n' || c == 'N') {
    0 u) V& _( D' n  `& R, n+ l
  109.                         printf("\nAborted.\n");
    ' D: k8 @& g9 w& b( ~+ v- W' w7 E2 H7 R
  110.                         return 1;
    " I% j! A4 r3 Y0 T! f8 q
  111.                 }8 _. [( e2 r! h( X8 C4 ^5 Z  V- W, r: L! t
  112.         }6 L/ k: n) \. Q1 u/ ]* s
  113.         if (writeparam(mac, stbid) == 0)
    8 S+ e) [* @- w
  114.                 printf("Parameters changed.\n");
    : j" r5 l: v$ ~( p; M: X

  115. & t3 y5 d, e' R6 N
  116.         return 0;
    $ `0 U. K8 a# n) l$ \" k
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
  n, E6 r  ^3 U0 _5 y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- B' n3 W! U+ W
你用的编译命令行格式是什么?
. G: s" D* w1 K+ x) m" T: c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-16 09:15 , Processed in 0.023273 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表