查看: 16853|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : ~# S+ L2 X0 o$ R6 \5 B/ K/ c
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ |; ]; D- S& u+ V- f# _7 o" Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; V( z0 V$ e, A! ]7 [, R& j$ dusage: himr <address> <value>. sample: himr 0x80040000 0x0; Y# z. z. v9 E, _% ~2 o
/ E, M! u. C5 U- p, d2 i9 f) ]5 [7 P6 t

7 h" `9 C# k8 a0 d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- I& R9 n- ^. \9 Z0 ~6 L" B8 Y
# h- G- t* f7 n: W$ i3 x- i4 }
补充内容 (2012-3-8 09:42):% ~+ o( y7 c+ ~6 @$ G: p  H- {, u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* P( N: k! R" I; a, e这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
! T, f6 |6 f& P3 ~  s' q: t8 b# X2 J* X6 g4 l) Q
himr <address> <value>. sample: himr 0x80040000 0x0
1 b' b8 Z3 L6 K, c. W) N& S  p5 A: V8 L. R2 J' @
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 t" j; c  [: b! w5 m/ \) N& N( b! V  \
himr 0x80040000 0x00% i& X" k! w; x
himr 0x80040001 0x11
% H$ `" e% J8 n0 [7 C) {! Zhimr 0x80040002 0x22
: R4 U. Z  l8 s- ^himr 0x80040003 0x33* M3 T# B7 c0 Z0 K8 V
himr 0x80040004 0x44  d0 N4 O2 g# o, [2 Z# s9 v4 m
himr 0x80040005 0x55
1 `' h8 G7 {1 V: i8 f. u' ]1 Q: x- T+ ~
SN也是类似。" N# u/ |# n$ r# t! c/ ?9 M* u5 Z

7 b1 }: x4 `- k$ |$ l( x现在主要是,谁告诉我们MAC和SN的地址?
8 q" _; E6 R4 k; j4 |) h8 Z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , g% m) z! H& q9 e4 e3 ]5 i
一直想找到运程修改MAC和SN的办法,苦于无解啊
) ]6 K9 N5 i* O6 Q" p! {0 ?+ x
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  y2 E! E6 g1 Y1 t' e  C" V- A5 g
3 d6 M/ A( n- ^3 x修改的代码早有了。到今天不会编译。
* W$ ]5 l. X7 V& f5 Q$ L需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 u, R# i3 ^2 L$ @5 v
  2. #include <malloc.h>
    - S/ }6 M1 [* b: M$ r! V" p
  3. #include <sys/types.h>
    + I2 p1 ~* H( G6 F6 H- q4 I
  4. #include <sys/stat.h>6 ?; a+ ?, M2 B( J  H! T2 O
  5. #include <sys/ioctl.h>
    : n) k% _4 z7 g9 v* I
  6. #include <stdio.h>4 h5 G' f' `4 w- m
  7. #include <string.h>) I  ?' m/ b; s2 t9 a
  8. 0 e* |% h2 K$ M2 k! b& ]% l7 D1 a3 S* s
  9. typedef struct {5 R, I& r! v5 p/ X8 d) T3 }8 L; U" W
  10.         unsigned int        e2prom_cmd_sub_addr;
    # V$ x( r4 L, M( F8 H
  11.         unsigned int        sub_addr_count;
    8 r; R4 l, J& z$ K' ~
  12.         unsigned char*        e2prom_cmd_data;5 `" q4 m+ k8 u& I7 F1 `
  13.         unsigned int        data_count;
    # o* _' \- H. [+ ^
  14. } e2prom_s_cmd;
    ! [0 N: {! S* f8 u" G" z5 L9 c

  15. 9 S: e# Y5 Q3 Z9 g+ i) X
  16. #define E2PROM_CMD_READ 1
    " j5 ?+ P* V) |3 m: l
  17. #define E2PROM_CMD_WRITE 2+ n8 o5 J) x$ ?' Z& s) |! ]" {: b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 y; w9 H  d" w, g% w2 \$ A+ }
  19. ) ^4 n" \0 [4 W: J$ G2 X
  20. static int readparam(unsigned char *mac, unsigned char *stbid), a/ M' G' z- @- q7 W) f
  21. {
    2 u, W, q0 P- N( u( ^
  22.         int fd, ret;% J* A! v, A& @5 \8 |1 I! A
  23.         e2prom_s_cmd arg;
    2 [  ~2 c2 A0 D" D1 s" D
  24.         unsigned char buf[0x18];
    ) B/ W0 T' o) s, g
  25. ! b2 L  L3 v6 M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + G1 _) ~. ?; r; O+ k7 e0 s
  27.         if (fd  < 0) {
    5 d  c! K' V6 ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);; U! \* |, Q: C/ ]- i2 ]; E
  29.                 return -1;
    # w5 q6 V0 ~$ e4 A& {
  30.         }
    7 Q- F" X  f* n' t3 `4 b5 O2 l3 h
  31.         arg.sub_addr_count      = 2;
    # w2 w/ d! v" J% Y' Z  @+ S, S7 X5 T! K+ x  P
  32.         arg.data_count          = 0x18;4 Y) L3 |- R, ?- h: i" \6 E* J
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ W/ S  q% M- z6 ^; M3 p
  34.         arg.e2prom_cmd_data     = buf;) |0 H8 O2 }0 o8 H1 y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) f; T7 A' E" g1 N/ c) u7 M
  36.         if (ret != 0) {
    : k) [6 O# {% A6 T. X+ {! {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 s$ t* g. T2 g2 |
  38.                 return -1;  B, `) E5 Q6 f& T2 G4 }$ R
  39.         }
    # e6 d, e8 }  Y9 K/ N2 o
  40.         memcpy(mac, buf, 6);2 E/ v, T! Y! v# s; e4 l
  41.         memcpy(stbid, &buf[6], 18);
    $ f6 r# a: o. ?/ @$ c: z) |( \1 y
  42.         stbid[18] = '\0';  H3 ]% J; V& }5 G  s! H. c
  43. & H  F( t9 v1 n- L- `( y+ Y
  44.         return 0;
    # }. N, X* e) s1 V
  45. }8 l- Q& Q0 `6 s% C+ d+ h

  46. 8 G6 I# Q! l! p- U0 F4 D7 ?5 W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 ^& B* A& n0 @$ T) B2 T
  48. {! e3 h: g- d" d8 T
  49.         int fd, ret;
    & |' v3 |5 d0 F0 V2 U( b# i  z" q2 z
  50.         e2prom_s_cmd arg;
    % k- t9 O# p" W9 x- h: m! X7 o! Y
  51.         unsigned char buf[0x18];2 w2 m5 N/ f; I

  52. # F; f9 x. b' Q$ L  @  u
  53.         memcpy(buf, mac, 6);
    1 ^2 m& f, u; x! F, w
  54.         memcpy(&buf[6], stbid, 18);) N8 Y5 f3 n" Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 O7 v1 c& c% k
  56.         if (fd  < 0) {) }$ m7 R/ _/ y; V3 \. u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / F: X, J1 a# O7 ^
  58.                 return -1;
    8 E& Y! |% @$ H# H6 G! m
  59.         }) K1 X2 \! s! D, r: d0 e& J
  60.         arg.sub_addr_count      = 2;
    8 Z/ K6 }( s; r2 p% V/ h
  61.         arg.data_count          = 0x18;
    9 u  i# f8 A9 i- e' z9 E! m5 ^
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 `. D. Z( e" ?( r5 B  ]
  63.         arg.e2prom_cmd_data     = buf;
    - \' Y% n$ a; I5 }$ C$ f7 \
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 j) C. o) R6 r
  65.         if (ret != 0) {
    3 `6 E& E& ~# M( x) N' R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 r7 W2 u8 G' @; n
  67.                 return -1;
    ! h: [1 C6 C+ x6 i8 _
  68.         }
    & {, }- {  w( |8 ^
  69. . A7 c: V! u3 G5 i( b
  70.         return 0;
    & W6 T% [& l; h9 q9 |+ V
  71. }! v9 |  Q4 z% v5 ?( j+ A' l

  72.   O; w0 I! ~; O
  73. int main()
    * R& T2 u1 R1 z5 V7 `
  74. {3 O' A% o/ t7 \2 [) r$ M
  75.         char c;' P6 y  d  I7 ]7 b( v6 p- a& ]
  76.         int i, macs[6];% ^; {7 G. Q2 d" U1 T6 y" v
  77.         unsigned char mac[6];
    ( H* }: Y% A( G
  78.         unsigned char stbid[256];3 e  m& U# i& i( O
  79. : [3 q% J. H* ]% U; z% u9 b
  80.         if (readparam(mac, stbid) < 0)
    , S6 D9 ^3 }% |6 M9 ^
  81.                 return 1;
    - T9 }  \5 T/ G/ F5 |6 Q3 g
  82. 1 ^2 ?& v% d" A, x  W+ B
  83.         printf("Current parameters: \n");
    ) C' E) F( J  ~  B! D) E* x3 g  E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : }5 O* j2 @( C
  85.         printf("  STBID: %s\n", stbid);
    7 J; g! O0 m% }1 ?2 T4 H
  86.         & B1 s4 n. C- Q3 Q6 ]* K9 v& H  O
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! A* l/ f, y+ J
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & F" @. }. X: L7 D% E$ ~. m* ~
  89.                 printf("Input MAC error\n");% U. s& U* h: {" m
  90.                 return 1;% E4 w% p5 v; Z/ C9 u' @5 u+ f
  91.         }; ^& T5 R+ I0 Q7 s% B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  `/ e; V2 e$ n# d! ~; D
  93.         printf("\nPlease input new STBID: ");
    % H3 `' R+ g* w( @; C0 `7 N& F
  94.         scanf("%s", stbid);- }" L( V$ W+ Q  V7 g' K
  95.         if (strlen(stbid) != 18) {
    $ P. Z- U4 g* m
  96.                 printf("Invalid stbid\n");; q$ }" c  D: c9 Q- z% q. R
  97.                 return 1;
    5 S# k, b) w5 I2 h
  98.         }
    ( h9 C% w- Z+ K6 S+ Q
  99.         printf("\nNew parameters: \n");
    6 U0 e' }& m6 o6 A- w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 ^8 \8 F1 @/ f6 D! e7 {2 x/ q$ K
  101.         printf("  STBID: %s\n", stbid);
    * ?0 y" D! a; r3 \+ f% r, [

  102. 4 K5 q7 i5 r) m& X
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 b- }; f1 ?' b* w" ~$ _% r# i- |6 x
  104.         for (;;) {/ q3 z& m  v" R$ o+ h
  105.                 c = getchar();7 z* |/ u/ G- A- M( n
  106.                 if (c == 'y' || c == 'Y')  M& \' Y6 ^6 f  u/ L! }# _/ D
  107.                         break;* c+ U: x, E9 U
  108.                 if (c == 'n' || c == 'N') {
    * u, u2 z) X/ \" R  o
  109.                         printf("\nAborted.\n");# c3 ]4 Z  T3 {0 S# S4 @
  110.                         return 1;
    8 k  Z9 K6 \- F/ S6 Q
  111.                 }& r  g3 N- E" k
  112.         }1 l; B7 G0 k& a2 l9 e
  113.         if (writeparam(mac, stbid) == 0) * l' a! X7 ?# O! W7 Y# _4 Y' w
  114.                 printf("Parameters changed.\n");
    / w' x. P9 o, {1 f; m
  115. 5 \; p# o- B9 i
  116.         return 0;
    0 k$ _& c% H; E) @  O# M9 a6 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
& b$ a( u/ K9 L: e3 r: \3 @: E在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 |2 F  J/ A( Z+ v你用的编译命令行格式是什么?
; K# T5 X) v) \- a7 O6 D
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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