查看: 17876|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 f* i+ c; n  W; L2 \+ Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. L5 r0 O( X4 J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 [; W2 q/ X; U  ^3 \
usage: himr <address> <value>. sample: himr 0x80040000 0x06 Z0 I1 r6 w9 @+ G/ d8 O
& N* E- B, V3 F: d+ z

8 D& G5 U4 [0 U2 b& D( q* Q* b( l不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& c, }! G* Q7 s# i3 n3 h; p
/ x6 L* x- b6 v' a/ N; C$ K" _补充内容 (2012-3-8 09:42):
! D  Y+ s9 O3 X# L0 L$ b8 jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ c0 T# e8 n3 [- |3 \$ d) Y' u
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' r1 U7 O; ~! ]% I1 M! L/ k, p
" h( ]+ o$ X4 m, Y! z+ ~
himr <address> <value>. sample: himr 0x80040000 0x0
+ q2 o. r4 L; W! W" [0 H& n8 r; ~9 ?1 a9 i0 ?' _, A5 f. K8 u
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 S4 V1 K' ]1 j  L# G
himr 0x80040000 0x00
0 @. @8 a0 U: d- ahimr 0x80040001 0x11- X6 I. i  j# p- o
himr 0x80040002 0x220 Z& c8 ~3 @4 K6 l4 Q2 L  N
himr 0x80040003 0x33
" [8 [* G* ?/ c9 dhimr 0x80040004 0x44
1 O; [5 E& ?& J7 V4 qhimr 0x80040005 0x55! ^' _( t+ w, p: i$ n, ^  d

* Z( R$ x8 C, z, SSN也是类似。
& G9 @! ]( G0 T+ Q  U) E& I" n3 o" ~* e5 P! `2 K* h+ G7 @/ T
现在主要是,谁告诉我们MAC和SN的地址?
6 S8 W3 d, q+ J; u- G
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  t1 [, q, t5 a一直想找到运程修改MAC和SN的办法,苦于无解啊

; ~. F! {9 }, g源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 c6 \# b9 y+ @/ B( f; H/ \# v  R6 X2 S) x- i8 K
修改的代码早有了。到今天不会编译。
: r( u% k7 @. a/ P8 c, m8 l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # {4 X( p9 e+ M0 E; S$ Q* ]9 }
  2. #include <malloc.h>/ T6 [  t- i9 H! I( u7 v3 W
  3. #include <sys/types.h>
    8 [9 Q9 M# U1 o# V3 z1 q
  4. #include <sys/stat.h>
    / ~- z5 |8 T  T! ?$ B2 l
  5. #include <sys/ioctl.h>0 C1 l2 ^/ g# x. B1 Y. |3 S
  6. #include <stdio.h>  ?% M& |* N+ N; u; G
  7. #include <string.h>: Q0 ?! U. ]% L  u8 ?& M) I5 g  d

  8. / r: e! W* o' L- D; c
  9. typedef struct {
    5 ]0 m0 v6 g! w% w. g! R/ ?
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 m" m2 U0 F! x+ z3 {5 g, {
  11.         unsigned int        sub_addr_count;; y0 j* s; q/ u/ `5 ^7 U0 E
  12.         unsigned char*        e2prom_cmd_data;
    $ B: ]  L( \8 [
  13.         unsigned int        data_count;9 \3 F3 ~! r0 E# \, ^: ^
  14. } e2prom_s_cmd;  W" c1 C! d1 z5 }# w

  15. , a  h6 E! @8 Q* q
  16. #define E2PROM_CMD_READ 1' a% d5 O& G) |5 ?4 ~$ o- g
  17. #define E2PROM_CMD_WRITE 2
    ( x$ }4 S0 O: U  U. L8 a# a8 V* S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ N  e6 K% ~( [: z; ]

  19. 7 {9 {/ W5 B# e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : v+ |6 Z# s7 S( {. ?
  21. {9 {% P8 P  d2 b% A3 X7 G
  22.         int fd, ret;
    9 E$ g5 @! A1 Q8 \: V# d2 B" C: j) Q
  23.         e2prom_s_cmd arg;
    - G  \( J# N$ G$ V8 ^# h
  24.         unsigned char buf[0x18];# n) I& F1 q5 ]: K; l  V4 U' }1 ]
  25. + `: t+ z. a. L2 e2 g8 L
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    & {" n( g% R6 A* D8 s! _8 D& y
  27.         if (fd  < 0) {3 O2 ?& c: w; w1 Z3 D) H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' d% R$ X9 {- V9 T1 F3 E: j
  29.                 return -1;4 ]& v1 Z9 G/ z  @- S; q
  30.         }: y, e8 N! N" K' ^. ?* d# `
  31.         arg.sub_addr_count      = 2;6 |! R( S5 L5 _. X9 z1 c
  32.         arg.data_count          = 0x18;' ~0 X3 y3 E* |$ k( y
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 v" F5 p2 N) \% L! [$ K* X" o
  34.         arg.e2prom_cmd_data     = buf;
    , Z/ a4 p+ B; T2 J( m: \) l- N1 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);; a' e7 l0 m4 F2 l
  36.         if (ret != 0) {
    1 ^; W/ m$ X" f/ e) b7 |6 y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, E# n7 k' W" d' q* j1 f) q
  38.                 return -1;
    8 {* [8 [5 P" e9 g6 d- D
  39.         }
    1 c- h" Y/ M5 X! i( e- K' Z3 l7 H
  40.         memcpy(mac, buf, 6);5 {+ O$ e* g. b) N6 Y6 ~- c
  41.         memcpy(stbid, &buf[6], 18);; \% ^+ y- Y: ]
  42.         stbid[18] = '\0';# l3 M, |% u! ?9 v" k$ [

  43. * h) ~, }; g& p( b: Y' t
  44.         return 0;8 B0 |9 o8 n2 F$ H/ i: Q$ h9 e
  45. }) H3 o8 o- B9 w
  46. , ]+ q; C3 `& M/ {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ Z9 K6 k# p. r2 i
  48. {" S% ~, C7 Y8 ?# E! r
  49.         int fd, ret;* W* u8 l3 w% |  J: {9 v* s- s
  50.         e2prom_s_cmd arg;
    % y  e5 C4 \% q; W- |5 N% j
  51.         unsigned char buf[0x18];
    2 s0 }! a& j2 r/ `( J/ Y
  52. 3 p5 ^. ~( D1 E0 \
  53.         memcpy(buf, mac, 6);
    6 k6 w) ~+ H! u' S; q6 r; ?
  54.         memcpy(&buf[6], stbid, 18);8 ^  V4 [$ {/ O8 y, `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 c/ [6 Z4 @7 z7 r% @5 K2 k# B
  56.         if (fd  < 0) {
    2 A5 h+ ?8 d5 j4 S; C) f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , p; _8 G& U9 [+ D, k$ y, n
  58.                 return -1;
    0 C# r. J3 Q& H5 a9 \5 t
  59.         }2 y2 \- |+ ~1 U1 s0 j. [+ u" X1 X
  60.         arg.sub_addr_count      = 2;
    1 u9 X, }# y2 S( G8 J9 _( ]+ |
  61.         arg.data_count          = 0x18;
    6 T) T& {$ y0 x1 O- a7 N6 Q9 @
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 F9 u! ]: o' s7 p
  63.         arg.e2prom_cmd_data     = buf;6 \+ l# V' A, P- M' c; N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 H" `/ J2 W/ J$ |9 i
  65.         if (ret != 0) {
    ) y# y$ t; I* O1 j' t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) T9 A" v" ~$ K9 c" K
  67.                 return -1;6 |) }: h! r) ~. {8 y* a* o1 D
  68.         }
    1 J0 R3 C4 j7 s& ^
  69. " `8 u- F/ _' ]5 U
  70.         return 0;
    / @* m7 ~) K6 m8 J+ {7 Z, h
  71. }
    7 p1 f2 s6 a( L
  72. * `# s( q6 g; o3 i* G5 f
  73. int main()
    : k6 Y1 Y$ s/ E8 C
  74. {, @7 ?1 d$ K& T4 {( H/ X8 S
  75.         char c;
    9 I1 ^: L: @3 N" f% a
  76.         int i, macs[6];7 K! g4 ^! q6 k; H8 ]% q
  77.         unsigned char mac[6];
    ( G: ]" @3 B' Z4 V) a. t5 b8 x
  78.         unsigned char stbid[256];
    ( w4 N  v' @2 P5 ?. I
  79. 0 o' `, \4 M2 p+ D, I- {) @: i. F
  80.         if (readparam(mac, stbid) < 0)7 r8 @& N- |- g/ B2 y, g. D5 {
  81.                 return 1;
    4 k0 Y6 X4 c! i1 k: n: x$ a

  82. 5 P& {. m" h( R3 Y/ H. z4 z
  83.         printf("Current parameters: \n");) ]$ P1 d9 i3 H
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 p2 C5 J* A* o- ^" m' \7 b, K
  85.         printf("  STBID: %s\n", stbid);# o& J/ Y3 n' _& n0 O
  86.        
    0 E0 v3 ?7 U1 N1 V1 e, G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) ~' Z7 \" F6 \# {$ L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 x! g  a/ z) P) N$ N3 `/ N! w
  89.                 printf("Input MAC error\n");
    1 ?7 l6 s  ?, F  F' I  @! d
  90.                 return 1;' n/ B( j% i! N, y$ s+ j* D
  91.         }
    : {3 s# M2 l0 E; l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 x* U- N' P3 m8 n( K- M1 |+ L" Q* U
  93.         printf("\nPlease input new STBID: ");
    ( H: M, _2 j( w6 I' C* r* D
  94.         scanf("%s", stbid);
    6 T6 C; X: z# p( L5 K( j! Z. T% j
  95.         if (strlen(stbid) != 18) {
    ; y/ |( ]% O3 @! j  [
  96.                 printf("Invalid stbid\n");, A3 W% Q: z2 y3 B( [
  97.                 return 1;
    1 t: M9 A9 L6 z6 y
  98.         }; R% E% d  \5 s  W* o
  99.         printf("\nNew parameters: \n");" K) P* W' F' k) c  W) z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . `# u7 ^& Z' R! t- Y1 `: Z# T& k
  101.         printf("  STBID: %s\n", stbid);
    4 b, q( X+ p# j1 s, w$ o; ~
  102.   f' C2 u! L1 b
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 o; A: ^8 g9 P) Q( E6 j) L. Q
  104.         for (;;) {+ \+ Y8 X) a6 T% Z5 {& y5 [9 S, [
  105.                 c = getchar();
    0 i) X9 [5 e' |6 X- B
  106.                 if (c == 'y' || c == 'Y')
    ( t, ]5 i2 C  i: |) D
  107.                         break;3 t1 T; N# B$ I3 [
  108.                 if (c == 'n' || c == 'N') {0 ~8 j& s) M! k- B" @3 [4 h
  109.                         printf("\nAborted.\n");8 [" r, D; F# O0 }, H9 ]
  110.                         return 1;
    , D: i1 b7 L. E" j. G8 d
  111.                 }
    6 [8 @; }) k2 U$ Q6 D) p' f. u
  112.         }
    . P% V* j9 Z( s6 g+ b6 {# @
  113.         if (writeparam(mac, stbid) == 0)
    * t3 }" d, ?( c$ @9 u3 x* [; j! X
  114.                 printf("Parameters changed.\n");& Z3 g7 [: W1 r" k5 Q8 _( k

  115. & }6 G( B2 X8 F0 }% t
  116.         return 0;
    & ]; C9 g6 c1 _) H% S  V4 c
  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
# N. E: ~! g; Z在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( ?1 o  `: X/ n3 ^3 U; U你用的编译命令行格式是什么?$ B: |7 U+ n5 v; w  K
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部