查看: 17748|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * R0 D$ m6 n, O! j  z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & J3 S8 @1 |0 b: q! F& y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' U0 H# Z# K( q- M- q+ Q3 t6 W  d- K! L
usage: himr <address> <value>. sample: himr 0x80040000 0x05 y5 ]* q2 @0 j9 s9 n6 X

6 Y1 J  l; _' {  h- r: Y; s
/ B* h" q$ q3 J/ [8 q$ t- c3 J; v不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. A4 t1 M" {& s0 n: W1 Q8 g

- M9 ]2 J: i" u1 L( w6 @, b% V+ n补充内容 (2012-3-8 09:42):+ u: ]# V! M& x! c* f# j
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数& s7 l6 ]& v! T  }4 e9 l: W
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
' T9 P  o& U- W! y2 L( }& d$ M1 ~. p2 p$ U, s( K& a  o
himr <address> <value>. sample: himr 0x80040000 0x0: s' m+ K6 E4 M& G% ]; C' M

7 h  g$ y  a1 T+ K+ j& F1 c例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( J' a8 a% X2 F- l7 q# u  Bhimr 0x80040000 0x00
  o& \( U) \# V+ ~+ [himr 0x80040001 0x119 d( j# d% O( j! ~: g: D
himr 0x80040002 0x22
# V9 l- M$ V' D) _himr 0x80040003 0x33
+ g! |* ?& }# a) m; M8 H1 T& Fhimr 0x80040004 0x44
& @* ]; a& c! r& c' B' ehimr 0x80040005 0x55
( A% ^9 O/ H0 k: B/ x5 p: a4 o( P% w; _7 ~( K1 l" h
SN也是类似。- f* f. R/ @6 _) X% w; `2 y

  }1 x5 c1 Z9 u/ C9 a" Y, W现在主要是,谁告诉我们MAC和SN的地址?
+ K. {7 Z3 s* i% W
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / i$ O0 |2 J, M( |9 u
一直想找到运程修改MAC和SN的办法,苦于无解啊
8 q& J! j# T. o% N3 G
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 m; i! J$ a, H$ A
4 a+ b# c& k+ J/ h修改的代码早有了。到今天不会编译。7 h1 g3 z7 n6 h; _$ `2 w, s
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) n+ V. }4 D9 c* j9 |" {' A
  2. #include <malloc.h>
    ) F  ~9 s2 j7 D
  3. #include <sys/types.h>
    % o5 F  |6 [+ g
  4. #include <sys/stat.h>
    - |# U" B: L" t
  5. #include <sys/ioctl.h>9 o* G0 p! i2 p0 n- P9 E! ~! Z
  6. #include <stdio.h>
    3 e+ H4 U% C6 _: d
  7. #include <string.h>
    2 R5 Q2 k1 W- a; G* p* K7 B
  8. " c/ H6 q: H; y4 R( j4 T" R
  9. typedef struct {
    ! S0 a; W' j( Y( _+ D9 S+ o
  10.         unsigned int        e2prom_cmd_sub_addr;) G; {) p1 ^; K' h/ z
  11.         unsigned int        sub_addr_count;' t  C, n' W; r' N: X, o. M8 @5 y
  12.         unsigned char*        e2prom_cmd_data;
    ) o' B. X9 k; ^3 Y& U7 k, q
  13.         unsigned int        data_count;  @- U4 p; e' C+ x( i% c: S
  14. } e2prom_s_cmd;
    / a# P: I7 H3 `% ]1 a7 ?5 B8 {2 t
  15. ; Z' d( g! r0 ?
  16. #define E2PROM_CMD_READ 11 D* `# R1 v( f4 E1 N2 @5 X
  17. #define E2PROM_CMD_WRITE 2
    4 z- y  J9 U9 u& V2 W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' {& \& \' N: D2 ?

  19. # B* F& j# v' D) p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 T  R( q* U# W0 N
  21. {
    ) s/ h# L7 u$ A' F
  22.         int fd, ret;
    + I( I& f- f0 c
  23.         e2prom_s_cmd arg;) Q5 E# J0 ]# Q$ N. j% l
  24.         unsigned char buf[0x18];
    9 e+ m. T, K# ^- x

  25. : r$ r4 V: R1 u& Z% u2 Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . x' ?1 t8 q& h" t* r" k$ [$ h( q
  27.         if (fd  < 0) {
    9 s+ @! _5 m: m' i; I4 p, z2 k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! P  p8 G2 U* E2 ?) F& h1 m/ W6 ]- N
  29.                 return -1;9 i% T/ y" i0 x) C6 q: l
  30.         }( B4 c( N% q9 A& F: H6 ]2 }
  31.         arg.sub_addr_count      = 2;: e7 g6 ^; {8 I, H0 h4 e  ~* b
  32.         arg.data_count          = 0x18;
    : S2 C1 v+ o. E
  33.         arg.e2prom_cmd_sub_addr = 0x290;; G4 @% |" _& {! q1 u, a; L
  34.         arg.e2prom_cmd_data     = buf;2 r/ `5 K% @6 h% ?1 w6 ~
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 @0 A" j/ U2 D' \/ X7 v
  36.         if (ret != 0) {
    9 V+ x& }* Z  \) [0 @
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : |+ X! u: a1 \9 J: M. t  K
  38.                 return -1;
    " t: }& z( `' d+ E) L' m
  39.         }
    % e: m: S+ |( |4 i" u! k, i
  40.         memcpy(mac, buf, 6);" _: h9 z* y1 F! j
  41.         memcpy(stbid, &buf[6], 18);! X: ]: ~, z/ w: S& d
  42.         stbid[18] = '\0';
    * t7 `( b5 ?: E3 o6 }! O3 @0 i
  43.   x2 u. y  R" p- Q5 A
  44.         return 0;3 Z; p; z6 `5 w( g" p
  45. }7 K( H: f. m# v9 G% H
  46. ) i3 i* }, r: G4 N/ K4 C/ B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid); G; n$ G- P8 ~# {$ }
  48. {. s1 Z! X" D" b  u
  49.         int fd, ret;
    # e0 u' i' n+ q2 K3 {
  50.         e2prom_s_cmd arg;
    9 E& L3 g* C2 H: m% g! }8 Q1 j
  51.         unsigned char buf[0x18];
    ( y  I4 a$ k. E  V2 m5 Q8 ?; }
  52. ; J" }8 |' `/ N6 O/ d
  53.         memcpy(buf, mac, 6);
    1 {9 [4 W, x  `, B" {) f
  54.         memcpy(&buf[6], stbid, 18);
    6 s8 q$ o  g1 Q  v
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# J# H% L1 @) Y$ T
  56.         if (fd  < 0) {
    " H7 _( V/ D- ?# I( Y; s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 r2 L- ?" Z. t4 G- _# c
  58.                 return -1;
    ( q1 e4 j/ R4 V" Q
  59.         }
    + H% D" |5 r+ N2 p3 L' K/ q6 i
  60.         arg.sub_addr_count      = 2;$ K& G" u' D9 U7 j
  61.         arg.data_count          = 0x18;
    7 ?' G# r# {3 N* l+ |  G
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 u- ?  N& _! p9 E
  63.         arg.e2prom_cmd_data     = buf;
    $ |1 U% B' W* ]4 y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 n& }! Q% i/ ]. A) t2 I
  65.         if (ret != 0) {
    4 n/ h6 c# w0 C/ e
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# k0 ?# P7 W5 c  I) T
  67.                 return -1;
    ; y$ o# T0 E7 R3 _
  68.         }2 R% X, e: E; x4 S" p' C
  69. ) u% o' X9 L" |7 A/ p
  70.         return 0;8 H# v9 K4 c* A: T7 B& M
  71. }) a" ]2 r9 W+ L# n* I  v

  72. ; N7 l  \3 I5 ]( Y+ M* J
  73. int main()* e5 @) [0 W# a
  74. {
    2 L6 V/ O+ k6 ]0 W& K
  75.         char c;# H* a9 G! X7 b  @& j/ ^
  76.         int i, macs[6];
    6 \/ s6 X7 W4 }# w2 E3 l% M
  77.         unsigned char mac[6];( t/ v5 y; h3 y3 p4 B
  78.         unsigned char stbid[256];
    0 H" o) E( d$ Q: r+ z4 R# x
  79. , ~- Y- i' S. C
  80.         if (readparam(mac, stbid) < 0)/ e1 f; A" L- j( N
  81.                 return 1;, V( q) E$ G. m' z3 P# r+ Y( D( ]) M
  82. 4 c, C# C. H$ Z3 L+ O8 d
  83.         printf("Current parameters: \n");2 u' |, i, L' B; @) o( L! J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! z* M% \2 k# H, k8 `
  85.         printf("  STBID: %s\n", stbid);
    5 h8 K# K; l4 j! D7 }' o
  86.         % w  M& r- B2 }  O3 T2 W- x$ Y# b9 A+ g! y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 J( ?% |! Q$ C% V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( {- k8 _- O9 Z
  89.                 printf("Input MAC error\n");5 u6 B) A5 M: D4 n  \* r" k
  90.                 return 1;. U+ Y6 l1 t  Z+ I
  91.         }; h: S( {- j# f7 K0 ~0 y& I+ V5 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * Y! G: P: M* G* E* y+ ]8 S0 X
  93.         printf("\nPlease input new STBID: ");
    " P2 `# W8 I, |3 P1 l$ Z7 t
  94.         scanf("%s", stbid);
    , y) }3 w8 {: n7 s& u5 r& y7 h
  95.         if (strlen(stbid) != 18) {
    $ `+ m% d0 o% h" B6 n) F$ i
  96.                 printf("Invalid stbid\n");
    8 Y' y1 m6 j  N" ~
  97.                 return 1;% j) F% g0 g! @4 t% X
  98.         }
    3 Q7 h3 |( c4 b! c3 h
  99.         printf("\nNew parameters: \n");9 _8 y& ^# J2 E/ G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 s0 }, N+ T5 a1 o6 A& ^$ j
  101.         printf("  STBID: %s\n", stbid);
    * N6 Z) O* J6 }0 j. L, d
  102. 5 z9 B6 K0 L2 z3 C. `
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % q% H; ~) ~6 h' m8 z4 B1 v
  104.         for (;;) {
    9 R, J7 ~/ ~9 G- ^' w: ^' u2 c
  105.                 c = getchar();
    2 F. p5 \6 X, W0 C; }8 ?  r
  106.                 if (c == 'y' || c == 'Y')( {# }: c% Q% m  [* ~. t2 Z: @
  107.                         break;
    ' ~7 S) d% ^  ~8 A, [, g6 C6 \
  108.                 if (c == 'n' || c == 'N') {
    2 B; Q( f6 i# N. H1 x; s& f% v# |. s
  109.                         printf("\nAborted.\n");& ^; S+ \& X6 l! H! \  j5 g
  110.                         return 1;. i' W4 \. D1 w3 O
  111.                 }3 \& p* I- U' o
  112.         }# G, x: ^& v7 W* v
  113.         if (writeparam(mac, stbid) == 0)
    5 K2 H+ P$ M3 ]6 V3 c8 u8 p
  114.                 printf("Parameters changed.\n");
    * ~: F4 }. }. m! B! J

  115. + c$ k5 S! _$ M; r/ w' W# Y
  116.         return 0;/ l3 A6 o, r% Q% d) E9 f; E* G) r
  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
9 x$ G% [9 `5 n: k9 B* {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! H6 I1 B1 u3 ?8 ~( a你用的编译命令行格式是什么?; c# g- Z0 z) U) o+ ?
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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