找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15426|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 n: i/ p- l4 b8 w7 b6 H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 Y( ?4 ]% k' M" A) F% d, _, Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 W, Y% f. i* a5 M/ p; ?usage: himr <address> <value>. sample: himr 0x80040000 0x02 f8 u6 y6 Q; J0 L1 Q7 u& d
) B! `5 w# o) b* g, K' H6 N
- w' l/ f, x3 M8 x& n
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 A' ^# Y" ~3 x3 d% i/ g: E0 `$ i( T, n
补充内容 (2012-3-8 09:42):
3 [3 W2 I2 E- h2 t$ k8 ]" C. j# uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, s/ F  R7 b# P6 j' X" W( B
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。; Y( X: |% U5 y/ G  w& u6 p" t; M

3 t! F9 ~+ t  d3 h' s9 Q4 i$ _. @himr <address> <value>. sample: himr 0x80040000 0x0
3 u4 |4 d0 x* e! y1 [* B7 t  V: J& N* {7 q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  D7 z! C$ ]8 W5 phimr 0x80040000 0x00
5 _8 R  ^/ |% whimr 0x80040001 0x11  }" O+ j# z: M* _6 t5 t1 N
himr 0x80040002 0x22
- Y7 t( |* t5 l* Q" k- X& o! ]himr 0x80040003 0x33, M7 C$ l* r1 {$ K8 q( a1 D: Y7 ?
himr 0x80040004 0x44& ?9 e/ e8 e- m$ i& B
himr 0x80040005 0x55
2 a  w" }1 q$ c: V1 H% }) v) r
' m6 K) R7 e1 z2 A) K1 SSN也是类似。
- |; o2 u7 q# _0 d, q+ i, P. Z& G
现在主要是,谁告诉我们MAC和SN的地址?4 v7 j. ?+ E2 {- ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 m, j$ `4 C$ P9 E  L) _7 b一直想找到运程修改MAC和SN的办法,苦于无解啊
! n! T: Y6 @, {0 }
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : r- ~& f! P6 b
1 A, p! Z/ S9 H/ R
修改的代码早有了。到今天不会编译。' S3 I, J) X% _/ W
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' F7 `! A; C! L* ?' N: z/ W" ~
  2. #include <malloc.h>. h% `: ?6 @8 Q: s# v
  3. #include <sys/types.h>
    ( j: E6 h. x: {
  4. #include <sys/stat.h>
    " A1 k/ t( s. L- K& A. V
  5. #include <sys/ioctl.h>
    - l$ W" }5 w. f8 d
  6. #include <stdio.h>$ D& w/ C' a0 e* ?/ P0 m+ E
  7. #include <string.h>4 t; A4 f6 t- k/ R0 C

  8. 8 X7 m' T( V8 E. P3 Z, b4 W1 Z
  9. typedef struct {
    9 q+ G& o2 U6 u* O9 N* A) Q
  10.         unsigned int        e2prom_cmd_sub_addr;: ~7 e% H- s1 z
  11.         unsigned int        sub_addr_count;
    5 O9 e5 S* k% v5 i3 h" g
  12.         unsigned char*        e2prom_cmd_data;! Z2 o0 c) `% }& C
  13.         unsigned int        data_count;
      [0 j- S6 m8 j5 P; }
  14. } e2prom_s_cmd;/ c, `( I' I' f) X# _' r

  15. 7 V6 v' j/ v9 y" T3 y
  16. #define E2PROM_CMD_READ 1
    4 z9 G+ m& b8 p
  17. #define E2PROM_CMD_WRITE 2
    + n0 B5 h$ B- C" ~' W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    " X7 p2 h; A% q/ }. r+ ^+ z( X
  19. + |7 I/ k; x  \0 R/ |7 L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , Y9 i% k5 I: B+ Y
  21. {
    ) S- v) G" ]  d2 q% M4 K
  22.         int fd, ret;
    , w# X# b# y, w) g
  23.         e2prom_s_cmd arg;5 ]; u% [. L' b1 {2 K/ U
  24.         unsigned char buf[0x18];8 L+ u2 }# c5 ^, }0 f
  25. 8 E/ o0 ^! h) P# \) u; f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 d' P+ S; ~  l8 j1 l" x* Q
  27.         if (fd  < 0) {
    1 B" L% b. Y1 j  _% Z" e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% K- h! \# K: P: B
  29.                 return -1;0 }% S+ p! w" h" w
  30.         }0 j8 e8 F9 r1 e4 O3 \
  31.         arg.sub_addr_count      = 2;
    : d3 \" o5 Y# ]. F- p
  32.         arg.data_count          = 0x18;: @! D% q( R: u  f( ?% j1 b
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " B9 w  J; ^% O: \, F
  34.         arg.e2prom_cmd_data     = buf;8 _0 E* `) F& Q0 _9 V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' N5 k6 R9 Y6 R
  36.         if (ret != 0) {! R2 F9 [( _5 o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ J/ G! Q; ?+ B1 V
  38.                 return -1;. F  c; P, J3 Y& _7 d' D% Z- G5 S
  39.         }
    . `  J" Q: @0 @& T. o
  40.         memcpy(mac, buf, 6);$ z% p' h0 Q2 H7 ~' d
  41.         memcpy(stbid, &buf[6], 18);% a5 @2 g  z  a( {9 C: p- P
  42.         stbid[18] = '\0';
    + u0 K1 `6 ?5 I- {- j4 G

  43. 3 V- `5 a4 ]! X8 V$ ^4 y+ {
  44.         return 0;
    0 L' m# l& W, p$ Q; |' G2 Q. |0 D
  45. }# Q: u2 d( O3 k, \6 C

  46. ! U$ f9 y8 `; }; J5 ~- [: ]" i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  Z/ d% g  f7 N7 ~2 u( Q3 G: K
  48. {+ m/ A9 a/ ]) q
  49.         int fd, ret;
    0 X! G$ L6 W: E/ c* B
  50.         e2prom_s_cmd arg;6 |2 P% f+ y  k; x1 x
  51.         unsigned char buf[0x18];
    1 j" d% A0 \9 l$ a4 G/ W
  52. ) d& \% M- |! N
  53.         memcpy(buf, mac, 6);9 o; c) u% x; S/ ~* P
  54.         memcpy(&buf[6], stbid, 18);# q! A7 p( g0 X3 _, {7 G
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : U0 Y! E6 L' B7 [/ _; U: ?9 z
  56.         if (fd  < 0) {
    3 d: `; g' t0 a7 I
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& V1 s( H& x6 g8 h
  58.                 return -1;8 ^3 B7 h0 W6 T
  59.         }
      y$ y$ r. P; z8 y. o
  60.         arg.sub_addr_count      = 2;5 ]* {  |4 s" z  t
  61.         arg.data_count          = 0x18;
    4 J" w" v) e7 g2 T3 I- G; L. T( N# K
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( e) i" F9 j+ k; U8 q' I: ~7 A7 v
  63.         arg.e2prom_cmd_data     = buf;
    3 z5 h! |/ E( o; [- g8 m: J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + w/ K/ I8 c* \! w% s3 u& d
  65.         if (ret != 0) {+ T/ y. d$ z( k$ ?7 T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 {$ V. C3 N" z. n
  67.                 return -1;7 v- H: l3 n0 l% o% D9 H
  68.         }: O, q) J* K) X: v5 Q
  69. ) G" R( Z* o& s% Z
  70.         return 0;) q0 T/ B1 @4 Y" i  p# e* ^7 X6 D
  71. }
    7 A( t, \3 W% \' L  z' G; k

  72. 1 r1 j# O" O* L4 u* o* q; o
  73. int main()
    $ Z: ]3 a5 Q5 R# X  |
  74. {1 S; c8 _) |8 j; I
  75.         char c;
    ; [. n; [- q' a) o5 U
  76.         int i, macs[6];
    7 `& T( n3 ?2 Z
  77.         unsigned char mac[6];' |9 a, w# k  b/ H& ~1 p
  78.         unsigned char stbid[256];2 W! ~% D- ~# w7 I4 h. ~# S& ?

  79. 4 h# r& k& ^! _+ F
  80.         if (readparam(mac, stbid) < 0)' j. @2 A  d% }+ w6 y3 ~1 ^' S9 @( `
  81.                 return 1;0 j0 I+ B6 b1 k0 o1 L- @6 j
  82. 1 [( g: `4 _4 \  M3 ?  v
  83.         printf("Current parameters: \n");
    + B. x+ @" S# {7 u! M% ]1 l: L+ I
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# F, Y+ {' b' ?& ^$ a8 |( d
  85.         printf("  STBID: %s\n", stbid);
    7 a, i: s' Y1 @3 B3 c
  86.         . a) x* `2 \) Q: r8 ^0 b3 k# _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . s5 X7 K5 C; ]0 l5 n: _- a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( u! [* r) s3 Q  t8 o7 A
  89.                 printf("Input MAC error\n");- b9 a) x/ e' o1 Q, Q. K0 n
  90.                 return 1;7 p" v/ T' D8 D+ y6 [
  91.         }6 c, X7 f5 W7 r- y( Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ n0 U0 p# n3 f2 F. \
  93.         printf("\nPlease input new STBID: ");
    2 w2 S/ K5 N( p7 @& C* Q
  94.         scanf("%s", stbid);
    ( g) C* G9 [- @0 F
  95.         if (strlen(stbid) != 18) {
    : c1 P9 d* a4 }. @. I. L+ l, V/ m: u
  96.                 printf("Invalid stbid\n");$ n8 x- z% B  q0 G
  97.                 return 1;4 U: U- p" h/ y1 P$ O
  98.         }, a, c$ _* B: l
  99.         printf("\nNew parameters: \n");+ ^4 I! l, G+ w2 E, ~- [2 j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% f6 K- d% R' \& Y9 t) ]
  101.         printf("  STBID: %s\n", stbid);
    ) Q, |0 M7 B. J* b1 V2 ?+ \+ l

  102. + d/ }1 o* D$ N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / n3 y' |; @, J2 r
  104.         for (;;) {
    8 q6 n/ |4 E% p$ C
  105.                 c = getchar();
    / d6 c8 F' T% D  r% K
  106.                 if (c == 'y' || c == 'Y')
    5 D1 A; W! j6 {- Y3 n) K
  107.                         break;
    7 i; @* h6 Q2 j4 {1 O$ u
  108.                 if (c == 'n' || c == 'N') {
      ^, O+ ^  x1 o7 i# u9 E
  109.                         printf("\nAborted.\n");' m. t$ e7 H" H5 V9 d, j
  110.                         return 1;# l# o; @3 u* h+ z, s" G1 f( Z% L
  111.                 }3 [# w1 m7 E) e4 z& h6 y: |
  112.         }- J5 S) W: ~! j7 S; \1 j8 _
  113.         if (writeparam(mac, stbid) == 0)
    5 R0 I1 |; `/ u5 z0 W% l) q0 H: a
  114.                 printf("Parameters changed.\n");
    ! B, O0 _- {( a; `8 S; t

  115. , O0 B. t7 G7 z. C' O
  116.         return 0;
    7 C4 l% T+ N, y' x6 j; g1 @' 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
. q3 Y6 m4 v- W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- ]% |- Y- |$ D4 e# M$ S你用的编译命令行格式是什么?! Y6 n2 v: `+ b; d' n) s
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-4 06:08 , Processed in 0.024340 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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