查看: 17059|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! i) _8 a5 w( C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 @, b2 [6 {1 P  \7 V1 I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; \1 K5 O5 O( @5 n8 ?& ^+ i
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. I) {/ D7 \/ \
( F0 g6 ?( W5 P) \) C3 z; I0 D  [7 S: X" u# f  R6 D9 w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* A/ t" E3 t. s5 _  }: n

9 Z$ }2 D1 I- q4 I1 H) u/ |补充内容 (2012-3-8 09:42):4 p, g  I* l7 ?9 _- ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- {% Z% Q$ j' F! u+ a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。. J2 E8 h$ o- L4 R2 ]; O" U- J

- f8 h: H" z" W- w& `. U+ Y9 khimr <address> <value>. sample: himr 0x80040000 0x0
+ V0 J7 ^& `2 F; i
7 b3 n' x# l! L/ q3 {5 L例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* o' N0 p7 }0 ?  Dhimr 0x80040000 0x00
/ q5 M- a7 f2 nhimr 0x80040001 0x11" o" G4 ^  h2 U
himr 0x80040002 0x22
0 x# B. _% z/ o4 U# R3 Vhimr 0x80040003 0x33
" X9 y  }+ F0 D( W. shimr 0x80040004 0x44+ b: U8 K8 S. i7 o9 J
himr 0x80040005 0x550 H, j4 u  \/ A' O) J
6 R1 Y' a* X5 ^1 C6 j
SN也是类似。
3 W5 b) E5 p6 c; e0 A9 l1 R9 q/ R5 ~0 H5 b" q
现在主要是,谁告诉我们MAC和SN的地址?
9 ^1 x/ Y! d2 t) @
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 }3 ]6 T+ c8 x( U& m2 U& k
一直想找到运程修改MAC和SN的办法,苦于无解啊
9 V% Q! l& b5 ]/ A3 l9 A( O
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 ?2 U- \' o: E7 b: |$ F. ^' Y' J7 C9 Y( H( y3 t
修改的代码早有了。到今天不会编译。- v# ~. Z: y* E& L6 _  C+ m9 @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>! E& R: ]) T" A
  2. #include <malloc.h>8 k& z8 ^0 b2 m, w5 `8 E( O
  3. #include <sys/types.h>3 ~& L$ U+ d' T
  4. #include <sys/stat.h>
    ' A. Z: u9 O* U* V9 \
  5. #include <sys/ioctl.h>8 D2 g  b  _) {
  6. #include <stdio.h>. U7 }) l% F1 ^9 T+ W
  7. #include <string.h>" \  z3 e/ _7 |5 u
  8. ! ]& v6 v  P3 _+ U! {% i! [; j
  9. typedef struct {9 V+ g6 o4 @2 r
  10.         unsigned int        e2prom_cmd_sub_addr;! q& u- E9 [- l/ E
  11.         unsigned int        sub_addr_count;& ^0 K+ R  }8 }* e
  12.         unsigned char*        e2prom_cmd_data;, _, h8 Q& F2 n. _: M! p) l& \
  13.         unsigned int        data_count;
    ; S+ q; p2 g1 C
  14. } e2prom_s_cmd;* K" q* x9 O0 N  a4 D8 D
  15. # v* q, ?$ W+ c1 y3 k" e; N
  16. #define E2PROM_CMD_READ 13 h7 {3 D0 e2 r6 {% p
  17. #define E2PROM_CMD_WRITE 2
    $ a. l0 J/ m/ e; Q, A0 e3 Y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 Y! t  }$ X* Y" r

  19.   k$ T$ e) _1 w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 `, m; B( W: Z
  21. {
    0 {+ a; [: C0 B$ _: u0 d
  22.         int fd, ret;* V. ]( h/ T* q% Q. E7 h" B
  23.         e2prom_s_cmd arg;
    5 v- }9 o+ L+ Y8 Q6 }( J3 z
  24.         unsigned char buf[0x18];
    ' g) q1 J: E; e+ g
  25. : H! r2 ^" e* c5 ]: W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. E# G: Y" }- T" G/ k7 i' k
  27.         if (fd  < 0) {/ G* g1 z8 U; [3 O, @* O7 z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      L% o+ A9 Y  e% N. d  p! F
  29.                 return -1;
    3 Y$ p1 T' o( I$ Y" N1 u
  30.         }8 S; H3 `. u7 ^- X
  31.         arg.sub_addr_count      = 2;# T$ D. t' u* B5 {! m, X) X4 E
  32.         arg.data_count          = 0x18;
    * B4 z+ ]: n. m" Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 V& |8 }6 [- r
  34.         arg.e2prom_cmd_data     = buf;0 V, F5 e* z$ X$ M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) ?6 u" k7 J# b/ y9 z
  36.         if (ret != 0) {, S/ r$ }: k- W; |6 \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ P! Q0 C7 c6 C8 U
  38.                 return -1;
    0 C+ z1 l5 [* r3 J3 m/ j
  39.         }0 P& S5 I* [! J2 v+ U8 n7 ~6 P
  40.         memcpy(mac, buf, 6);
    5 s! ^* V8 y- i0 u  b
  41.         memcpy(stbid, &buf[6], 18);
    $ g" M; S8 z% G3 ^5 m
  42.         stbid[18] = '\0';5 E" q2 {) S, V% E3 U
  43. . [/ }8 K# n1 _" n% P/ z& n
  44.         return 0;
    " m, a: h0 T2 ?" z# o- H
  45. }, t% h7 T: m- L8 d

  46. ) D# P$ @4 Q5 H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  I# _+ p$ Y8 I4 O/ O  E* Y
  48. {
    & a' P! j/ U" h* X, v
  49.         int fd, ret;  _" `9 u' C6 n% O+ R, z- U: z9 K. g
  50.         e2prom_s_cmd arg;
    , [4 e- d4 M, e+ K- k2 i! Z9 k' D( t
  51.         unsigned char buf[0x18];+ I% X: F+ T3 {/ M$ P4 K/ F
  52. 8 j) |0 B% x- E' m$ E" B/ s* O7 _
  53.         memcpy(buf, mac, 6);' u& j0 N$ Q/ s$ e; m6 {0 S
  54.         memcpy(&buf[6], stbid, 18);, i* |' H! h2 T6 ~# H1 _. N: Y% P7 F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" w* o5 B0 F# \4 w- G, h
  56.         if (fd  < 0) {
    4 j4 X- `  {! [) w# I
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, Y* m5 C4 i2 k1 r" Z
  58.                 return -1;
    4 p+ t  J  w/ o. p9 A7 F
  59.         }
    " B+ [& A: u- Q! C6 \4 \, a
  60.         arg.sub_addr_count      = 2;# b1 u9 J( |9 m  P
  61.         arg.data_count          = 0x18;0 c8 g$ m; V2 }1 t  R
  62.         arg.e2prom_cmd_sub_addr = 0x290;# M- s/ P/ f& w* e" a/ }5 t  C
  63.         arg.e2prom_cmd_data     = buf;
    ! ~4 y9 a$ h; T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , w" O3 m8 k! p+ i; ]  P
  65.         if (ret != 0) {. G: ~1 N8 [: k" s$ {, }5 z; m& r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* R- {  R6 v1 q; x5 L1 o
  67.                 return -1;- f- J# Q, J. i2 |
  68.         }8 p5 k" k& l2 k6 y7 ?3 ^
  69. ( v( L. Q. C% X, e4 D  \
  70.         return 0;6 h% d0 \& l1 E
  71. }
    7 j& G" r0 u) u8 E$ y2 O5 p
  72. 8 Z" [' }# S8 r% q+ T8 B2 _
  73. int main()- e# b: g/ Q( Z# _/ w
  74. {6 C- v" ]$ W& h+ d2 a. |8 c
  75.         char c;
    ( f% B  Q( y! _; N
  76.         int i, macs[6];, A: }( a! G4 M! `0 D' f
  77.         unsigned char mac[6];# [5 B3 ~' `1 k" l* `
  78.         unsigned char stbid[256];
    ( C& c8 k) w1 U1 n) q! r' U, {

  79. 2 i- b' D# m1 S. S$ G0 Z9 m: t
  80.         if (readparam(mac, stbid) < 0)
    " t# X: D- i; I6 i2 n! C; F: ~
  81.                 return 1;- i  \3 f- j+ n' a& G
  82. , Y# X2 V8 d# q5 r
  83.         printf("Current parameters: \n");7 f4 B1 }' s  Z3 e9 ~
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / a/ u9 U. n) \0 N
  85.         printf("  STBID: %s\n", stbid);
    & r9 d& m1 O+ t6 m
  86.         0 C0 j% K4 F) e" H& R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");4 K2 b: r! W8 }$ U, V# n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # A" V2 g( w1 E% E
  89.                 printf("Input MAC error\n");0 T3 ?' G7 `$ v
  90.                 return 1;
    / `: R# `9 A; ?; t! W2 f, ^# }, S4 ?. g
  91.         }
    9 `! ^) k. `6 _: q1 h. \! o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! v2 T# f) {# e. Z. `; b
  93.         printf("\nPlease input new STBID: ");
    & @0 R; R# D: n! B
  94.         scanf("%s", stbid);9 `0 D4 f4 ~9 S! B5 D) Y
  95.         if (strlen(stbid) != 18) {$ D( @9 X* }. K& |
  96.                 printf("Invalid stbid\n");
    - d. g) p7 c7 w/ g
  97.                 return 1;
    3 n. Z2 P# F# l  w# o$ q2 r0 r1 P
  98.         }
    3 q$ x) U( o2 |% j# j
  99.         printf("\nNew parameters: \n");6 n1 m" j9 g: Z. A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) B. C! g; C) G3 a! @& w- C% Q
  101.         printf("  STBID: %s\n", stbid);
    : H0 b% F& A# S/ U2 ]: ~5 w5 G$ p2 w& T

  102. ( K3 |) b" h. P# b
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & a6 B7 T( R* p) Z
  104.         for (;;) {
    1 T# B' E0 _, Q, w
  105.                 c = getchar();
    ( x1 A$ p0 y! E% |, f" m
  106.                 if (c == 'y' || c == 'Y')( c3 Q- a  B. \  v
  107.                         break;# [% ^7 s2 U. h% f
  108.                 if (c == 'n' || c == 'N') {
    ! c2 M. Y1 K" }  d/ y9 w. K0 `
  109.                         printf("\nAborted.\n");# s, |: o6 N) d& z6 t, ~' o4 t
  110.                         return 1;
    - r- s% y& a' P* o# ]$ F! X
  111.                 }+ h3 F- Q( [  `8 r
  112.         }
    & _" L2 a+ v0 U$ q
  113.         if (writeparam(mac, stbid) == 0) ' Q6 v& L& f0 q: ^( T
  114.                 printf("Parameters changed.\n");% H: t6 H" H; \* O
  115.   o/ U5 U. \9 U% h) a4 B3 N, ^1 {+ \
  116.         return 0;4 p/ {& G" T2 c$ _4 v( I2 i# q
  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   j5 {6 t4 k) L& `; {
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 M7 @4 u. g2 O& J/ _
你用的编译命令行格式是什么?
! j4 r$ ^% L5 L- {0 D. w
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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