查看: 16560|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : Q2 e$ V" j& K1 E( m0 z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 H) {! m: B' O; I; X0 e8 O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 r9 K5 c- y& @/ W
usage: himr <address> <value>. sample: himr 0x80040000 0x0% t2 G6 m/ l5 r. y( x
9 C. ~) k9 H. D# \1 q9 ]: `

+ J6 T4 c; l2 D$ s9 f0 U) ^不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 G% N: q( p5 W
7 K6 C# S+ A& J" `+ e
补充内容 (2012-3-8 09:42):( F  N, ~0 l( W  N# g2 T" J
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 j" o' v; s$ ]+ {* F" p这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。% T. {5 |& ~. r' g' O4 }0 t) y* m

6 [1 U- T6 w6 K8 S5 `+ B  h1 P6 Shimr <address> <value>. sample: himr 0x80040000 0x03 r( A8 K% c* U
1 i# f' [" q3 W! d$ V* {% ^
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& t# s2 ?7 M/ k/ i" a) ~# k
himr 0x80040000 0x00. `$ ~8 D3 D4 M6 @3 o$ `' f
himr 0x80040001 0x112 O. ^$ w* q2 h; l7 ^, i( P
himr 0x80040002 0x22# m7 O7 W# T  ^4 `7 N; ]0 i' ~
himr 0x80040003 0x333 d" g/ y% B; y" c) l
himr 0x80040004 0x44
$ \, O! R- _3 xhimr 0x80040005 0x55
$ X" ~' C% N3 b" d6 s7 N3 j0 Q' ~+ Z7 [9 ]9 u
SN也是类似。/ ^6 y3 [% H" B1 y3 Z/ B

7 t9 a3 S* N8 R; T  M现在主要是,谁告诉我们MAC和SN的地址?8 _9 Y$ K" X) N8 W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / W# f, `/ n7 [9 j, l; e
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 X" [) z5 R. b6 y  J- T
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 i5 `4 w2 O( W# ]& N# a- _$ }( X& ~1 M
修改的代码早有了。到今天不会编译。  Q' p! I$ W# C9 m, q! o7 b" G
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 }- U8 r$ w! L2 R+ O4 _9 F  ^$ P- ?
  2. #include <malloc.h>9 {6 f4 S$ d3 |- [% U$ [/ T
  3. #include <sys/types.h>
    ' R0 F+ K& e, N( j( t8 v4 ^: G
  4. #include <sys/stat.h>$ }) K2 ]+ E8 @9 J) o
  5. #include <sys/ioctl.h>  r- i1 ~  s2 w; n+ u
  6. #include <stdio.h>/ ?' x( Z2 n3 S) o8 l1 s; n9 v
  7. #include <string.h>7 s9 `( f! E$ F$ y
  8. 3 }9 D. g3 i# ]% @( [
  9. typedef struct {
    & T- k  b* G. Q8 I) F, P# A
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' _2 m4 u7 p/ g) `! h
  11.         unsigned int        sub_addr_count;
    * @. z6 k3 Y* C5 K' F
  12.         unsigned char*        e2prom_cmd_data;& T1 `7 ]: q$ i0 T+ b# v
  13.         unsigned int        data_count;
    , O3 _! {* U2 \/ u  ?; @: {$ Y
  14. } e2prom_s_cmd;
    ; W. j4 G, D% O' t- @/ f9 j

  15. & @5 H1 z9 q' M, o) f
  16. #define E2PROM_CMD_READ 1* S/ z; X5 u7 d
  17. #define E2PROM_CMD_WRITE 2
    8 V6 T' {4 P" t0 v5 K4 B% l
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" i! t- C; b  q  t' ?$ ~; z" _

  19. " a# i" I7 H) g" p% e5 Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ H& {/ i% c1 g5 i3 H1 j1 R/ L- ]
  21. {
    & r! j0 T' w6 y, l
  22.         int fd, ret;! n. D# ~3 C, ^# P* ^2 T2 G
  23.         e2prom_s_cmd arg;
    5 ]6 H. z: w7 J; b
  24.         unsigned char buf[0x18];
    $ E$ x5 Z' }6 k" F5 e2 W3 d5 y

  25. 6 _( W. r6 ]6 [  }9 [/ [/ [9 @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 u/ {. H2 g( v8 ?/ [
  27.         if (fd  < 0) {( N# X; v: T$ O1 r& |8 g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 E2 l% v  U- X/ j+ w* j
  29.                 return -1;
    6 N2 s# _: U# C0 z0 P  V
  30.         }
    2 d+ O: ]" L! Q/ r$ ?
  31.         arg.sub_addr_count      = 2;
    ) y9 m2 J8 N$ Q9 T# b( b0 S) L
  32.         arg.data_count          = 0x18;* d3 u; w% B9 L! l* B
  33.         arg.e2prom_cmd_sub_addr = 0x290;% U. Y4 p( V. q( U1 ^7 U
  34.         arg.e2prom_cmd_data     = buf;6 @$ \/ m( W* x7 ], _. `
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , [$ Q! w/ T& a0 y
  36.         if (ret != 0) {3 W7 k1 c! r$ ^& B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) D) x1 o  x0 O2 L5 T
  38.                 return -1;, ^  f: N5 |8 ]% s' n
  39.         }
    6 c8 V1 R+ d; H# ~! j- g; l4 z5 ^
  40.         memcpy(mac, buf, 6);
    $ h& O2 J* o8 X6 I! e% G! B8 n
  41.         memcpy(stbid, &buf[6], 18);
    6 z2 r# X5 y: u
  42.         stbid[18] = '\0';
    $ e  c" p9 @8 n* g

  43. 1 g5 I# _/ X4 G/ E: Y& T$ z6 Q6 o
  44.         return 0;) @4 e0 V$ z( B7 }
  45. }& t" s# a4 N: w( q7 u5 A
  46. ' C5 \" B; }# U5 h! K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' _2 \$ d9 `1 X3 g  c6 V6 w
  48. {
    6 C* W3 B) {8 w+ W: d. C
  49.         int fd, ret;
    " S3 Q6 K; H$ D" p
  50.         e2prom_s_cmd arg;
    ( m  j6 \% M( H+ P+ q
  51.         unsigned char buf[0x18];* }& X- T* P& A9 z3 U6 [
  52. 2 X% R5 P. x2 R9 Y
  53.         memcpy(buf, mac, 6);" m2 c- P# {6 h0 d3 {; k" K8 Q
  54.         memcpy(&buf[6], stbid, 18);
    : H& {. J1 }# E! |* R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 x/ X9 q2 B# y$ K  Y7 U: A) ?
  56.         if (fd  < 0) {- M% F' Z: v9 h/ z3 z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 p+ R8 M% N/ y3 h8 i
  58.                 return -1;; ^. W* h# F4 p
  59.         }) l8 q0 a7 h) X5 r- P
  60.         arg.sub_addr_count      = 2;" x0 k) h* j- g- H8 ^$ Z" p
  61.         arg.data_count          = 0x18;
    ! H. d: S: H: O7 G+ y6 V; h2 f( T
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 L: {/ A$ `9 w" O
  63.         arg.e2prom_cmd_data     = buf;0 K$ C& E3 x: C# {3 W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" b' `6 @1 ]6 t2 u, I; J
  65.         if (ret != 0) {
    : R: Z% |# v" n+ z3 `4 c$ ?& R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: v8 ?& B% K9 M. Q$ p' J5 @
  67.                 return -1;- O9 L. V7 J7 n
  68.         }% w% S# j+ L/ r+ R+ [% u8 h; p1 @
  69. : G: u. Z) Z; @! a
  70.         return 0;3 S6 S$ f1 j9 C7 M+ P3 u  `
  71. }, ?) y- G% U4 X* k* S( M

  72. , K" i) q; V2 L
  73. int main()
    0 [0 r5 F8 i. N$ l6 B$ i. N
  74. {8 h( j% i/ k1 v0 L  ]" H/ I, w) B1 X
  75.         char c;- X, ?1 ]+ t$ i( F& H9 P1 y0 }1 y
  76.         int i, macs[6];0 D+ x2 P" }! [- [$ H: V) E4 {
  77.         unsigned char mac[6];
    % g$ e# N1 J, v. W- c: }
  78.         unsigned char stbid[256];
    ; n. b! h3 N1 ]; e) ?3 B

  79. - O/ G  Q( i5 s# c' M8 |" {
  80.         if (readparam(mac, stbid) < 0)# s9 C5 c; ~4 h6 B2 a2 C
  81.                 return 1;
    5 x4 B8 k& Z1 C
  82. 4 z$ p" ]8 ^2 M" Z) v
  83.         printf("Current parameters: \n");
    $ a% F9 b' z% h3 a, _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      ?# j0 C( U! o2 n. `
  85.         printf("  STBID: %s\n", stbid);
    ; B5 |6 U9 H+ G! X0 H$ j+ t2 S; X
  86.         ! a0 p. X9 }: ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 _" k. x1 P* J1 `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 `3 k* r8 j% Y3 v+ u9 h7 ~; C
  89.                 printf("Input MAC error\n");$ v" X* a5 q" T
  90.                 return 1;1 l+ @$ _) |- `( t# {  c
  91.         }7 C+ [- E7 ~( S; Y8 f9 |/ J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, x8 Q5 p1 {9 Y) r/ N0 ]
  93.         printf("\nPlease input new STBID: ");4 O" s8 |$ s' h; C) h8 H
  94.         scanf("%s", stbid);* q3 x7 G9 m2 _/ P6 M3 k
  95.         if (strlen(stbid) != 18) {5 A1 J# u& h( @
  96.                 printf("Invalid stbid\n");. ~" N9 Q6 e( l0 O
  97.                 return 1;
    6 H1 |" O4 q; T2 \5 v! p% \: H5 D- L2 P
  98.         }
    $ B8 j" b; |6 a3 @
  99.         printf("\nNew parameters: \n");
    & f" C" f" d5 d- n* y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 v" W+ s$ f1 a9 M) T. I
  101.         printf("  STBID: %s\n", stbid);
    # I, j) V5 z! v+ w

  102. & {! T6 ^! b# F" b1 l( T
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 F) p9 d$ e8 H# I
  104.         for (;;) {
    ; J( N( s0 W4 Q9 p
  105.                 c = getchar();) o7 w/ t+ S" @- W9 U* E2 a
  106.                 if (c == 'y' || c == 'Y')
    4 n9 Y  u( m+ W% o2 u
  107.                         break;1 F% L* Q. t- a/ U2 E( ~
  108.                 if (c == 'n' || c == 'N') {
    9 L" z" k* a; n$ a% @# k
  109.                         printf("\nAborted.\n");
    ; r2 N! F! @) T7 d- r4 J
  110.                         return 1;/ q! Q# D9 f: u7 k" i% }3 j5 |
  111.                 }
    7 ^0 [' Q, `! M/ x$ C+ A" {# Z
  112.         }  u0 v1 V: \  f2 a: ~
  113.         if (writeparam(mac, stbid) == 0)
    ) Y- a  w# v0 S/ |' n6 Y1 z
  114.                 printf("Parameters changed.\n");( y1 F$ g* w7 ?  z) R# Z

  115. . N/ Y% Q$ k" }+ [
  116.         return 0;% g* a: D0 f6 a. j3 D
  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
3 K+ K% r# p  \在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 ?# ]. K( ^# q- T4 h7 G; h0 U* I
你用的编译命令行格式是什么?
# c* K; |1 m& F6 }
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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