查看: 17328|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 K/ ~  {2 S% V, `( ^* y; F/ u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 R/ t  W1 A- f+ |( A( L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 t  J2 x: J/ O0 m: T/ Ausage: himr <address> <value>. sample: himr 0x80040000 0x0
0 r3 N$ A# O% A$ _$ {2 f8 F
3 I8 f1 q+ G3 \, ~) E0 @& a1 _0 O2 q, f9 z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, H3 M' }) S0 x& s
/ W3 O! k  ^, j- P) d& i
补充内容 (2012-3-8 09:42):
0 I- W5 X- n9 V( G* Yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% y# X. A! h* x1 ~7 o
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
5 a* |4 \$ ]2 w8 M7 C- |3 j
3 q# y. v; [9 _' Z6 x" q) Fhimr <address> <value>. sample: himr 0x80040000 0x0
' k+ H3 |. Q, W! R/ a( \
: c8 t9 ]8 b4 Z2 E$ }+ t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 R+ ]: x4 U3 jhimr 0x80040000 0x00
4 K+ q" @2 i- _' ~6 X. U5 z3 i3 ohimr 0x80040001 0x11
5 D( @* v! B7 P# c- ^* y" [- u1 Ahimr 0x80040002 0x22, q/ o. m  q* @! L( x* m
himr 0x80040003 0x339 g* M: j" T: g7 H& n0 @8 o
himr 0x80040004 0x44, X) e3 @# G1 O. X6 g: s! o
himr 0x80040005 0x55+ u9 c* a: q; y. [$ @; Q8 Y

/ w5 {6 [$ |. G. lSN也是类似。
% B8 \# J7 f( n" `2 o1 g1 K6 e, A) i  A" b) H
现在主要是,谁告诉我们MAC和SN的地址?
/ ~& ^8 L0 `8 i" b" o2 A# L! E8 G
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, H8 b+ V/ h! k, i1 }7 |  E一直想找到运程修改MAC和SN的办法,苦于无解啊

0 U* }7 L) `: \; o# F9 X源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& ?) J! V1 I' V+ k! m. L, a# c. l) h/ }2 `/ C
修改的代码早有了。到今天不会编译。
9 N4 ]0 F$ y, h6 ~& o" V: S& l* R; A/ Y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # ~& {' ?9 p& ?# b! y3 P2 f0 F
  2. #include <malloc.h>, n" m) w+ ]8 |5 s) f7 ^
  3. #include <sys/types.h>
      |* Z- X% M: R5 E
  4. #include <sys/stat.h>1 K/ y. _4 I8 k8 \# M# s9 [6 r; d1 z
  5. #include <sys/ioctl.h>  z9 t8 p# P+ z/ x/ {
  6. #include <stdio.h>
      y* g8 V/ a$ Q% |
  7. #include <string.h>: d9 W; f5 B2 |: L& R

  8. - A. n8 H! e1 ]- E
  9. typedef struct {
    5 r+ q5 q( k- J* N2 w
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 d0 d$ d' v7 }* V4 T/ O
  11.         unsigned int        sub_addr_count;
    : Y( ?# C4 G* t: Z1 [
  12.         unsigned char*        e2prom_cmd_data;$ N3 u! o) t! A& S& `8 t
  13.         unsigned int        data_count;9 J* K5 D6 I! n9 }) C1 L
  14. } e2prom_s_cmd;
    ; X# S9 v! b/ \! H( b
  15. 3 t+ j  v( k4 d) t
  16. #define E2PROM_CMD_READ 1
    0 Z2 f, Z2 j( H2 S' P% b
  17. #define E2PROM_CMD_WRITE 2' F! ]' z. \' c/ l: z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 _9 H, Q# [1 Z: ~, |
  19. 8 ~+ O4 c$ x, c; l  Q. G9 M8 w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 F  p; S" Q( |8 k
  21. {
    ( G7 c1 ^' j9 r' ]2 s6 O
  22.         int fd, ret;# p, I$ e& K/ u. F
  23.         e2prom_s_cmd arg;& n8 u2 `& j* Y2 A
  24.         unsigned char buf[0x18];
    ; U' W3 {5 F" W  d$ r0 k7 k* F
  25. % Q: K* u" Z# U1 q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ c9 P' k, E4 Z0 C: _" R& @8 V
  27.         if (fd  < 0) {
    % q2 I/ \+ u' s& ?* M6 l; r5 O
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 h+ [9 o8 N' u* i, B2 Y( S7 h8 y
  29.                 return -1;& B0 p  e0 T5 ^
  30.         }
    4 K+ x0 h6 Q; O" X: O9 @
  31.         arg.sub_addr_count      = 2;! b* `# |2 r; P: Q9 i  S; Z3 U
  32.         arg.data_count          = 0x18;
    : x. S- g0 e( d
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 H9 t9 j6 W( {" z0 _8 a
  34.         arg.e2prom_cmd_data     = buf;1 {0 y5 X, h* D: x' I9 c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ F1 B, j# R/ w( z- |
  36.         if (ret != 0) {' |- T0 U3 ^% z0 }/ C) t# M
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: l' I6 g& u- n6 I# c; `8 n) g
  38.                 return -1;
    ' j7 M$ d2 N- ]$ U
  39.         }& h9 z8 @- a- L8 n
  40.         memcpy(mac, buf, 6);
    3 W& J2 q! g0 r2 f& F
  41.         memcpy(stbid, &buf[6], 18);: e6 y& D2 a8 b" b  d; V
  42.         stbid[18] = '\0';/ {9 x) o1 c. r4 J" g: j5 ^4 B

  43. / o9 l. Y% q- @2 L! I" D1 y" @% @
  44.         return 0;
    1 [( v  C$ {8 t
  45. }! S1 t( g' z* r2 h

  46. % A* |! V  _4 p+ {& O" u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( o$ V* l! d$ a, q0 A4 j5 G
  48. {
    9 i' q$ B2 s! L0 T+ X
  49.         int fd, ret;( i3 ?1 R# O5 p5 A
  50.         e2prom_s_cmd arg;
    # t0 s+ V  k: \: X2 e8 C
  51.         unsigned char buf[0x18];
    . B5 p* x- P, G& z) k9 F' J

  52. * r- O6 \; w# r
  53.         memcpy(buf, mac, 6);" C8 W" v+ A" Q7 w; J  A# N) @
  54.         memcpy(&buf[6], stbid, 18);1 Z) z5 u. X. M( Z3 {2 v7 G( r0 r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) t8 d5 t( s' o1 f
  56.         if (fd  < 0) {
    5 M. M6 g; Q5 \4 v3 S$ Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. L# E' z( C  W# b0 k. }- b  C9 P& _3 P; w
  58.                 return -1;
    * B9 G0 n. A  z# k* J) I# G
  59.         }$ y1 m6 J  r5 _8 z  M# V
  60.         arg.sub_addr_count      = 2;/ Y; [' a" ?# S+ ?# s% o0 I& V- m' r& ]
  61.         arg.data_count          = 0x18;
    9 o" }. R7 A3 G  J' ^( S2 G" w
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ y0 i8 e! t% v2 m6 E2 t
  63.         arg.e2prom_cmd_data     = buf;
      T8 F' y6 e$ L, @
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 E+ ]4 P. ?  ^! ?, x, v" h$ P
  65.         if (ret != 0) {
    - g* z4 c9 z  b+ G6 K& J
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( g& M, O+ q% Q! f6 B0 L' p( d. e
  67.                 return -1;) U. t& j. }+ w0 D: o
  68.         }
    8 i" m/ i  L) D, w
  69. ( G% }/ c$ M% I4 M, T" E1 u
  70.         return 0;( _# @$ {: B) L  A
  71. }0 H& N9 R. J6 b& s6 ^( D
  72. . ^6 h+ \/ L5 I" X
  73. int main()
    9 ~" l. ^; j& w$ i$ |
  74. {
    # `" D: c( W6 g0 w3 O
  75.         char c;
    ' m" D5 B8 ]* V, m2 h6 B; W
  76.         int i, macs[6];
    ! P3 }4 U7 u! H* f4 X: z9 p3 y
  77.         unsigned char mac[6];! f9 d2 a: }- m+ S, I* d3 B
  78.         unsigned char stbid[256];% w5 @$ E$ Y% Z
  79. # a0 |- }( ^& ]5 y
  80.         if (readparam(mac, stbid) < 0)2 J; N, G2 k4 {" a( |! ~* S
  81.                 return 1;2 c  ?7 y8 j9 z, v) z

  82. # W# g2 w: J. M& I- w1 ^
  83.         printf("Current parameters: \n");
    ! ^$ v* e' G, y4 d" _/ j, Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( C4 v3 E0 I( R$ D$ q' j
  85.         printf("  STBID: %s\n", stbid);
    " L0 W3 t9 H% W* T5 M" A5 D8 r
  86.         8 b( ~: l& [* G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : \; s3 Y0 J! L+ A. L+ s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 D% B' t! u! O! i
  89.                 printf("Input MAC error\n");+ t, v) ?. Z# h) e2 h* C
  90.                 return 1;
    # R! \5 ?- e: R& _9 ?
  91.         }
    * z0 k, ?. R. M- r+ a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 S" k$ z: K5 Y
  93.         printf("\nPlease input new STBID: ");6 x2 M# m) W! J* F# Y3 o
  94.         scanf("%s", stbid);
    0 J+ u+ L" k- P5 G5 u: w/ i
  95.         if (strlen(stbid) != 18) {1 S& }2 Z% z; X0 x! g; w5 J5 m! f; Y
  96.                 printf("Invalid stbid\n");
    / q. r) v3 p8 {, B) _* F' |- n
  97.                 return 1;# T- ^' ?- e0 H; D$ e* A% U; p" |
  98.         }
    4 @* t$ w% H, R; Q
  99.         printf("\nNew parameters: \n");
    + j* r+ m9 R$ v3 p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 p+ Z2 k8 D7 c2 h  a4 l5 O
  101.         printf("  STBID: %s\n", stbid);
    ) Y* f4 A& W* w% Z$ l8 U

  102. % W6 u! ^9 f4 |( ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * ]' D; e3 _4 B
  104.         for (;;) {" s, d- H, z8 f- i; B
  105.                 c = getchar();
    . H& Y, r/ |8 r; U% V+ [
  106.                 if (c == 'y' || c == 'Y')
      W9 d9 u0 e7 D& u) G/ ]; \# Q, L$ J9 }
  107.                         break;9 U* h4 N2 j7 P. K
  108.                 if (c == 'n' || c == 'N') {
    9 d2 M; W8 s& @' M; l- t' ~
  109.                         printf("\nAborted.\n");8 S& _$ F8 V: ?- @' m! _- s
  110.                         return 1;/ V/ N8 X: a4 r; M+ c7 u
  111.                 }
    9 u: M6 ]" N- E" f: F& L% i
  112.         }2 l) {: }! j9 c
  113.         if (writeparam(mac, stbid) == 0) " _( [8 a8 d6 l, `- k
  114.                 printf("Parameters changed.\n");
    $ E3 U/ b4 Q$ v3 X: ^$ H3 C

  115. $ _3 f) o- I. [( \! c, }
  116.         return 0;6 r8 H3 M* n0 s2 ]9 I2 B
  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
  z0 f# D8 ]/ l2 m# F在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ y. t3 ^- H8 w" b: v你用的编译命令行格式是什么?
' l# q0 T& F1 y+ E# k  \
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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