查看: 16751|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ Z- a, x! k/ Q2 ~8 c' V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 v0 d0 U* P4 M; @1 E. {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- ~& W* j  M1 `3 _; B" G
usage: himr <address> <value>. sample: himr 0x80040000 0x0
, j+ X  Z* s6 ~( H4 x) K5 i+ D& k( t( w1 _
. Y6 Y8 v8 i- j; O4 g/ R# A( W. Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' P5 g+ W( A' M! Y3 Z+ ]3 d' V. ]

. c6 z) \* ?7 y& l8 S/ o- w7 G9 Q) O( |补充内容 (2012-3-8 09:42):- l7 y% Z$ |3 G, @5 q, K
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 U  p* Z& m( W
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
, v/ F1 h, ]$ r9 {9 d
5 \$ w9 w( e. ]0 A# j" [himr <address> <value>. sample: himr 0x80040000 0x0
2 U+ C1 M+ f) n1 \  k+ O  g" A" c  v
9 r- R$ [- x& K% X5 K例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% Y# K/ o' ?, @& i
himr 0x80040000 0x00
+ T; t8 H+ S& v* {! X: C! lhimr 0x80040001 0x111 m5 n% Q5 ?+ d$ o5 a
himr 0x80040002 0x22; i/ P, J+ R" z( V- J
himr 0x80040003 0x33
, ~* o: I( X/ ]himr 0x80040004 0x44* O2 }% Q7 l3 ^2 t0 x
himr 0x80040005 0x55* C2 {: E6 F7 F" h) q

7 ?3 L5 l- x+ L. W9 QSN也是类似。' I7 e3 F/ D" k' U

7 J. r+ X: q2 U! h4 q* d' ^/ O现在主要是,谁告诉我们MAC和SN的地址?
0 J. f9 l; |* n; o+ X
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: X+ ?# E9 g: [% z; }- |一直想找到运程修改MAC和SN的办法,苦于无解啊
' b; C, r; s) t2 s# d& u( p5 k
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ R- |; e, X+ h/ C, ^* R& y! L1 T9 F. a3 q! f% M8 I+ ?2 l
修改的代码早有了。到今天不会编译。0 h" d' L" v8 @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- K* _2 Y! T) Q' R4 Q
  2. #include <malloc.h>
    / Q; j2 X; Z+ u% v* N) v
  3. #include <sys/types.h>: r: g) O1 F* r+ W+ P
  4. #include <sys/stat.h>+ q9 `, w" G) J6 e: z
  5. #include <sys/ioctl.h>& [6 a% g  \2 r( T9 d! R
  6. #include <stdio.h>& b6 F! i7 p: N. u  n4 S( h. x
  7. #include <string.h>
    1 q' ]" k- }; H* _
  8. $ V' ?% t& T1 }8 {$ W
  9. typedef struct {4 p0 v) ?  O4 p9 P9 o, V. L( g
  10.         unsigned int        e2prom_cmd_sub_addr;
    & m3 p+ {( _2 z& m+ c; y! S+ r
  11.         unsigned int        sub_addr_count;
    1 L8 X0 h' p: w1 S. [
  12.         unsigned char*        e2prom_cmd_data;4 a0 c5 |: ^' g, B( }. c- Z
  13.         unsigned int        data_count;3 F. \" k4 K) d+ A( J
  14. } e2prom_s_cmd;
    1 `$ q0 a7 S- p3 L) t) h) R
  15. 3 S0 c# s" l/ Z2 i; x
  16. #define E2PROM_CMD_READ 1
    % h2 B4 y, g3 b: {; j& b
  17. #define E2PROM_CMD_WRITE 2
    1 D+ i. l7 o1 B4 M  x$ }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 E7 @9 o- i- f" t8 q. u
  19. * R, U$ S% C7 H; E' N$ ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! j: ~) u' k( D
  21. {
    4 h1 C' u) w. G6 g, _
  22.         int fd, ret;
    9 w# h+ B1 P& g* X
  23.         e2prom_s_cmd arg;9 m8 R2 O+ s0 A  d
  24.         unsigned char buf[0x18];! `" U# z9 X3 W1 b, z# t
  25. ' V/ W1 ]  K  o5 |( v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' n/ T2 v0 N! _% G0 h/ y8 e! ~
  27.         if (fd  < 0) {
    ) L& m3 C) f  ^  y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" j& M* n* k9 `4 M0 O
  29.                 return -1;5 ?) e; K' K% |3 v
  30.         }
    & g8 G2 C, b! K) l) i5 e6 ?
  31.         arg.sub_addr_count      = 2;
    ! l/ ^3 w/ G) U7 F( X
  32.         arg.data_count          = 0x18;
    0 z( Y1 b+ Q* G' ~9 X
  33.         arg.e2prom_cmd_sub_addr = 0x290;- ?) }; b' k$ U3 k2 a
  34.         arg.e2prom_cmd_data     = buf;# t4 _6 [0 u# X  _& b$ r  E
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 E: b" A8 \$ @
  36.         if (ret != 0) {
    $ m: M' T7 W0 O; c
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - l# S: j0 R( A* i5 c1 Z4 E  A1 T
  38.                 return -1;
    / Z$ J' \- }' x% |
  39.         }
    % j* X4 P! r* \+ |0 B
  40.         memcpy(mac, buf, 6);. M: {3 f& u, V1 p# L( K8 {
  41.         memcpy(stbid, &buf[6], 18);* _  G- o+ @. |+ Z1 C/ I
  42.         stbid[18] = '\0';
    ( Y: }: G1 \5 x7 Y8 ~

  43. " U+ Z6 c! O' N
  44.         return 0;* B! B1 F) m5 m! u& h- R5 T
  45. }
    7 R* Q1 }+ T% z) i5 E: C! E
  46. : A! h/ W1 `9 s3 J" [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 H% N" v% M. b. V' p, @7 R
  48. {
    ; _6 X) W' @" W* C4 w1 R4 u( G7 H
  49.         int fd, ret;% i, O( V4 V. g$ l
  50.         e2prom_s_cmd arg;
    ( p# M" V1 D9 C2 G
  51.         unsigned char buf[0x18];
    3 ~2 P" j7 t2 M2 ~# {

  52. 8 [" a9 J9 W" C
  53.         memcpy(buf, mac, 6);
    ( L6 }9 s3 _- A' `3 D, O! P
  54.         memcpy(&buf[6], stbid, 18);
    . E( |4 f) m5 a$ K  F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 C% R6 p" O9 t  ]3 s
  56.         if (fd  < 0) {
    & r% d- U2 @4 n9 g# z4 p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 C$ R9 O5 l0 ^/ ]; L8 F
  58.                 return -1;: ?/ q6 M! q1 r3 p  o6 W: S2 J7 c8 Y
  59.         }
    ( }/ P8 G6 }1 T' T0 C# B
  60.         arg.sub_addr_count      = 2;; K( v4 k8 l- Z, @. T! I4 o- k' P
  61.         arg.data_count          = 0x18;
    % y5 I' B5 L/ E2 l6 O; s8 X
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . R  z( K9 @8 \! b
  63.         arg.e2prom_cmd_data     = buf;
    " C( ?, _5 }/ y1 U& o* h2 w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ Q; f; w( H( Y& z
  65.         if (ret != 0) {
    ! l& _' H% b$ {+ l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : n% D/ C. @5 G$ V/ H
  67.                 return -1;2 u. @0 Q  S6 C, u) a) Y9 ~$ o
  68.         }
    9 E0 w8 Z  }, F  ]

  69. ! }% w; b+ ?9 D" z
  70.         return 0;$ G) m% @7 g; G. b
  71. }
    0 L: \3 L4 @8 e
  72. 4 z6 O2 G0 S! M
  73. int main()( u7 v$ t# X( [
  74. {
    $ D2 C. F3 y- X5 _" \
  75.         char c;& E' \- c5 m. B' ^9 X3 T+ O
  76.         int i, macs[6];5 s0 F7 J& d6 W5 J
  77.         unsigned char mac[6];
    8 L0 |: a& c3 H* g. n% N; T! n& q+ q
  78.         unsigned char stbid[256];
    4 a$ k' W6 j  h/ G6 T

  79. - K/ f2 P. a% k- m
  80.         if (readparam(mac, stbid) < 0)
    4 e; P. m) j( Q  a. @( e) Z8 r! f
  81.                 return 1;
    ) e7 n( r9 U- @4 n* R, i3 z1 h' U. \

  82. 8 q6 w& \. I7 T# @5 \
  83.         printf("Current parameters: \n");& c7 m& M+ P; T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# b- m5 E: w* _) n
  85.         printf("  STBID: %s\n", stbid);
    ( n, d$ u6 a% n) o( b! r& E# ]% E$ J
  86.        
    2 U6 S& \4 y0 W& V! N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - l1 D- G/ U/ A/ n4 r& m# g* P( ^3 V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 k( `' F# a7 X4 Q
  89.                 printf("Input MAC error\n");7 j, E; g' _+ X3 k0 k
  90.                 return 1;7 M9 w: o9 s1 K3 r" G4 S9 m6 ?2 i
  91.         }
      `# g2 S; M& C5 U: ^8 B; ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 `1 H+ w3 D2 E! e8 s; R
  93.         printf("\nPlease input new STBID: ");7 r+ t* p* |( N5 P, C
  94.         scanf("%s", stbid);: `$ y* ?& B* s1 s+ x# J. E
  95.         if (strlen(stbid) != 18) {( d7 k( b# v& U. P8 }. p( K  N
  96.                 printf("Invalid stbid\n");
    4 Y, S6 D& ?3 p( H
  97.                 return 1;4 |# c7 t8 F- ?! }6 m' L. i' W
  98.         }
    2 H0 x% X* H: T1 A
  99.         printf("\nNew parameters: \n");; \* w. Z* M( d, \& B1 M  d( Q. {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 M4 J( Q* Y3 K+ d2 O
  101.         printf("  STBID: %s\n", stbid);) T% T9 K* R* F" q& F9 ^; p
  102. . Q+ U- J$ N4 k9 C, v2 Y2 O; b( z
  103.         printf("\nDo you want to change paramemters? (y/N) ");& r0 K$ s0 M: f  z* P) M% ?3 V
  104.         for (;;) {5 i7 P8 Q1 h1 ?5 ]6 p
  105.                 c = getchar();
    + {2 e" |( N) Q8 \9 |
  106.                 if (c == 'y' || c == 'Y')
    6 }$ i/ `' V) ]1 q0 C
  107.                         break;
    4 {) @8 j' B' g& T+ L
  108.                 if (c == 'n' || c == 'N') {# g  z/ c/ v6 @  Y9 ~9 l5 M$ V& U% r
  109.                         printf("\nAborted.\n");
    ; L7 A2 S6 x/ y
  110.                         return 1;
    7 t3 o7 }) l5 R2 j3 w
  111.                 }
    4 @3 x0 z1 S! I5 ?! r
  112.         }' |" j* h0 z- T8 }' _& ^9 ?
  113.         if (writeparam(mac, stbid) == 0) 5 R; t, w4 l# P9 y
  114.                 printf("Parameters changed.\n");
    : V9 z9 ~- K$ u- h3 z8 H. F

  115. % ^' e% {9 f* r# D. Q  q! y
  116.         return 0;
    . c  e8 r& J+ h
  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 ( f; W' `$ R4 e6 \; t
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# Y5 y7 B: I4 t9 A2 `: G! j" J* A% W你用的编译命令行格式是什么?5 ~8 B, |' H: V
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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