查看: 17814|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 S/ Y& R- E( M; I3 R7 O  U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# _9 [( A2 P" D) i* u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 w; E. P4 b- ], W; j! q+ yusage: himr <address> <value>. sample: himr 0x80040000 0x0( X9 x! e0 b" |, |0 T* _( F1 v+ {

9 ~2 Q- U0 w8 }' ^4 j" M, Z& L' m; O. Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' W* i5 h# D' T* Y

" w# O) ^  F( A& W$ t9 [补充内容 (2012-3-8 09:42):
. F1 l6 S* `0 fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
) [; _- s; Z( J, V* b% F这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
% d; m3 f; @" F% O4 j$ p4 P/ f7 h6 j) t
himr <address> <value>. sample: himr 0x80040000 0x0# o. x) n9 x: V) W

8 p3 p1 E5 I( k! M9 n/ n8 u例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& q6 e7 P: b, l1 C4 m8 Bhimr 0x80040000 0x00
5 l: p' D5 k: V+ h" B  E  p) D* ~5 _himr 0x80040001 0x11
4 g7 ^1 U: I$ d% w; v/ rhimr 0x80040002 0x22  c' d+ n' Q+ K: q6 o  O( G" U
himr 0x80040003 0x33
: u3 K. _% ?6 }himr 0x80040004 0x447 M3 u  j; S6 M
himr 0x80040005 0x554 s; C* f8 Z! m/ C
$ H0 O4 ?. A5 O! D' a6 ~" c! h
SN也是类似。
. d' s) e& S- V' T" D8 _% h$ @- |# f4 D6 d& P; W/ r
现在主要是,谁告诉我们MAC和SN的地址?$ X' {( D9 Q! ~: v
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% [! _, t; Z8 W/ }一直想找到运程修改MAC和SN的办法,苦于无解啊
- A' |0 {. c2 j8 T) H+ y. o* s5 I$ {+ y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " j& j3 _! H9 U. r1 W; T; `# [

7 E4 U: g, i" z" o% Z$ B修改的代码早有了。到今天不会编译。, D; p& u/ V+ v7 ?. k; Y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 ]/ h  U1 d/ O' g! t4 n
  2. #include <malloc.h>
    3 x) s% Z( M8 {" n
  3. #include <sys/types.h>
    ) D3 c# e- F! I0 t
  4. #include <sys/stat.h>
    : x8 {3 d7 J0 N/ d, s, {% M$ h. X
  5. #include <sys/ioctl.h>
    " u- y. k3 {. ]& c; R
  6. #include <stdio.h>9 w5 p4 ?, p( w0 g9 [/ t; _* W/ y
  7. #include <string.h>
    + o. q, [5 v- \

  8. $ q( V5 }& T/ m' ^) L- d
  9. typedef struct {/ g1 _, S, t1 L. d/ K
  10.         unsigned int        e2prom_cmd_sub_addr;
    , s  `1 p$ q. K1 M3 n( W. ?
  11.         unsigned int        sub_addr_count;3 L( e: V( X. _: u2 @  \
  12.         unsigned char*        e2prom_cmd_data;) s$ C( J5 V% s$ M4 X3 x
  13.         unsigned int        data_count;% D. _4 F0 q! [4 y* V; I
  14. } e2prom_s_cmd;. X! t& m* ^# f3 i7 I* p

  15. & G/ N7 l: ]7 n' s& f7 J5 X# i- ]8 R
  16. #define E2PROM_CMD_READ 1
    0 [; a  n1 V# n' T
  17. #define E2PROM_CMD_WRITE 2
    2 ~9 q1 I1 w3 |8 i. `) Y0 @
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  N& Y: F. u  c" N& A
  19. 2 ^3 T- C. E$ ]/ D9 L8 _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! p  B! v# f5 U0 f! B
  21. {$ p! {; d& L3 n" u, ^( s5 t$ D
  22.         int fd, ret;/ N* W- L9 U: G' `6 e8 x
  23.         e2prom_s_cmd arg;
      H# }% o' w$ n/ h0 m
  24.         unsigned char buf[0x18];
    7 e3 ^! A/ h- C

  25. ' Z: z/ v" Q% i0 E3 Y' v4 i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 O' ?% ~( x0 A! H' m7 q. ~
  27.         if (fd  < 0) {2 `# h7 y' A* ?/ J" w' q) b$ t( H& ~' q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % Y" u0 L, U6 w" i3 B! P
  29.                 return -1;
    ) J0 t; o) Y( [$ N/ c  E
  30.         }& A+ ~$ p. K& S0 @. F1 p! T8 F) w6 g
  31.         arg.sub_addr_count      = 2;; J* G5 K0 W6 V4 g. X
  32.         arg.data_count          = 0x18;7 a* d, l8 c% E9 ]* \
  33.         arg.e2prom_cmd_sub_addr = 0x290;, P1 H, D% O/ W7 k% s2 x0 d0 T3 a
  34.         arg.e2prom_cmd_data     = buf;2 J- R3 [& C9 T7 k
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* j- V$ z2 o" R* U5 E4 |& P
  36.         if (ret != 0) {& s. c2 c8 D+ X. _5 O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, G# D5 O1 C9 Q, B- g! P/ g# m
  38.                 return -1;! N. {# N, j' \" {
  39.         }
    / ?* _; t6 E: u
  40.         memcpy(mac, buf, 6);
    ! j, H0 U$ B% W7 y3 n
  41.         memcpy(stbid, &buf[6], 18);2 L" B/ L" ~$ i3 B
  42.         stbid[18] = '\0';2 ^5 S, f0 W% G4 u

  43. 5 l) O6 ?( ^3 g; V9 U0 H) X
  44.         return 0;
    2 F$ H$ S$ Q6 k9 m9 i% u' L' D
  45. }
    2 O. }1 a$ V& D" [" q% q

  46. , J% M, Q- H& C5 {4 o% d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 U8 f7 f/ i) \, n& b. I! b5 K
  48. {2 G2 z8 _( t2 x) \
  49.         int fd, ret;" H% E! P! Z. k2 p2 B' r$ Q& S6 t
  50.         e2prom_s_cmd arg;5 G+ ^2 O$ P7 N0 B
  51.         unsigned char buf[0x18];9 p# G  b: q4 R, Q7 V, |, ]' U8 m+ k9 Q

  52. ! ]# Z. B& Q$ h6 u
  53.         memcpy(buf, mac, 6);
    $ e( M5 a. c% s, v7 {
  54.         memcpy(&buf[6], stbid, 18);
    % `! V7 q- \1 }( t
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 ]2 k6 t& ]% r1 Y$ q
  56.         if (fd  < 0) {5 Y9 `6 J& W/ T9 ?! m7 K0 `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 A: W4 M, U2 t& N' S) _
  58.                 return -1;; G: V$ z- e0 P& ~, `( _' W. _) u8 ?) A
  59.         }, J& U! t6 F$ ^( a# S
  60.         arg.sub_addr_count      = 2;5 y" }9 k7 ~, S& `1 }6 `0 ^
  61.         arg.data_count          = 0x18;
    ) b6 w7 P4 T4 d2 ]$ t. [
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( t# }( t. w: W3 ?
  63.         arg.e2prom_cmd_data     = buf;
    , @! y- d0 t4 K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);; F( n- X7 _% `* Z" L
  65.         if (ret != 0) {+ ^/ c7 t+ O4 d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, h- Z& H' K  L0 x) N
  67.                 return -1;% p# J) l8 l+ u
  68.         }: H+ I( K- k+ U8 ?

  69. ! E0 w5 @/ z5 l7 d; X
  70.         return 0;$ H2 Z; y% m. ]/ X4 o
  71. }
    , W: w6 c! b2 @3 S

  72. : M5 o. O: z% r+ W* o3 K
  73. int main()
      r$ K  M9 e& e0 X3 {# M
  74. {
    * U# M* G, K' `2 }) D
  75.         char c;
    7 P' I. z" r9 W# R8 @: `: m) w
  76.         int i, macs[6];& ?6 M2 s* v% C
  77.         unsigned char mac[6];( s, E* K% d0 L1 x6 S
  78.         unsigned char stbid[256];
    9 L" b+ i& y6 {- T' X; Z; j5 G

  79. & {* p: g  ^) |4 i* X
  80.         if (readparam(mac, stbid) < 0)
    " w9 o. m/ f+ z' M
  81.                 return 1;' p" Y6 m" K! I6 m/ q3 p) {

  82. % K' _$ Z, y; |/ i5 T0 `
  83.         printf("Current parameters: \n");) `) r/ X  J* `/ _( i  H; x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      }" q8 L# U1 Y' N3 H9 \! o( `" `
  85.         printf("  STBID: %s\n", stbid);
    6 D, a5 {6 q: s7 h7 j  H- R
  86.        
    6 b' z* w. W; l) q7 ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ Q/ }7 q7 X4 g& |7 j- V+ u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 e7 a2 }5 F# b# R8 k3 [) f1 v
  89.                 printf("Input MAC error\n");: I1 Q+ m# `' q1 U( C
  90.                 return 1;# o1 O# N' e5 X0 Z4 h* i
  91.         }
    $ a7 S0 f$ L+ F0 W: z" D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ @. j- _2 |  ?! K# r
  93.         printf("\nPlease input new STBID: ");
    , q$ o9 K6 _# H( I, L% w1 h- u
  94.         scanf("%s", stbid);/ X  [4 i  W% X3 y. f1 h
  95.         if (strlen(stbid) != 18) {
    + A8 O0 M9 \. K1 m4 q2 ]
  96.                 printf("Invalid stbid\n");1 z* c- p0 c2 v' F( H5 q
  97.                 return 1;% h. |: X9 E0 J6 v1 |' I
  98.         }
    * f4 w8 l" C; }9 M/ i* w! @: A
  99.         printf("\nNew parameters: \n");( Z  V0 {, }; O2 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 B* E$ c) a( x( C& c7 I
  101.         printf("  STBID: %s\n", stbid);
    . [  y5 o+ l& Q( I
  102. & k8 |, l; o, d3 V
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % r) m' w5 O8 o
  104.         for (;;) {5 t0 H7 k4 v2 X9 F' ~; \9 Z
  105.                 c = getchar();& w9 d, p% H, f: j! w9 p
  106.                 if (c == 'y' || c == 'Y')* G0 `. n- A9 ~1 V: E9 W* [
  107.                         break;
    ; }' C) t1 X  O! v% w5 S
  108.                 if (c == 'n' || c == 'N') {
    ; o) H4 g8 Y4 V9 |4 R+ ~
  109.                         printf("\nAborted.\n");, G* n4 [6 ]+ x3 y$ Q" L# P
  110.                         return 1;
    # @" z1 q5 h( E4 Y' o0 W1 i' ]
  111.                 }
    8 u! ^& K# Z7 m4 @, D! c
  112.         }3 r0 r6 t4 g0 P8 E
  113.         if (writeparam(mac, stbid) == 0) : k; Q0 ~& w* J$ m6 X% I1 c
  114.                 printf("Parameters changed.\n");
    4 \- s+ n1 G+ d/ i

  115. " b1 Y* X; _5 P) F) ?
  116.         return 0;" m" W9 s9 M9 [7 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 ( w! Q4 T- }0 A& n4 ?8 O) u  b9 M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! \8 U  c5 l) y+ ~* T
你用的编译命令行格式是什么?1 f& {1 ?3 f: I
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部