查看: 16947|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * S& M5 b9 u8 f% B$ M; p5 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & j8 a) }* A2 S5 g+ _0 G" ^) s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" f& n/ g: O' ^9 X/ {  @
usage: himr <address> <value>. sample: himr 0x80040000 0x00 g  p# P" I7 o- R( L

1 o% C6 Y. D$ [6 s, E( i! m8 t) B( F5 `+ f
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& X* P) o0 F0 Z) L/ x) Y" w9 ?
& g0 m7 i+ l) T. r8 `& T# H- I补充内容 (2012-3-8 09:42):+ R* n2 o2 }; p7 E
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 c9 G- q, b3 x8 t这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。; d7 N- L* L4 g) @! m* _4 N
) ]8 x/ E- u) j5 T. s. e4 N) K
himr <address> <value>. sample: himr 0x80040000 0x0, ^3 f$ m- K1 U9 d
8 |. I. D% N+ T- O  A3 @
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) Z7 ^  ^+ D" {7 r& O9 m( V
himr 0x80040000 0x00
  f/ I7 Z3 Y- k7 Nhimr 0x80040001 0x11' J! Z' Q6 S0 d9 L6 V
himr 0x80040002 0x22
; H. Q  Q0 D7 H- ]7 H% h' Xhimr 0x80040003 0x338 T) m- e! t4 ^/ F  @
himr 0x80040004 0x449 J( m" S( S0 v1 X; G2 @
himr 0x80040005 0x55$ I4 Z- L+ Y) c; |4 m  ~1 A& O
) A& h( C1 @! m3 @) u* e. J* W/ V* B
SN也是类似。
: z2 [! I, @# }+ O$ V
, q1 c, G; p1 B% I' A/ t0 c! e现在主要是,谁告诉我们MAC和SN的地址?( ~1 P5 N1 l. [9 t2 h# h- |
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - H  v& |7 q( t3 s5 x, n
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 I, w! y3 C# h2 j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 j" X7 l* a* M# `" |. j
9 f- I  W3 }9 l# g修改的代码早有了。到今天不会编译。' R, ~0 T7 U, C2 Z+ h" o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 f0 h  J  T5 j, Y; _
  2. #include <malloc.h>
    8 Z! P3 W' p& |! M0 {- w
  3. #include <sys/types.h>
    # c8 u' x; K! o0 {& r  b7 O$ D* A
  4. #include <sys/stat.h>
    ! s5 Z' S6 X# B& q+ ^
  5. #include <sys/ioctl.h>; z5 y6 r# C  D( b5 C
  6. #include <stdio.h>8 J' T0 U* E' F/ c8 G
  7. #include <string.h>
    2 ~' o6 v$ ^2 X7 J' f4 x

  8. 2 Z% |( ]! U% [  P# m0 R
  9. typedef struct {: c. n- C" B1 C6 T
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 ^8 i& j$ e/ [8 d; [+ ]
  11.         unsigned int        sub_addr_count;
    4 J3 `% A: E; W* I$ P
  12.         unsigned char*        e2prom_cmd_data;: ?+ d4 |; p9 H1 b1 K
  13.         unsigned int        data_count;
    3 p- U: E1 k+ L; z
  14. } e2prom_s_cmd;0 B5 ~& s. w1 f0 r6 w* @0 a

  15. 7 f6 E0 w8 v4 [( f" u' ~4 @, e
  16. #define E2PROM_CMD_READ 1
    ' w6 t; u, b* t
  17. #define E2PROM_CMD_WRITE 2) G! E% Z3 T3 P; j
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% c3 {% n0 _- _7 ?4 F2 i( ]

  19. ! D& _" a; l3 G8 Q* n1 v* w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ C+ a# M0 K4 e4 m. Q9 @  c
  21. {  V' ^/ I: B1 l" d* ]3 ]
  22.         int fd, ret;1 X9 {9 ~4 R( {2 B& D
  23.         e2prom_s_cmd arg;
    0 x( r. M( V3 C& f; I& r% A
  24.         unsigned char buf[0x18];
    - m( i0 o! Q' A" O, n  c3 a

  25. & z) O! A1 O, L6 {$ ?7 P" b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 p# y. {  y: u
  27.         if (fd  < 0) {
    ! }; \$ p* B7 W! X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 P* G- @1 [9 ?
  29.                 return -1;3 i% w2 K( R! D7 @7 z8 f
  30.         }
    " I+ a# ^2 I1 _- B8 w) s2 }
  31.         arg.sub_addr_count      = 2;. g+ u$ r: x, m5 M7 q
  32.         arg.data_count          = 0x18;$ `/ {" H& i( b# Q4 P  ~% M; ~& J8 m
  33.         arg.e2prom_cmd_sub_addr = 0x290;( E8 ]6 C$ u0 u6 J1 p( T
  34.         arg.e2prom_cmd_data     = buf;
    5 n# Y. j5 }5 D6 D5 r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);8 U: h! S6 ]7 b/ D! O& T" }/ o
  36.         if (ret != 0) {2 U4 ~1 Y+ `1 e& }' `; [' T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ N- g' T" t, C+ d' v2 w1 U
  38.                 return -1;4 P' E" m, n, @0 ~) Z
  39.         }
    / G) L) J, \0 e. I- R. o2 g& I
  40.         memcpy(mac, buf, 6);2 `$ t% }& F+ P! _
  41.         memcpy(stbid, &buf[6], 18);
    6 T4 q, n! k  x8 P; y7 t+ h- Q2 i
  42.         stbid[18] = '\0';6 D* H! z  p2 A4 f

  43. ! I9 i- J' E/ V/ b
  44.         return 0;6 J/ r2 w5 C6 ]
  45. }2 k" w8 L/ ~/ N; \3 y7 Y
  46. % }) c2 ?( M; |+ @& q/ H: k2 B+ O6 l  j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ j1 q/ |+ U2 ]5 O# d; L! ?
  48. {
    ; N  G% M$ d4 y, ~3 h! `
  49.         int fd, ret;
    . E$ X5 K) U+ k3 S
  50.         e2prom_s_cmd arg;, B( M: M/ Y' g2 ~& n
  51.         unsigned char buf[0x18];
    8 i4 y3 {. ?5 E2 B& l
  52. 8 @* D8 e3 Y+ k, R- G, d, b
  53.         memcpy(buf, mac, 6);
      R  L% x5 `; k9 V0 I
  54.         memcpy(&buf[6], stbid, 18);, M3 E/ r: a, s0 }9 l* m3 C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 `4 X6 K9 B/ N1 ?0 v
  56.         if (fd  < 0) {
    ( ?5 S0 }8 g+ o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* m+ l( g3 p& h6 B- ~: F1 C
  58.                 return -1;4 `- G$ a. Y0 M! d8 N* b" _* z
  59.         }
    3 [; z% a: S& S) E
  60.         arg.sub_addr_count      = 2;3 Q, u* u* x* z* |# J1 \( r' x
  61.         arg.data_count          = 0x18;* Z/ o9 ?5 ?- l
  62.         arg.e2prom_cmd_sub_addr = 0x290;( K" l% M* \. ?% O' z
  63.         arg.e2prom_cmd_data     = buf;
    - i) f5 u5 K2 d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ U% l  ]' ^5 e
  65.         if (ret != 0) {
    ! N9 k8 ^0 |* p: Q4 m0 D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 z# j8 a1 X1 L9 V1 ]& A5 W# Z5 [+ g
  67.                 return -1;2 ^: H, o$ V/ E- ?7 g, k
  68.         }
    ; P2 y" k; I/ e) F% `( K
  69. 7 O( y6 P5 e3 B" c2 G
  70.         return 0;7 E* j9 o& \* X$ Q# U3 B1 t. [& G
  71. }
    * |- O: ?4 O0 G7 D3 r) p

  72. ' s0 C$ E7 {4 A4 b
  73. int main()0 x: Q" z/ a5 r: }
  74. {# C7 F) I( v6 t/ Z% U4 a! @
  75.         char c;
    & X& ]/ `  D! ^
  76.         int i, macs[6];1 z$ a6 M4 @$ |0 ^/ W1 q
  77.         unsigned char mac[6];
    ; N: O( i8 n/ n. R3 X7 o
  78.         unsigned char stbid[256];
    + u( m- x7 ?9 P: ?/ w6 i

  79. + }5 T6 l( p/ G$ J( Q
  80.         if (readparam(mac, stbid) < 0)
    7 S3 o3 S2 a+ J! p* C3 E6 V4 X
  81.                 return 1;
    ( l& d' b) [! x# L# t8 a

  82. , N3 g# Y- m2 U$ o; G8 m
  83.         printf("Current parameters: \n");8 I' V( w$ K: Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # y/ D  i$ X1 x5 D
  85.         printf("  STBID: %s\n", stbid);0 `2 j; N! B  u. \) O+ E6 N* }/ p
  86.         ) ?. J' h! D2 K5 A$ J6 O- ]$ E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 X3 C  Q* }$ e+ l! w; Y4 l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  x- ~; s+ w3 ~" ?% F
  89.                 printf("Input MAC error\n");
    " x6 o. Y- j8 |) \0 V" o6 C* C) u
  90.                 return 1;
    ! G3 v' K& G% ^: s( e* H
  91.         }1 F( ~6 x1 F8 z/ V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 [$ a' J1 m' H4 i& G
  93.         printf("\nPlease input new STBID: ");
    $ }/ k$ {$ I# v  p' x3 r1 [; [7 @
  94.         scanf("%s", stbid);5 r7 \4 l( g# }  R
  95.         if (strlen(stbid) != 18) {8 G+ e- n3 T1 ?& v1 y
  96.                 printf("Invalid stbid\n");
    + r) S1 N/ {3 Y0 ^' x/ J
  97.                 return 1;3 f& K. c/ b0 u9 n8 t' p
  98.         }
    1 Q" n- j- T7 r9 z  j; ^
  99.         printf("\nNew parameters: \n");
    3 E& ^) d- }  R8 a0 ?  L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) i* J: T; P( E5 @" W
  101.         printf("  STBID: %s\n", stbid);
    # N/ `0 ~- s3 e3 u4 Q
  102. * O) q; |$ ?3 \' d
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    7 ^" L6 ^3 v3 b! b& e  o
  104.         for (;;) {
    - q+ f8 k' E# }+ a
  105.                 c = getchar();3 M# M& n7 Z! t
  106.                 if (c == 'y' || c == 'Y')
    $ L* v- M, |9 Z, u3 r6 H
  107.                         break;
    0 ^) L% N" T. V/ k4 ?. J1 Y5 C0 Y
  108.                 if (c == 'n' || c == 'N') {5 J; X" w2 ]5 {8 w, o, t
  109.                         printf("\nAborted.\n");% X+ X; E8 S" W
  110.                         return 1;7 Y% }& D2 A/ Y$ B
  111.                 }, S( o; Y6 N1 L. f1 L+ }2 k3 v7 w
  112.         }! h# t2 i) A. B. b6 V
  113.         if (writeparam(mac, stbid) == 0) * _& B  O& v* D4 [  e# M$ f5 m6 M
  114.                 printf("Parameters changed.\n");
    ( s8 C3 {  @- u! g2 x) [( I

  115. , L# S. J" ]1 _" A1 g
  116.         return 0;1 ], O( G3 f, X# w9 J; U! n
  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 * i' i. X' H0 u! A+ l. ?" e
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* [0 A  F0 k! M) w" F3 N
你用的编译命令行格式是什么?
$ p* a* B, O6 R, g
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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