查看: 17500|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 G4 A# s$ z; _7 g) U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  X1 I) m% A# ?, p$ ~* M. Y, ]$ w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 i6 [7 a8 R  J/ o- x7 K' K
usage: himr <address> <value>. sample: himr 0x80040000 0x0
, O' {! P/ d+ b- |+ O& b# [. q) N; U, T

: \7 d8 J, o( Y$ V, f% a' l不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 M4 ~; _8 k6 B" c8 A+ _7 q
+ x' V0 S) l5 x* H0 k: ^! w' j
补充内容 (2012-3-8 09:42):
) I6 Y- i. m% e4 bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# V- Q9 m/ |# e: g! Y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, C; q" S4 V" n" o. J! C) y6 r- A* G$ S+ F' X3 k% R
himr <address> <value>. sample: himr 0x80040000 0x03 |: o" ^. e  Y/ E  g

4 g) f2 x7 O( w2 d例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 K3 P9 H* h5 [himr 0x80040000 0x00- Q6 U: C# t) E, [8 k8 E- O
himr 0x80040001 0x114 B% n% Q1 F; Y% o
himr 0x80040002 0x22
( T  y! x! U' h* k# F! s' P6 `$ Xhimr 0x80040003 0x33
! U+ E: i* F6 g/ `3 d0 Ihimr 0x80040004 0x44
1 K2 U) e0 t) k# A1 ^% `, D9 c5 J6 Mhimr 0x80040005 0x55
) [0 A; b8 A; Q' {) n/ a! A! b+ g& ^  o
SN也是类似。' y; D% y" x9 Y# ^% `) T

: I) a& D' u: c, B( j4 \: z. O  Q现在主要是,谁告诉我们MAC和SN的地址?
# Y8 O! w' h; w) b! t- B
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 g. g& E, y7 S7 x" V/ p. o% Y一直想找到运程修改MAC和SN的办法,苦于无解啊

5 K2 N; o$ g/ ~4 _# s源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, I  S& r5 O; j- G; g
, ?2 R% X8 j6 n4 Y# {3 q修改的代码早有了。到今天不会编译。
1 ^% _( T& z4 j- I/ w: m- d9 B需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 A2 J7 N0 t' @" D  I
  2. #include <malloc.h>$ X6 q$ |, L# Y* \) z6 g
  3. #include <sys/types.h>
    2 A4 ]' U) C) ?
  4. #include <sys/stat.h>
    % ?: A" ~) A. G4 T7 b
  5. #include <sys/ioctl.h>! M8 t: l* l5 Z% B. q/ _
  6. #include <stdio.h>$ b9 z, p$ O* L3 t+ d4 Z  S
  7. #include <string.h>
    7 a& K" i, G5 n

  8. 2 x& |" Y0 ^3 C) z! U7 {" o7 w' b
  9. typedef struct {" P+ c+ m4 G3 l3 @' s% J
  10.         unsigned int        e2prom_cmd_sub_addr;
    + j5 w% s* }. }2 h; C3 K; B
  11.         unsigned int        sub_addr_count;
    : m, o3 g% v* q
  12.         unsigned char*        e2prom_cmd_data;
      L; b5 C- [" N+ A$ w; S
  13.         unsigned int        data_count;- r, h9 m: K& `: J
  14. } e2prom_s_cmd;
    . f0 p% I7 r0 e+ N; \
  15. ) t7 ~  O( q. B9 c
  16. #define E2PROM_CMD_READ 1
    1 u% ]+ y2 Q8 e
  17. #define E2PROM_CMD_WRITE 2
    5 A2 c4 x/ H. D# ^9 V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 g4 ^0 D: e! g# o  a# ^  g& r5 s

  19. 7 |* ~6 T! t: t) E% [; t3 B# \8 G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , \; ~$ D1 \8 W4 v! j
  21. {
    / k5 C% I/ I! g4 S. Z4 X: X% E
  22.         int fd, ret;! S% t. X1 [6 q+ }
  23.         e2prom_s_cmd arg;
    & F7 ?9 \  \4 j& `& b4 t
  24.         unsigned char buf[0x18];
    7 V# ?1 O. E% y7 e

  25. . I  T; e: k& Y) R' X# M8 W* Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 J  a8 K# i* _+ m+ l
  27.         if (fd  < 0) {
    4 I  s, S  |4 W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 _! n: y1 e% N# A( ]
  29.                 return -1;3 j+ E) _  B1 `% w5 {2 L2 J
  30.         }
    : F+ B& L3 h1 \, @
  31.         arg.sub_addr_count      = 2;5 e8 m  x. N  P4 d/ ~
  32.         arg.data_count          = 0x18;
    9 x: J6 W4 m) L, O: @0 S
  33.         arg.e2prom_cmd_sub_addr = 0x290;" ^' [8 k- O) U/ Y, u7 z
  34.         arg.e2prom_cmd_data     = buf;
    ) ~/ g" d8 p- x, \& d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 P: i- y! |! p- G
  36.         if (ret != 0) {
    . P# q% O' S' K- n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 Y1 H$ n$ r, s, D+ P4 }" G3 a
  38.                 return -1;
    , a5 k6 H, t  E$ g
  39.         }
    * @/ U7 r# H, o1 R" \
  40.         memcpy(mac, buf, 6);
    . e- \( m  l6 i& v4 j
  41.         memcpy(stbid, &buf[6], 18);
    4 S7 ~, p( Q' L. K/ g% |
  42.         stbid[18] = '\0';. J- i5 E5 B, [$ a+ L1 ?+ N; r$ n! u

  43. ! ]9 v/ ?; ?. f2 D; u8 z# f
  44.         return 0;
    $ ]  A' B5 l, N/ `) t
  45. }" F0 o3 j" H  }0 [7 O( \, Y6 f

  46. # Z/ f6 `4 `9 c( Z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 a8 U5 h. g0 d  M" O  c! [
  48. {
    : ]) t4 J9 l; O$ a
  49.         int fd, ret;
    9 ^1 J& |/ l* Z" w
  50.         e2prom_s_cmd arg;/ m/ P/ U1 ~, F" c& d
  51.         unsigned char buf[0x18];
    % y9 }# V( {: I! w0 n' ?
  52. . i9 |% o0 F8 ^( o9 Y0 v
  53.         memcpy(buf, mac, 6);
    - m$ G& m/ @% j  E: e
  54.         memcpy(&buf[6], stbid, 18);
    8 }4 s* y8 A" N" L/ ~/ O- N# r9 P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 ^% J# S' s) V
  56.         if (fd  < 0) {+ Q. x9 G, Q$ F, l4 w" S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) Y' x' b9 e8 |. I
  58.                 return -1;7 f' G! q6 @% j! G5 A; t+ b% D% v5 O; N9 R
  59.         }
    ( t* o, o- E5 Q9 K: y3 S- j1 r
  60.         arg.sub_addr_count      = 2;( p. U1 y4 B; @! a  P
  61.         arg.data_count          = 0x18;
    : Z/ U: R: s) W6 P! m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 K3 u1 g: C, H
  63.         arg.e2prom_cmd_data     = buf;! Z8 M# i' `( n) Y$ g- G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . M( k. R% |8 G
  65.         if (ret != 0) {
    * x4 s6 _5 e1 y8 \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" E9 t. n- S4 b: X# H, y/ p
  67.                 return -1;2 H1 k* h& d* j/ F* g
  68.         }2 B8 a9 ~2 O1 o- G

  69. ; p" q/ Q% n- c% ^
  70.         return 0;
    & s/ s  G" f) F  e+ Y( q
  71. }( Z( @% k' t! d9 n  A$ A
  72. 1 Y% W& e; C7 {; S, \  _, p' {" @
  73. int main()4 M1 ^  J! X$ f# P
  74. {% W; g7 ?$ ]  G/ B+ M
  75.         char c;: S3 `$ C- _4 r% y7 [! v: q
  76.         int i, macs[6];
    0 K0 l0 y7 J/ n9 e
  77.         unsigned char mac[6];
    $ _6 b3 y  Z: o6 r& Z
  78.         unsigned char stbid[256];
    + q" V) }1 ^$ X% f1 d% Y; ~9 u8 F* r% L

  79. + {0 Z6 f  o( S. O; T6 |
  80.         if (readparam(mac, stbid) < 0). x0 P6 W. i% u& H" \) C$ ]
  81.                 return 1;
    / J& S" S$ D  f6 A8 \

  82. - R* t% s8 _. E: H. ~2 P" x+ \) L
  83.         printf("Current parameters: \n");) C( _2 ~* t) U2 |1 v, _" t1 U
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) Y5 ~$ l0 P& `) e2 }
  85.         printf("  STBID: %s\n", stbid);
    + ^8 y7 ~' e' m2 {0 @
  86.        
    ) a& J: M7 J4 \, h( E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( d, h2 j0 C  w' R* G) W! F: v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 {7 o# t4 i. l
  89.                 printf("Input MAC error\n");+ k9 n# ~* u4 A; V" O
  90.                 return 1;
      h1 ~, ^5 u6 e9 a8 a- g" \3 k, ?3 w* t
  91.         }* O! y1 h& f9 A5 k. i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 o& U) J% y8 ~, T$ e
  93.         printf("\nPlease input new STBID: ");
    9 K% q/ r0 ]4 T  V3 b
  94.         scanf("%s", stbid);) z: n# v4 M. e/ ?7 g3 H1 I
  95.         if (strlen(stbid) != 18) {0 a2 z3 S1 V/ u$ `8 s( E5 v
  96.                 printf("Invalid stbid\n");$ Q, k& y7 X. C, T
  97.                 return 1;
    - ~  n& }6 _3 N4 t
  98.         }2 W+ h8 j; c( D5 @+ p% K9 t4 Q$ ]
  99.         printf("\nNew parameters: \n");5 }- G0 H1 x$ R$ b8 S$ ?: Z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & n+ y- o( |+ p
  101.         printf("  STBID: %s\n", stbid);
    4 f& G9 ]& G# P+ P
  102. ( B" L3 P7 D+ ?" o' _7 A8 N; i  J
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 \0 p$ D1 V# a3 H! o
  104.         for (;;) {5 }9 l- f% o! B0 N9 g
  105.                 c = getchar();* {- w6 u# m, D) G3 V2 N  z
  106.                 if (c == 'y' || c == 'Y')
    8 q$ J1 b+ ]' Y6 j! r6 T
  107.                         break;! T" d3 @. p4 ?- e. q  Z
  108.                 if (c == 'n' || c == 'N') {
    - [: u8 H( U( \4 j! l- p5 u2 [
  109.                         printf("\nAborted.\n");
    $ z( I/ M( J- O1 `
  110.                         return 1;5 l4 G5 [( u  Q+ `* ?; L! y
  111.                 }* [& u7 M5 Y$ A: ]" ?# {
  112.         }0 i5 @( O7 S9 l  l4 ?, H
  113.         if (writeparam(mac, stbid) == 0)
    5 U1 q/ P  v0 [2 G$ p
  114.                 printf("Parameters changed.\n");7 ^; ?8 b  e0 U9 Q; L' b
  115. ' S5 d% F; i! ^: ~/ [8 \
  116.         return 0;/ A9 ~  M  T7 B% i9 D( F* 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
, s! f4 K, n) b) z0 ^  R在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  P- d" i8 p% h8 \4 w你用的编译命令行格式是什么?/ G9 }- f5 X- X9 O( k7 x3 W* r
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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