查看: 17957|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 K8 Q; O3 w0 J4 H* Z6 y6 D, Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 n0 ?8 Z1 _- `7 H! E; J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" [% o& C$ l7 s4 T' y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  `$ U' v+ p& m* l! [% f8 k5 y2 }  ^
' F1 u/ i' _5 g) v3 y2 D. d% A
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, J. k  [1 Q4 g; t! h; s1 |" J3 ?/ \) N1 h% Q) H
补充内容 (2012-3-8 09:42):) P* g! B3 Y& P5 ^+ y% r
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ S3 _& L* W* `
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。1 P. t: y: W% H$ h) J
/ ], H2 B  s2 ~* ]3 B5 o( d
himr <address> <value>. sample: himr 0x80040000 0x0: K9 Q$ `( e0 u* R
& \1 q) s; d+ w0 q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  K! K' `: Y0 A8 }4 I4 {1 I
himr 0x80040000 0x00* d6 q9 M0 i+ h/ f/ e/ {
himr 0x80040001 0x11" L4 D6 N! r& {
himr 0x80040002 0x224 r! X, O5 l2 f+ a  h  |. m
himr 0x80040003 0x33
1 U( e& X7 ?  L1 ?himr 0x80040004 0x44/ y4 P+ v/ H- \
himr 0x80040005 0x550 |% W7 x% u5 F& }
# Z# T5 j( N8 V) Q5 ?
SN也是类似。2 ]  U+ Q  L3 O

4 H. I9 H7 n. d  K) c现在主要是,谁告诉我们MAC和SN的地址?7 q: B) q. K: |3 a1 U
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" I1 d3 s! {  H6 `: b一直想找到运程修改MAC和SN的办法,苦于无解啊

8 F5 }5 p2 M# O源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! o: k. C2 {9 N' F/ p* U5 c" _. ?: S

& z9 k9 j: s6 n, @7 }修改的代码早有了。到今天不会编译。% ^2 P" ^7 V( J9 a9 I( Z4 v# t
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 y2 d- u! A# j5 C; S" j! s
  2. #include <malloc.h>2 o9 H' t5 e2 x% A/ ]3 L
  3. #include <sys/types.h>
    ! a3 T% x3 E3 E
  4. #include <sys/stat.h>
    # [& q2 E/ P! m  t1 n* y8 }2 I
  5. #include <sys/ioctl.h>! e* N8 C: t/ G' V6 [+ W5 P
  6. #include <stdio.h>
    ! l* c: m$ Q3 g0 B+ A6 B
  7. #include <string.h>
    4 @" M- o& C) K* Z( K# h4 Z

  8. . `9 g' ?) o' @. F3 ^2 {
  9. typedef struct {
    ' l  H) f! {' Y6 i
  10.         unsigned int        e2prom_cmd_sub_addr;; @+ J9 W, b, j7 }6 D% n/ Z8 Z- L
  11.         unsigned int        sub_addr_count;/ A" Q. O  r: D3 d8 {! I  B
  12.         unsigned char*        e2prom_cmd_data;
    2 G% u( M9 D; f$ Q
  13.         unsigned int        data_count;8 P# m4 @" q% ^( d$ a  g- X1 h7 m  `
  14. } e2prom_s_cmd;
    9 j; N6 z% A! p2 F- W5 ^7 i2 K

  15. 7 a2 A9 `2 t: h9 c4 t9 k6 s
  16. #define E2PROM_CMD_READ 1
    ! `% L  r9 o% `8 _- ~* S1 U+ O* V
  17. #define E2PROM_CMD_WRITE 2
    : @+ a7 J& T5 _- D% l$ v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 m2 h9 Q& C; f+ w; \* x. `+ R' X  @
  19. ) r" [" s5 c8 ^7 Y& F% ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + A7 A$ N& M% A- ?3 N, R' E7 G8 L
  21. {8 q; W0 f, i7 U) j
  22.         int fd, ret;
    ) c' f+ N6 h8 q8 {% @
  23.         e2prom_s_cmd arg;) P# v$ I5 K4 G2 r7 M! V$ t
  24.         unsigned char buf[0x18];
      r* t' {, K6 b8 r( {+ m
  25. , N6 k: m& U. j7 y  C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 C! P: R% o6 B. d3 B: m
  27.         if (fd  < 0) {" X+ @9 f. q" u+ c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 j3 m) n0 Q. G5 E. H! j
  29.                 return -1;, g" ~) y4 j# w, V0 U) A3 ^
  30.         }+ {0 @( K, n) E; R5 y" Z# N
  31.         arg.sub_addr_count      = 2;4 x/ b' M- m: {8 R0 @) o
  32.         arg.data_count          = 0x18;
    ! f; B; Y2 T2 w) g" w
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; m$ r8 }8 J% W8 v$ N
  34.         arg.e2prom_cmd_data     = buf;$ {) Z. g/ ~9 Z" L. i& i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# ?! s. c# c5 l
  36.         if (ret != 0) {
    7 v" k! G/ U6 V9 Q6 y7 `/ l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! h( q5 A# M- t/ w0 Y& D; b# I
  38.                 return -1;
    . f, T/ J* A, a# r& f) k
  39.         }& J0 H9 m. F% v2 e& R
  40.         memcpy(mac, buf, 6);, J: P' `' j+ w6 Y  v
  41.         memcpy(stbid, &buf[6], 18);% b' W! A& T/ V+ E7 ~$ X
  42.         stbid[18] = '\0';# \: N0 ~" `) V

  43. 6 y+ N5 z) i  C) T- Q+ N3 A
  44.         return 0;
    3 l% \, h1 b+ {( x: a) q1 @. u
  45. }
    6 m) s" \, J( R6 c4 |$ J

  46. ) g, @+ n, l# N6 |) X0 o6 j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - c  Z2 |3 ?3 q3 D( J& R
  48. {. z8 d, @: u+ |: U( B8 l2 ~& a8 M  A
  49.         int fd, ret;
    ( N9 T9 v1 q( P2 _$ o; G) p
  50.         e2prom_s_cmd arg;
    ( ]1 F+ b9 H$ T9 }9 Q# z- V
  51.         unsigned char buf[0x18];+ D" e# v$ n$ }0 F" R2 `

  52.   V9 l# j- h9 ?- v- J
  53.         memcpy(buf, mac, 6);
    8 R# e# F/ {# p7 @4 c9 z
  54.         memcpy(&buf[6], stbid, 18);, E6 v' ^' S( K# O
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & R' Z: q' F. q7 n) L; B2 p
  56.         if (fd  < 0) {
    # o, n) z% Y- H( j0 }' j. V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( D; E! a8 n9 X) k! G0 n# G2 l$ v
  58.                 return -1;
    0 @/ i0 W- g( A! K; _. ~" p
  59.         }
    $ Y+ U2 j% s; R  a( v0 P
  60.         arg.sub_addr_count      = 2;
    0 B2 @7 B/ f( d- M/ q3 U
  61.         arg.data_count          = 0x18;
    ) w; g2 h6 ?6 ~# Z1 o
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ h9 `7 K) V8 J( `9 }) [+ k! n
  63.         arg.e2prom_cmd_data     = buf;
    & o" r, }2 j) }% f! y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' ^" N3 B  s$ `8 I% n% R4 ]3 O
  65.         if (ret != 0) {: b2 j" S- y1 |3 N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) f3 A+ ~' \9 H. u$ g0 k( h8 Q
  67.                 return -1;
    3 y5 O" [: Q0 u  n
  68.         }( V& K& S+ b4 b6 c" A4 e

  69.   O( Z" G- b) }$ j9 T/ e6 D  @
  70.         return 0;  w, _5 E- D; ]% y
  71. }7 n& J$ M$ o7 s

  72. 4 y) |, Y8 Z# I: q! R9 C% V9 B
  73. int main()
    2 l" `: a6 U* ^% I* O
  74. {, [5 B2 n9 ]& \. x
  75.         char c;& k* x! B+ X; Q, c2 D3 `
  76.         int i, macs[6];
    / n2 u- W) v8 N$ s  S
  77.         unsigned char mac[6];
    , o0 K& ~1 `, U' L
  78.         unsigned char stbid[256];
    / z  F2 y6 h& y5 s( y6 E2 y5 W' e
  79. 8 m; G$ A2 D4 n5 A6 l( o+ T: }
  80.         if (readparam(mac, stbid) < 0)
    * v" G2 R4 {$ {+ c9 _( r
  81.                 return 1;
    . I) g# N; Z' [* z! f6 F+ ?/ j

  82. , @' }0 f/ b% j, ?: L* m' ^7 f6 @
  83.         printf("Current parameters: \n");6 T' ~! Y, g4 ?* U
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! Z  t% ~- O/ e. \
  85.         printf("  STBID: %s\n", stbid);1 F/ Q/ S1 I8 A8 v/ }5 F
  86.         6 \- Q( Y2 X3 U2 p2 T
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 c+ U& |+ b6 I5 n0 J5 J, u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * i/ v5 c: V' f: ^; k2 a
  89.                 printf("Input MAC error\n");
    # x" Y0 ~% l" P- J1 A" ?9 f
  90.                 return 1;
    : f+ Y+ J  r* {2 L
  91.         }
    0 ~; y# W* |1 O7 ?9 I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    / c+ @. @: u* ?( [" C* t2 r- v# ~
  93.         printf("\nPlease input new STBID: ");
    : ~3 ?. v+ o& J0 i$ ?0 e
  94.         scanf("%s", stbid);
    % X, I, B* p. g$ T
  95.         if (strlen(stbid) != 18) {' ~; t) y, B8 w$ B" U2 w" Z
  96.                 printf("Invalid stbid\n");8 ^: Q. m7 B+ }; v* @) p" ]
  97.                 return 1;0 a6 [( {" ~5 Y. I
  98.         }  I" N. ?( [% z& S+ Q" e! r$ Z
  99.         printf("\nNew parameters: \n");. O  x$ F$ e. b! j* ^9 |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & d2 I2 y  ?- o9 b, }7 S& q' \9 u
  101.         printf("  STBID: %s\n", stbid);
    4 F# E" [4 Z6 x% K8 B$ ?
  102. : l9 C" E7 \$ \7 q- a3 }
  103.         printf("\nDo you want to change paramemters? (y/N) ");- i7 n* k* t* v' h! l) b
  104.         for (;;) {
    $ [! Y  Y4 S5 G& b8 ~
  105.                 c = getchar();1 o' \" u. g# m! D& X1 X. c4 S9 \9 e
  106.                 if (c == 'y' || c == 'Y')
    # W& i2 h5 k5 X: Y1 X6 R2 M
  107.                         break;& I% R6 b; r8 x; p* V
  108.                 if (c == 'n' || c == 'N') {. M$ z) n# p- v
  109.                         printf("\nAborted.\n");! `9 p. U# _  H  W
  110.                         return 1;
    9 `6 g9 X! c9 c5 l
  111.                 }- @  }0 y" F, n1 S1 M* g8 B% x
  112.         }/ k4 f" d+ I# a0 N8 E* _# f% I
  113.         if (writeparam(mac, stbid) == 0)
    # L! u  K$ ]: j% D& b5 m- L! B
  114.                 printf("Parameters changed.\n");5 K0 _6 q1 A, f) G3 M' T; \  q
  115. & T+ o1 m3 m# W: |. O. b
  116.         return 0;
    ) A7 W% U& D8 S
  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
, y0 Y9 k8 A% w8 b在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 G5 Y. f/ C; M1 }- S, j; O/ @你用的编译命令行格式是什么?
7 t8 M/ \. p4 w9 V: `# _( X
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部