查看: 17943|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: {7 }( s: }; x0 q+ Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; j# }5 A/ ^. k+ c( M8 ^$ d/ l
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  A: A: f, Q0 L! U3 musage: himr <address> <value>. sample: himr 0x80040000 0x0
# T0 j& ^  w; C  T
. n% K2 x8 W/ k! X
$ d& F3 |' \7 d8 V9 V0 B不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
" F, `+ s  ^% |
. ~9 t* {7 U# K9 _6 e补充内容 (2012-3-8 09:42):; T  P5 w  ^. a. D
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, Y* ~( T* x; U3 I
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。! r/ C% r7 r! c& J

/ K4 A- ^: M5 I9 hhimr <address> <value>. sample: himr 0x80040000 0x0' B+ U$ }8 e7 a; n0 u, F% M
  v4 N; J7 K: `: e5 @
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: `: x# ?$ V) k# F' }' _1 Khimr 0x80040000 0x00) w7 V  A0 J+ R
himr 0x80040001 0x11, _( I4 y1 p& s7 {; E
himr 0x80040002 0x22, _$ a8 x& @$ C9 e/ w, Y+ @% @
himr 0x80040003 0x336 y4 L/ L$ B% N: d& z2 C1 Z
himr 0x80040004 0x44
) g( K/ F1 T. |' ^, Whimr 0x80040005 0x55
0 u1 ?' l9 e7 B6 y% [$ s- a! j1 [( k% C' k6 B% ?
SN也是类似。2 y9 Z6 u" q+ T

* Q' g* _0 @4 o/ g9 w现在主要是,谁告诉我们MAC和SN的地址?0 m) x5 t: H5 y* n
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ Z1 `! e1 v6 `7 V" V# L( x一直想找到运程修改MAC和SN的办法,苦于无解啊

; B5 T/ ]& w6 d; @4 G源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + z  n- P+ w$ Q) Z) L- M

8 ~8 }4 X1 g/ e修改的代码早有了。到今天不会编译。1 L0 t/ d- H' {. g! b( {9 g. X
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; I, |: f! H0 r
  2. #include <malloc.h>
    , \2 E: B# A/ Y% Y
  3. #include <sys/types.h>0 n* r( l( |& Q! q9 J5 ^( C
  4. #include <sys/stat.h>) h7 u& h/ @& l, M5 n7 K
  5. #include <sys/ioctl.h>
      R$ n- \8 J( t2 ]0 e! ^
  6. #include <stdio.h>+ y% p2 ?) f8 m8 z; M0 |# R- U
  7. #include <string.h>/ ~5 z6 d8 a, w/ u! r5 `6 w
  8. " W: z+ r* H# C5 F
  9. typedef struct {
    # E7 `" o- B" X
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 y+ c+ K0 l" e6 p8 P4 _5 K) H
  11.         unsigned int        sub_addr_count;. f3 }2 s: n7 S2 B
  12.         unsigned char*        e2prom_cmd_data;
    & G/ C0 I4 m" ]+ O) S4 u
  13.         unsigned int        data_count;; S# |( k6 v( Y- w( P# C) }8 I4 K
  14. } e2prom_s_cmd;+ Q, ]4 A5 I: G$ B* m0 V
  15. ; R! U/ W% ?/ r; }0 D$ M- h
  16. #define E2PROM_CMD_READ 1
    $ Z  y- h& j6 p# |9 V
  17. #define E2PROM_CMD_WRITE 2& |# a- x" {9 |& X9 x8 N, o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , T$ F& a2 e% ]' Y% ~  w2 g9 K9 e+ E
  19. 9 W: e" y, T  [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 d9 n8 o8 i' J! e
  21. {0 h% ]1 j5 X% R% X, G6 [
  22.         int fd, ret;( Y; U3 \! u0 O2 n, q8 M
  23.         e2prom_s_cmd arg;
    , ]2 q3 `; E: X
  24.         unsigned char buf[0x18];
    0 ?  V( R; {3 ]  c

  25. $ D5 x; f  b+ z) a2 x7 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);, R% G/ \3 D3 \  X# A
  27.         if (fd  < 0) {# `0 \% C8 E5 \  E) V7 z4 _& e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 \- a, S% z/ ?2 `1 R  |( Y
  29.                 return -1;
    % j+ D4 u9 W( `- h
  30.         }; K7 K# V. |8 \8 V/ t- k0 i
  31.         arg.sub_addr_count      = 2;
    ( C! ^# }, L) F; e' }
  32.         arg.data_count          = 0x18;$ k7 x: y( `/ P6 A% D
  33.         arg.e2prom_cmd_sub_addr = 0x290;& W4 v) f( h( \, `% h  ?
  34.         arg.e2prom_cmd_data     = buf;# ?1 C5 ~! A- t! M5 ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ G: H, ]1 B4 g8 S
  36.         if (ret != 0) {2 z7 e; q& C- o  `% W. W9 D$ v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" G- a' p3 y- Z4 T. `* i
  38.                 return -1;) r+ Y3 f4 Z; X$ H. d* Z, D
  39.         }+ A% g! ~( B% C; N0 y8 v
  40.         memcpy(mac, buf, 6);
    # d$ {  S* D; n# v& C
  41.         memcpy(stbid, &buf[6], 18);
    9 h0 Q4 g4 U. ]- c3 L
  42.         stbid[18] = '\0';' V# ]' L3 s" L; `0 O3 d( ^. i5 W
  43. ; g8 u" p+ y1 Z) R& ?# t) k8 q% u6 O
  44.         return 0;
    ) a8 @' y" n4 `5 R8 N* p
  45. }3 \$ D1 A, k) I7 Y
  46. , F. A6 e* X5 |. u) G- B+ {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& L! r, I  v6 {  _+ ]/ N( K3 c
  48. {8 {0 k/ F& |! ]& M% A% v
  49.         int fd, ret;4 V  s) V: Y. D! \
  50.         e2prom_s_cmd arg;
    1 M) f. L/ s5 R3 Q, G' }
  51.         unsigned char buf[0x18];
    * Q; z5 q" S( J: R9 b! J
  52. ; B/ X; Z4 _8 }
  53.         memcpy(buf, mac, 6);* D! I: m/ @( j. w6 i) A
  54.         memcpy(&buf[6], stbid, 18);
    ) A1 M8 a: }- y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 O, E% F1 h. U- b% L- e
  56.         if (fd  < 0) {* d. b# O6 x! s' M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 l: _2 q. h9 K' \
  58.                 return -1;" w" m9 @, ?& m$ p5 U
  59.         }6 A1 p# j- s; n. q. f
  60.         arg.sub_addr_count      = 2;
    ) h  G) y8 g$ `# I5 l3 p
  61.         arg.data_count          = 0x18;- _; W9 u% G& `7 Q- w6 o. P
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 o3 {8 ?  T$ w! V$ g1 C# _
  63.         arg.e2prom_cmd_data     = buf;
    $ g7 O1 G* K/ y4 H1 l
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 E- D7 N9 D5 R3 F, V
  65.         if (ret != 0) {! D0 p' I0 ]7 h0 a% b+ ~3 T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 t: S9 Z: E" l
  67.                 return -1;
    # ]/ x1 J9 _! p# z! L6 }! ?6 y
  68.         }
      Y0 B5 r* I2 C- c2 j$ D
  69. 2 V7 }# |- N/ A+ s/ H7 y
  70.         return 0;. P3 M  w6 u9 Z6 L$ H  E. c
  71. }
    8 ^; ?9 z# M7 y: L, {7 N
  72. # e: G! H8 u( F  s: y; R
  73. int main()2 Q" n: H, ^1 w. c/ t7 Z1 k
  74. {2 }- p* ]( o8 ]6 C
  75.         char c;
    9 f1 o! k- m8 V# R* Q$ Z6 {
  76.         int i, macs[6];
    0 C2 u9 I" S' ^6 z
  77.         unsigned char mac[6];
    * j+ J' _( `# Q- y7 R* z1 m! G
  78.         unsigned char stbid[256];
    - c# B  X2 R' k

  79. . T. t) T; C6 O$ ^6 B# b
  80.         if (readparam(mac, stbid) < 0)( e0 H) X# \- T8 }* ?. X
  81.                 return 1;
    # s& F8 X( T+ U2 I5 A. r

  82. : G. C; w1 j5 q8 g7 @, h( ~$ J
  83.         printf("Current parameters: \n");: \6 d7 S2 m2 u4 ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 N* M" u/ S, W4 n
  85.         printf("  STBID: %s\n", stbid);3 c4 ?, u" f: \" N' m: ?+ R6 _
  86.         9 _% Z9 @0 c1 r7 P* H; B% C1 }; ]* ]
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! p3 |( `' W9 Q! L; Z/ S* {9 i+ k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 k/ ]; ~5 s- h% x+ S- Q3 m( z
  89.                 printf("Input MAC error\n");
    - j' h& `' N7 Q
  90.                 return 1;* `. ~. E2 K8 M$ J
  91.         }
    8 j1 A0 X" a( N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 c8 {) J$ r0 Q" q
  93.         printf("\nPlease input new STBID: ");# l4 b6 z$ Z4 x( h: r9 z
  94.         scanf("%s", stbid);
    4 A4 E( \+ Q0 u) k2 _/ @
  95.         if (strlen(stbid) != 18) {! e7 B$ f4 t1 ?1 f! O$ s0 G
  96.                 printf("Invalid stbid\n");
    0 |$ k, w% k9 F+ w' g0 d
  97.                 return 1;* W! \: a# y* Z5 @" I5 f
  98.         }
    8 c* J  C- f5 K  m
  99.         printf("\nNew parameters: \n");; n6 h1 K0 \, m6 ?/ C0 }  n* a) W( j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 t8 }1 t( i; L3 D$ `# g" v
  101.         printf("  STBID: %s\n", stbid);
    & t; k! @5 N' ~: ]9 F$ E' e1 z( p
  102.   o. _+ m' P/ X8 T2 Z' e/ X
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , U8 x, f8 a7 J- B% ^
  104.         for (;;) {
    0 ?1 [' l9 ?, v' h5 Q) s6 Y% T
  105.                 c = getchar();
    " s) D. a1 Z) D8 `+ |& ?5 m
  106.                 if (c == 'y' || c == 'Y'), B6 V: B1 X' f1 h
  107.                         break;: g4 w$ Q7 e5 U8 j1 r' ?2 T
  108.                 if (c == 'n' || c == 'N') {
    2 A3 @: P" O( t. @1 N! t6 J0 v
  109.                         printf("\nAborted.\n");. X8 g* l" M& w2 v
  110.                         return 1;) I& }+ i& l% g2 q% n% u
  111.                 }
    $ g/ {/ l" Y+ W
  112.         }
    # D7 v6 ~2 D6 M
  113.         if (writeparam(mac, stbid) == 0)
      k1 e7 T) h" F+ t" I2 K3 p) e+ J
  114.                 printf("Parameters changed.\n");5 ]1 I. g4 S  e8 J% e6 `
  115. 2 y# J# P0 X0 I+ B6 J2 c1 s( e
  116.         return 0;3 M4 `% v4 ^0 E( L4 X3 W# G. a! u
  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
; Y5 k# f# s, l+ Y, W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& ~7 F: n$ \) f+ P5 l你用的编译命令行格式是什么?% b, c5 R$ R4 m; B/ D! g# F2 S
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部