查看: 16829|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ r$ t3 h  f- M0 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 ]0 f, f% e) c
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" Q# S4 H, I( Z5 g# G8 `* C
usage: himr <address> <value>. sample: himr 0x80040000 0x0
2 d" k4 R2 y4 o4 e* Q: s) G0 C3 _! w) {( O. l; B

. s" J0 A& l# c. H2 f; [  I不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 P% c1 A4 \7 F. y  `
$ ~. H& [5 @. f5 p& i/ F补充内容 (2012-3-8 09:42):
# r- l$ D% |# A# N6 Ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 b: N" s9 C3 b; H" @" o5 N9 t这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
$ E5 E" M* y" D, o. D7 B8 h1 n3 g7 V- R
himr <address> <value>. sample: himr 0x80040000 0x0( N9 O6 g+ v# A; o* o2 J4 s7 Z! _$ W: L
& H. s9 J" ]& S5 t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# S# n7 b1 Z" P9 t9 R
himr 0x80040000 0x003 I3 a8 W7 d  p' K( r: r* R
himr 0x80040001 0x11
- j! k' R2 `0 lhimr 0x80040002 0x22. [, @: k$ s+ [* D# j! B. e
himr 0x80040003 0x33
/ `& K  u! f6 ~himr 0x80040004 0x44, Y7 B& K. K$ x% I7 p* r
himr 0x80040005 0x55; H' V4 F. x" L4 J$ _3 e
/ R, N  n1 Q8 J) K. e, X
SN也是类似。
& u) }7 B* I- B
6 ^& q" W: g- T8 B' X% |3 m现在主要是,谁告诉我们MAC和SN的地址?
6 E! s: w/ U( b: l7 F( E
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. d) g" q" {- z7 C3 `一直想找到运程修改MAC和SN的办法,苦于无解啊
# k) y. E( E$ C1 G, N7 k( q' m
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 J1 \( d8 w7 [- T8 l( w  _1 Q4 z# s  r/ W
修改的代码早有了。到今天不会编译。3 r- B# a- a; @8 r
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: m& r4 u8 ]) A2 }( h
  2. #include <malloc.h>. Y0 m3 D  R3 w6 K* L# v
  3. #include <sys/types.h>, t: ?  Y# k* ]- y: J" t
  4. #include <sys/stat.h>3 N! E* W& w( x7 x' m6 @, H
  5. #include <sys/ioctl.h>
    % D8 S& t- z0 e+ U% w4 w* |5 i" G
  6. #include <stdio.h>. i" \3 z5 _$ S4 I/ Y" X
  7. #include <string.h>
    5 \9 [" d7 W1 r) ~! G: v) j
  8. % T, N% y) w/ ~( S7 @
  9. typedef struct {
    8 B- ^' K7 t4 w5 g
  10.         unsigned int        e2prom_cmd_sub_addr;3 q( W" Z9 ?" T0 C
  11.         unsigned int        sub_addr_count;
    / n5 {5 j- f6 r0 _
  12.         unsigned char*        e2prom_cmd_data;+ ^2 f1 A6 C, s
  13.         unsigned int        data_count;8 h) ^7 T) O/ Z8 j# W
  14. } e2prom_s_cmd;" `) J3 b0 n8 R4 l1 [& \1 `
  15. # ^# R; n- [& c9 s( R
  16. #define E2PROM_CMD_READ 1) [& w% R: G/ }) k4 u! W9 Q1 m
  17. #define E2PROM_CMD_WRITE 2! ~! M" l4 ?/ R. k
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* `- R+ ~" R- x+ E

  19. $ F2 e+ Q3 T! `5 j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% f6 C& B! b( g. K
  21. {
    ) P* i# }9 c# p: s' a. g8 c
  22.         int fd, ret;
    1 l, B4 p6 M) r, C* K3 o
  23.         e2prom_s_cmd arg;  @. s* G9 x* c5 P
  24.         unsigned char buf[0x18];
    $ R# x  k7 @5 m6 H

  25. 4 i; {$ Q8 g' A, L. E; J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 `. E1 z1 w6 k, }4 `3 P( u
  27.         if (fd  < 0) {/ A  y! ~) `: w! U+ [3 e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 G) C' K" O! [3 T! p9 D5 c. D% i
  29.                 return -1;
    % x3 k  ?. a+ @6 a" h. g% _$ ~
  30.         }
    4 e/ @( M) R- E6 R( n9 ^6 Y) O
  31.         arg.sub_addr_count      = 2;
    ; Y6 k+ J  b. O" c. }5 E
  32.         arg.data_count          = 0x18;
    0 \* ]$ f% l* g+ S' ^6 \
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' R! d1 @& I! q, J
  34.         arg.e2prom_cmd_data     = buf;3 n. _7 O6 I' N. J2 h
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 s8 t1 u% j4 P5 e: `2 c. P
  36.         if (ret != 0) {! N4 q9 {3 V/ @' M0 u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 }0 N( ^3 F3 Z% C" b. N% F% X
  38.                 return -1;3 Y: O( Z2 B2 z3 e4 d$ E5 x+ F
  39.         }
    ' i$ E# x: ~) e" Y
  40.         memcpy(mac, buf, 6);$ y% |8 y/ Z$ D5 H* R* f2 ?
  41.         memcpy(stbid, &buf[6], 18);6 V; ^# E" O, o' [$ r4 `3 m
  42.         stbid[18] = '\0';
    * h% `$ |' }! S- o
  43. ! }2 w/ n( A; f$ H* J1 K6 H) b
  44.         return 0;
    * w. B. M! e# k: D+ K
  45. }; ]& L3 Y- I1 T) a' c

  46. 2 x9 I/ R& y8 O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  |! l" R- [* l7 ~* c. z( z  u8 a; y
  48. {  |9 `! {$ _, r: d$ M) d; x
  49.         int fd, ret;
    / f  V1 G1 p3 [4 u: P
  50.         e2prom_s_cmd arg;& O  `: D2 E0 H" u. P/ ^! [% Z
  51.         unsigned char buf[0x18];; H* s  i9 P* J7 k% |# L' N7 G$ a

  52. " d2 d0 G9 K- j& G1 ^
  53.         memcpy(buf, mac, 6);
    & b( @9 |; B0 h5 F) j4 c
  54.         memcpy(&buf[6], stbid, 18);, E, Z* z8 [" t7 @: X  d
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. R# V! @! B9 x; M
  56.         if (fd  < 0) {
    2 e, d: s1 @& A- R5 a1 X# [
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! t7 z8 n- j, Q2 u3 G4 U# Q# G
  58.                 return -1;
    ( b3 d! J0 y4 @0 k$ F+ t; l) j% N1 |
  59.         }
    / p4 s# L$ P5 x6 g- x, |( N
  60.         arg.sub_addr_count      = 2;* R. i3 q" j/ Q  a
  61.         arg.data_count          = 0x18;* ^6 g7 M' m& j7 L9 b" g
  62.         arg.e2prom_cmd_sub_addr = 0x290;: m' x9 B2 Z* \
  63.         arg.e2prom_cmd_data     = buf;
    : r9 z: F9 O& m; {' n7 ]) S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 H3 k: c$ j/ k; `
  65.         if (ret != 0) {
    5 x# z& o1 X" Z( c3 l, a
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + c# O% D' c% O4 l, y' ^' L
  67.                 return -1;1 `1 B! }) o4 A( ]9 S
  68.         }
      p6 S' a) i& k) u, f2 [
  69. : L! I- A  U; H0 w+ c. X
  70.         return 0;$ e6 x; l  y+ M5 ~9 }2 K/ j
  71. }
    2 |6 S; x& h# b5 M

  72. & w4 ?: n( s% w% m- f
  73. int main()
    2 t* r5 L' F: s! h, c$ B- ^
  74. {9 N( b; F$ b) J. S3 B" d
  75.         char c;0 c7 f* h8 ]7 m; s) J# x" m
  76.         int i, macs[6];
    * l& P8 S; i; _3 D2 p1 L
  77.         unsigned char mac[6];) A, H, R' B! w8 b- ]) R4 g
  78.         unsigned char stbid[256];
    % V0 q& n1 I: t- d/ |* F6 H

  79. ( W5 E6 u2 h. s6 K3 ?) R. f
  80.         if (readparam(mac, stbid) < 0)% U- ^7 I1 B3 T: p
  81.                 return 1;2 ?: G. S' S" a6 }" N9 Y
  82. 9 z+ e" @; d, i3 K  i; J
  83.         printf("Current parameters: \n");  c8 _7 p6 d# L3 x: F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " Y3 ~! [, [$ m- k$ I
  85.         printf("  STBID: %s\n", stbid);, ^) s% f; R2 l- l4 c, w
  86.        
    6 A5 ]! e" H  M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * S9 \0 |8 e2 H4 f2 e# J
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 p: p! |& z5 s$ ], ~
  89.                 printf("Input MAC error\n");
    ( M8 M7 c" P& g  r
  90.                 return 1;
    0 A- p* k# \, w  B5 l
  91.         }
    9 M# a, w  r8 B# m4 D4 L3 j
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    7 e5 q- B$ @. k2 W$ U/ M, r, L# Q
  93.         printf("\nPlease input new STBID: ");
      o) j# K8 a5 w2 O7 B$ V
  94.         scanf("%s", stbid);
    ; p$ @5 U; r  W+ h/ j' Z' A3 v
  95.         if (strlen(stbid) != 18) {
    5 N4 I3 S  g$ f- x2 ^
  96.                 printf("Invalid stbid\n");
    1 ~- S" p/ l: l+ p- C2 q7 @) H
  97.                 return 1;& a4 c- B) [+ v7 ?( E& y0 p
  98.         }
    . q8 A% ~, r, t4 A+ t/ K
  99.         printf("\nNew parameters: \n");$ e% G1 ]; @3 v1 e$ a. E5 T' l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- ?. \! o8 K5 [# x& M1 h
  101.         printf("  STBID: %s\n", stbid);$ u3 W! W1 I, z$ i3 F3 K; q

  102. 4 r! |4 M/ T- @8 S: F* j! Z" O
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # ~/ v7 x. E1 ~. x* v2 v
  104.         for (;;) {3 j% f  w8 ]# y
  105.                 c = getchar();
    . a( N! ]9 n; O: y0 L; D; i' f
  106.                 if (c == 'y' || c == 'Y')
    9 S" z2 K# w% {1 x1 E" H
  107.                         break;
    2 m- }% ]! k5 U" t
  108.                 if (c == 'n' || c == 'N') {/ x! ?5 L. K5 k% C
  109.                         printf("\nAborted.\n");5 d: W/ d& b1 j: O) u9 V
  110.                         return 1;# O1 B0 L3 Z+ X( m
  111.                 }" P2 T' S. |  ~! u: V& V3 M
  112.         }
    , A0 m- B- z+ z0 S( U
  113.         if (writeparam(mac, stbid) == 0) # S9 o" l7 y/ x* P2 N$ x( Q
  114.                 printf("Parameters changed.\n");" K& M( i: v. e% D
  115.   V6 D9 v: |& y1 u7 y6 k& t
  116.         return 0;8 ~' R6 E1 m& z4 e" Y* E
  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
% }$ s' b) ~- }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 K2 O8 y5 m( h  d你用的编译命令行格式是什么?
9 V3 D; J. z/ x5 }$ m
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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