查看: 16882|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ ?2 N! G- |# Q! _" a0 @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - E, L! Z& ]. S7 Y: y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; V) K, _* q7 x) e! h& {usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 B! d7 j& y$ F! Q4 R
& [. m$ f4 \" X1 H, E# ^8 e
  I1 h" U3 N" H8 a7 w+ t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 I0 z: Q5 H) m1 i9 k, o2 f5 X+ x
' Q5 ^" M: _7 O( w补充内容 (2012-3-8 09:42):
3 ~" U. `/ [) f6 T* z  A' Vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ m1 J7 m5 \4 j) Y# X这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。7 b" P8 x/ ^9 m+ x8 a4 ~' R4 [
( d7 F3 ~* @" `) B$ t
himr <address> <value>. sample: himr 0x80040000 0x0. r2 _: R4 ?; {2 q/ u; D# x; h
, y  j" o! F+ x6 g7 ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 w/ E: e! b7 i: b5 Y2 @
himr 0x80040000 0x00
9 q2 w) {/ Y: [* q  B6 hhimr 0x80040001 0x11* w3 v% _0 g/ j
himr 0x80040002 0x22! P/ S- N6 H, P6 |. c! ~
himr 0x80040003 0x33
% T' R& T+ y/ O9 B/ Ihimr 0x80040004 0x44: X* o. C, V  i$ l! j$ r& G
himr 0x80040005 0x55
( I/ z/ `# k# Q1 @0 M: X7 N8 j6 E% d0 E; z8 `
SN也是类似。' b* @. M# \1 w* Q

- v! Q  K7 k4 Q! p9 E现在主要是,谁告诉我们MAC和SN的地址?
# q* b- b) F/ f3 B  ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 ~2 |) ?3 g0 g/ r: p" A8 K$ H7 x
一直想找到运程修改MAC和SN的办法,苦于无解啊

1 {( R) w3 S( l% l; [: C9 v  t* S) o源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 l9 ?  b2 k- ?5 X+ H/ O% S0 S, G0 M# m: M0 g) J
修改的代码早有了。到今天不会编译。
! [9 O+ q, K' z! ~, }需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 P# F2 P8 U/ T( {, c
  2. #include <malloc.h>" h( ]1 i1 L7 e. n+ r8 x" k( [( ?
  3. #include <sys/types.h>$ G) q+ n) P% A6 g+ n/ a/ L7 X
  4. #include <sys/stat.h>
    % t0 g3 s3 r, ~9 m5 K$ y+ e
  5. #include <sys/ioctl.h>
    / y' i5 m1 r- L# ~1 U5 G
  6. #include <stdio.h>7 k2 @( O: d8 S  _3 m9 Y
  7. #include <string.h>2 {$ S( A+ T; I

  8. 6 h% s! {7 O. C
  9. typedef struct {
    3 S8 G, E: s* Y$ t% {' E1 p
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! x' F3 Y0 v0 s9 _
  11.         unsigned int        sub_addr_count;
    , y+ Z. x4 k  K8 `. R
  12.         unsigned char*        e2prom_cmd_data;: y& @/ `; D- h; N; M
  13.         unsigned int        data_count;* T7 O3 f& _# s: h; c% J2 l8 @+ |
  14. } e2prom_s_cmd;
    ! |9 g9 w8 v- M3 x4 D. }. q3 x/ _

  15. " ]: s) o$ u/ c
  16. #define E2PROM_CMD_READ 1/ U, J- _$ p/ A' T
  17. #define E2PROM_CMD_WRITE 25 i8 d  R7 M' J+ T. g  S0 G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - ~2 |7 @6 x1 S% ?% [! U2 M
  19. ) W( g- m/ Y1 e# M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)* M) V4 p+ X7 H( P  O4 \
  21. {% a0 Y* @/ ^; @! K! f' p
  22.         int fd, ret;
    . p$ T) i# j: x3 X
  23.         e2prom_s_cmd arg;
    * t7 F8 V* J4 I* B9 ~
  24.         unsigned char buf[0x18];: ?$ z0 ?& C% I/ k

  25. " y9 b6 ]# Z% V. A/ |
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 q1 P9 S7 `- [' G! t
  27.         if (fd  < 0) {
    . q% A, g" P" Y# u8 U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ o# @! A; k/ I6 }! w
  29.                 return -1;
    ) _8 F  q: B/ c1 f4 I
  30.         }9 Y' C- V) d: `" Z  \7 U
  31.         arg.sub_addr_count      = 2;( \9 d+ \; {7 L1 v5 x* V  `5 [
  32.         arg.data_count          = 0x18;( j' V0 u  F; p. \9 A0 N! s
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & E; Y$ V4 i  L5 _+ \
  34.         arg.e2prom_cmd_data     = buf;
    # p3 `4 R% m! H0 A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % Y" a% z. r9 P1 k
  36.         if (ret != 0) {4 O6 @/ c9 ^7 N. B) L5 _) d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! g$ Q. I6 O/ ~$ D5 N8 L4 v! D8 T
  38.                 return -1;1 J2 H5 {6 x0 d, y; x9 V6 j5 Q! e
  39.         }
    3 a. \5 A, O( e1 C5 C. ~2 h! Q
  40.         memcpy(mac, buf, 6);5 s0 W) ^. r- I) G2 F, ~+ ^
  41.         memcpy(stbid, &buf[6], 18);
    9 e$ t' p2 N% o0 D
  42.         stbid[18] = '\0';
    0 w) l  j0 t7 B5 s, B/ _
  43. , g; u0 |9 ~6 l  d; m# c% G
  44.         return 0;5 b& x- P( h8 N( w
  45. }) R& E# z/ C  |, C; m

  46. % i( l2 c9 k) H& K* X: }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
      A  n9 J3 z0 ]" b! N0 G: o) B& Q3 G
  48. {
    $ b, c( m1 f6 l5 `0 e
  49.         int fd, ret;5 [3 s& Y, x0 C, M( B* q
  50.         e2prom_s_cmd arg;
    0 E1 M5 R# N/ j* c
  51.         unsigned char buf[0x18];
    8 L3 j! V: U1 j, C  c
  52. ! i6 m3 ]  P  L' |: _+ o5 W% B1 q
  53.         memcpy(buf, mac, 6);
    + n+ w5 C$ W, Q4 [
  54.         memcpy(&buf[6], stbid, 18);
    ( X8 a6 h: P- S( Z* \0 b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 h9 ]( L  V8 q; _6 W" e" R
  56.         if (fd  < 0) {& x" T) E' [: t! R) J/ i$ e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) K" N9 k% x: N' ]
  58.                 return -1;& Z9 F, S8 _8 {% j, t) w: x$ d
  59.         }5 D; a! Q0 G, {
  60.         arg.sub_addr_count      = 2;
    7 t* C/ n2 n+ Z/ U. ?
  61.         arg.data_count          = 0x18;# \8 e1 }& _5 }7 [
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 F) A0 D5 p6 \. m* W' w
  63.         arg.e2prom_cmd_data     = buf;
    4 P' h4 F% R8 C0 G* k% e
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 c+ r; V. a' q% s0 h9 b
  65.         if (ret != 0) {
      F% r# g# p5 `( T  {' D; n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* e+ W6 }( ]9 C2 u! Z$ |4 D
  67.                 return -1;# b5 F! G1 r9 |3 a" t& e1 F& Q
  68.         }
    1 `8 O4 J; i4 ?& P' m, C6 {! O# g

  69. , i/ b; Z4 B7 G& l. n
  70.         return 0;" @+ g. n3 H4 \1 s6 e
  71. }* ?/ S6 _( I* p0 A! S9 @8 K. m

  72. 0 e9 f0 `! C- ?7 ~
  73. int main()8 q6 R) ~% P+ a+ H
  74. {4 c9 T. r3 S4 K( ^/ ^
  75.         char c;1 W' a+ H0 C* u% ~; F& N
  76.         int i, macs[6];& C2 m' d  }; F
  77.         unsigned char mac[6];
    ' M2 k# j" k; S# Z$ V/ w' W
  78.         unsigned char stbid[256];& @% a2 K1 t: x1 B1 p$ I
  79. ) H$ M$ x3 x, {  {, b9 b
  80.         if (readparam(mac, stbid) < 0)
    4 ^' k; Z6 {5 m3 {# b% k+ f9 `
  81.                 return 1;/ Q3 o- I- g' {  f3 `
  82. 1 k" c8 k3 N* [0 F0 _$ o
  83.         printf("Current parameters: \n");
    # J; U- `' }+ L6 T. f7 `9 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# G% l! k) O  {" b- p
  85.         printf("  STBID: %s\n", stbid);
    & X# k6 [- a8 I% e. {9 g
  86.        
    / t* o+ r: T* X- Q/ y: F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# p3 X/ \1 i. q1 Q# K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 _# t8 d$ g2 o$ r- L
  89.                 printf("Input MAC error\n");
    3 K/ L+ @# @- g. |: B" E% {
  90.                 return 1;9 m, L8 S& u; E8 _' j& f  T( Q
  91.         }& N' @; L* R- O1 A4 T& G4 E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " l  g8 `2 O8 @$ {# E
  93.         printf("\nPlease input new STBID: ");) B3 a1 I$ H" i
  94.         scanf("%s", stbid);) m) e& p3 p" R% v0 y
  95.         if (strlen(stbid) != 18) {  t1 U1 d7 y  F: V
  96.                 printf("Invalid stbid\n");
    + o* l  t6 P  q8 Q# r
  97.                 return 1;
    9 K8 I' v  n3 @, b
  98.         }
    ) X$ }: i9 k/ j1 V; A
  99.         printf("\nNew parameters: \n");1 c- c1 h8 O1 Z; Q/ p% s7 u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 A: p  I. w5 j. D( f! V
  101.         printf("  STBID: %s\n", stbid);8 v( u- K# {+ |# L- M
  102. 4 B8 c1 \2 w$ U' }0 T' A9 \
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . C$ T: F* v8 }" d" D
  104.         for (;;) {: ]+ V# z% t/ i* ~5 a' s1 U
  105.                 c = getchar();  S+ K2 S8 F9 a
  106.                 if (c == 'y' || c == 'Y')
    ) Y8 j) u: y5 N: M4 a
  107.                         break;8 I) C5 `/ Q. G
  108.                 if (c == 'n' || c == 'N') {% K9 c& `9 j0 [: ^
  109.                         printf("\nAborted.\n");
    2 w+ z# H. J6 x2 b8 e5 O; @9 a3 @8 ^
  110.                         return 1;3 P+ w. Y* S( @
  111.                 }
    0 o* [3 u+ n3 |1 T' b  @: F2 `) T
  112.         }
    ( y& S! b7 Q' _# C
  113.         if (writeparam(mac, stbid) == 0) 0 {7 l" J8 X' _" R+ V2 U; w
  114.                 printf("Parameters changed.\n");
    # Z- ^* c6 y. `( a
  115.   k* t3 c6 a# `) x$ w
  116.         return 0;: J& a2 w& c( j' h# Y
  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
) z9 E! |" S% Y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 l5 B) y6 |3 s5 w& @+ s你用的编译命令行格式是什么?
  e, ~! J& k" P% Q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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