查看: 17178|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% `% N9 H" p/ K( q9 P% W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! J$ J/ V! w0 K, G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* T5 K0 Z7 {& E, m8 e- V
usage: himr <address> <value>. sample: himr 0x80040000 0x00 e  b, N: X/ M  N7 P* S, Q9 d
) L" ?+ d2 H# x3 y" S

$ w1 E' J" |, e$ \! R不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- V. C7 e3 I! a8 h0 ?. H2 @( z/ E7 i. |5 g
补充内容 (2012-3-8 09:42):4 x" [: n$ J* {% M. m' D
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( A! i" r% M# y3 y" _1 A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。3 D8 A+ E* @- ]& x2 k
! q/ K% w0 e' F) G4 S
himr <address> <value>. sample: himr 0x80040000 0x0% x6 `4 ?; d; |" M; A
+ V1 g: N  r8 {$ X
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 U( D$ q! G- }5 e3 \himr 0x80040000 0x00
- Y8 t# ]9 y$ n) Y$ \/ O) w* jhimr 0x80040001 0x11- O4 r: O6 H# y5 G, d
himr 0x80040002 0x22
4 P- I4 |: n% I& l1 _himr 0x80040003 0x33
' e3 `# Z! V% p; s9 ohimr 0x80040004 0x44% l! _3 F; {1 D6 Z9 t% L2 }
himr 0x80040005 0x55
* U1 X. _$ }5 _* t" z
' R8 p- p; G  L8 T9 s0 sSN也是类似。
) q# a8 ?2 C* C) C- |( Q8 m+ M5 m, ~9 O& K" b
现在主要是,谁告诉我们MAC和SN的地址?$ E6 c5 h- \( S; p1 @
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / Z$ S& b/ @7 k) k6 f
一直想找到运程修改MAC和SN的办法,苦于无解啊
+ E# b; o3 c( S1 k6 C  n
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' L. r: P+ W2 R, m7 ^/ j

& \" E4 M6 s3 p4 _# x: Y3 ?修改的代码早有了。到今天不会编译。
  k' d0 }5 F* c3 n" s& s需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 e# b# ]8 l, P
  2. #include <malloc.h>! M6 o. S* ]4 K- J
  3. #include <sys/types.h>
    4 g4 j- E4 u) S/ a% h2 v
  4. #include <sys/stat.h>* e% |  a- G$ \7 ?: |) |* w
  5. #include <sys/ioctl.h>* `4 a! l. j9 D! k0 [6 ~+ O6 P$ P
  6. #include <stdio.h>
    ; R' x* g: {; s/ k5 J
  7. #include <string.h>
    9 [4 o4 b+ P* D! r

  8. 0 X  ?/ w6 O+ y. f$ c' |
  9. typedef struct {$ l# u+ U+ u: f4 W. `
  10.         unsigned int        e2prom_cmd_sub_addr;
    , O8 R: |9 d* i9 R! u# v! `
  11.         unsigned int        sub_addr_count;$ M4 _7 B8 J! G% K4 l' z
  12.         unsigned char*        e2prom_cmd_data;
    % I; @7 E0 K/ ]$ {9 l
  13.         unsigned int        data_count;
    0 ~" K# d: a% F! H; Y8 K
  14. } e2prom_s_cmd;
    6 |  g: L' L. o& }
  15. + M) g( F' S7 N
  16. #define E2PROM_CMD_READ 1
    ! f3 e8 y: F7 _3 E# u6 f
  17. #define E2PROM_CMD_WRITE 2& d" _" G, q& i' @$ v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      o% @8 ]/ ^+ n* R) c/ H* h

  19. # Y$ b1 G/ @# g( b0 u: i0 \
  20. static int readparam(unsigned char *mac, unsigned char *stbid), }3 I( h& ^/ g- P
  21. {
    % w' d( w6 [2 w" |. l* \& |4 |
  22.         int fd, ret;# ]9 w7 h3 R; k; \5 ?' U' c! c
  23.         e2prom_s_cmd arg;2 }( q: p& u  D2 t* S
  24.         unsigned char buf[0x18];& U7 A3 C2 f9 x+ H3 J' z
  25. ( R8 S# h0 D' d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 O+ Y: u: z9 m: k  K. E+ S
  27.         if (fd  < 0) {
    5 P3 O0 O0 m1 s/ ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) y7 i9 G  J* @& @) f# @5 A" a
  29.                 return -1;4 j8 h+ N8 ?0 v3 ]
  30.         }
    4 v! A* ]- C. b6 K" {1 K7 H7 S7 W
  31.         arg.sub_addr_count      = 2;
    , i7 g( F& Q; j! t4 T! O8 \; m
  32.         arg.data_count          = 0x18;
      X% `5 U3 m7 V9 r
  33.         arg.e2prom_cmd_sub_addr = 0x290;- i6 A5 R/ z5 p& t  Q- J
  34.         arg.e2prom_cmd_data     = buf;
    + f: J; g  g! I% E
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * _3 \, D1 }; e) l/ I" l2 ]% }
  36.         if (ret != 0) {
    * |( E. n! s. c2 X0 b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 N. X6 v! `0 J8 m. h
  38.                 return -1;8 P1 w. [# F" M3 ?
  39.         }
    ) ]: `6 K( w" n* }0 v$ i
  40.         memcpy(mac, buf, 6);
    * I7 i6 B' c; C0 B5 y/ r/ L
  41.         memcpy(stbid, &buf[6], 18);
    . B/ s7 T3 A' W! v3 O; h' Z
  42.         stbid[18] = '\0';
    - r2 \# j7 U/ ?8 g! p5 r& @
  43. 6 l% M7 R$ B4 s/ w
  44.         return 0;+ w/ f' v3 B' d4 s. {5 n
  45. }
    * P, {% K, j& v* X; l3 X6 |

  46. 3 n/ L8 v" j- I" Q8 v3 d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . @/ W9 i! X0 E1 b4 c5 n2 ]
  48. {9 R* i8 b6 G6 ]; \: b; E, l  p
  49.         int fd, ret;% p+ Z+ ]5 t* W4 r
  50.         e2prom_s_cmd arg;
    8 O( @' w* z0 S- C/ w) c/ O9 w# S
  51.         unsigned char buf[0x18];" ~' k/ P1 C0 i: y$ W# F
  52. 6 p. g/ y, L6 P5 Q
  53.         memcpy(buf, mac, 6);5 M1 r" ]/ m  @. A  Q4 p
  54.         memcpy(&buf[6], stbid, 18);% {( ~) r2 u, ~8 H: C9 H, T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, g: q2 r# _+ T
  56.         if (fd  < 0) {
    8 @6 e/ a6 z" {' ]2 n! D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);- e3 E0 v8 [. j' v: C, V
  58.                 return -1;0 c, w) K$ C) K. m
  59.         }/ d8 t" U3 e- k# a" g
  60.         arg.sub_addr_count      = 2;6 Z( ?/ |2 @) T1 s# s) b
  61.         arg.data_count          = 0x18;7 u8 k6 V" g+ w% K2 B
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 v, y- F$ V; ?0 @5 E
  63.         arg.e2prom_cmd_data     = buf;
    : T: W9 p  d) E5 {+ ^; ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / C6 T) D9 U! H5 H. L
  65.         if (ret != 0) {
    8 e* d  ?9 k1 B/ F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 S1 n% _+ c6 Q2 v
  67.                 return -1;
    ( `/ M- o) B8 u4 b6 L. H; P
  68.         }; R( l* }% _3 t# Q0 J; S
  69. 0 X/ ~, N  B+ `, k# u
  70.         return 0;
    - }6 Z4 u& N% q) n0 _" E; d/ U
  71. }
    ; d9 c: Q" [1 F1 V2 ^
  72. 2 W" o1 p. o  c' ?1 ~1 W" B) [: E
  73. int main()
    $ c$ x5 \1 L; E) \/ j
  74. {
    ) X2 g. I; B3 q  S$ P3 i# O
  75.         char c;* ?, _% p! d' O9 g# I+ f: K
  76.         int i, macs[6];
    ' M) |+ {  X( f0 B
  77.         unsigned char mac[6];
    7 {9 N1 ]$ J* ^
  78.         unsigned char stbid[256];% o1 I. p! E) V" K6 N/ Q7 P: v

  79. ( D; }& [7 v3 N4 ~8 u  L$ h, u
  80.         if (readparam(mac, stbid) < 0)$ Y! L& m# o9 u5 F! I" \
  81.                 return 1;
    " ~7 h* Q/ M/ z; y! Q4 K

  82. * v6 `2 S4 n! `
  83.         printf("Current parameters: \n");
    7 D5 Q) L: }/ K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& F5 B/ `$ q2 n+ X/ t/ |/ P9 F
  85.         printf("  STBID: %s\n", stbid);
    & E- v6 o+ C# |6 S8 T0 n
  86.         - U5 D1 y: }: s# y; V) Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# e5 Z! V0 d/ h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 E2 _1 E+ ]( b3 h4 t! y8 S1 d
  89.                 printf("Input MAC error\n");
    1 d$ b+ @/ c/ m
  90.                 return 1;& _2 h5 W0 |- Y) D, T" U
  91.         }9 s" K2 i" k! W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# O1 R) c" S5 F) X1 o
  93.         printf("\nPlease input new STBID: ");5 v& ?* I; G- z- ^
  94.         scanf("%s", stbid);
    . b& M! W) Q2 @6 N( s0 s
  95.         if (strlen(stbid) != 18) {
    9 n% ~( f+ d# q- N3 A9 o& m/ [4 E8 i8 C
  96.                 printf("Invalid stbid\n");) N2 ^, ]5 O' @* \. A
  97.                 return 1;, [2 w  Q) z) _. X
  98.         }
    # e5 g/ [7 h8 X9 t& f3 \
  99.         printf("\nNew parameters: \n");
    4 U) l2 x7 C+ [: I0 M7 a7 }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- [0 U1 l  h! J+ L! w/ B
  101.         printf("  STBID: %s\n", stbid);" }; l& e! @6 c6 g5 c# d
  102. * C8 @3 P; }  `8 x; e
  103.         printf("\nDo you want to change paramemters? (y/N) ");# Q) L6 @9 ]9 l3 P. Q& @( h
  104.         for (;;) {
    1 G0 G7 U0 Q# F  V
  105.                 c = getchar();
    4 _5 x2 ~! K) z9 D7 S
  106.                 if (c == 'y' || c == 'Y'): y7 l2 F( i! t7 l* l
  107.                         break;
    6 T6 ~1 _9 M  R- F% h$ L
  108.                 if (c == 'n' || c == 'N') {
    ) _7 Z7 r. {' f- S0 V) p5 h
  109.                         printf("\nAborted.\n");
    7 K  u) u6 A2 F, Y1 o; c' [( O
  110.                         return 1;9 }  W2 l+ K' w, O! d$ R9 x4 U( z& b
  111.                 }6 z% q% T; Q$ b$ z1 x' S$ O# _
  112.         }
    . t) w$ D' o# E$ F$ Q
  113.         if (writeparam(mac, stbid) == 0) ) M& t; G$ \% e& y
  114.                 printf("Parameters changed.\n");) A1 u( G8 }# w1 ?1 ~; N) a/ o, R/ B

  115. & f& i2 H1 n7 a. i9 _0 H( H
  116.         return 0;
    9 ~- t, w" j1 ^. M9 `9 j7 }
  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 $ P0 O! c2 v' w* w$ h2 M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  V# V) y4 E/ S6 b' j% \1 G你用的编译命令行格式是什么?0 Q! H+ n/ U( ^7 Q: K
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部