查看: 17134|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , m8 Y2 t9 }* h" ~+ w* B. y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig2 n1 r% F4 X; L! m. g+ w8 A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: s% V  K. t: ^3 ]
usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 _* z: r% I: ^" N3 C, Z6 m: @9 {- A  j5 x: G: c$ y5 K' y+ H

' {* Z- y* p3 k% u不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 i$ r0 C% ]) D8 V" X- Q9 S, t4 N3 }5 I
补充内容 (2012-3-8 09:42):
+ e  n* {7 ?9 R+ k4 E" ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
+ {5 _% ?. J" z& {, c; w: ^) v; p这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。: K* O5 @4 B3 u3 ]; T0 w" N
; Q5 H% }) t6 s* ]0 Q0 t. M
himr <address> <value>. sample: himr 0x80040000 0x0
. W8 a# ~$ F/ [  H3 J/ X7 q- b: A. Y
. F3 \7 R& k. o( r例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 f6 G2 A& X6 chimr 0x80040000 0x00
, m& w  P7 y3 _2 K3 m1 n2 t9 ?himr 0x80040001 0x11
5 A, O  B6 D9 ?7 H% H  vhimr 0x80040002 0x229 u# M) O  Q, T
himr 0x80040003 0x331 A/ z: G: {4 m' I# R7 u
himr 0x80040004 0x44
6 X1 ?( v7 y% o/ f$ o1 @himr 0x80040005 0x55
6 t6 a5 u% m" d+ m8 Q7 Q" o8 F  R( A3 Z3 m4 K- \
SN也是类似。
" n3 o- |) C, z: S8 V% l% y" n( _( V8 x: Z$ g* z& {
现在主要是,谁告诉我们MAC和SN的地址?
2 m3 B, C4 m! q
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 I7 X& m" X8 \4 R, T
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 A2 g9 y. h' m% T) ?$ F9 l( }" \源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( J. C$ P( E& M: B  ^# J- Z/ b8 x4 `8 L" n
修改的代码早有了。到今天不会编译。+ C6 k6 I+ _. I4 A
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  l+ m7 [: R; k7 V4 @' F
  2. #include <malloc.h>; X: X* M' \" k& M2 H6 j( m5 T+ ?
  3. #include <sys/types.h>
    1 }, q* Q0 l! ~. K5 ?8 |
  4. #include <sys/stat.h>
    , n6 ~+ x/ Q& ]$ m2 U- C
  5. #include <sys/ioctl.h>
    ' N3 ?# b2 x9 |% ~
  6. #include <stdio.h>
    8 I' a/ R$ J3 f8 O
  7. #include <string.h># |( @6 u- L0 Q- L
  8. 6 N0 b6 Z% T5 }3 d3 f% L- P3 P7 }
  9. typedef struct {
    3 q( b: d- U3 r2 l& S
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 ^( A" u3 |# l0 t" w! v* e' M
  11.         unsigned int        sub_addr_count;
    + h' j7 T  X+ \
  12.         unsigned char*        e2prom_cmd_data;" w% R; w) {6 o$ q* P
  13.         unsigned int        data_count;* F- x' w, K  x5 s6 Z
  14. } e2prom_s_cmd;
    7 P- \+ a' N" f$ @9 \4 b6 Z6 f

  15. ) n. A: I4 Z3 o8 k# s' d; M
  16. #define E2PROM_CMD_READ 1( G2 L/ P8 @/ J3 o: h
  17. #define E2PROM_CMD_WRITE 28 B0 Y, e; [/ |: h9 e2 \& ]
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( {, X9 H0 ?8 m; w. `& g3 X
  19. $ \1 M0 U3 G/ k5 p; b% G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 ?: u" o; J  Q0 K+ w- ?0 b5 @
  21. {" k& N9 d; M4 n
  22.         int fd, ret;) g2 N! E9 Y3 f9 Z5 b% G1 x
  23.         e2prom_s_cmd arg;
    * @* V7 q( r0 {5 S* C, N
  24.         unsigned char buf[0x18];
    " |7 f7 m( g/ H  g: p$ A% J

  25. - F$ r% t: ?2 R- x7 \. w
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' ?/ a" c; a, e# X" \, V
  27.         if (fd  < 0) {
    9 H# H6 d% f2 S: @" E6 s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' w9 _# b; g* K! J) k1 t8 a0 c* I9 V
  29.                 return -1;5 L$ l( S; i) K8 J+ `5 h' L% p
  30.         }
    ; S4 a3 l! s% F* v
  31.         arg.sub_addr_count      = 2;
    - `% j( c: i! K" @. \
  32.         arg.data_count          = 0x18;
    ( [1 g' U: ~9 H" r. O
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & F  \. T$ r/ T3 y
  34.         arg.e2prom_cmd_data     = buf;, y+ c2 f/ |/ w* Z; S" Y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% _& R/ E. h* {
  36.         if (ret != 0) {4 i+ X3 \4 N* D  l0 E( V' H: B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , Y7 i' y3 `! H: n, e
  38.                 return -1;
    ; X9 J1 K6 C2 u5 l" ?" ]1 M- D
  39.         }* X' \# I+ ]: ~. W
  40.         memcpy(mac, buf, 6);; ?) p0 Z0 \9 J5 q  r' Y# W+ C
  41.         memcpy(stbid, &buf[6], 18);) s; f5 B* n& T/ f% b
  42.         stbid[18] = '\0';
    ; |, J" L4 t9 Z& k

  43. 5 D8 O4 R  x5 o( L8 p+ y
  44.         return 0;5 m5 W# N5 q' j3 k
  45. }
    1 p1 }/ V5 H+ o: [
  46. 6 G3 O. T! d6 M" o2 s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 e3 r2 T* o0 w
  48. {4 P1 a7 G  [0 K4 A$ I( j
  49.         int fd, ret;
    # W9 w8 M2 n7 ?* R
  50.         e2prom_s_cmd arg;
    / S2 a7 f. s, v% R% S% z
  51.         unsigned char buf[0x18];. l8 I1 `( \, {, _/ u0 i
  52. , q' }6 N% [0 e+ [+ P0 L+ x% n( R1 G
  53.         memcpy(buf, mac, 6);
    : A* d, m% h+ O3 f: y. a- Y
  54.         memcpy(&buf[6], stbid, 18);
    * s# h3 v7 V8 ?1 q7 A  ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, P8 ~* D. T7 G# z  A- O' ^
  56.         if (fd  < 0) {0 d2 J( ?" H4 H4 f- O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # Y8 `7 B0 F: u; o6 ]5 f! R+ A
  58.                 return -1;
    * u" ]" R; e8 W* h1 X0 j4 `4 o& J
  59.         }5 K! h& y: u$ B
  60.         arg.sub_addr_count      = 2;
    0 K2 `! d5 z; V& t6 ~7 F5 A
  61.         arg.data_count          = 0x18;- d1 ^) {8 ?4 M# E' d3 y( Z( ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;% w- N4 Y( |- n3 }) l
  63.         arg.e2prom_cmd_data     = buf;
    1 T4 E" U; `" U8 f, t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 |: k6 c; D, u  I7 r; }
  65.         if (ret != 0) {
    9 a: P: z0 q0 P# U5 P  m& d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . s& ?& q. V, h$ W  M
  67.                 return -1;
    * ?  u+ k. k+ `6 ~8 F
  68.         }# [  S4 r9 G+ p/ G) x2 C! l

  69. . L( H' I) A& F+ X/ g; c: K2 }
  70.         return 0;
    ! E( Y) b0 C% {' j  G2 S! D. U
  71. }# Y3 N' h4 ?1 i* a5 i

  72. + K, d( |8 q' Z
  73. int main(): |7 g2 W' U4 W! U$ f( @3 G1 s/ J; Q
  74. {  d' e5 `4 `3 `: h! p! F
  75.         char c;
    7 k: i8 L4 f2 Q9 M
  76.         int i, macs[6];+ [7 O9 R( k2 `' o/ |+ u
  77.         unsigned char mac[6];
    9 f* O2 v( A7 L0 \
  78.         unsigned char stbid[256];
    # q7 G% a. }8 ^9 w

  79. 5 K+ o9 o0 q/ \% E  G- n
  80.         if (readparam(mac, stbid) < 0)
    " I6 i" C; ~- l9 `& S% a
  81.                 return 1;3 O: o# b$ o. h; O9 x. D
  82. # u0 H( {; F8 G# G! a5 M, |
  83.         printf("Current parameters: \n");4 o: s  ]- g4 ]# G2 g8 l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( h, b! w: p2 M; H6 p
  85.         printf("  STBID: %s\n", stbid);5 Q: s- ?4 ?$ o
  86.        
    . R3 ^% n: G7 {# U3 `
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  m2 k! k6 T! \. F0 I, p; S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 `& N$ L9 t: U9 `# e  R
  89.                 printf("Input MAC error\n");4 v# f0 }! D2 {6 K
  90.                 return 1;
    9 `' _, j$ E  `2 `6 h! G
  91.         }. a! p$ F! j- Y* R4 U' j
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( b' P" [4 J, L4 _
  93.         printf("\nPlease input new STBID: ");1 p& B: B9 P4 s( O
  94.         scanf("%s", stbid);
    " R( n- A0 @* p  \7 O8 {
  95.         if (strlen(stbid) != 18) {0 O9 t7 n& q9 c* F) ~1 l! N: s
  96.                 printf("Invalid stbid\n");
    ) {1 V5 J5 W( x% A4 n) v$ @0 d/ d& j
  97.                 return 1;1 e' e8 O+ p/ ?; b* C
  98.         }
    $ f9 Q! E2 j; l& [4 d  G4 i' {
  99.         printf("\nNew parameters: \n");1 H+ e0 r% D/ E, ?/ i6 l4 z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* y4 c, n6 X( R* s; Y! E( k
  101.         printf("  STBID: %s\n", stbid);
    . G" g3 X' F- v: ^

  102. " R1 _2 i2 U; w$ m
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 m. c( |8 ]" U
  104.         for (;;) {7 O1 x: A9 P4 ^# ]: w; E* Q* o( F  E  L
  105.                 c = getchar();
    + B: w$ ~8 U9 h; d( M
  106.                 if (c == 'y' || c == 'Y')8 w  A& E( a% o, t& j
  107.                         break;
    0 x9 u8 u0 X9 m! O
  108.                 if (c == 'n' || c == 'N') {
    4 w  K9 V( [: l+ B
  109.                         printf("\nAborted.\n");
    ( a4 X' k; a- r' `# {! N
  110.                         return 1;7 R3 k' b% S% e8 W8 p9 H( k# C- }
  111.                 }
    + j! p( {/ u4 \! \% @
  112.         }
    " e; L8 S2 `' G
  113.         if (writeparam(mac, stbid) == 0)
    1 X' w, }+ y" [; g! _5 w/ V
  114.                 printf("Parameters changed.\n");$ _  X# e9 ^$ Z3 G# N$ A3 |
  115. 7 \" m+ T# Z5 y! w
  116.         return 0;
    ) y" q' [# B" S  y  x
  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
8 d4 C6 E- g1 I- \在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& y6 W8 A8 n9 M3 ]  T; l2 K
你用的编译命令行格式是什么?
% t) j, M4 l. h9 o
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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