查看: 16839|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) x3 }( Q% o4 R! |" W5 R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ g9 ^0 u; |9 J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! u/ {) S: G% h3 o6 Gusage: himr <address> <value>. sample: himr 0x80040000 0x0, m: @" X" D4 H  n

/ Y7 R6 o8 V& x4 A9 z; J& p( c+ m* o- y; M+ b0 b" o$ R
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ T) Y! ]7 ~9 W/ J+ z4 }
$ v9 l7 J. S3 E' Q) D补充内容 (2012-3-8 09:42):0 |  N: U8 Z& R' m
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; E( t. d0 V# u9 h; I这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
" p; `+ D! x- F8 o0 i; y" N2 }; D4 q5 @% P# L7 Q
himr <address> <value>. sample: himr 0x80040000 0x0
! a: @  c% Y% Q& P9 ^1 c4 r6 ^7 E, _/ _4 [0 z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 J# H5 N  ?7 P2 Xhimr 0x80040000 0x00
. z/ H  D. D' t. M9 g2 x0 phimr 0x80040001 0x115 T/ d) a3 R/ [$ j/ C% L
himr 0x80040002 0x22
. R3 l: c" Q) ]' e! K; e. Uhimr 0x80040003 0x33
& }/ r. y8 n% `" T, T( Q9 Xhimr 0x80040004 0x44
7 R7 B$ p* ]- x8 x" w; N: chimr 0x80040005 0x552 V* S/ _' M, d/ w

$ a% m4 }: x7 p# B2 _SN也是类似。6 h& `/ x* m) Z
9 A1 S  ~% ~& d$ z: t) u
现在主要是,谁告诉我们MAC和SN的地址?
2 p4 R/ Z- T9 i) U
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37   h* i  l6 w8 U6 V+ G6 t" A
一直想找到运程修改MAC和SN的办法,苦于无解啊

5 s4 w- V5 {9 \) [$ z7 i. q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 w7 I6 l& @/ w1 m) u/ t) N  ?' y! T9 x$ T+ X7 s2 U: v4 R
修改的代码早有了。到今天不会编译。8 t' ]3 L0 v5 r" n7 W4 C
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ |1 J  A2 e" X
  2. #include <malloc.h>
    3 B5 q% S4 c$ o& C
  3. #include <sys/types.h>
    " x# P2 @" A9 m
  4. #include <sys/stat.h>
    3 c+ z1 l5 q, U% t
  5. #include <sys/ioctl.h>
    ( S6 H6 P) f7 e- R6 I, ^
  6. #include <stdio.h>! C% Y" U( J: U3 a  k
  7. #include <string.h>
    # D' X! u4 |1 T* c, Q! ?
  8. " Y% A4 D. o8 c; e- y
  9. typedef struct {/ ]+ P& i1 X1 I) P# |
  10.         unsigned int        e2prom_cmd_sub_addr;
    % u2 p1 t: [% M' R  k, {" t2 Y
  11.         unsigned int        sub_addr_count;
    , [% C8 V: ^' x" S* A1 \: ~0 a
  12.         unsigned char*        e2prom_cmd_data;7 e* V' ]+ m+ j# K, p
  13.         unsigned int        data_count;
    & P* x. J* I( y8 j. i
  14. } e2prom_s_cmd;, Y3 ~" r) M) N
  15. / G& W  o+ R: U4 F: _$ r
  16. #define E2PROM_CMD_READ 19 d; d* d& K8 z: j/ H) [
  17. #define E2PROM_CMD_WRITE 2
    $ o0 X& [1 y# [8 V" P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", R2 o  p% ^* ^9 H: |

  19. 0 E) M4 X' C7 g7 g' n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      o/ f, O# m; l5 r  a
  21. {* |# X# g0 R) N0 ]* \) l! i
  22.         int fd, ret;
    - R0 R2 S( V6 x- r
  23.         e2prom_s_cmd arg;
    ! L  D3 C. w. u, a+ ]% e5 \9 q
  24.         unsigned char buf[0x18];1 G1 V6 m4 F; S( B6 f
  25. * R/ R3 u5 V' D0 @, ?1 m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      B' x: d8 @# Q; \4 v
  27.         if (fd  < 0) {, Q# ?. a2 n9 _2 J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 _1 B) z) [2 I" W/ X
  29.                 return -1;0 H: J1 c( J' U- `4 u
  30.         }
    7 [/ i: E! h/ g7 g
  31.         arg.sub_addr_count      = 2;- A; _7 I+ P1 q% g  R. A
  32.         arg.data_count          = 0x18;2 ~0 q- }$ r8 M4 L
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 ^1 ?6 a( v/ F- v6 n
  34.         arg.e2prom_cmd_data     = buf;
    ! Q- i/ r: b8 O$ j" z" B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 l5 {( I0 R5 g* t& o( h3 ^; u" |& |
  36.         if (ret != 0) {
    . ^) E2 I4 f/ e0 g# O/ D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % O$ K+ H9 u3 z- e5 M) `
  38.                 return -1;
    8 K) L& q) F) {; b0 `
  39.         }
    % N6 i( {3 ]  q  W
  40.         memcpy(mac, buf, 6);+ Y3 [& @! f+ F7 D
  41.         memcpy(stbid, &buf[6], 18);1 }3 j! S/ _  @3 b( i- t
  42.         stbid[18] = '\0';, O- C6 H5 Z: b! V$ {' G7 J

  43. / X. i' I" h( b; T' I
  44.         return 0;) N* `) y  u7 Q& E8 a, m9 U3 W. \% f
  45. }3 E* {& F; d+ a7 o

  46. ' o$ E+ ^4 x9 v& G* k5 }6 z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 d( |4 n1 {" s% O
  48. {
    , A' _1 v; S0 o
  49.         int fd, ret;
    ( Q5 Q) o6 j& Y$ c
  50.         e2prom_s_cmd arg;
    2 u0 {' S$ e. U' F& c% {8 }
  51.         unsigned char buf[0x18];7 d% h( Q" q! n# n7 I5 [
  52. - e* y1 V5 P5 y7 \* |$ M
  53.         memcpy(buf, mac, 6);
    ! \3 Y! S) p3 @( y0 Q; i
  54.         memcpy(&buf[6], stbid, 18);
    % E  N" X0 N( U- a" l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 I, W2 r' B$ v5 H
  56.         if (fd  < 0) {
    ! q5 |2 [$ a$ H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 z$ w# S; e. n% X
  58.                 return -1;
    7 y2 x, R# u) w" l1 P: r7 `8 S
  59.         }, L5 `/ `- J1 q' j
  60.         arg.sub_addr_count      = 2;, ^5 M4 z( v0 j7 T' G
  61.         arg.data_count          = 0x18;0 h: E# Z5 b; o. h! {
  62.         arg.e2prom_cmd_sub_addr = 0x290;( b# G9 B3 M& k0 y
  63.         arg.e2prom_cmd_data     = buf;7 W. d9 k, v% a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 ?" \& x1 ^; K4 y+ ~% _8 w
  65.         if (ret != 0) {
    * c1 Q( x, ?" V8 @7 S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) }  B/ j9 M7 A. y7 h
  67.                 return -1;
    6 o5 D5 {# n. g& L$ V! I
  68.         }9 q6 t9 F" y* I) N# X% w* d: I6 q
  69. " b2 a1 l" J" u9 V
  70.         return 0;
    . z& S# A7 w$ ?' C, `/ k$ Z
  71. }4 [7 m2 B$ E6 U8 j) v; e
  72. 2 R! x: _# a& M) v+ K# y1 s
  73. int main(), I' J9 M* A! ?0 j$ a# B+ m
  74. {
    & P' o4 K0 C$ Z
  75.         char c;
    ! y6 W( ?# z+ n" t: Z& W
  76.         int i, macs[6];+ q& b  A; S; m' E" J: W
  77.         unsigned char mac[6];
    8 s* s, {% l* C4 Q. s5 Q
  78.         unsigned char stbid[256];
    ' S, C! w' Z4 E2 W1 x4 Q$ |, S+ h

  79. 4 J9 j' w  ~8 H' _# n: D
  80.         if (readparam(mac, stbid) < 0)
    * P$ B5 {: N( _5 l. Z, C( m1 Z
  81.                 return 1;
    8 o+ u. U( R+ ^0 O0 F: V; a

  82. ( @; _7 O5 ^) a) |! I0 j; G
  83.         printf("Current parameters: \n");
    4 b/ R4 S8 O$ w8 a2 P# e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! \4 X. K5 S% E2 C# j
  85.         printf("  STBID: %s\n", stbid);
    2 ^5 [, u$ ~2 z2 A
  86.         0 }  j; V" [0 f$ O- t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 U. u$ V5 J; u- W  f( a% \1 g- [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 B+ l2 _" I8 R$ N. s1 P3 G
  89.                 printf("Input MAC error\n");
    , X7 ~! \8 I: g2 z# U& r0 W
  90.                 return 1;
    - g$ Y- q% L) G& C3 y# p7 K# b
  91.         }
    & f) u; i& U5 V" J4 c4 C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' O. G, m# z* |2 l5 S5 [2 n
  93.         printf("\nPlease input new STBID: ");
    ; T. m# b/ t  _* b
  94.         scanf("%s", stbid);
    6 C1 v# S0 w. Y
  95.         if (strlen(stbid) != 18) {; Q" t; v9 A9 f" z
  96.                 printf("Invalid stbid\n");
    - W$ D: W' X" X$ j% @* P4 F% Q
  97.                 return 1;
    , a- \4 N- @' B) K9 Q
  98.         }) r/ l. M/ ~% U" N: m, V: d5 |6 B; ^
  99.         printf("\nNew parameters: \n");
    % @9 t) n: z% D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 p3 ?5 }: j0 s% Q# `$ `/ `
  101.         printf("  STBID: %s\n", stbid);
    / o0 g; M" |% L# s/ F

  102. , Z: U& c" P" P7 m/ Z7 ]: S5 D# N
  103.         printf("\nDo you want to change paramemters? (y/N) ");* G' m" ^6 a* C2 y1 O/ F( `
  104.         for (;;) {$ Z0 K! o0 h, b8 F' j! ?
  105.                 c = getchar();
    : w! E' p9 Y4 I( ]0 ^
  106.                 if (c == 'y' || c == 'Y')
    2 J0 e! v+ F! _: N7 N0 x6 u
  107.                         break;
    7 }( E4 ^/ N/ `9 C+ T/ d/ @" X# t2 @
  108.                 if (c == 'n' || c == 'N') {* A! `! ]% f( o; B0 V
  109.                         printf("\nAborted.\n");- Q1 q, z* Z8 L+ L( l
  110.                         return 1;) r: I& c" q! P, U( H" P% f
  111.                 }
    6 ]0 T5 s+ b: y. @3 `0 T
  112.         }% \8 n) _/ R6 r% ^! W
  113.         if (writeparam(mac, stbid) == 0) 9 h# ]7 w( o; x) a: i" L& w
  114.                 printf("Parameters changed.\n");
    2 A, N6 v# ]% r$ r9 j. W7 {

  115. & k) p% c! R6 ?( i" v5 G$ J; x1 q' g
  116.         return 0;
    % d% q1 h5 B4 H
  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
# k/ m' v& v) A在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; k8 j8 f% v* p4 j) j你用的编译命令行格式是什么?
# l! Q- x+ i# r+ M3 _; ?
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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