找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15417|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. V. }3 m, z& I# W. n* [
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig2 l- g: p. m' D7 N& w; ^2 n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 W; r! Z! Z, e& k
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# K8 }2 @; Q1 X8 c- q5 A; }6 P& x" I5 @/ R& F8 a6 f" U

  {" D" w2 b% X不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# _9 ]! q7 M" G* u
1 B- ^+ r8 x, ?: \# @; @6 j补充内容 (2012-3-8 09:42):
! a$ y) G- a0 M6 ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 E8 E% N& L3 b5 Z; R8 u5 w! x
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。/ E# a# x8 p" N1 Y
! @# u% p4 ^- N- A  e& _$ X
himr <address> <value>. sample: himr 0x80040000 0x0
" x+ F" \  a" R+ ~) J0 p4 P4 D* X6 o' K5 P
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 C5 B7 c% J; W) F8 B2 i6 hhimr 0x80040000 0x007 S% Y7 e/ M& D) C
himr 0x80040001 0x11. o5 I1 w, V$ S& J5 w5 m, G
himr 0x80040002 0x22. {  s' u) C  M0 v/ J6 S
himr 0x80040003 0x33
* g/ m& j$ H# c  [# Y" |+ O$ N1 Uhimr 0x80040004 0x44
! h7 b5 R* [7 C0 Ihimr 0x80040005 0x55
& ^8 [8 R6 w* }% U3 I' t" a& Y. ^: [3 G$ F
SN也是类似。
, r9 @9 f( C9 x9 n( W- a+ W7 F; A# u# w
现在主要是,谁告诉我们MAC和SN的地址?
& v) n/ ]1 ]+ U% i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 B8 Y& W' S- t( e( n$ [3 `  S# j+ M
一直想找到运程修改MAC和SN的办法,苦于无解啊
" _. E$ x, `4 q- O7 P$ H
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 g; {: X  W$ k9 Y2 o: ~4 S* {6 n- W1 ^; H! E! ]
修改的代码早有了。到今天不会编译。7 @$ C' ~; ~1 c1 H* \, d! G& a$ v
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ M! x2 @) `/ l
  2. #include <malloc.h>: C# a5 Q/ B1 ^( K
  3. #include <sys/types.h>* @! A4 \! W' o" I/ f
  4. #include <sys/stat.h>& }6 n- K' k9 }
  5. #include <sys/ioctl.h>% u1 Q0 s+ j& h- R
  6. #include <stdio.h>$ E0 F5 T% U- {4 V  Y* k
  7. #include <string.h>9 G4 j+ |. o* W" Z$ X6 Q

  8. 8 s! Y  ]1 ~8 _$ C
  9. typedef struct {
    3 R8 ]" v' v( B
  10.         unsigned int        e2prom_cmd_sub_addr;
    % P  F/ x: D1 l6 J5 e( H: e
  11.         unsigned int        sub_addr_count;. h. ~1 B& P: P8 s* S3 i: u
  12.         unsigned char*        e2prom_cmd_data;
    " I0 Q  q4 k. {3 x8 T9 V
  13.         unsigned int        data_count;, i; J- ], q, D5 f
  14. } e2prom_s_cmd;
    ) N# A( p1 ~& Q) c3 c

  15. $ X6 C9 x7 q: s8 }! }) E0 Q5 x
  16. #define E2PROM_CMD_READ 10 |- l+ ~: @0 S8 J3 K; P
  17. #define E2PROM_CMD_WRITE 2
    6 j) p. H) B1 c& H2 m" |5 }* X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ j( G' f1 y4 M5 y! @5 {2 O
  19. 6 W  n+ C: T! n/ J2 j, l7 |% Z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 i6 l! K% f8 _5 S
  21. {
    - J" d5 G& O) r$ j. a0 z
  22.         int fd, ret;
    . @7 W7 f" t  m! @$ Q
  23.         e2prom_s_cmd arg;
    $ p- \5 X2 R+ U2 I6 G$ i
  24.         unsigned char buf[0x18];
    2 }4 I2 [$ ]" ?8 [
  25. 3 E0 ^6 q  f- \; Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- e* e+ u# n2 y0 ?. ~, l
  27.         if (fd  < 0) {
    - |/ d0 j, i* E
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! M/ z7 K( a, ]# a4 y. S) j
  29.                 return -1;4 [# e, h! k+ x6 ~  P8 t# A
  30.         }1 ~% A) m! S+ B* |/ }
  31.         arg.sub_addr_count      = 2;
    3 o% T  o/ O' c; F/ o
  32.         arg.data_count          = 0x18;
    8 N' _$ Y1 ~& ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    . S' W$ r0 K+ _, U
  34.         arg.e2prom_cmd_data     = buf;* f+ h8 u, F4 x1 u: N, M3 ^
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 m" g# [- E+ P6 o! h
  36.         if (ret != 0) {2 D6 l" V4 C8 s/ t9 L# `3 D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: u; P$ @5 x: [) ~, e
  38.                 return -1;6 d( u! R* X' I" A
  39.         }
    ( Y( i4 K; m3 S% @- b
  40.         memcpy(mac, buf, 6);" m+ B; a9 y* U( R- _6 u/ H/ g' h+ G
  41.         memcpy(stbid, &buf[6], 18);2 c7 a0 |4 k, K. z$ j/ S1 X; Q
  42.         stbid[18] = '\0';- G) L7 p1 N2 `( p' E1 a  _

  43. , w* m9 T( r. @
  44.         return 0;4 O7 W* R( u. c: P0 O- S
  45. }1 F# _* W, Z+ K- b/ y4 H

  46. 3 W2 t* b: \( w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - G( t  S( W! D- L7 V+ {
  48. {
      V# N: s2 E& M5 y6 a
  49.         int fd, ret;
    4 s& }6 u6 F  E4 ?8 a6 S$ B
  50.         e2prom_s_cmd arg;
    1 O& s( \) d: {0 L$ m/ I
  51.         unsigned char buf[0x18];
    1 Y3 y6 w8 v" D- t8 i$ i2 `
  52. 0 a5 _* \% ]: B7 Q- n/ G; A. g
  53.         memcpy(buf, mac, 6);
    ( u! \$ b4 S9 L* E/ _" a5 ^
  54.         memcpy(&buf[6], stbid, 18);8 S0 D8 [8 U) `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 a' J3 J9 c1 Y, u0 X2 @
  56.         if (fd  < 0) {; \; a. N0 X) Y: W* i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* ~8 A, i8 V/ \- C
  58.                 return -1;1 z; a8 ~8 B- |$ ^# r
  59.         }0 ~' V- }9 v9 B6 p% M6 ?8 [
  60.         arg.sub_addr_count      = 2;! _. a& g/ ^. u; H7 ]/ s5 \" G; o
  61.         arg.data_count          = 0x18;
    - Q( E7 M5 \8 [! q( \) h
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( I: d7 I1 p, x' \
  63.         arg.e2prom_cmd_data     = buf;
    - J, l' F/ i& W3 s. x7 ]6 X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 Z. Y% ^% f- N' u) `+ E! [- F
  65.         if (ret != 0) {) L/ }3 w5 C/ H' N0 m: \2 `) O; H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 j$ O; N2 R! _+ C  n
  67.                 return -1;
    ) }/ p0 R( O2 \/ b4 `, \
  68.         }5 {+ G5 j" W" K" `) w1 m
  69. 6 T* M1 H, q! m0 ~2 S2 n
  70.         return 0;2 m( m, V: r. H: O: m
  71. }9 Y9 B$ a& s. y3 G9 e5 H& {  b

  72. ) ?/ `6 D1 y, X& \% K. x
  73. int main()
    8 @& c: n' x" P) t& v0 F
  74. {
    - I' e6 m1 O' ]" E" j/ n
  75.         char c;4 P" G8 u7 o9 K% M3 a/ e
  76.         int i, macs[6];" m$ y- u) B6 u6 l
  77.         unsigned char mac[6];. v1 M! U. I; t! j! p* T
  78.         unsigned char stbid[256];* e7 y7 F$ H2 z- |! O
  79. 9 o9 r) k. j. Y9 x+ j. s2 q
  80.         if (readparam(mac, stbid) < 0)
    - k! Q  C) \  g* a4 u! Q$ r9 I& Y
  81.                 return 1;9 E, p" z' A( L3 y
  82. 4 b- B8 K4 r9 [+ I: F2 g5 n$ p
  83.         printf("Current parameters: \n");
    3 J& r: n% M2 q: K, m+ v" O1 W
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! R+ Y5 o. H% I7 g3 q# N  x$ }* ]
  85.         printf("  STBID: %s\n", stbid);+ ?) s# [0 C. V- t* Q1 g
  86.        
    ) C# I  K9 O2 X  Y& f( D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# V+ G; U4 H! V' y1 s4 [) z0 ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : W0 b5 l' I3 O7 c
  89.                 printf("Input MAC error\n");  B- K# u% ^/ F/ `; g3 L5 }
  90.                 return 1;5 e0 V7 Z+ n$ x8 {! L4 e* L- n: l" X9 X
  91.         }
    . B& X* p9 j1 t* G' j0 w
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 ?$ j* h0 H+ P$ W/ g  p
  93.         printf("\nPlease input new STBID: ");
    4 p- v; c# B; K. I* {. [
  94.         scanf("%s", stbid);! a5 k4 A$ Q3 {# n, L2 V8 }6 b
  95.         if (strlen(stbid) != 18) {6 ?3 s, O' K# P- K
  96.                 printf("Invalid stbid\n");" j% v: ]. ?  E- }; w
  97.                 return 1;
    ' o9 D: ~7 Z6 @9 s# a. _
  98.         }
    9 S$ `3 d. s( V: J+ `
  99.         printf("\nNew parameters: \n");0 l7 K: X2 s. T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; w0 T& c2 @4 `2 t- Y
  101.         printf("  STBID: %s\n", stbid);
    + n& ]+ J6 h' p3 w* V& O
  102. ) Y* n/ X! L* s4 n8 [* i
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; ?4 n& c; L# U" `, Z5 K: O
  104.         for (;;) {
    & D9 R0 \) h4 w) b7 M$ }
  105.                 c = getchar();" f% c+ d8 R- e1 z5 k& t- Z5 Q
  106.                 if (c == 'y' || c == 'Y')
    : y/ N( b' ^' C  N, h0 k2 q, x
  107.                         break;5 a. \  B8 e$ j
  108.                 if (c == 'n' || c == 'N') {$ K1 `  z/ w( @
  109.                         printf("\nAborted.\n");$ g1 \; |* I0 L7 I8 S: v" i
  110.                         return 1;
    ' p2 _3 C/ R3 v( Q
  111.                 }
    8 n% u$ p8 \3 D. w/ [) v+ u
  112.         }2 U6 e& K1 i; L  x) D
  113.         if (writeparam(mac, stbid) == 0) / ?5 H; \! G! A8 i2 k1 r& A" m
  114.                 printf("Parameters changed.\n");. J; v4 N$ j& \& d& J

  115. + |; n% A% D# {
  116.         return 0;! e4 B1 A# N% l9 Z
  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   V% w" o  Y0 u2 P; ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 {9 n3 b+ U- ^" V. H$ m
你用的编译命令行格式是什么?. d3 M9 u, g* F7 S5 v8 |; _. L
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-3 17:59 , Processed in 0.023691 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表