查看: 15909|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: ]1 f' j9 j! v! ~0 `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 n- V( M% b" [# R& A7 X
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ m2 \# \" S' m0 V6 R0 H  I
usage: himr <address> <value>. sample: himr 0x80040000 0x00 _6 ?' W+ }7 K! U7 d) _

: W1 p6 y& B2 N" k3 m# |
1 F7 |4 y+ i, x$ |) z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
" ?: x' s- S# f) Z# Q, K+ j' a: }
+ z: p  b% u, l补充内容 (2012-3-8 09:42):
2 ~1 ~& `& `2 u* d, o5 L( ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数/ J: p! e+ A& {- J
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! m' e; e7 R# W4 L7 L, |& p& |
! I' N9 b. V9 o* C- ~6 G
himr <address> <value>. sample: himr 0x80040000 0x08 ?5 B7 v( K, W$ ]
( s; a: E$ }4 y6 R( m) G' s: ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 {: m+ P3 r) f& n0 e# d% V" h' n- Qhimr 0x80040000 0x00) c6 k6 Y! ?& f) H4 Q
himr 0x80040001 0x11! T1 I: @4 A0 W$ d2 X4 L# N6 g" U" {
himr 0x80040002 0x22
/ B9 I4 {% r. _6 d, k& @. \7 @himr 0x80040003 0x33( O! S; M5 p( [1 p4 ]0 G( H# ?
himr 0x80040004 0x44
' i6 m- s7 r/ X9 Z1 b1 khimr 0x80040005 0x55
* h; |4 L" \; I" o2 T2 y( ]# l* q
" y1 e# x1 e2 vSN也是类似。
" P/ B0 A1 U# Y8 j) E! T$ M0 W9 W! v! `4 ?3 f: k1 L
现在主要是,谁告诉我们MAC和SN的地址?0 }4 u3 r, B3 R- b4 B" `
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   Y8 T% @8 n% S; W
一直想找到运程修改MAC和SN的办法,苦于无解啊

; f7 G+ j# g3 f源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; u1 p9 |" ]4 Q6 j# q: Q; Y
8 `2 e5 A# I: f5 C9 F% A( [8 R$ i修改的代码早有了。到今天不会编译。
; j" R% `4 R8 o- F( c需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 N) T# M5 J- H  S6 ?
  2. #include <malloc.h>
    8 C0 o# `: @" r  h  \
  3. #include <sys/types.h>5 J* d& p- ~# e; [7 Y; S4 k
  4. #include <sys/stat.h>
    ( b9 H6 c% O/ w9 f7 p( n
  5. #include <sys/ioctl.h>
    ' C. z! ~  U5 }
  6. #include <stdio.h>) ]) W% i! ^* k( Q* E' y5 ^# f& u
  7. #include <string.h>
    & ]9 ~/ W/ I$ K1 b
  8. & U  D2 l3 g5 C/ d) c: P: M$ _
  9. typedef struct {
    ( ]: Q5 u9 q2 Z4 G; V# T1 l
  10.         unsigned int        e2prom_cmd_sub_addr;' ^& H: ^8 _+ S: @7 I
  11.         unsigned int        sub_addr_count;
    1 ^' m1 K4 m5 _& P% w
  12.         unsigned char*        e2prom_cmd_data;
    % d: p& C: Y- R- f8 H6 _) i1 p: ~# b
  13.         unsigned int        data_count;5 ?) |2 K" S4 w& E# ~& I1 U
  14. } e2prom_s_cmd;
    ; Y6 u# S& k5 V% c
  15. 8 ?3 T/ r: Y+ t
  16. #define E2PROM_CMD_READ 1+ P2 M. B- s( U% q# ~& ~
  17. #define E2PROM_CMD_WRITE 2
    " n% I" p" L+ \, l/ `0 Z. m0 s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ D2 i* @2 m% @# I; [
  19. : O8 G/ |& B3 [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! y- w9 c- A2 n( c" R0 k5 r/ R
  21. {
    ) p: i9 K3 Z- G, q0 E0 h" Q
  22.         int fd, ret;
    & u' o' E- x7 e0 U5 ^  S
  23.         e2prom_s_cmd arg;2 g# g9 b8 \0 p0 i$ e& L
  24.         unsigned char buf[0x18];
    8 z# f' T+ |- ]9 f

  25. ; _7 k7 k: c  g' x* |  k, V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! K9 A1 I3 h( L6 F* s0 d" u2 a
  27.         if (fd  < 0) {
    7 T; E9 Q  h# @, t$ z2 D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% \' _) v; B) K3 }
  29.                 return -1;
    * J+ T4 j; }! G6 ]- w" }0 X
  30.         }
      `. z: K$ ^0 R# f& C
  31.         arg.sub_addr_count      = 2;
    : \: V" y8 R# [3 T3 ?: I
  32.         arg.data_count          = 0x18;
    ( p7 {! [/ q6 y5 k
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 T; `5 w. O7 F$ T" z: n
  34.         arg.e2prom_cmd_data     = buf;
    * o% k) k3 t0 @$ p0 R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 n3 {4 u8 @4 N) m# h
  36.         if (ret != 0) {  K" `0 V$ e6 N
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& w, v* y* y7 M' d0 @, `' x" y2 Z
  38.                 return -1;
    5 Z: H$ O" m  \5 R5 l3 G
  39.         }# a! E7 c0 O: M" Y7 M! x! V  v
  40.         memcpy(mac, buf, 6);0 t! B; \/ R! U+ y" N8 ^  y
  41.         memcpy(stbid, &buf[6], 18);. m8 }5 f; r* K5 D( P+ M5 }, Q6 p
  42.         stbid[18] = '\0';; f/ h* V. j+ P" q* V
  43. % E- C; Y! e! {9 q2 Z5 A+ N( D
  44.         return 0;$ b3 A& L% T7 I4 C/ |
  45. }! X. N* I  h5 d3 Q' j) U# S# f

  46. - L2 W6 b& Y& s2 r2 t! Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 L5 k$ }. k/ w. x; o& }/ x
  48. {
    & a% ^$ `$ w, G2 J/ |
  49.         int fd, ret;
    / m! k+ a2 @- U* H# H
  50.         e2prom_s_cmd arg;( u; l: F& K1 y) {0 a+ K: Q+ r
  51.         unsigned char buf[0x18];2 v3 P6 e8 b7 t4 ?7 Y( D6 S1 g
  52. , t6 H! W# c. w" I6 l. |- G( G
  53.         memcpy(buf, mac, 6);# R. r: r# U/ t6 Y
  54.         memcpy(&buf[6], stbid, 18);; {/ y4 G; P. x/ d* c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! H' E0 c3 [! o
  56.         if (fd  < 0) {: w9 Q+ [- K( r3 ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ n) x, w/ X7 w3 ]1 Y$ v5 A8 _7 T
  58.                 return -1;
    1 u/ Z4 D3 S; L0 Y. E
  59.         }
    + U2 ?' r8 ~& U5 _4 S7 |8 S
  60.         arg.sub_addr_count      = 2;" D9 [, G3 T  I5 }* N4 k
  61.         arg.data_count          = 0x18;
    + v# e4 V. q5 e& g2 k! ]- D# H
  62.         arg.e2prom_cmd_sub_addr = 0x290;. X/ x3 W1 `% w  Y( E- d$ H2 N
  63.         arg.e2prom_cmd_data     = buf;9 _7 m: n5 l6 O& W$ _* Q& |4 q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 f8 ]  c: ]8 p. d: k
  65.         if (ret != 0) {7 s1 \) ^+ |% s& l2 H+ r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * u! J7 a/ E; Q* X& y4 w9 e- `
  67.                 return -1;7 x5 I/ \- V- `% Z5 s6 H
  68.         }
    % @& Q2 H: W9 z* d
  69. 8 _. O" J9 f! c# E, ?2 g# L
  70.         return 0;( J2 N9 O# v  ~0 d/ N: `1 x9 B7 _; S
  71. }
    / f) w! z5 i- v/ t6 v+ X1 `

  72. ) M$ ]  U9 q4 a( P# E+ a
  73. int main(): ?1 v) C- x0 ]" L+ P
  74. {: [4 {$ M: p2 H% C0 t1 c4 k0 X
  75.         char c;
    ' P6 s* j5 U; W3 i2 d2 e
  76.         int i, macs[6];) U$ S) Y" q: k! E% T
  77.         unsigned char mac[6];4 h& a5 O: B+ O" v$ Y1 l, L. |
  78.         unsigned char stbid[256];/ Z+ C1 l- m8 x* l: [

  79. 9 C  X1 {4 p! j, w0 f$ P2 G7 M
  80.         if (readparam(mac, stbid) < 0)
    " M" V% v+ b: q- L
  81.                 return 1;# s1 r( w6 ?7 a$ I( ]

  82. 7 t4 Z( e8 p4 m6 i& T& M: p  ?5 r
  83.         printf("Current parameters: \n");7 L7 k7 |8 t6 X% J8 v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , k7 t; f$ X! y+ j) @
  85.         printf("  STBID: %s\n", stbid);& g! d% R$ |# M& [3 \) m
  86.         1 f' [8 F/ J; K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! F$ y: m; y/ K" v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; r6 d7 [6 S, ^. d# Y" s
  89.                 printf("Input MAC error\n");
    8 ^  o& }) I' u, [* h- m
  90.                 return 1;1 d; c; y" k9 x' a9 e
  91.         }
    , s3 f# m" K! T) a3 g- {( j
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , F( V! A" `# \7 I
  93.         printf("\nPlease input new STBID: ");
    $ p, b1 O3 t) X- Z
  94.         scanf("%s", stbid);2 x; s1 V/ Y6 c% W
  95.         if (strlen(stbid) != 18) {) t1 n$ x* v) o) U9 q
  96.                 printf("Invalid stbid\n");9 @& P- e: J1 @2 `
  97.                 return 1;/ K9 X% M- B; _" K
  98.         }7 J& ~! ]  x: z' C+ A" q8 v
  99.         printf("\nNew parameters: \n");1 J1 C( e7 E, p0 W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " g; _0 S" {% [$ U" k3 v4 U
  101.         printf("  STBID: %s\n", stbid);' _9 N) l; t4 e" ]/ f' k1 M$ ^
  102. , v3 ^* v2 h5 ]% }
  103.         printf("\nDo you want to change paramemters? (y/N) ");" E! y, j% |) l/ D5 B- I1 _
  104.         for (;;) {
    . m( n$ T' V" L! W9 ^6 q
  105.                 c = getchar();
    - z. _; Y, O6 a
  106.                 if (c == 'y' || c == 'Y')
    ) J5 a( T6 u" L6 f% I
  107.                         break;  R0 t  P2 Q/ I" I+ P3 y  _) ?
  108.                 if (c == 'n' || c == 'N') {
    6 p# H5 @- X. e2 }
  109.                         printf("\nAborted.\n");
    ' L9 S3 \+ q8 S& L; [+ y( t
  110.                         return 1;
    8 x! B8 J8 `9 i0 Z
  111.                 }
    ; R3 }4 Y% f( ^" v
  112.         }+ y# M/ z! r4 Q( a1 V$ v
  113.         if (writeparam(mac, stbid) == 0)
    9 K* ]0 r7 k& N, p) e9 ]1 J- d
  114.                 printf("Parameters changed.\n");
    ) B/ K& ~5 y# w
  115. $ E, c; h4 r# V, _0 x; [
  116.         return 0;( x3 U2 p- I- M" w7 Z( r) 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
  h& w* ]/ t; Y; B5 h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 ?5 i) N3 ]4 P你用的编译命令行格式是什么?  M" i* U* ~8 |. U8 @2 f% L
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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