查看: 16268|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 s; p. t1 {/ o- n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 E7 H2 q& X  J! R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, k! J% ?$ H+ F3 d; Nusage: himr <address> <value>. sample: himr 0x80040000 0x03 q) Y- p* C/ }. n

: z! |1 c3 @( e; X
' v" h8 d9 w3 p1 U+ u4 |不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 s; `& E6 }+ |3 L0 `1 Y( K1 Q7 k
  ~* v$ G( U3 |. G+ V7 X$ O3 F
补充内容 (2012-3-8 09:42):/ \% F! Y, J6 s. g8 B9 T  U
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; z0 v5 |) _+ g5 Y3 g2 q这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
9 A8 |2 O: C2 D8 I. m4 l4 K
3 U; n( [2 U9 j' p2 ehimr <address> <value>. sample: himr 0x80040000 0x0
4 g. x& `. v2 x$ E5 J  s) x6 @$ d' N; R( s3 N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 o% m: a. z$ Y. r/ l/ ?6 k
himr 0x80040000 0x00
# {, @, h; T9 k3 B) Q. [6 g, S) M" Nhimr 0x80040001 0x11
( j. }, c* s. [+ m  J/ }7 u& zhimr 0x80040002 0x22" r) ~4 Y) c1 \
himr 0x80040003 0x33' N! W( v  t0 f
himr 0x80040004 0x44
7 R' l/ z" D+ O9 d2 thimr 0x80040005 0x55! T8 t) T9 i1 [1 V. r' @

; p! t$ I$ H+ F4 a& k' o9 \9 `, Y9 vSN也是类似。: Y# ^, l0 I0 b  M9 ?
* e8 L* X; [/ a4 k
现在主要是,谁告诉我们MAC和SN的地址?3 _+ i% X2 o: d  n/ L
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # Y: K, b/ O2 a! o
一直想找到运程修改MAC和SN的办法,苦于无解啊
9 J$ k7 D6 {9 T9 |$ |2 ^7 V
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; f" k* `4 H3 B$ a- o0 C/ I- D; B9 ]: R" w
修改的代码早有了。到今天不会编译。2 u$ [: P# d4 m+ ~( d1 @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) z4 A# ]7 f4 d! h) ~# v
  2. #include <malloc.h>1 ^# l# z; Q! Z4 _6 o( E: L
  3. #include <sys/types.h>
    + N3 G! ~& o# d% h5 q! D! O
  4. #include <sys/stat.h>1 W( p6 S! |" t
  5. #include <sys/ioctl.h>9 A3 j  i/ b  R4 U
  6. #include <stdio.h>( {& S9 z7 A. R
  7. #include <string.h>
    & e! J& V' M( M0 @% q$ V5 H

  8.   ?2 z7 k& }0 X! \+ P
  9. typedef struct {& f$ `  ^1 W2 E2 U( N8 C8 Y
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 P# @, E3 V8 H( @. u
  11.         unsigned int        sub_addr_count;
    8 p) F5 ~9 `7 _1 l  q) M, \
  12.         unsigned char*        e2prom_cmd_data;1 H6 M  H3 |( Z+ ^
  13.         unsigned int        data_count;7 k) }5 H( X0 O; f7 k$ N0 i9 A
  14. } e2prom_s_cmd;
    - G$ }! U$ a. j- ]4 h
  15. : j9 ?* q8 W+ v- H
  16. #define E2PROM_CMD_READ 1
    ) _/ ^. J/ N# k2 B
  17. #define E2PROM_CMD_WRITE 20 d- o' }# M8 m, b' V2 c  k
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : H& r' ]- o# a

  19. ' c* \1 ?* z2 l' k5 }  b: J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 G7 @4 k7 q9 }. D' `
  21. {! p: o# T4 _- @/ s4 V
  22.         int fd, ret;0 o) F" g5 Y3 U5 X' w. F
  23.         e2prom_s_cmd arg;
    , O3 u8 u7 q- S# E7 g  B! j" u% t
  24.         unsigned char buf[0x18];/ t2 x4 X) d" [6 l% ?0 L; V
  25. " q/ L, K* L# V; }" a! n6 a# }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& }6 D8 [- F/ l' L5 c, v
  27.         if (fd  < 0) {
    + X( w. J2 [) x/ s2 {7 P: m& Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % h+ g# B. |0 {6 B
  29.                 return -1;
    5 o$ Q7 H' j# V) p; r; _7 v% G2 z
  30.         }5 B8 u) Z1 F, z! e+ b
  31.         arg.sub_addr_count      = 2;" {1 l5 h+ r( c1 N# v. r
  32.         arg.data_count          = 0x18;' k" c5 u: ~: k- U5 w* J
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! ^# _- {, i5 X
  34.         arg.e2prom_cmd_data     = buf;: {, I- c0 ]: n8 d# D- L1 `
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 D* l, O6 H3 D6 ]! o7 N
  36.         if (ret != 0) {
    * M/ `' F7 A6 @9 f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 T# D- K- X* d7 f- z. n
  38.                 return -1;: G4 y6 N6 j( B+ k
  39.         }
    5 y5 T+ W$ H& m3 y; J' A
  40.         memcpy(mac, buf, 6);1 u7 z3 N$ F5 b2 p  L  i# Q
  41.         memcpy(stbid, &buf[6], 18);
    6 ?, P) ^# D& e; e  h1 u
  42.         stbid[18] = '\0';
    : P" u9 q/ p7 |' ~* D# ~2 I
  43. / y1 {4 R  A9 E! Y) q& W" P, v
  44.         return 0;. r2 w: @6 F% f5 C& N* g' _
  45. }
    ' W0 ^4 W8 x  f) a$ x; t& E# S
  46. # n  Q5 c* b, s6 C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): K) t- f. y3 m( Z+ j9 ]3 o
  48. {! `( p2 L5 N/ \& C
  49.         int fd, ret;
    5 U& P/ x; U7 Y6 I
  50.         e2prom_s_cmd arg;
    ) f$ K- @: B# M( V* }2 `
  51.         unsigned char buf[0x18];6 P6 S6 f: T: s
  52. $ z; a+ Z, Y  K  R
  53.         memcpy(buf, mac, 6);  o4 O' h- w' K5 O
  54.         memcpy(&buf[6], stbid, 18);
    . z( p5 G1 H1 p  y8 h& i8 l( Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; F; F) \; p: |9 c
  56.         if (fd  < 0) {8 {& m  _5 j0 D/ a$ t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: j+ L& c: c% S
  58.                 return -1;) k. ]0 Y/ T# ^8 J; i
  59.         }
    0 r, N. Y4 b3 n2 s( u- ?5 I1 Q
  60.         arg.sub_addr_count      = 2;( k5 O% v4 M" S8 U7 C) X+ g
  61.         arg.data_count          = 0x18;8 n6 ^% O( [" R" ]4 g& [+ _: x
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : U$ J. C: \6 N* K4 _; `
  63.         arg.e2prom_cmd_data     = buf;
    ! R/ u1 P& t8 v  x; ^2 }
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) I5 Y+ v8 Y; `$ R
  65.         if (ret != 0) {
    $ n6 O( q1 \1 o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 t' L1 A6 Y" ~3 W  i1 z. T/ T
  67.                 return -1;3 B- U4 x9 q8 q% V
  68.         }" H6 E; f$ }0 m9 P5 E# t$ F+ ?, K  B

  69. / j7 e- i5 _. y
  70.         return 0;
      a! C: a  f* G+ |! O
  71. }; W4 u) b/ Q" K
  72. 1 D3 X7 W; Z( o: U. m  F# M8 `' _
  73. int main()
    ! _4 [$ p* G( c0 x3 e
  74. {* ]2 Z7 o+ L+ t- r
  75.         char c;0 `4 [6 q' c& F
  76.         int i, macs[6];
    ) Y+ ]% J$ t2 z: W$ {* j
  77.         unsigned char mac[6];% h1 @! W/ ~6 u# v2 H' O+ e
  78.         unsigned char stbid[256];
    5 X5 b: p8 ~8 w- O; `& b
  79. * s  b, I# V( P6 A% i! s) d
  80.         if (readparam(mac, stbid) < 0)- h0 S" U$ D/ k: K, }( m
  81.                 return 1;
    0 S" C: j* u  l" p# H/ }

  82. , C  X. _* }" ^
  83.         printf("Current parameters: \n");
    - P8 O; D( B7 U6 S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 `8 ~4 Q# ]# Z* }- ~
  85.         printf("  STBID: %s\n", stbid);: p0 f1 Q4 J' V% m( U2 \+ j; p
  86.        
    + K  ^; N) l- \) K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ b& D) v, w; q9 z" o% R# a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {/ t0 s- ~2 I/ @- R+ z+ ~8 K
  89.                 printf("Input MAC error\n");
    3 x  K6 b. f$ [5 `
  90.                 return 1;
    " ^" O! X9 X2 C: @
  91.         }( }5 g/ J3 `7 X  ~
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; @) x$ f' O+ z! Q& l$ F
  93.         printf("\nPlease input new STBID: ");) M; Q+ i/ g. T
  94.         scanf("%s", stbid);5 S( M% `+ L2 T. }0 t+ W0 [
  95.         if (strlen(stbid) != 18) {
    % e+ C$ a& B/ m. J
  96.                 printf("Invalid stbid\n");
    & _3 S# ^( m# L2 r7 D0 \4 k  C
  97.                 return 1;. |) T3 V4 f' o, P6 |. }
  98.         }' ~5 C) i( k& l% S
  99.         printf("\nNew parameters: \n");4 C+ V% L" z% q6 x: y* w. v' U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  L3 I) F9 @/ Y
  101.         printf("  STBID: %s\n", stbid);: J" A" n! |0 ]' {7 A# @! \8 o

  102. 9 d8 f- B; P7 H
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / B3 [& `) ]: J7 L% D% f# z
  104.         for (;;) {- U* A! F9 ~8 U, Z- _
  105.                 c = getchar();
    ; R" U' b- ]3 n1 p1 H- l
  106.                 if (c == 'y' || c == 'Y'), Z$ i* x# ]! ^; X' ?' g4 Q' K& Y# S
  107.                         break;
    , L# }" ^# ~; n3 k9 U
  108.                 if (c == 'n' || c == 'N') {- C. x+ x/ Y- w9 O2 j2 ^
  109.                         printf("\nAborted.\n");2 |( w% q/ ?1 F/ @
  110.                         return 1;) u; J$ B2 B# P% Q
  111.                 }
    2 d* _8 v- i- ?! g4 f
  112.         }
    8 n$ B. l6 @: x/ s1 k! g
  113.         if (writeparam(mac, stbid) == 0) 1 L3 U8 ?+ d1 l6 x1 l! q" [2 e# k
  114.                 printf("Parameters changed.\n");4 n5 v8 l& [6 P4 }9 a

  115. # ]! t! Z2 p+ t! A' ?- |+ h4 k, L$ z
  116.         return 0;
    & M+ F9 n$ h8 D
  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. p8 T, ~0 [1 ^3 g* W
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' c+ @# v  J9 f2 q$ e- d
你用的编译命令行格式是什么?4 h! {& [7 W, Y/ P
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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