查看: 16088|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 N/ a# y9 S9 b2 i3 ?$ Y4 W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! m# G" T" t; m; G# B& {3 x+ R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 {2 O; N$ r+ j6 k4 u# G* c
usage: himr <address> <value>. sample: himr 0x80040000 0x0
, p( C  u$ B: w5 f2 f3 b  e. Q5 }$ s  D& h) l8 }6 F0 U* C4 {
/ k/ w; ~2 G# I- B7 O
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ s+ j: G: P$ L5 Y+ w5 y
' t/ @+ n9 @; B补充内容 (2012-3-8 09:42):) ~# ?9 J5 @- F
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 y$ J) [, P% v) ~: F这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 H* H$ u7 b4 Z) H$ M1 X
6 _& l& }6 X7 ^' X9 d/ f% _; L. Phimr <address> <value>. sample: himr 0x80040000 0x0
" G/ s+ R5 [* V) W; ^* R8 x, l! ^/ z" ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 |5 ?" p0 [- D" @himr 0x80040000 0x00, V+ _# C, {: Z- }6 M  O' y: a
himr 0x80040001 0x11% S) c& F  ?7 q7 x. n. B& l
himr 0x80040002 0x22
: g" [: Z. J% h: v& n" Xhimr 0x80040003 0x33
$ p' c- P4 R; d1 n* v( h. ohimr 0x80040004 0x44' r* {7 ?1 t6 R. v
himr 0x80040005 0x559 \% [4 k8 w- Q+ V6 w, G

) x& |. @- o& u4 B! u  hSN也是类似。
) a( O, y; o% u/ o# U% n8 Y) |4 i: U& `# ~# w* b$ @
现在主要是,谁告诉我们MAC和SN的地址?
7 B! A+ c! E. w- e, L7 i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 e  j$ q: x! f$ i一直想找到运程修改MAC和SN的办法,苦于无解啊

/ q9 T" e0 J0 Z3 `源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 g, N2 I4 h) ~. K
/ R" }1 k+ Y" s$ P2 D$ W9 ^修改的代码早有了。到今天不会编译。
8 _4 _& t' d# ~/ H; N3 T8 @需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 [. n, r" C) L/ R
  2. #include <malloc.h>! b: m. m1 Q. e% n
  3. #include <sys/types.h>0 v! ^6 [3 ]0 {9 K3 i* r3 x
  4. #include <sys/stat.h>
    5 @' R; d1 L# k
  5. #include <sys/ioctl.h>  U! ^: n" A! K* z! P( X  T, @
  6. #include <stdio.h>
    ( h* A- K7 r% F# O+ C2 V$ ~3 I- a
  7. #include <string.h>/ |4 D: q+ Y/ c! V

  8. - I, W: A9 @& U& E; }+ J
  9. typedef struct {; q8 ~- ]# A6 r
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 ]4 N& L- |, l" S0 ]
  11.         unsigned int        sub_addr_count;
    + g& u, d- L  ]; J* u
  12.         unsigned char*        e2prom_cmd_data;
    ) p9 t+ D( k# A
  13.         unsigned int        data_count;+ G9 q# i8 }6 `7 y/ T6 f" N9 N
  14. } e2prom_s_cmd;
      K1 T: n2 c% r- X( x
  15. , T+ q+ D4 H0 q1 v0 k0 \
  16. #define E2PROM_CMD_READ 1
    5 E/ V2 ?! Q2 [- N* g7 W! d
  17. #define E2PROM_CMD_WRITE 2; J8 d/ g0 A& u: t7 A
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ) h3 m% U7 g- M* Y, O
  19. , a; R0 W5 t" S% L. h
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# S8 f. I; o3 G, I* b1 D; D
  21. {
      a( J; {- Z* K0 H
  22.         int fd, ret;, p0 j; C' C5 g) Y6 p; |
  23.         e2prom_s_cmd arg;
    * l+ \. ]3 o/ k; |0 K+ W; B9 c/ f. Q
  24.         unsigned char buf[0x18];+ ^! F# n; S: g+ J! a( t

  25. 1 a! @8 W  }; _, M1 d; Q" i% H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + L4 }4 e' O/ [
  27.         if (fd  < 0) {
    9 X. y8 p/ d8 U" |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 t  E. g) [* N$ I
  29.                 return -1;, y4 s; k3 \7 a4 }* p2 g
  30.         }  E, c# D- _2 v' m0 K
  31.         arg.sub_addr_count      = 2;
    4 [1 x) [" V& a8 s8 v, o
  32.         arg.data_count          = 0x18;
    : H6 O, n" S5 \( \7 a+ n8 w4 A
  33.         arg.e2prom_cmd_sub_addr = 0x290;1 h! M, U+ G" {0 n  O
  34.         arg.e2prom_cmd_data     = buf;
    9 ^; {# y3 w% z) S, L& ^6 Z& }& [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);5 n2 v' o& E8 C1 P+ o- N
  36.         if (ret != 0) {
    8 p) c: c6 ~/ \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    1 r. k' [* E' q9 c7 e% `' j  I. C
  38.                 return -1;
    ! J, ]' J( B1 H% O# R) P
  39.         }3 r7 A" K) D' `# P& [4 t9 Q0 ?
  40.         memcpy(mac, buf, 6);
    6 Z( P; X9 {/ S& n+ \) }
  41.         memcpy(stbid, &buf[6], 18);
    " B6 {0 u% A2 r( I* I: t
  42.         stbid[18] = '\0';
    4 i% @1 M/ q4 W" h* l
  43. 6 m( v' `$ Q. y0 y: }  Y
  44.         return 0;  w# T! S5 I- h) I+ M
  45. }
    7 ]3 l9 U) K$ q1 q+ n

  46. . d7 J$ d( b, o: |
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , k8 c' G  Q/ ~6 v$ U" N$ z& A
  48. {
    : ?# T1 @9 U; x+ d. r
  49.         int fd, ret;
    4 t# B7 w+ Z+ @; d; C3 n' t1 j( y+ l
  50.         e2prom_s_cmd arg;, P4 E' d. @% L# }+ S
  51.         unsigned char buf[0x18];
    # X/ U. O9 M, n: m% {
  52. / ?) E/ W1 m# W
  53.         memcpy(buf, mac, 6);9 s# ]& K& e- U6 l7 q1 r9 x
  54.         memcpy(&buf[6], stbid, 18);$ }* l, r' y4 v# Y' E2 I7 X* C; }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 V5 G9 F# F0 P
  56.         if (fd  < 0) {
    8 ~9 K8 V; `8 N* V- k" ?. i% Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 O; v. ?+ }  i' J
  58.                 return -1;1 `9 X3 n* J2 A" S. E0 L
  59.         }! J1 j6 o/ R1 B1 m7 [  _
  60.         arg.sub_addr_count      = 2;+ g. v5 R8 B0 V! z
  61.         arg.data_count          = 0x18;
    : S/ B) z0 W3 F/ X/ o) z& d! n( o3 _
  62.         arg.e2prom_cmd_sub_addr = 0x290;& l7 O! y4 R: c$ p
  63.         arg.e2prom_cmd_data     = buf;* d; q; S& j. \( i  l5 I5 b: \" S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 t$ M( R8 j8 ^# _; h1 j
  65.         if (ret != 0) {' j) O) [& M) K* k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" |9 }/ V( ]- z
  67.                 return -1;4 t! u: M- \' h& }
  68.         }
      S& _- o' d6 r4 b1 ?

  69. $ r2 \9 p$ _; z! Z: ^0 P5 Z8 }& m0 v
  70.         return 0;
    7 O& L, ?0 R# t
  71. }. K4 s0 }% a! N; N

  72. 9 q4 Y; V* e& p
  73. int main()
    ; |6 z; f! K* K' i9 p) `, @
  74. {( O3 L$ i9 q9 G
  75.         char c;
    8 a+ q- R) h( v; Q$ U9 q
  76.         int i, macs[6];9 e3 g4 I1 S: j- a; Y+ r8 o9 H8 p  ~4 r8 J
  77.         unsigned char mac[6];
    $ C; ]* J; g6 m* i8 N& u) d( I
  78.         unsigned char stbid[256];
    + p6 T/ S' L% ~; T% s4 Z/ h6 t, U

  79. 9 g  s( r: ]! X# w( q  |) |0 `
  80.         if (readparam(mac, stbid) < 0)
    , O/ |/ w1 E$ R" V/ Q$ X3 a. q
  81.                 return 1;
    6 S3 Z2 t. S0 m( e; K0 t+ r0 ?

  82. . [2 A% S3 p; G- ~- ]3 A+ K. l
  83.         printf("Current parameters: \n");8 h/ \2 C% d! r8 d. n0 A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % x9 j8 {; v( h: u0 b6 @9 u
  85.         printf("  STBID: %s\n", stbid);, T* A# V, ^0 d! }
  86.         2 n4 Y: J2 l8 B- r2 f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( u5 C/ w, c3 X. s+ N% ^7 G
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , d  Z. C) v6 n8 N' S
  89.                 printf("Input MAC error\n");
    3 Y4 U1 T. X$ p$ y; w
  90.                 return 1;
    * t3 }* |" e- }& O/ v4 P
  91.         }
    4 j) \% o+ e7 _6 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 x, W9 n* I* ~5 i! n
  93.         printf("\nPlease input new STBID: ");
    # l' h# W. h3 m, N
  94.         scanf("%s", stbid);
    " [* X5 A) P7 S* l, J( ^
  95.         if (strlen(stbid) != 18) {5 \% `3 W6 p' U) L
  96.                 printf("Invalid stbid\n");0 I2 [) [7 C% f
  97.                 return 1;  s( ?; y4 z* N' m7 u) b
  98.         }
    # ~/ T- |2 d) \9 j
  99.         printf("\nNew parameters: \n");) b( Q. {$ W  U4 y* a$ D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 X+ P# \' K5 v3 P
  101.         printf("  STBID: %s\n", stbid);) `" S7 S9 n6 f1 t+ c: W

  102. 6 r/ X" ?& H% x
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 m2 q# Z8 o/ J3 G+ s5 m& {
  104.         for (;;) {
    % r2 }2 S- Q* ^  n* \/ o
  105.                 c = getchar();% ?* ~' ?; E5 Y/ M) B! O
  106.                 if (c == 'y' || c == 'Y')( [: I0 H2 N* s. r! G
  107.                         break;8 z" J: C7 x* B) @
  108.                 if (c == 'n' || c == 'N') {, `) F$ F8 ?& x, g( c1 e
  109.                         printf("\nAborted.\n");
    " T/ g+ p7 V) M
  110.                         return 1;4 Q) [7 ?5 ~% h8 R0 l. i0 v' v+ ?
  111.                 }
    7 h  b1 w. y; s! ]# `) U8 ]5 k: L% i
  112.         }. ~6 M& B* [2 \, c" `/ X9 I
  113.         if (writeparam(mac, stbid) == 0)
    ! D; g- v5 o) x' F9 n# V
  114.                 printf("Parameters changed.\n");$ r# l7 e- T/ q7 n; u+ c
  115. $ ?+ @5 F1 X  u0 L( f% u- I/ W& W
  116.         return 0;. F7 |& S* G3 Q% K3 R
  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
/ S2 }  E% ~; Q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. u9 K* {5 n9 @" B
你用的编译命令行格式是什么?  ]. Y, r2 X2 V! P5 A  _8 j9 i
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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