查看: 15973|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      o0 Q8 |3 f( Z; [* [# w1 b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 X# `4 M4 e* L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' _& w- Z4 M( x- r
usage: himr <address> <value>. sample: himr 0x80040000 0x00 A9 Z( L% U. q" d' C' P( D6 {7 K' u

$ u( F7 e0 d! N0 v3 k& n; w8 a9 r; r0 u8 A
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 R: p+ c3 K1 s" X  V3 m, o& {0 _3 E" C& ^" ~9 \: B+ I+ i( Y5 T
补充内容 (2012-3-8 09:42):' \. b$ O( W- I% O; {
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 z2 M& q, q: R
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。% V1 u: s7 L, D' W4 Z, l5 }

3 T6 E5 H8 h' J2 {himr <address> <value>. sample: himr 0x80040000 0x0
  F/ d5 A. S3 t9 q' ?& Q" V+ [
: F9 s1 o* E1 P. U0 k8 F例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- p, N& i2 a$ u- q+ i
himr 0x80040000 0x00" y. h) J2 ?1 M1 a) C+ v
himr 0x80040001 0x11- f& C' c& z0 l/ {9 C* {2 @9 G
himr 0x80040002 0x22" Y" V- f, \4 [4 _  N
himr 0x80040003 0x33( m3 M0 e+ L+ ?0 n. X! r
himr 0x80040004 0x44( g0 n/ h6 _+ `% U
himr 0x80040005 0x55
3 k5 [% N1 e0 F1 X; e9 U' ]* ~2 w) a6 o' E. j
SN也是类似。. t9 j3 l8 N6 i6 o3 _& Q
+ K* P2 z. N) P* `6 C% I
现在主要是,谁告诉我们MAC和SN的地址?
3 R. _" w4 e. C. T$ i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " W7 G9 T9 X) F: L8 D: T# w
一直想找到运程修改MAC和SN的办法,苦于无解啊

; `- t# a, m) _+ Z- C- S源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ y7 z. k- N6 l) N' [7 N' N, J6 H* e9 q' w+ i
修改的代码早有了。到今天不会编译。
6 r! N9 X, e9 {) A3 ~9 M需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 \1 v. w3 h( N5 Y/ K
  2. #include <malloc.h>
      q  a6 G: S) e3 a3 f( z( z' B! h, z
  3. #include <sys/types.h>
    5 o: [8 _3 ?& F
  4. #include <sys/stat.h>
    3 S* _# M+ S7 u5 Z
  5. #include <sys/ioctl.h>
    : d% j! e$ l( {( }
  6. #include <stdio.h>2 g0 e2 {5 {+ j+ c" C  X
  7. #include <string.h>+ [% O. k; T" w6 M% l# i  e  e
  8. 5 p/ _9 t, H: z8 h; Z! i
  9. typedef struct {2 _' C$ A/ b! f3 n' h
  10.         unsigned int        e2prom_cmd_sub_addr;
    + b8 _; a0 D8 D5 ]( ~: _
  11.         unsigned int        sub_addr_count;# l1 ]( J" F: I/ n# S  s) X
  12.         unsigned char*        e2prom_cmd_data;3 H6 E7 m9 i7 B
  13.         unsigned int        data_count;3 ~9 i8 r" A4 p
  14. } e2prom_s_cmd;
    5 n9 ]& _7 b# |) R( a
  15. 0 _3 w6 l1 I' L# |- ^
  16. #define E2PROM_CMD_READ 1
    ( u8 L  F- k+ O' K) K9 i
  17. #define E2PROM_CMD_WRITE 2& a* h1 Y7 B. c7 E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' u$ V, E* W/ b9 W$ V

  19. 7 p8 T: R* |5 [5 w* V+ k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ ~+ b2 W/ y# s, m: b! S0 m1 d
  21. {
    % P  y! Q! a8 G/ b& t( o1 M
  22.         int fd, ret;6 M! k+ Z4 U3 I3 c, m
  23.         e2prom_s_cmd arg;" S$ @5 H! B: M$ b4 ]
  24.         unsigned char buf[0x18];
    3 Z! Z& s; M! v/ Z) |
  25. 7 G( J8 r3 X( j: Z* E. i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  B; a, j: }3 f, h: v& v* i
  27.         if (fd  < 0) {
    3 Y& Q" r: Z3 K% S4 R6 y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 [9 O% K. j1 ~' s
  29.                 return -1;
    " A# i8 e% l; H% @! u/ b
  30.         }9 J* |* ~. B! j! Z
  31.         arg.sub_addr_count      = 2;
    0 T  m4 v" p) g3 U3 a
  32.         arg.data_count          = 0x18;
    8 w$ I2 [) V" l7 t8 R  z$ K# z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    * ^! G) v& h( q! }' K; L* t" W
  34.         arg.e2prom_cmd_data     = buf;( I, U4 l1 O7 f/ a) v$ D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    5 H# ?& D4 T( R% n2 O/ c( p
  36.         if (ret != 0) {
    # I; c4 Q' }7 D9 n7 N$ B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ p! Y% I0 J" k2 ?
  38.                 return -1;
    2 z6 T: X1 M: A$ Q3 C# h( n
  39.         }3 g0 `: Z: ~. }; c# c/ u1 S
  40.         memcpy(mac, buf, 6);
    ; O* e# U8 C" G5 H
  41.         memcpy(stbid, &buf[6], 18);
    ; `& h- V( Y8 b0 B+ w: z' D
  42.         stbid[18] = '\0';+ M  I3 Y' ~$ I+ H4 e  l2 z

  43. ) b$ n0 K# q1 n" O. s& v, D
  44.         return 0;
    # S! S& I) U5 d& P& A
  45. }7 R; Z) g* I- n) t+ e3 r  }
  46. , M; E7 ^. ^0 y3 Y, ]7 j4 R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / [; r* Z$ J/ a, Y% D# [
  48. {! o4 `5 g3 j7 d+ W' ^( n$ I
  49.         int fd, ret;* B5 k! |5 x! F: F& B3 `! t
  50.         e2prom_s_cmd arg;
    ' D& O1 z+ G- ~" Q* @
  51.         unsigned char buf[0x18];* f% a' l5 f9 `5 [& Z- {5 s
  52. ; h, o0 h8 M6 t' _& _
  53.         memcpy(buf, mac, 6);+ E! m/ @7 d8 q+ u. p' W
  54.         memcpy(&buf[6], stbid, 18);/ d; O1 h9 K, C! {$ |( n8 }  n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 J- E$ f: v. U! c4 ^/ Y0 `
  56.         if (fd  < 0) {
    / J* e/ H' A) X! Y- R0 k! {; S' k
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * r" w6 s) K1 O% r) N! I
  58.                 return -1;
    * C2 o; t; E: N: ?! @7 ?8 i7 ?& l
  59.         }
      q, T8 H; C0 X7 v( d8 q4 {
  60.         arg.sub_addr_count      = 2;6 R' b3 O& x7 Z# ?! Z
  61.         arg.data_count          = 0x18;+ P! M" _4 Q$ w+ ]/ w
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % A. }/ R/ h$ T* n  m% P
  63.         arg.e2prom_cmd_data     = buf;
    + y  X* }2 n1 v. t8 s* z9 v% s4 T+ l
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 F4 H& g% N5 @$ f, J  X$ G
  65.         if (ret != 0) {% P# ]( ]2 n3 V2 Z+ N; {% c2 U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; s+ E: |+ \4 ?  g
  67.                 return -1;
    8 x% H8 ~" f) o7 e  i
  68.         }1 C4 P5 I, J; J1 {; u

  69. 4 @) M2 Q0 }* U+ H
  70.         return 0;
    $ \$ Q* l, x+ G
  71. }
    " w3 ]$ P5 g4 ?& o

  72. 8 \$ \0 K0 d9 z4 f0 Y2 p5 _
  73. int main()5 H6 e$ v' H3 c" q
  74. {2 I) q( j; F5 s; x
  75.         char c;
    5 y2 C: i; P$ B4 H7 F7 G' y
  76.         int i, macs[6];/ a2 A5 m' z2 M2 H
  77.         unsigned char mac[6];
    % ]' @& j5 @3 W
  78.         unsigned char stbid[256];: s* C* d2 z! q: V6 I# k% z; {
  79. 0 q* `- N8 R- D; o) r7 F
  80.         if (readparam(mac, stbid) < 0)( h5 @7 h; {  }
  81.                 return 1;
    , s9 f0 J$ d% j$ i/ t* b* J
  82. ' j" l9 a5 f5 Y9 ~& S( [3 n
  83.         printf("Current parameters: \n");! ^! U/ Y, x; E; D$ y& E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + q1 t1 D8 R( v
  85.         printf("  STBID: %s\n", stbid);
    4 `. p; [" l/ D: E
  86.        
    / U& d0 M) N, s+ c8 c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( Q( `- S' ^; S! @0 r- A. X8 v& X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & o! A  @# P9 Y0 l7 |/ T8 j- P
  89.                 printf("Input MAC error\n");5 J0 t; k" ?3 i$ @
  90.                 return 1;5 D* E- S( a3 J* Z9 o
  91.         }# D1 b5 y2 W7 h5 k8 M, p
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 B# Q) c5 ]( A1 u0 `
  93.         printf("\nPlease input new STBID: ");
    # l0 V3 l# b6 d( r4 X
  94.         scanf("%s", stbid);
    : ^" R9 A& }* s( ^' V7 A
  95.         if (strlen(stbid) != 18) {2 N) w* M0 W* ~* j0 {, }6 z
  96.                 printf("Invalid stbid\n");- w: H' u1 n/ X% A  T/ s6 N
  97.                 return 1;( {+ z6 j2 I( \+ a' N
  98.         }
    2 S* H; z( j, ~( c% y& P& N3 t
  99.         printf("\nNew parameters: \n");
    ; O. ~, E' G# @, N" l2 O) X& U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. b4 l, A! z4 }' C
  101.         printf("  STBID: %s\n", stbid);
    9 m& z6 e+ G/ b, k  i

  102. - a# Z6 Y3 g4 y7 r8 g2 N
  103.         printf("\nDo you want to change paramemters? (y/N) ");) g2 h; `& G8 H6 V
  104.         for (;;) {' i. y% |/ D, O" J
  105.                 c = getchar();
    " q1 X5 J( G! ?$ ^, _
  106.                 if (c == 'y' || c == 'Y')$ s) F3 s4 w/ ~/ {6 j2 F
  107.                         break;/ l; N$ P6 E" e4 ^. Q8 ~0 U9 w
  108.                 if (c == 'n' || c == 'N') {1 \/ t9 J- T) ~5 |
  109.                         printf("\nAborted.\n");/ s: K& F0 {; E$ X( b  b1 H
  110.                         return 1;/ |: u. r5 [* e4 D3 c- Z8 }9 J1 s
  111.                 }
    8 c. O# p9 x4 {/ n1 ~
  112.         }
    8 q# [6 E+ q) a# s( S2 S; ~1 i
  113.         if (writeparam(mac, stbid) == 0) + e! ~4 Y9 |5 U' E; m  {: O
  114.                 printf("Parameters changed.\n");
    7 J# \' V+ B/ l0 h4 J+ s: M

  115. ' w# J8 \2 V3 m6 v
  116.         return 0;
    $ S) ^/ v: D7 f& X
  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 4 M" w3 M/ C' j3 b3 ]1 n) {
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  a+ A! J$ e2 P) `/ q2 x
你用的编译命令行格式是什么?- d. B, S! f. j$ D7 z) D  W
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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