查看: 17825|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - u+ ^0 B( b* l" K& O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % ~; u2 V. }/ i3 ]9 ^( f$ @; Z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- L2 D! g& ~. _  N9 D. \% }/ cusage: himr <address> <value>. sample: himr 0x80040000 0x0
8 E* [, N# Y. h* f* F  K' _2 A+ p2 c" C/ N0 |5 q: E$ b

# ^3 B) \+ u6 c# }2 {+ A' w, e不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ B; F% v& O! c7 r6 v. }! Q& [
: X7 }0 E5 Y( g! q! q# s7 ?补充内容 (2012-3-8 09:42):
6 U3 _, u3 U1 ?9 A* u3 ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* ^8 c/ v* r, Q7 N8 T  Z4 {3 Z; P
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。& l: w. _$ O* n* d8 X. x" X

9 m* @" k0 U& \5 k+ Z( U0 \. zhimr <address> <value>. sample: himr 0x80040000 0x0
, Q# F: U; X* {  F
" I) X4 M; Z+ W7 H例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# T& ~6 H, p0 v. h# _+ O' ?2 hhimr 0x80040000 0x00
4 Q- J! |8 L" l/ m3 Jhimr 0x80040001 0x11
6 ^5 J* x; k* Vhimr 0x80040002 0x22
: D" w2 e) Q! }8 E7 }. o7 P6 [himr 0x80040003 0x33
0 G/ N4 Q7 _* i0 Ahimr 0x80040004 0x44
$ o  `* {' ?$ ihimr 0x80040005 0x55% ~6 u) D  A% S" L
$ U9 X! X2 e4 b* k1 y
SN也是类似。
" h6 U! x) b" Z: A. a$ B& y# {. Z7 M) N' T5 e( I- w
现在主要是,谁告诉我们MAC和SN的地址?
" k) S* X' o8 ?* ]* j
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' K- d# H3 W4 U+ c: F7 p5 W
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 T8 U; U) B+ N( |+ r" k5 l
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ E2 Y, v* `: L* R4 {
( x" X: x, a7 Y& x: B) {0 D9 Y) q* R! s修改的代码早有了。到今天不会编译。
( h" p4 _/ j  J$ l" `需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' m: _" u! x& Q# W) X8 j
  2. #include <malloc.h># k% S4 X6 O" J& n0 \! w
  3. #include <sys/types.h>5 X+ `! g' q& f# d+ K( E8 c7 R
  4. #include <sys/stat.h>
    + m( `5 M- w) ?1 Q. t4 i5 V
  5. #include <sys/ioctl.h>: L' M4 a, ^- O( u! n
  6. #include <stdio.h>1 W% Y( Z6 M9 p# c: K
  7. #include <string.h>+ ]2 U9 {; r' q1 z  L

  8. 0 S) o2 ~0 Q1 _/ X
  9. typedef struct {
    $ r7 I6 Y: D" h+ y6 F
  10.         unsigned int        e2prom_cmd_sub_addr;, p! V, D" V  [" b9 s
  11.         unsigned int        sub_addr_count;! d# t* j: ]6 z( b2 h" f
  12.         unsigned char*        e2prom_cmd_data;
    ) @4 E" h7 d7 T' R& h% r2 I
  13.         unsigned int        data_count;$ x: ^1 w, F0 ~9 }: o! t2 a4 r0 c
  14. } e2prom_s_cmd;
    * i/ p, n2 T# ^: v

  15. , v' }' ]' x3 n6 T- l/ c" U: f
  16. #define E2PROM_CMD_READ 1. p! n+ P  Q  A% @9 L7 |
  17. #define E2PROM_CMD_WRITE 21 |. X: V* p, E, V7 G0 Q. h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 o* y1 w) _3 m

  19. & F, }( G7 q: V% n- @! n( o- s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 u2 i% G7 n- R
  21. {& T) I" Q* Z' N
  22.         int fd, ret;
    7 _5 k# h4 U9 g. _
  23.         e2prom_s_cmd arg;
    , D8 v$ Q/ w3 s* g
  24.         unsigned char buf[0x18];8 r% J" `& J9 ]8 e

  25. , V. L7 [5 c2 I# ?6 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 M' I, e% |6 A1 u7 S
  27.         if (fd  < 0) {
    4 U% D5 p! v2 j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ r2 g, K8 g4 ?- \1 y, i. o: `
  29.                 return -1;$ X; ~. [. F3 r: z
  30.         }
    + N$ F2 {9 t3 i3 c
  31.         arg.sub_addr_count      = 2;
    ; O# E0 ^' |( G
  32.         arg.data_count          = 0x18;
    : K. J; ?% l- d9 l, \
  33.         arg.e2prom_cmd_sub_addr = 0x290;5 Y/ P: j9 `2 j8 N% X* j8 M
  34.         arg.e2prom_cmd_data     = buf;
    # T& j9 r5 w3 W/ ]
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 i' f8 m6 l2 ?3 e' r2 Y
  36.         if (ret != 0) {) j3 {2 x9 f. K  A8 P; y3 y; D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; L! ^& F" K, G, p) A$ ^
  38.                 return -1;
      ]/ K- x- U# l' @; [
  39.         }
    0 I4 }' n0 y" Y) B
  40.         memcpy(mac, buf, 6);
    3 C" F# \  f' ~! i, B+ m6 T
  41.         memcpy(stbid, &buf[6], 18);
    : R; f) I; j& H: W
  42.         stbid[18] = '\0';
    + G) D# T) m. n- h, r2 ]

  43. 8 j( c" i. g2 v/ J) O  n
  44.         return 0;
    / s# E" C$ |2 W, l& d
  45. }
    - r; N5 f8 ^7 e1 @7 x7 b
  46. ' l4 H3 S4 W8 T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& |0 e. e, O8 d0 S, ]6 Y2 n
  48. {
    $ Q' B1 f/ J4 }
  49.         int fd, ret;& }( _3 ~# N6 `8 P* e+ A
  50.         e2prom_s_cmd arg;
    ; ^2 J. x; k  j* `; k& f9 I/ h
  51.         unsigned char buf[0x18];
    ( G) A9 M2 P" ~  N' Q" c

  52. $ H8 ?9 S7 L/ P* j8 }1 v
  53.         memcpy(buf, mac, 6);4 |( a4 c( b& R
  54.         memcpy(&buf[6], stbid, 18);7 d+ }/ z; _. D, o/ W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" x/ z( l6 ~" j- Q9 A
  56.         if (fd  < 0) {
    8 d! R) a) h0 n- y# y0 X1 `: x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # a# f. G4 z1 r* I6 u: Q
  58.                 return -1;
    6 J+ T9 r! S9 b0 b% d% y1 n- o
  59.         }. X0 @& y: e6 ^
  60.         arg.sub_addr_count      = 2;; N6 Q9 k& o- `3 S9 o
  61.         arg.data_count          = 0x18;
      I; p8 A* _" _$ I5 e5 e" H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    - \0 H1 ?0 `, x! n* \
  63.         arg.e2prom_cmd_data     = buf;; r+ m9 i: r  l$ V, L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ @- {5 R: t9 }8 D$ M6 N
  65.         if (ret != 0) {
    % Y6 w7 L* l& [2 l8 T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* x: V$ y: Q' X! j
  67.                 return -1;/ {0 Y/ U& r; }. H( c  H- ]
  68.         }
    1 b9 t/ E- C3 m; W1 ~. u3 w. ]
  69. 0 F8 O, ]1 h) c( K( Q# _& @+ T
  70.         return 0;
    ( @5 g% @: ~! }  V" Q0 \" D
  71. }2 D+ S* c5 y& S! H: `1 Y7 x
  72. : d& A, s: h3 V5 W6 F$ F. p7 [
  73. int main(), K5 l# T4 X" v% L: ~' b  s4 c8 ~
  74. {
      C5 y1 b6 f$ ?* }- i
  75.         char c;
    0 r6 |, r7 f, Y
  76.         int i, macs[6];
    6 r6 }7 Z2 ]$ B
  77.         unsigned char mac[6];, _: X- Z" j1 R) w4 i' D8 z. W
  78.         unsigned char stbid[256];5 C$ Z1 e: e- L
  79. 9 s, e- ~1 r1 n  Y1 _! D' i
  80.         if (readparam(mac, stbid) < 0)
    , ?8 b: h7 E0 ?" o
  81.                 return 1;6 n1 l' X6 l& h' x
  82. ( T: j% S( x, s
  83.         printf("Current parameters: \n");+ _% N7 H0 ]' V: ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * k5 u) n$ ]6 ?/ i1 p/ O
  85.         printf("  STBID: %s\n", stbid);& C+ M7 S2 S- W7 N- A
  86.        
    ! F4 u. T& u+ ]6 V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 p+ z5 H+ K9 n+ f$ Z5 m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ J/ O$ c4 K* f
  89.                 printf("Input MAC error\n");7 G# t! W8 j7 X) `( l9 Y
  90.                 return 1;. y9 H0 d9 f; e9 \) k* V$ g
  91.         }* m' m2 n* _' h9 x( ?& f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 Y+ F3 v: a) Z. m. L
  93.         printf("\nPlease input new STBID: ");% m7 i, T3 u4 _* i* I
  94.         scanf("%s", stbid);# k. q4 s. J. z3 o
  95.         if (strlen(stbid) != 18) {
    & s6 D5 d) N! t
  96.                 printf("Invalid stbid\n");# m' q$ x# v8 V) p( Y( |& e9 q. j, U% m
  97.                 return 1;
    ! {3 v  s- N( o) n, }; z
  98.         }+ Z4 G; c! K4 {, k7 t1 p; I
  99.         printf("\nNew parameters: \n");
      r& K, v& e& i4 W1 f3 q; w2 x) Q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 H: z% j2 o* @. C2 Y
  101.         printf("  STBID: %s\n", stbid);' p5 z/ u3 M% b6 I- j

  102. ' z) `- \- q6 t3 B2 m8 h8 Q! d
  103.         printf("\nDo you want to change paramemters? (y/N) ");& V: }1 A* Q: y4 T5 F. j
  104.         for (;;) {
    0 N( i9 y. s7 |* N8 E, D: N5 q0 @
  105.                 c = getchar();
    + |$ N, u9 Z6 H2 c
  106.                 if (c == 'y' || c == 'Y')8 V$ T  I& X' B2 U; ?
  107.                         break;
    " }1 D" a5 _/ v* v
  108.                 if (c == 'n' || c == 'N') {- f! j+ x  j- i$ l& X' u
  109.                         printf("\nAborted.\n");
    - F9 T* g" }; h
  110.                         return 1;7 `& c1 o6 `3 R4 z$ n# M
  111.                 }
    ) c9 w1 |' H9 z% k5 t
  112.         }# W5 t$ }, g, x! ?! h& t
  113.         if (writeparam(mac, stbid) == 0) " S. c9 H" }4 g# Z4 @7 @
  114.                 printf("Parameters changed.\n");
      m; X, q" U) [; S7 J
  115. $ r- H9 @1 {; Z, g, R
  116.         return 0;$ _2 H2 R0 s+ M4 g: O
  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 # V! h* J- g; O8 j  E
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! q( F/ R2 O8 L$ W
你用的编译命令行格式是什么?
7 V( C9 B% e: V3 h" t/ j
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部