查看: 16759|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - v  C; C$ \  x2 q' H2 q0 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % X# `" S$ C" S6 u0 F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( Y& ?% _* f9 [. k, V; _  `  iusage: himr <address> <value>. sample: himr 0x80040000 0x07 H) V- H* a* J  g* S

* `" A$ a; J( ?- J; J% c) `  s* a$ ?6 f7 i/ L5 ~6 T7 i
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; t* p$ h; w1 k. }- y* H' q

3 a# m6 N9 O2 t9 S; e' |) R7 @+ _补充内容 (2012-3-8 09:42):
  s6 c) j* C& Z" U6 whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ Z' O+ y. E: R这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。  N! A* O3 M5 }1 v6 s

! {" s* K( ^( ~himr <address> <value>. sample: himr 0x80040000 0x0/ \9 C9 j, Q1 a

/ t( E; b3 h' t( \7 f/ M: ^+ s例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. a  x# z5 b& T6 a: }7 n- ^himr 0x80040000 0x00& p1 P3 O5 ~( s/ ?  l9 C
himr 0x80040001 0x11
! F  g* y" `  H/ M: P2 j6 @. L: v* ehimr 0x80040002 0x22# u5 @, d  P# z# X
himr 0x80040003 0x33( n' L/ F+ O" [8 b# I
himr 0x80040004 0x449 h3 j' Y0 @) d
himr 0x80040005 0x55
. p0 [! u( R- N  x
* R% Q0 h, t9 ISN也是类似。- h& I  q4 B6 |+ k2 j% t' I! }

+ `* O# a. ^9 j, ~) X现在主要是,谁告诉我们MAC和SN的地址?) }. P% N2 b( q7 u1 f
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * H9 l7 J* A8 J4 Q- ?
一直想找到运程修改MAC和SN的办法,苦于无解啊

& u/ S4 u$ X: T! ^) B- v6 g源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( x* e7 L7 P" ?( m  ?

. V' Y- H0 |! h: c% w修改的代码早有了。到今天不会编译。
- H8 |0 W- e; a5 j需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* t, K" E9 K5 A
  2. #include <malloc.h>: c& }3 y- h0 }% K# |4 {1 ~
  3. #include <sys/types.h>
    ) G7 H" m: A" R; _8 m$ V8 h0 U( \
  4. #include <sys/stat.h>
    ; P" i$ M$ Q0 S0 U( b; ?
  5. #include <sys/ioctl.h>
    + [8 l8 e% [0 ^9 N' w! H! @
  6. #include <stdio.h>; ]6 K! H( J/ i' X6 V
  7. #include <string.h>
    ( k6 Q* {% m# K( z, v' K) R& _' Z# C5 z

  8. ! j4 d! |3 n5 o3 w0 p
  9. typedef struct {
    - j1 U1 d% }# p$ M( n" A
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 \4 U- A& q+ q2 h
  11.         unsigned int        sub_addr_count;/ R' [6 q0 g" H" Z4 Q8 d/ r
  12.         unsigned char*        e2prom_cmd_data;
    2 B& P) r6 |# I' d
  13.         unsigned int        data_count;6 Q( k4 n) y; x' i, @
  14. } e2prom_s_cmd;
    " h  ]9 _/ z9 f1 ^8 ]8 Q/ V

  15. " m8 O$ R3 u. @% i, W
  16. #define E2PROM_CMD_READ 1
    * M- M  h  s! g
  17. #define E2PROM_CMD_WRITE 2* Q9 y" T1 C  ]2 w, c3 y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    4 p/ s, m$ W9 l8 n# k; O3 J) I
  19. ) W* h6 w* J" @: c
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 q+ y' A4 l3 [& a% H" |9 m8 k
  21. {
    2 l) W" `# t, b. |* y2 @6 j
  22.         int fd, ret;4 L3 j* V4 l6 N7 e$ p3 ?+ V/ \
  23.         e2prom_s_cmd arg;
    , I1 R  b, q8 |5 h+ a" e/ _
  24.         unsigned char buf[0x18];2 ]% ~! S& u% n/ T0 M- h7 g2 l

  25. 8 L& B% Y0 [3 e6 I( M4 l2 S* a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* n- `- g3 w$ y/ y1 E9 [( d1 o' s
  27.         if (fd  < 0) {
    % z. B( W8 t  l  N8 I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % L, r$ q' y9 P- s; d
  29.                 return -1;. c! T# d9 _, z7 k6 L6 e- Z& ~
  30.         }
    - Y: f! ?# b) S! {+ L
  31.         arg.sub_addr_count      = 2;
    , Y: o+ U4 M7 j/ m' T. @
  32.         arg.data_count          = 0x18;
    + x; B. |) T' G8 e" a4 i/ x6 t$ L( Q% T1 m
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 F9 i' y: P) Q8 m# ~5 M
  34.         arg.e2prom_cmd_data     = buf;2 T( P3 Y1 z/ X) L. S6 B9 j/ u9 H8 _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: U- {) f2 Q5 v' O
  36.         if (ret != 0) {" I/ d# [$ X+ g, `4 d8 u2 g7 W
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) i- v8 W; r  m; x  E% G
  38.                 return -1;
    + V2 F. D% s8 i
  39.         }+ L2 Z. j2 K8 O! h; D6 j
  40.         memcpy(mac, buf, 6);
    4 q8 o. N' I. H' S. R. e
  41.         memcpy(stbid, &buf[6], 18);5 P) ~8 J) m: m0 k- \
  42.         stbid[18] = '\0';6 R" s* m, T+ V* w0 H

  43. 7 T/ ~2 U! w8 g4 D
  44.         return 0;) r! z' B9 o) g: E1 `1 H5 }
  45. }' D) @, z/ }' q

  46. % C  U: k# v4 D/ g
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! i& p: j$ `1 |: Y. P. X+ ?
  48. {
    # k- X' W7 g9 f; N7 d
  49.         int fd, ret;
    1 f$ f- P# q- l. q# y
  50.         e2prom_s_cmd arg;
    " j/ i: v5 Q* X) R0 _& ]
  51.         unsigned char buf[0x18];
    . Y* B- m5 f, P( r6 [
  52. * b/ F! Q3 w9 \  b  \
  53.         memcpy(buf, mac, 6);
    " Y6 o9 U" \1 r& F5 K
  54.         memcpy(&buf[6], stbid, 18);  L7 f' |: m% f+ F  X
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 I8 N2 q4 w# ~! s& |( i
  56.         if (fd  < 0) {
    1 Q  U) X! O8 Z) H8 n) k1 ?9 @! S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( O$ b5 |. i8 Z: M- [
  58.                 return -1;
    ) v2 O# R4 A* w8 o5 {
  59.         }
      G$ g+ @  G" |
  60.         arg.sub_addr_count      = 2;
    / Q0 _; }; T* t  U( o: a1 S, w' u
  61.         arg.data_count          = 0x18;2 @8 U% J; J, O7 G. N/ _
  62.         arg.e2prom_cmd_sub_addr = 0x290;* Q6 Z9 I/ d2 J! z6 A! ]6 U6 B
  63.         arg.e2prom_cmd_data     = buf;0 k' p2 o+ f8 b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , X: s3 C( C3 V, s9 j- K/ _) s
  65.         if (ret != 0) {
    + ]! z0 R* `8 G  u% j. [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ \$ R; T0 h/ ?
  67.                 return -1;
    1 u; e0 V! Y% ?& b8 J3 Y! L% E5 O
  68.         }+ C- ~- Y; B) ?9 R2 T
  69. $ m" ^( L+ S9 H( o5 h: E
  70.         return 0;0 {# C; Z* U7 m2 f
  71. }# V8 R0 O, G& X( y

  72. % B, P' Q: v* h; }8 L8 o
  73. int main()2 a) k1 g, i0 s0 ^4 K6 Q
  74. {3 X& B; p# A' n  v# y& h4 t, J
  75.         char c;
    5 P- [( n% i+ Z) d5 i5 o/ e9 i
  76.         int i, macs[6];
    9 f. x$ h1 r( U- T% D8 R) [
  77.         unsigned char mac[6];# o. u# `8 n2 j2 i& W
  78.         unsigned char stbid[256];
    9 c+ o6 }: v6 n/ |
  79. + H$ \/ l/ T' m) I* D
  80.         if (readparam(mac, stbid) < 0)
    & Y. B' c6 `( C7 ^! t. v" n
  81.                 return 1;
    ( i! T9 G/ Z  \' ]; o

  82. 7 `2 n! I3 x# w* d9 Y( \
  83.         printf("Current parameters: \n");
    . X4 ]+ A& q4 P8 b% X1 d2 W0 V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ d7 w, V2 K( y' H# ?8 q$ d
  85.         printf("  STBID: %s\n", stbid);
      R' ?) m! l& W. ~
  86.         1 y( r- E3 r' U- H
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - m' h! D1 X! v( d% t9 {8 t2 G5 W' r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  Q$ u( }$ O/ D3 k! F0 }2 l. _9 U$ L
  89.                 printf("Input MAC error\n");
    2 @/ O" C( }. a& A. ], E) Y
  90.                 return 1;
    # A* g+ y% T  d1 J( ^! n
  91.         }
    0 ?) g6 C# l  ~1 L' d& r3 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  A, S" f' U8 b2 M/ z) c
  93.         printf("\nPlease input new STBID: ");5 h7 n4 X3 e" \+ w5 r9 R! q
  94.         scanf("%s", stbid);
    ) p+ V5 _) U2 Y+ U& f
  95.         if (strlen(stbid) != 18) {5 P0 x8 |0 B- M
  96.                 printf("Invalid stbid\n");: w) Z3 F6 i* V( U; h! _; h! i6 h% U
  97.                 return 1;, \- u" Q4 {$ A/ ~' R: x" _! m
  98.         }; m( J0 v$ N$ o  _- M
  99.         printf("\nNew parameters: \n");
    0 N& y. i; y* A- V/ j3 i  y3 D' ]/ ]; A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 q$ z' |- s; ~  P% G
  101.         printf("  STBID: %s\n", stbid);1 R6 y/ m( _' S" b
  102. 1 l. D. J% C! B8 H/ H( c
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % w1 v- C! g& S3 s+ |
  104.         for (;;) {( _" m  `5 o6 n5 g0 D; ~
  105.                 c = getchar();7 @! V$ K- J+ f; L2 g8 c) m
  106.                 if (c == 'y' || c == 'Y')
    4 f1 S. \* k: y5 q$ e: N1 X" ?6 P
  107.                         break;8 X8 w4 u, _$ m8 x+ t
  108.                 if (c == 'n' || c == 'N') {5 N# y; U6 `4 K& b( ~, z# K+ u) Q* t
  109.                         printf("\nAborted.\n");
    ' W. o- D. Y8 Y! R3 i% j5 g
  110.                         return 1;
    + g" X; H/ H( y* u5 A, \
  111.                 }' b, k, w: H2 D
  112.         }
      O  g$ J3 A* I8 C$ j; d  T" \  A
  113.         if (writeparam(mac, stbid) == 0)
    # F* K, N- n, @, N! \
  114.                 printf("Parameters changed.\n");
    # }* y  R# k" S; ?  Z& i' {
  115. 8 i, j7 f2 `( z7 O( V; ^* [3 Y
  116.         return 0;
    0 c" l) t% P. F* O$ W5 ~
  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 - H( o# r  k2 N7 e7 L& }$ r
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, A& C3 J( r0 p
你用的编译命令行格式是什么?! [& T- x+ o! J* @0 C+ Y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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