查看: 17777|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr$ h# A$ h3 t1 z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* |: S) Z) |( ?! i0 K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# a2 ~0 V" K: Y/ n6 Z
usage: himr <address> <value>. sample: himr 0x80040000 0x0
' E) i; g& N0 M% a6 a$ E& v0 L
1 ~% K9 x- B$ E1 x- J
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: e+ Q( |( n0 A9 N7 m) s* R( b- l

+ M0 n  I+ {* L- f补充内容 (2012-3-8 09:42):
4 g- C& p1 l$ @0 k2 U" D' ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: e, o. f' \4 M( d# }! H' i这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。  w% g& U& f- e9 p) w$ q1 y: I
- E4 t! d2 G+ w/ f- E; }7 q
himr <address> <value>. sample: himr 0x80040000 0x00 ?. c! X; j+ \  j9 D
$ L8 c4 V9 m( E9 |" p% O
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' [) N, c; c4 O
himr 0x80040000 0x00
9 |: b* l8 u% X9 Shimr 0x80040001 0x11
" M# ?9 D0 V  ]" nhimr 0x80040002 0x22
& v$ X( C% @" u  Xhimr 0x80040003 0x33( G0 E+ i2 G% F: ^4 @9 Z% h
himr 0x80040004 0x44
* u3 O' P/ C# S/ J; j9 W4 D/ G& jhimr 0x80040005 0x55( s  F& C) G1 ~6 E  N

; T% a" `" d- W# B5 S5 z) lSN也是类似。
# M8 v5 o. R2 {0 H- R  ~. a7 Q
4 n9 G5 u& t6 I* P* r1 b4 D现在主要是,谁告诉我们MAC和SN的地址?8 E; w* H0 o8 _! D; y, w4 [
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: p; ~. e: j8 Z一直想找到运程修改MAC和SN的办法,苦于无解啊

' |! V5 s2 }5 F' D1 v源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 o  f* q. c+ L0 G+ L2 X
3 G& C, L* q& a/ p7 N% ?6 H7 \修改的代码早有了。到今天不会编译。
; L. T$ {* f$ _6 z6 N( i; L需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 V- f8 ]. z+ H( A0 \7 U6 n
  2. #include <malloc.h>
    + K: q3 t! F( }! A- g
  3. #include <sys/types.h>+ w: ^5 _9 p) X4 c0 w" z
  4. #include <sys/stat.h>
    % M, w" h6 i. a0 Z6 w9 X5 h
  5. #include <sys/ioctl.h>
    ! V4 l* j' t) f! W
  6. #include <stdio.h>
    7 p& V& p2 I/ T+ J* N; w2 U
  7. #include <string.h>* }/ ^8 Q5 b/ A! Y% O4 q0 w7 r
  8. " y( f" O) ~( S
  9. typedef struct {2 q1 a4 K6 _$ T! _
  10.         unsigned int        e2prom_cmd_sub_addr;5 y1 S; K4 J6 ^4 ]4 U) W
  11.         unsigned int        sub_addr_count;/ |+ U6 ]! S/ e" B8 N: |3 p
  12.         unsigned char*        e2prom_cmd_data;
    9 {1 B0 c- B+ c
  13.         unsigned int        data_count;
    * ]; @- c" h/ Y% F7 e2 S
  14. } e2prom_s_cmd;
    # L" A( l, u! E" h' z  s

  15.   k, `  D& ~( F
  16. #define E2PROM_CMD_READ 1
    9 l( m6 E) G* S; Y/ ?2 u3 J- h
  17. #define E2PROM_CMD_WRITE 2- K! f; B: |0 c3 C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( j; X  Z" H" Z* h8 E

  19. ! T4 _, F4 ?. P/ u7 I/ N1 [! t
  20. static int readparam(unsigned char *mac, unsigned char *stbid). a6 |. _. k' g: X: A6 }5 L
  21. {
    ( n) H; ?. Q* k# Z% o3 m
  22.         int fd, ret;
    , v) a! N" x) v
  23.         e2prom_s_cmd arg;: |6 ?" y% y) w5 }
  24.         unsigned char buf[0x18];! J7 P" X0 ]# \# r! w; _0 q9 V
  25. . N$ V7 H( A; O/ ]3 u; }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % N$ ^; h! f. i, R' Q+ L* q1 h/ E
  27.         if (fd  < 0) {
    1 d4 w# a$ P% G! n! c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 o; ?6 a. F# s3 \
  29.                 return -1;9 [" Q- B2 {6 }4 v
  30.         }
    % m$ J7 m8 U# l: k
  31.         arg.sub_addr_count      = 2;
    ' g. `2 P6 m' a7 B' ~1 W
  32.         arg.data_count          = 0x18;
    + g, C% U" Z  E; o, `8 E" h- C" {
  33.         arg.e2prom_cmd_sub_addr = 0x290;. B( K2 b; k1 ^$ I- a7 k
  34.         arg.e2prom_cmd_data     = buf;
    7 R  S9 l5 A  b( N  f1 p
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 W0 f0 Q" w4 r/ f
  36.         if (ret != 0) {+ [- S3 |3 m% F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ' E+ f+ t$ O. S" z6 T( Q
  38.                 return -1;! ~% u9 ]1 f$ d% `9 P1 a
  39.         }8 r0 ^" j) w$ Q# a
  40.         memcpy(mac, buf, 6);
    9 t+ ]8 w* V0 ^
  41.         memcpy(stbid, &buf[6], 18);6 a' h4 P; s! i" H. ^
  42.         stbid[18] = '\0';6 e( p$ d# Z, V; @% h. {! K

  43. $ a& g# i$ N$ c) X: y- l
  44.         return 0;. _+ t4 }+ S& s5 L# |
  45. }
    2 {% G1 U) V8 r# I% h) e* ]; x

  46. / ^" n$ R6 W! s1 X7 ~) z  \5 i2 Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ W- D# L: U2 T  t
  48. {
    " Y6 c, A3 y5 J2 I! }0 b) x
  49.         int fd, ret;; M- Q, u0 g9 ~; U. W6 U4 W
  50.         e2prom_s_cmd arg;
    3 M2 E, I2 Z1 P8 z4 R3 X
  51.         unsigned char buf[0x18];
    # b0 h& l6 G0 g& h* r' M
  52. : Z+ {( g1 ~3 F8 s" @9 z- Y" R
  53.         memcpy(buf, mac, 6);
    : V9 H5 \  N! M' T) \
  54.         memcpy(&buf[6], stbid, 18);! u6 E/ I8 c6 O3 H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 M  J  H7 B9 g( L2 v% K6 v8 G
  56.         if (fd  < 0) {0 L9 L" M/ B9 [, s6 Y, F' r$ ]0 `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 f" U& D; q/ Y" z; a8 \8 X: L
  58.                 return -1;
    . W0 T, u4 q& W) W$ v! f& L
  59.         }8 f% K$ {9 b$ l
  60.         arg.sub_addr_count      = 2;
    ! ?  o, `% J" s* t
  61.         arg.data_count          = 0x18;: [% X) B2 d4 c( J8 C
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 p! ]: a: x+ r8 x1 O
  63.         arg.e2prom_cmd_data     = buf;
    % ]% c! V  B  Z* G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. F7 \9 ~' Q& B: v. C# x
  65.         if (ret != 0) {
    $ k' E+ Z% x' H7 n$ T0 I1 j! T2 o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . b0 K0 D5 t3 B
  67.                 return -1;3 `9 T+ G. b  y) V1 j
  68.         }9 I# J8 A; s7 x

  69. 2 [2 \' m% [- E9 I& y* S8 N% _
  70.         return 0;
    : B/ r1 j- z7 A1 F# v& h2 h
  71. }% V$ N' ~; U7 n5 M: p5 G3 v5 V1 i$ J* y3 d

  72. ' Z' s$ r8 b. @" N
  73. int main()
    1 g; A* Y7 V: z* [# z
  74. {% H: }( T0 M; [" v" w+ v
  75.         char c;
    6 b& k1 r) |* V0 A' K; `0 ?
  76.         int i, macs[6];5 ]- ]9 [# M. q% E# N" q; K
  77.         unsigned char mac[6];/ L4 o+ r' n9 m
  78.         unsigned char stbid[256];4 }2 I( S! o! G+ k

  79. / X# c) T" k" N6 u( V( W. J
  80.         if (readparam(mac, stbid) < 0)& c7 \1 \, n0 b) N8 `! ~% o
  81.                 return 1;$ F$ B1 m$ \7 q3 E# F' }& N' |

  82. 4 M3 l; @; ?; D
  83.         printf("Current parameters: \n");
    8 k. }% U8 {% Q; }: r- Z3 a6 J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 G+ v+ m; @* Z' Q( A3 @: h
  85.         printf("  STBID: %s\n", stbid);, ?  n( M1 u! @+ ]0 l& ~2 I
  86.         ! ~8 V) s# @, y. l4 F2 c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 U" W) P# M1 Z# W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( U( \/ I9 N5 |. J% ~
  89.                 printf("Input MAC error\n");
    ) ?3 P( @" V- c5 T' l; l2 h# g
  90.                 return 1;6 _* u3 w3 ?; B$ D+ M+ o
  91.         }
    1 b( A" y& Y; ]  X
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 i6 z5 ~4 d4 `" S( W) B9 s
  93.         printf("\nPlease input new STBID: ");/ p; h4 D' j$ s$ n
  94.         scanf("%s", stbid);
      }- h, A9 G  s) i" e
  95.         if (strlen(stbid) != 18) {
    : c% T, V8 \3 x0 r. c
  96.                 printf("Invalid stbid\n");5 _  B0 c3 ], J" s0 }$ l& Z
  97.                 return 1;
    8 q' \9 n* a* C; m* ]/ \, R  W+ e
  98.         }
    0 \4 j* g! f. M2 m5 y
  99.         printf("\nNew parameters: \n");
    4 `. Y4 q( n$ _+ M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / |! }" y0 k, a, Z4 C
  101.         printf("  STBID: %s\n", stbid);2 P2 h9 |. f% O( s' _9 y3 v4 n  ~  @
  102. # z( R- G, n1 h! B. O3 _4 g
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - @, x3 n3 J7 E
  104.         for (;;) {+ L, t3 r5 i  E" u9 Z, [
  105.                 c = getchar();
    8 a9 W' f; b  v- I) M
  106.                 if (c == 'y' || c == 'Y')+ x. X9 j! U" L- I) T7 p& l
  107.                         break;7 a4 D& `( f6 e7 e6 L
  108.                 if (c == 'n' || c == 'N') {* h' a0 f, E& N( v' w, k2 o  I
  109.                         printf("\nAborted.\n");, b% h/ q7 k3 ~) C/ z' ^
  110.                         return 1;! o: i% n0 m( T( i' I- r# N8 t9 ]& r
  111.                 }+ W" j8 }) z, D5 `# v; r# }
  112.         }
    & _( p; I4 |' W" R
  113.         if (writeparam(mac, stbid) == 0)
    % ]/ D$ L/ }4 I: I8 F$ r
  114.                 printf("Parameters changed.\n");
    * U! [+ C- |9 T& \; `, I0 B8 n# G! b( j: m
  115. ( d2 T* V9 N) R6 ]$ L: ^$ w
  116.         return 0;
    : n; d! w7 C  p
  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 : q5 B3 R+ \& `- \9 u' G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 s( r. V. g; ]4 C3 Q6 k
你用的编译命令行格式是什么?$ r" t. I: q3 G( ?! s# q# B
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部