查看: 16909|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & X' s; {' w) O: e3 O( q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* o$ U0 T/ f: v8 g( l6 D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 a) @& i& a; Y9 k$ Xusage: himr <address> <value>. sample: himr 0x80040000 0x0
$ X" p. i; b3 j( b
! K7 m3 [! X$ C/ c, ?1 n1 h6 B( `# W  t0 O0 o7 x% g& Y9 w/ w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) M  P0 S9 B& j+ k$ O, H8 z

6 l/ _- T. a& W" A6 \- c% x  \补充内容 (2012-3-8 09:42):
+ E# z! P5 b/ C$ J! Whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, ~# u- s7 V% }% @0 w9 O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
) f! m( a# \9 j( M, t0 l# T& n8 M% Q# O# K; a- p
himr <address> <value>. sample: himr 0x80040000 0x0: E# u7 n2 R! Q* }5 x6 j4 Y
" U. d3 N5 M% g: ~4 v9 b* O3 [& p7 i
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 R1 }& |9 O. O: b) F" m: a
himr 0x80040000 0x00
+ C8 H7 @) @8 n: v1 shimr 0x80040001 0x11- \7 M6 g- c0 {; v4 U
himr 0x80040002 0x22% |4 \3 a" g- J3 r
himr 0x80040003 0x33
% h4 i6 j+ _1 Chimr 0x80040004 0x44$ r5 h5 K: F1 v" L  s1 r5 c9 M
himr 0x80040005 0x55
, Y/ ~+ o7 N2 P8 C
& `- E1 d6 y; Z; @1 n. p' X+ qSN也是类似。
) `& x2 N( g5 j" Z9 Z. c
' l$ J: j8 W0 V5 o1 g' c现在主要是,谁告诉我们MAC和SN的地址?7 v7 W8 p2 R  ]0 z( }; _. x9 y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 o* R0 K; o5 I一直想找到运程修改MAC和SN的办法,苦于无解啊

  X) _- \  M4 ~) H+ w* q6 _& G源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) ^) |7 Z/ p5 k" p) z3 x. Y
' K1 I. r( N1 u$ c- P" F+ @修改的代码早有了。到今天不会编译。
5 t5 R' C. L) A" |$ `2 G需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 }" \3 b, a8 Q: c) x
  2. #include <malloc.h>9 d: z, D6 i  ?/ F
  3. #include <sys/types.h>+ C# }# v: ^! c6 s4 J) k5 i$ ?1 a3 e
  4. #include <sys/stat.h>
    ) ~" h& e% c4 P
  5. #include <sys/ioctl.h>
    " {* @% l+ p# P1 m  {5 f: c+ M
  6. #include <stdio.h>. v4 d; B6 y+ ~* D
  7. #include <string.h>
    # N- x+ x/ ~5 z  ~0 m' W

  8. % b+ J  c$ p( J# n5 C9 A) _
  9. typedef struct {9 h; L7 n% A/ x" L: {  ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    , `. X, z* x$ U1 P' o7 F( b% d9 V
  11.         unsigned int        sub_addr_count;" @: m5 s  R, I* a
  12.         unsigned char*        e2prom_cmd_data;
    ; [# u/ W2 C% @% U# j
  13.         unsigned int        data_count;6 ^9 A! }- n* ]6 e1 O: G
  14. } e2prom_s_cmd;. t  @/ [. }6 a3 u0 J# `: Y, H
  15. , N5 `/ Y. c) W& }+ O! a
  16. #define E2PROM_CMD_READ 1
    / L$ K  p: L( R1 ?
  17. #define E2PROM_CMD_WRITE 2
    8 q+ J$ f/ y0 |" ?- z+ l
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"& [* A' h  _7 M4 }) @# y
  19. $ c9 b1 E: u( S1 T+ S
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# y4 _* M6 {% R! H" x
  21. {2 @+ }: {+ \, N# I9 ^
  22.         int fd, ret;& ^, Z$ a2 l& U% m2 ^3 I7 w2 s
  23.         e2prom_s_cmd arg;. O- C( F. ^+ [, E' x+ c. w9 @
  24.         unsigned char buf[0x18];, S' W/ g0 c& E2 y, Y, u: e; H

  25. * [% f4 N  Z1 U: K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . [- M4 X3 x0 A" K: @( O( o1 I+ n
  27.         if (fd  < 0) {
    2 O3 x; X9 D2 h3 v+ T# j6 e: q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 n1 A, e& y4 P& V& |- J. B' z- `
  29.                 return -1;6 V) u1 M7 W& F4 C4 U) T
  30.         }
    9 B, K4 T$ Z! @: L' B' p* s+ ~
  31.         arg.sub_addr_count      = 2;
    % x; X: D! J( g& ^3 K
  32.         arg.data_count          = 0x18;
    2 z$ R9 r7 `. L2 n
  33.         arg.e2prom_cmd_sub_addr = 0x290;' }" e6 B& ?1 L
  34.         arg.e2prom_cmd_data     = buf;* j: Y3 d0 ?$ C- L, M' Q9 _% f! u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 b; l1 X8 l; Z+ w4 Z
  36.         if (ret != 0) {* J9 N% s3 x! w% c
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; k( E2 W2 V# J# P6 F% @( q
  38.                 return -1;
    # D* n  t, h: @' o! b, M
  39.         }
    3 B7 U0 S* B: H# j3 t, |+ a# `, k
  40.         memcpy(mac, buf, 6);
    ( O5 p! }2 P' ?# T4 t
  41.         memcpy(stbid, &buf[6], 18);
    1 k' u/ S8 U& V5 |  s4 Y; [4 d( e2 z9 o
  42.         stbid[18] = '\0';) b5 i( r' m: w( X: }2 D6 F' q

  43. # U2 N, `; e: l7 t# _
  44.         return 0;
    $ F' Z1 }+ M% ^) S
  45. }  S0 c! V7 _3 d/ A$ Q. T! ^5 y

  46. ! @8 l' z# L5 s1 y$ M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , c( p/ P, ?* ?: I$ u& J
  48. {/ P6 \  D* N% O' V( J3 S
  49.         int fd, ret;' d, |) {; M( ^0 f# v
  50.         e2prom_s_cmd arg;
    , l9 I' @% Z4 ~* \. D$ J4 z
  51.         unsigned char buf[0x18];
    ! v6 |5 K4 h$ k  H

  52. " U$ u, H% _& R1 k, V/ _  H2 E; i
  53.         memcpy(buf, mac, 6);
    0 L1 ~; x* W: p: D: g
  54.         memcpy(&buf[6], stbid, 18);
    ! D! h* y0 v! M
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / C1 |2 e/ M5 g9 q6 y
  56.         if (fd  < 0) {
    ) o  z# H  N5 I
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; \6 c% i# p1 y9 s& o( R
  58.                 return -1;; U* J: b0 _) @& d% V; [. G1 C# _
  59.         }* V3 d; Z  n& V4 w( ~/ O# M2 `
  60.         arg.sub_addr_count      = 2;
    ; _6 I, \7 z/ R5 {/ ^
  61.         arg.data_count          = 0x18;! t1 j" ^+ n( e  y( J/ F
  62.         arg.e2prom_cmd_sub_addr = 0x290;; m+ g& M& R! L, [( S1 n) ~9 a2 P; U
  63.         arg.e2prom_cmd_data     = buf;
    . T' }. }/ p; f5 l
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. \6 p0 C: y, v- A+ k/ R/ k$ D- p
  65.         if (ret != 0) {( c# `: Y, N( x. D- }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 A( ^1 b* n* \0 Y
  67.                 return -1;8 L% f7 f' t: ?
  68.         }6 r( Z* }# }4 W# V" m
  69. 9 n2 j! s3 Y9 a* X5 }. B
  70.         return 0;' D/ ^) @; B- Q/ R8 R* M# R. r
  71. }9 ^2 }. f2 X8 x0 F

  72. ' l$ ~  s3 M# ]( }
  73. int main()
    % v- e" U( f3 {5 a
  74. {/ z8 m" z) o  E: D
  75.         char c;0 s& C: c( u% s: _! P( H
  76.         int i, macs[6];
    7 T# h0 F: F) `/ x6 E
  77.         unsigned char mac[6];
    " x9 a# ^6 f/ z& @4 m& V
  78.         unsigned char stbid[256];3 ?9 k6 a. F- i) Z3 b; e, @9 n) i
  79. 1 Z- H4 C! A  @6 j# S
  80.         if (readparam(mac, stbid) < 0)8 F: f4 }, W+ S- i2 a
  81.                 return 1;
    4 b" J6 o0 {) j! h% W! a5 o$ e* l
  82. : ]$ ]6 ~( C  B' V
  83.         printf("Current parameters: \n");: n( i, l, T: M3 P' A) U* ~  E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " S. h; S# B- g7 h, z0 V" L4 v
  85.         printf("  STBID: %s\n", stbid);
    * \( J( D9 Q) k& l, P
  86.         % \4 J: z- h- y5 F7 X, J0 ^6 [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ \3 D/ `, o) |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 [  i: z' C% C3 @: n3 v" I
  89.                 printf("Input MAC error\n");
    0 ^! l2 j* o; g" |
  90.                 return 1;& W1 z9 m% L, r- v1 v& E6 s
  91.         }
    & c0 d( |0 t& @$ s& z; O# f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + ]" X. J7 a7 A& L* r6 {
  93.         printf("\nPlease input new STBID: ");
    # N4 B% e* p( E
  94.         scanf("%s", stbid);
    , T) d+ C; R. j6 c: n
  95.         if (strlen(stbid) != 18) {9 h+ A- N# u' q- u* P3 M$ `
  96.                 printf("Invalid stbid\n");3 o' u# j5 t8 d4 c+ r
  97.                 return 1;
    - F6 @4 f) i& Q2 h
  98.         }
    / z# q1 J+ r; L$ |) y2 C) h( B
  99.         printf("\nNew parameters: \n");9 m0 M  l# P" o8 S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; j. H! Q1 C- E
  101.         printf("  STBID: %s\n", stbid);4 |0 F7 b5 K$ d* C$ m& r: r

  102. ; R9 i( c- x7 b% E' U2 P! Q( M
  103.         printf("\nDo you want to change paramemters? (y/N) ");* ]1 m" |/ _. c( o' x) x+ u2 q
  104.         for (;;) {
    0 v% \8 H3 I( }* a7 c4 z
  105.                 c = getchar();
    - _# }. P4 w% K1 X" s
  106.                 if (c == 'y' || c == 'Y'): F9 _4 L; S3 Y# s& ~
  107.                         break;; i7 e  H* F6 [2 I' {  D
  108.                 if (c == 'n' || c == 'N') {: x3 ^3 i& C* T3 h
  109.                         printf("\nAborted.\n");
    # s2 C- h9 V' B+ @* n
  110.                         return 1;
    . A, l3 W% j' u+ J2 u9 Q
  111.                 }7 \  N4 r* i. S  f
  112.         }, I2 C7 F/ G% ]' v
  113.         if (writeparam(mac, stbid) == 0)   @2 _: {9 W+ N. E
  114.                 printf("Parameters changed.\n");/ W, b8 e% e+ ]9 n7 `/ Z6 R, M5 R

  115. ) X0 S# k1 U6 F! K- Z1 t( \
  116.         return 0;7 u! y! h4 L) D+ Y* f6 s7 {  m
  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
* K; B5 k2 B3 o& _; j2 g在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! [- @+ Y0 S# n* t3 h1 ^你用的编译命令行格式是什么?2 t. ]' [+ U3 }
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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