查看: 16900|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: l0 I2 {7 n1 y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, t! a* e  n: t' q" W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 |+ P$ W5 q& Y6 q) ?6 b0 [usage: himr <address> <value>. sample: himr 0x80040000 0x0, |/ l; w, D3 |5 b$ C: n0 L3 ?7 w
  Z) S, G. L% B3 N$ q0 l

! n5 C0 A& S" ~3 I8 Y' X不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' Y1 Y8 v& _  s

7 b' O% W6 E  J/ ]6 l$ r: C: g" i+ v补充内容 (2012-3-8 09:42):  e, Q2 \) T) |5 }3 K/ J# {' R" C+ w
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 N/ Y: I, `2 `$ C4 R. f
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
3 e* e7 {6 L5 H' g; X4 U1 @, J& P- l1 T- h7 r6 W' e
himr <address> <value>. sample: himr 0x80040000 0x05 g6 W( h1 v  i: E  u
* O: }# J7 [/ a. Z) v1 A2 }& _
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* m0 J8 h+ n* W3 E' ^
himr 0x80040000 0x001 R- z: m9 B4 A/ O
himr 0x80040001 0x11
/ }+ J: j1 T3 ghimr 0x80040002 0x22
2 T" J* }- M3 lhimr 0x80040003 0x33
+ L5 F$ \/ n: v* C; Shimr 0x80040004 0x44$ B, I8 e$ v% z3 {0 |
himr 0x80040005 0x55# r9 T  `2 [9 v1 v6 h
# O3 U3 _6 L8 E5 E0 t. B9 T. u6 f
SN也是类似。
. k" W1 V6 C) ]0 s; M5 C2 e
7 `6 O( b' e% u现在主要是,谁告诉我们MAC和SN的地址?
: ]+ Y6 J3 k' c# \) @# l0 p/ z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 \! D# O: i, B一直想找到运程修改MAC和SN的办法,苦于无解啊

5 E( e, W) W6 Z: e6 q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + H) r- ~& b, D8 w0 O

8 r! j: I/ k) n/ R+ c8 e5 W修改的代码早有了。到今天不会编译。
9 i, i4 j0 m$ r" a* O2 `) c6 ]9 U需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 B) f6 J" z3 @* A2 F
  2. #include <malloc.h>4 j, k6 t# T4 p! h& G2 k8 U
  3. #include <sys/types.h>
    ) B) V; g: s8 {4 A" |0 A
  4. #include <sys/stat.h>. \- u/ F) F7 A9 P' K# t
  5. #include <sys/ioctl.h>
    1 M, Y0 e" C* |5 k
  6. #include <stdio.h>
    7 N0 o! W% v; O/ S
  7. #include <string.h>4 F1 I% H# Y8 V8 g8 i3 V3 F

  8. 2 E+ H  J) o" z5 C  m
  9. typedef struct {
    + K$ w2 K# H3 p7 J
  10.         unsigned int        e2prom_cmd_sub_addr;
    / y* c7 j/ s# b; _  D
  11.         unsigned int        sub_addr_count;
    7 S, N# q/ O1 l9 g) E) U
  12.         unsigned char*        e2prom_cmd_data;' y" d& q" |# q0 s3 i( K' t
  13.         unsigned int        data_count;- g! M! n8 P; [2 g5 Q
  14. } e2prom_s_cmd;
    / E; q7 M9 s$ J

  15. * R4 c6 O+ I* w7 q- e& p) i
  16. #define E2PROM_CMD_READ 18 S1 M) A1 Z1 `! g
  17. #define E2PROM_CMD_WRITE 20 _' j1 u6 ^/ Z2 p; C* b. ^# m1 G( x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 U4 M2 K5 t$ W! ~9 P; o& g

  19. % O+ m) o2 l5 ?- ]) o2 M* ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid); T7 Q# Q3 S) V3 M& K6 k
  21. {
    . l) t2 w5 U, \8 ]( ~
  22.         int fd, ret;
    + ?  U0 H' G5 {+ Q) K
  23.         e2prom_s_cmd arg;
    0 y0 ?3 }* C: y; }7 z6 i& E
  24.         unsigned char buf[0x18];, l& R# h7 A$ J: F8 M3 a. s

  25. % D3 L  L# u. |( T# ^
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" v8 K8 N; d- n8 f3 J+ o, E- l( }
  27.         if (fd  < 0) {
    3 g) g0 B6 i$ Z, _; N0 _& C" l, y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 O; N/ H! t7 e: G3 u5 m' T. \* S- q
  29.                 return -1;' g0 \( f0 X5 b* h# v8 ]
  30.         }
    . \% X3 Q5 S, [* Q* j3 p
  31.         arg.sub_addr_count      = 2;) I$ k# @; h' l5 R- @# G& s
  32.         arg.data_count          = 0x18;
    + C/ P. t% K- B: v$ \( w, ?! k% x
  33.         arg.e2prom_cmd_sub_addr = 0x290;; N% R# z2 G1 Y" x4 G7 P
  34.         arg.e2prom_cmd_data     = buf;) T9 h3 X* w6 W- }1 W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 V4 Z3 k+ P1 U0 I0 q4 c" d
  36.         if (ret != 0) {% y+ `7 Z9 Z4 \' n) n+ U  F! S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 K( h, h. \3 ?
  38.                 return -1;
    ; s1 X, n5 ~; d& F
  39.         }
    8 {( c; m8 V1 ~9 J
  40.         memcpy(mac, buf, 6);
    ' N9 u7 x5 s- z$ {% c$ h
  41.         memcpy(stbid, &buf[6], 18);2 E7 a4 A3 k% `0 Q
  42.         stbid[18] = '\0';
      z1 s) f& A" y; Q

  43. 8 Y/ a0 ]! v+ I( }2 _+ W0 U" F
  44.         return 0;
    $ F% O+ M& I0 X% o6 B
  45. }$ y; z) H8 d% W9 o5 m0 {

  46. 1 C1 y$ K: L# D1 [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + F5 M9 N4 n* w2 V: O- i
  48. {
    * L4 [4 c0 \8 ]& v) L
  49.         int fd, ret;( e3 u; w$ F, m. u, Z$ ~6 L: ^
  50.         e2prom_s_cmd arg;
    / \) b" l* Y9 T2 e' ?& m& L: v* p$ T
  51.         unsigned char buf[0x18];
    3 G+ T% ^  U+ X$ t& \
  52. 1 F# h0 r- b7 G( C0 S$ D6 s6 H' ^
  53.         memcpy(buf, mac, 6);
    9 O9 a# I1 ], g* s( p
  54.         memcpy(&buf[6], stbid, 18);
    & F& U; w/ F: d+ c6 ]# h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( ]( [0 @- M6 s2 }+ _" ], M) j
  56.         if (fd  < 0) {
    : ^* ?, e/ X0 Z6 d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' X, I, Q7 k- j" U
  58.                 return -1;0 _2 Q9 N4 Z+ ^0 n0 m$ w  J; e4 l% x
  59.         }1 T5 e' w: e+ x  s) h) p
  60.         arg.sub_addr_count      = 2;
      n+ j" r5 H2 ?# B5 g! q
  61.         arg.data_count          = 0x18;( Z- M, n! b- _* v4 Z- j
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + e; }4 x4 \' X0 E  D/ l
  63.         arg.e2prom_cmd_data     = buf;/ t  k, R! r& u# d6 V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ) J# [1 x# z1 j/ E3 r* P1 O
  65.         if (ret != 0) {
    ) P: f8 |7 q. l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      A+ u3 [5 W+ t' e) S! J
  67.                 return -1;3 \/ h$ a/ B/ T) M
  68.         }
    0 `3 G  @, N* K% q* ?+ l$ b5 p
  69. : a6 n- C" }2 d
  70.         return 0;
    1 j  O' b7 ^7 y( D- d9 d
  71. }- C4 ^1 i& t# K6 I4 P8 v2 U. p
  72. + T7 c5 R/ j: o
  73. int main()
    2 g! A* p2 T! q+ ?* {4 ?, q
  74. {
    - o# q+ f* q2 V5 W9 S
  75.         char c;5 v# g' y% `- ~/ K
  76.         int i, macs[6];
    * R5 }" ~$ w' z+ h( o) L
  77.         unsigned char mac[6];) m3 G' {* n, G( g5 _7 z
  78.         unsigned char stbid[256];% Y: ]8 x3 ^/ T- q/ k) Q

  79.   S* ]9 B, f/ ?; ~% S$ T) A
  80.         if (readparam(mac, stbid) < 0)9 }: Z9 z6 j) U8 \0 Z4 G
  81.                 return 1;
    6 E, s- _! `! V

  82. % Y" D3 q+ |, C, w; i8 x7 [; W) f# C
  83.         printf("Current parameters: \n");
    3 ^+ ^" v2 ]2 g* z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 t' F  r" q" z; e. f* K
  85.         printf("  STBID: %s\n", stbid);2 K$ {1 c( h# F5 f* j, q
  86.         5 U: ]' m2 T, H$ a9 O8 s7 \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 r& x$ \- X+ i7 ^. Z3 A; t
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" y, _: R9 o- A% Y9 L: H( e
  89.                 printf("Input MAC error\n");0 z9 M. |. R, z! M! A9 z
  90.                 return 1;
    % A! t+ r/ |* A0 ]; ^, b/ z
  91.         }& w9 r* }+ L: }4 C- k/ I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 m5 a, z6 l8 C3 d/ C1 {& X
  93.         printf("\nPlease input new STBID: ");% T" a; {* G; A7 F1 j7 [
  94.         scanf("%s", stbid);  P# Y7 l% Z: K# X* {
  95.         if (strlen(stbid) != 18) {5 r/ g) o3 B8 h/ z- N) O$ D
  96.                 printf("Invalid stbid\n");
      V# K, p& B/ I6 x$ P
  97.                 return 1;
    # O2 m5 Y9 @( E7 C  g9 v
  98.         }6 B! c1 m, P. U
  99.         printf("\nNew parameters: \n");6 C6 ^9 ]" Z) v4 w8 |$ y: M: c$ g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( g: H5 Z0 k6 `$ D6 b0 k: {
  101.         printf("  STBID: %s\n", stbid);
    ' S+ {, T7 M  U3 c/ S" J9 X7 u% a% X
  102. , y5 v- T( @! d9 v' u$ d( w& c4 l
  103.         printf("\nDo you want to change paramemters? (y/N) ");, V7 ~) Z2 X9 @* p& `' F
  104.         for (;;) {
    4 I) M% O1 t, n9 N$ C. p
  105.                 c = getchar();& P3 k% W4 a! O0 `) j, Y- |  t0 T+ J
  106.                 if (c == 'y' || c == 'Y'); M/ Z+ _! S) k. B
  107.                         break;/ `5 Q3 H% o% I3 M6 r
  108.                 if (c == 'n' || c == 'N') {
    - n8 \+ y' @8 T
  109.                         printf("\nAborted.\n");# P) i7 E1 Z4 L8 o0 X$ b
  110.                         return 1;
    7 q  r$ x  ^. G; Z3 O
  111.                 }
    ' w- |! |8 X0 Q  H7 v/ J& p2 e
  112.         }
    % s0 z( L5 V( r3 x! m
  113.         if (writeparam(mac, stbid) == 0)
    0 [1 o: ^% [! ]) {% r! w7 |
  114.                 printf("Parameters changed.\n");
    ) P6 X- t# g4 ]. n& ^& O
  115. 3 x0 P# {* x& d# y
  116.         return 0;5 z* h* c5 y0 ~% R+ j- ^! s+ O- t
  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 * _3 [$ U8 y8 Q* U( O7 i% w: v
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* D+ v6 w  O$ f: C  o0 V+ {你用的编译命令行格式是什么?
$ T1 w/ ^& a5 M5 c  r" y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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