查看: 17565|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 [9 Q# M% `. i' b& v9 d# ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 I0 j% g0 I0 q3 b8 Z, c7 \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) v! E2 Y2 i$ q4 t
usage: himr <address> <value>. sample: himr 0x80040000 0x0
- c- Q- y8 H, U7 {% I
  N; A, p4 v' q: }4 _' d. k* B2 Q5 m% ]& _
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. W3 g# f+ F7 T) D$ H! m
3 x7 P5 J+ }- Q  _% C7 X- o* d7 U4 G( k
补充内容 (2012-3-8 09:42):$ F4 d4 K% b8 \
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: R& }% C' d$ E这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。0 J. s8 _2 D: x1 n, ], G4 b  a' l

! o. X0 U  c  I" }6 p' B1 P& Phimr <address> <value>. sample: himr 0x80040000 0x0
$ z( g! `2 Q1 }6 d+ W) Q' N
. R/ z' x6 [- r* D/ v+ }例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; e- A% {0 {' L/ _
himr 0x80040000 0x00
( n7 A& c- k2 N" P3 Mhimr 0x80040001 0x113 C% h8 |' O- ?1 a* w; Z
himr 0x80040002 0x22' ~. C  J5 T  L/ S7 ~8 k- @
himr 0x80040003 0x33
9 Z/ e. o. Z0 L) O' p# b$ o4 Shimr 0x80040004 0x44( S* v- C+ J0 o  T+ M) A0 T
himr 0x80040005 0x55
7 |( R% v. h$ J9 t! u4 ~- ?# P5 q2 b0 e
SN也是类似。
9 F+ i% V& D" O7 ^$ ~4 A
( ~* s! ?1 ?. O6 M现在主要是,谁告诉我们MAC和SN的地址?. l: |% M# {  p( i. x8 w8 h2 E
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- a. P! @; t; |5 g, e一直想找到运程修改MAC和SN的办法,苦于无解啊

- k5 S2 w% S+ H& m& ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. m3 D+ `6 k, `, J
1 b% t/ e8 N+ o& E修改的代码早有了。到今天不会编译。+ g' v. S, [& X& {0 K
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; U) H4 e2 U) L. o' Z
  2. #include <malloc.h>) H% G1 h; E5 t' C( `
  3. #include <sys/types.h>
    1 U$ M- g" |, U
  4. #include <sys/stat.h>
    & d7 \0 [! e+ |( i
  5. #include <sys/ioctl.h>, b' j2 a# b# X
  6. #include <stdio.h>
    / ~& m/ k6 Z# C
  7. #include <string.h>
    7 h3 G- Z8 ]  b& n- d* A
  8. 3 N; K  F6 i% O
  9. typedef struct {2 Y) w; h$ L- ?: m6 L
  10.         unsigned int        e2prom_cmd_sub_addr;8 i5 \0 S5 Q$ T
  11.         unsigned int        sub_addr_count;
    8 Y2 b7 p) \4 P/ `) q
  12.         unsigned char*        e2prom_cmd_data;
    0 ~- K4 W7 [1 P
  13.         unsigned int        data_count;$ ]) P! V' d$ q4 R  x. m
  14. } e2prom_s_cmd;: G. ^  w4 u! f4 ^, z( X
  15. 1 s' U( o" p( m+ C1 s
  16. #define E2PROM_CMD_READ 1/ h8 x% s+ h$ Z
  17. #define E2PROM_CMD_WRITE 2) n2 d1 b, X/ G3 l- \* S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 _) ~& X; M' @8 p; Q$ |1 j) v
  19. , d9 R7 L5 S. q8 o
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 c' }  c1 J5 e! k4 z! Y& \
  21. {
    5 T+ d' c/ ]( z: Z
  22.         int fd, ret;
    3 e+ @; v0 \+ I
  23.         e2prom_s_cmd arg;
    # Q' \" Z- {- V) S5 q* S% `
  24.         unsigned char buf[0x18];) y; X4 E; `8 Q5 W: s7 G  _2 P

  25. ! p) n) O- e0 W/ z1 F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 y/ l) V) m5 t% J0 K7 ~/ a0 m
  27.         if (fd  < 0) {% |# D! L1 {$ D0 V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 D% r: S! Q2 V0 d8 \
  29.                 return -1;
    1 L, ~$ a& T! u% r5 `
  30.         }3 G1 V3 K% _% e- v
  31.         arg.sub_addr_count      = 2;/ {% w. A  X" f7 M
  32.         arg.data_count          = 0x18;7 i8 n, o) u, C6 J9 T) ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / ?3 d: e1 {7 J3 B( v
  34.         arg.e2prom_cmd_data     = buf;
    % u" R" v4 q5 g  {3 ?. W; y9 t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ k# b4 {- |  ^* m, j
  36.         if (ret != 0) {
    / v8 }. n3 u9 e- I2 R( T; a; \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 _" x& _3 f# [0 K
  38.                 return -1;& i, N. ]1 k  N  f3 T6 O
  39.         }
    ) g( A- }# k9 x  i' g/ X
  40.         memcpy(mac, buf, 6);! A% u% A$ U7 O5 L' |
  41.         memcpy(stbid, &buf[6], 18);
    3 ?: a1 W# I! e
  42.         stbid[18] = '\0';
    3 c7 L. ?# F7 q# p* h: B

  43. ; R; G* ^0 ^2 x+ @
  44.         return 0;4 G+ g- l1 f' O6 k) e. t) f" u# p
  45. }
    2 ^4 c: c0 C4 a9 G
  46. 6 B4 o- C1 o5 ~' B& `( F  v* `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 {' h# k' M, ?. I
  48. {
    " {2 e' y9 ~% R' [" u
  49.         int fd, ret;7 m/ K/ p9 {% w& H& ]
  50.         e2prom_s_cmd arg;5 V: l! v" H9 I) E3 \+ U& l& Q& q
  51.         unsigned char buf[0x18];; @6 z& O% d8 n- o5 c. M
  52. " j" ?. y  b0 g* Y
  53.         memcpy(buf, mac, 6);
    6 r" n8 q# Q0 Q- ^5 ~
  54.         memcpy(&buf[6], stbid, 18);
    7 E* `! I% B- n# ~. V6 \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' p& |. ]8 ~$ ?6 n6 K0 ~( }
  56.         if (fd  < 0) {
    6 {' S: x  j* J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: k; i# s& g  H
  58.                 return -1;
    ; M) h( _) }* x, V" W
  59.         }
    1 _+ H! \% r; V8 \. L0 q* ^3 b
  60.         arg.sub_addr_count      = 2;
    8 M3 C9 e( q' i7 E0 [8 [
  61.         arg.data_count          = 0x18;
    , S- j- G1 J+ P3 c3 c) k8 }1 f
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 s9 u" Z) b% [: s' G# D9 F+ l8 Z
  63.         arg.e2prom_cmd_data     = buf;
    0 Z% U  e; w! G0 X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ a" z/ q7 s; }, m: c9 t7 N! i$ L
  65.         if (ret != 0) {( K( e  K3 R3 G+ `2 S/ }. g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! c! l) l; J; _
  67.                 return -1;$ Y9 J8 U( C# j9 |
  68.         }$ y4 n' a0 T: U

  69. 0 T; g0 R4 w- Z0 s' ^9 Z
  70.         return 0;
    % r% t- Y! y* z7 p; l4 @
  71. }2 C4 c5 \  W  u7 k  S

  72. 8 C. b$ f0 T, p3 L- {( m
  73. int main()
    2 t  _+ b2 O2 k3 d1 i2 c* k
  74. {2 e- l4 I6 I$ i2 z! u8 B
  75.         char c;5 E7 \' ^" W6 }( ~" Y" e7 h5 ]- |
  76.         int i, macs[6];
    # B2 B5 `& I/ r; K) L, W
  77.         unsigned char mac[6];* `& K4 A0 P, r2 k- j
  78.         unsigned char stbid[256];
    $ s) z) g) g3 B7 g7 o! c- S+ C
  79. $ m0 _0 N4 Q7 ^% P
  80.         if (readparam(mac, stbid) < 0). h2 l# S/ }9 H& D+ v# v& G
  81.                 return 1;
    ( O0 @' B* q- C9 l6 ?
  82. 4 Z+ Q; H% Z8 R. a3 S) K
  83.         printf("Current parameters: \n");
    / r+ P0 ?1 p- w8 t! T) _' k4 D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: m/ A/ [  v) n
  85.         printf("  STBID: %s\n", stbid);. f8 k5 [0 o9 U* V+ j
  86.         6 X8 ~: J5 x4 q9 ^; I/ p- i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' T( d. V$ F* K5 B$ C+ I: v" b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( E/ U# K6 c% A4 D; l
  89.                 printf("Input MAC error\n");% X! \: q% r2 z7 b2 n- O$ P) X8 _" H
  90.                 return 1;
    , i8 g- j) O. `/ V, q, Q
  91.         }  R4 a/ Y# R) H3 u* Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 p$ T% s! m$ R8 T' H
  93.         printf("\nPlease input new STBID: ");# H/ t9 |& y  S. P4 O
  94.         scanf("%s", stbid);
    * Q1 [1 ^7 O% T8 `- b$ w( t! Y2 U
  95.         if (strlen(stbid) != 18) {! l4 o9 A7 j+ k" ~; ?" L
  96.                 printf("Invalid stbid\n");- g5 e' Z& l! ^1 p% d1 x
  97.                 return 1;$ k. k! k+ t0 C0 L3 O
  98.         }7 X- _. S# c1 _6 \* {
  99.         printf("\nNew parameters: \n");
    : c+ F' d0 X1 Y. }  C% [; L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 {: J* L4 U' j
  101.         printf("  STBID: %s\n", stbid);
    6 {- c0 y" M4 F9 H3 v
  102. ! P5 b4 c, H! w! F& V  i
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 y3 O* f: g, O
  104.         for (;;) {* Q5 \) S& i/ y, H. j* P: r
  105.                 c = getchar();8 ]6 b; a' R& Z$ d* W, p
  106.                 if (c == 'y' || c == 'Y')
    9 i4 o# n- H& u+ c
  107.                         break;
    # M% `% N$ j  O; K
  108.                 if (c == 'n' || c == 'N') {  o: L1 Q: d4 `
  109.                         printf("\nAborted.\n");
    . H. v& l2 s: J' {, B  D
  110.                         return 1;# h3 X3 Z, ^+ ]9 b+ y, o$ w
  111.                 }; y9 V# E( N, h$ i$ J8 q
  112.         }3 t& b, H! s. i( W$ ^
  113.         if (writeparam(mac, stbid) == 0) 5 q- L) j5 F* H& R6 _' ]1 e1 @
  114.                 printf("Parameters changed.\n");
    7 E1 i. h8 U4 _* m) S( |
  115. 7 g. C+ x8 B! @( W. h
  116.         return 0;, _2 d! p" O! f1 f7 u' }$ |3 L
  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 ; ^$ T* t+ ?1 x5 F) @8 c
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! q$ q. C+ G$ ]' Q( L3 p
你用的编译命令行格式是什么?
* ^. w4 J  ]" T' u) ?* t2 E
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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