查看: 17240|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 M  x2 k+ S; I* e$ X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 {2 B9 }2 ^1 U- N& n) X$ N4 m$ ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 r# E0 U0 p* B
usage: himr <address> <value>. sample: himr 0x80040000 0x0
/ l" G" N, ^3 x. f1 j# {' o2 N0 z+ k% m4 P# I" h' k7 o# K

9 u: g0 C* R& \2 @不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: i" m* a; g9 Z( I
' }  x* q4 s. D. s3 `补充内容 (2012-3-8 09:42):
8 u% b) R: e8 l1 W0 U6 |. nhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( {" |. \7 r  M& Z; I5 Z# \; ?
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。: v( |$ M9 r9 C, L; A
, D  K* v5 t2 M; X  l5 ^
himr <address> <value>. sample: himr 0x80040000 0x0
8 Q& I( @3 _6 j9 O
8 d$ g$ |2 K* G% z+ B, J& H例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; Q6 [/ h3 E! khimr 0x80040000 0x005 U" S& B+ W" n; v! }% E
himr 0x80040001 0x11
3 M0 v$ S" N) W6 Q5 \& Y5 }0 j6 L6 W* Ihimr 0x80040002 0x22
, ^0 [/ Q; C( ?, b0 t3 a! \" ]) q$ mhimr 0x80040003 0x33
. |+ t) D4 O: ?9 R/ ohimr 0x80040004 0x44! z3 }" _8 [) F! M5 p# J! k
himr 0x80040005 0x55
4 r- E6 h, I! N5 z8 f1 P: W0 y0 d, T: f* l- f6 e6 H7 Y
SN也是类似。! }( P7 {  f1 i6 }! U# M
$ p, k9 C! w; d
现在主要是,谁告诉我们MAC和SN的地址?' l4 }8 b; ]" w" C  }5 {- T# x
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- ], a# i" u1 e一直想找到运程修改MAC和SN的办法,苦于无解啊

, Z: K; v7 W  f源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 M8 n! c) N: O/ X0 i; V

7 f" I% ]3 W0 m7 W( y修改的代码早有了。到今天不会编译。' P, l, m1 Z: U) n; I3 `- Q
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 f! @% G7 L' a1 a
  2. #include <malloc.h>, P8 \- C6 M3 K; c1 h3 M2 P4 i) j
  3. #include <sys/types.h>
    7 Y6 I6 B2 T7 r
  4. #include <sys/stat.h>
    : X$ o0 G) I# a3 Z! K( h0 }9 x
  5. #include <sys/ioctl.h>( r. j1 q2 [. S/ |
  6. #include <stdio.h>+ B: c4 U# K/ T% Z9 v7 j
  7. #include <string.h>
    / P9 }2 G& F" g$ U
  8. 9 G0 o& `1 @2 f  G2 [/ x+ z' l( W
  9. typedef struct {
    3 O2 }2 h% A1 U5 j; K
  10.         unsigned int        e2prom_cmd_sub_addr;8 A0 j. p9 E; R. w5 Y* y1 t
  11.         unsigned int        sub_addr_count;/ _: K+ J9 z( n% @- \* ?
  12.         unsigned char*        e2prom_cmd_data;
    ! s+ a, T; }# X5 O% d, G+ h/ O
  13.         unsigned int        data_count;
    3 C8 Q0 B2 W0 a) Z: K: |
  14. } e2prom_s_cmd;8 G, H& N" h# [; k! ]
  15. ( @4 [( U) G6 e  l( i! x+ y" V
  16. #define E2PROM_CMD_READ 12 ?' t7 T7 V, l4 F5 `% e# ~
  17. #define E2PROM_CMD_WRITE 2
    ; A. h+ C0 Q; R3 G5 P8 k: |* N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 z) r' {3 C6 I& ]9 S8 V& O

  19. * k0 d# |8 d; y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 y8 @! F# |% j* I
  21. {$ Q) S9 H7 Z& z# h, s! o
  22.         int fd, ret;  j7 |6 j$ i: Z7 w
  23.         e2prom_s_cmd arg;' V4 d9 j8 Z, ]. n+ @' I
  24.         unsigned char buf[0x18];: y9 ?6 d: L1 r
  25. * B9 K: ]5 W" m! B0 X- ^6 Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 `% G8 o) V# K; o
  27.         if (fd  < 0) {/ Y$ T5 q9 y. @9 x5 z* M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " f' `+ d: P1 ^: T5 H/ A
  29.                 return -1;2 o/ l* H; u+ \  G
  30.         }1 c  W& d: |+ R8 K: q0 G+ M1 n
  31.         arg.sub_addr_count      = 2;
    * ]! q. ^# M- Y) C7 ]+ B- l! k
  32.         arg.data_count          = 0x18;$ ?. \; j; x$ j5 b9 A
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! Z5 C8 [9 h3 G0 H& D
  34.         arg.e2prom_cmd_data     = buf;
    : }, L6 M* a! V7 M" t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, i' I3 \- }$ S- D
  36.         if (ret != 0) {" O1 I& G+ ?" b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( k' `2 |7 t, ^/ s- J9 P
  38.                 return -1;
    8 O# f0 t- p4 Y. s. \
  39.         }' G- U% |2 u$ ~+ F) Z, l3 ]3 ]8 H
  40.         memcpy(mac, buf, 6);
    1 B- B. J$ n. q  K
  41.         memcpy(stbid, &buf[6], 18);) Y0 K) l$ p: L; S/ h9 F' c( y
  42.         stbid[18] = '\0';7 \" E" d! V/ Q* T$ k

  43. ; U, k+ C  x( V8 E0 }4 e/ F
  44.         return 0;
    $ w3 F+ t1 l( x+ j; K
  45. }/ H! |5 m# k2 F, o
  46. & A$ a3 _, d" v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) o! d/ G/ r, `) q, p
  48. {) F3 B' Q, @5 b7 U8 V, Z
  49.         int fd, ret;
    ) L  M6 N. }, z1 k
  50.         e2prom_s_cmd arg;) F; Q* I* F3 Q6 u+ k+ Y
  51.         unsigned char buf[0x18];$ I6 n9 A2 j1 ^1 l# I0 E( E( k

  52. 2 ~# K! ^: ?7 {2 f4 A7 N! O
  53.         memcpy(buf, mac, 6);
    : O4 U3 _. T* o* Q2 y
  54.         memcpy(&buf[6], stbid, 18);
    & E- Z- \! f0 }2 n& R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" q- P6 h6 ~9 |3 w0 ]( m
  56.         if (fd  < 0) {- R# v# N" l( K1 O5 }3 h$ }
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : L; m6 Q' B3 W8 ~  t
  58.                 return -1;
    # k* ~9 u0 r8 y- E1 D
  59.         }/ S* p! k# ^6 e& u
  60.         arg.sub_addr_count      = 2;' _/ C& ^* L  M( K1 T
  61.         arg.data_count          = 0x18;; t3 K' S* r; o+ ]7 @- m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . A2 x& T( I6 P
  63.         arg.e2prom_cmd_data     = buf;2 ?6 l; L$ v% p- u/ r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ G; `7 ?' k6 I3 t& [9 ?& f$ z
  65.         if (ret != 0) {
    5 A; v9 b6 J1 Y5 ]" H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 z5 X  E* X: {) N
  67.                 return -1;0 U2 |4 e6 F9 n! p% a8 I5 @- H
  68.         }0 S0 ]& b; S+ L" W+ k

  69. 1 G1 @8 D7 g- k5 R4 B3 n
  70.         return 0;
    7 I; {. v4 f. ]9 d6 S
  71. }
    2 P5 ]+ y* \; k6 N2 l2 h
  72.   d/ u2 i. @. X
  73. int main()- j4 |6 V0 `, p7 \" Q
  74. {/ i9 _  R4 X$ a) n* M! k/ X& B& J4 a
  75.         char c;+ s0 S+ j0 i$ w, v8 e# \
  76.         int i, macs[6];0 {7 V8 t% e/ \+ X3 \$ V
  77.         unsigned char mac[6];
    1 z* O  s3 F6 x* S& E, P9 h% x5 {
  78.         unsigned char stbid[256];2 Y" ?5 m" ?- [/ o- n1 |3 g, c9 Z

  79. 0 l  c* J. k& m5 Z3 N
  80.         if (readparam(mac, stbid) < 0)6 H/ w* l& G' Z: [/ U: w
  81.                 return 1;
    * N# p* n# `- E' g

  82. 5 c4 ^" P5 X3 d+ p4 ^
  83.         printf("Current parameters: \n");
    $ J3 _% X# \& s, r5 l: s# q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 w( S& `, Y# v6 P
  85.         printf("  STBID: %s\n", stbid);
    , }0 K# A. ]  W6 j7 O  ?2 |! ]6 l: H
  86.        
    " Q+ Q& n7 `0 N. B' h& [" ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! _, G, T( {' [# G$ i# q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. S) C! c& n. \5 ?! t' e3 {9 u
  89.                 printf("Input MAC error\n");
    6 o- }  X( ~( t
  90.                 return 1;) r9 f4 p2 ~; p0 F  l6 N) q) s
  91.         }
    ! e% H& T+ ], P! q) @
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * o" w) r" n6 U: y5 _
  93.         printf("\nPlease input new STBID: ");
    2 R+ A* m4 h. V! ~/ N
  94.         scanf("%s", stbid);% B* ]: l( `- g* K3 m2 c
  95.         if (strlen(stbid) != 18) {% T; Q% q. b3 O- _6 r/ u; E* L2 P
  96.                 printf("Invalid stbid\n");
    $ e5 a; a' X- t# r! W( ]* d
  97.                 return 1;
    4 v: `' P5 q& Z- N6 m' @2 r: i
  98.         }' S8 c* l4 R! r( w- `% g& F4 V
  99.         printf("\nNew parameters: \n");
    ) ^& t% D7 a7 m. f; Y. ]- \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ f9 s& q5 r$ A- n2 j  W
  101.         printf("  STBID: %s\n", stbid);2 r8 V# o7 [8 L+ O) }  q
  102. 9 |( ?2 _0 p$ P# d
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    9 u6 u$ q& P3 a2 a4 ?- n$ G
  104.         for (;;) {
    % |$ F2 [& }* h5 D$ @! Y4 p) u0 U
  105.                 c = getchar();
    : E8 Z: O% j9 E9 N! K
  106.                 if (c == 'y' || c == 'Y')
    9 C6 h/ ~! G6 o5 O7 Y# K, T& ?
  107.                         break;+ o- Z5 Y9 Z! g4 U9 [0 Q8 l3 ?7 O
  108.                 if (c == 'n' || c == 'N') {- c5 G- k' e$ c$ M$ G
  109.                         printf("\nAborted.\n");, {4 ~- c" r1 o3 i: a2 C
  110.                         return 1;
    2 ], `8 [7 t5 H  L; c
  111.                 }
    , W" Y- t( y- V6 U: o  c0 e
  112.         }3 i" P' p1 u5 S* K
  113.         if (writeparam(mac, stbid) == 0) 7 M$ T9 P; R; A- b- d% y
  114.                 printf("Parameters changed.\n");
    4 m% j  o4 s; U% W: D, j. Q5 a

  115. 9 @( ^) _2 o& _2 \
  116.         return 0;' N' r. O5 H1 c8 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
+ L$ R6 N, K- Y* o, Q* \在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: J+ F" w+ o! U4 f; m你用的编译命令行格式是什么?
5 B5 W, ?0 T+ c
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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