找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15753|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 h/ J% [1 Q. @( s! e# v) f6 n: e
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' c1 D- C0 C: D) z2 |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, c0 n0 f; F1 N+ v2 Y0 D8 tusage: himr <address> <value>. sample: himr 0x80040000 0x08 v( [, s, X0 v5 w+ r9 `! J
) j! {: V2 b) u+ I
5 s( ^; r$ q. J. L6 j2 R4 Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: z: P; j5 T9 ]4 W7 d% ?( P1 _" M* U: |1 \, m# ~7 m& \
补充内容 (2012-3-8 09:42):
9 Q. p" E4 c+ M- E+ |! s+ Zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 Y2 j7 K% Z* o% Q
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& @# l' Y4 A4 [3 `7 l+ S  Z6 b6 }, o

1 E4 r1 M( U# [  o; \himr <address> <value>. sample: himr 0x80040000 0x0
; V' z+ M# z  N2 H" c$ A5 N' h7 ^+ y3 L' w; \
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- }4 {) g' l  I5 T
himr 0x80040000 0x008 x7 {' n6 M: @; [' Z5 [8 H7 k6 k
himr 0x80040001 0x11
2 }4 f+ `  {$ I6 \himr 0x80040002 0x22
. D8 ^0 m9 l5 T' c6 bhimr 0x80040003 0x33, ~# e8 t$ S4 Z+ E- |4 r( E
himr 0x80040004 0x44
: r/ T! R7 T; E' Chimr 0x80040005 0x55
1 k) P! F) [+ o# ~8 \% g$ ^8 ?( |
" z# r" r+ i* ?) t+ @1 ~SN也是类似。: X; V  ~0 y$ S; T

; c% n; S3 ~  d2 q9 E  n现在主要是,谁告诉我们MAC和SN的地址?
2 H1 u0 b" m6 t9 R% S
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 r8 _. Y; A! D9 G
一直想找到运程修改MAC和SN的办法,苦于无解啊

4 U1 o8 @" }1 a. A源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - @! F/ k5 I7 u7 E8 g% O9 |; n; V

8 J. M2 G* u! L7 }修改的代码早有了。到今天不会编译。
0 G$ C2 N( a5 S& Z5 l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 j* K; n4 K$ p' D/ @
  2. #include <malloc.h>+ i1 I( A3 Z# }) {* A5 B
  3. #include <sys/types.h>
    7 N# w4 n7 X4 W! I
  4. #include <sys/stat.h>
    9 U, q: Q  T$ a4 G6 a' P0 d
  5. #include <sys/ioctl.h>
    . |, _* k5 n8 D7 n4 A* G  L
  6. #include <stdio.h>
    # Q  z8 [- b5 A& O$ n
  7. #include <string.h>
    # A: @4 A# x" M( P  r
  8. 3 l$ v. z  y8 ^8 `- c) l
  9. typedef struct {9 n9 X+ f. w* c8 \$ H% q  j
  10.         unsigned int        e2prom_cmd_sub_addr;& Y8 f7 t" r3 Q$ D1 X. |8 [+ \
  11.         unsigned int        sub_addr_count;
      h- v/ }7 h+ O
  12.         unsigned char*        e2prom_cmd_data;, T0 H8 B, Z8 o
  13.         unsigned int        data_count;' G! E6 `% f4 \5 d& q# L0 o
  14. } e2prom_s_cmd;1 @+ s8 B9 U+ `. O" F) r0 r

  15. 3 H/ a/ Z1 ]- p
  16. #define E2PROM_CMD_READ 1
    ( T& W0 G  Q# l7 `( b1 l9 x
  17. #define E2PROM_CMD_WRITE 2
    9 t4 t5 q. h' |$ e! T5 t  D
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; h  L/ A5 y; N
  19. 3 @, \: Z4 u; J, {- L* l4 U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 o/ T' R& z2 M( r$ w6 C
  21. {
    & \  J7 p- I  M
  22.         int fd, ret;) B& _2 B! [& J$ |" g
  23.         e2prom_s_cmd arg;
    ' |$ Q2 i2 R& a2 z; `
  24.         unsigned char buf[0x18];# q/ c+ [/ w; F5 e/ \% m4 g
  25. 7 [: |6 ]) o: z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 u/ F! q, T+ X; i
  27.         if (fd  < 0) {
    + z8 `" R8 N2 H- A: S( `* g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # }$ H% \6 P  R, j' a
  29.                 return -1;
    - A% u. K9 C. V8 x# p  @. w
  30.         }
    * t0 E/ l* M; P- M
  31.         arg.sub_addr_count      = 2;
    ( r. }  p& B0 j: i, F
  32.         arg.data_count          = 0x18;& h" P1 e! {% q$ d! E8 [
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( s/ f9 d, _1 L, U) f; f
  34.         arg.e2prom_cmd_data     = buf;( k- X4 N: }7 P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% X3 U) k0 O) R1 {
  36.         if (ret != 0) {) F4 d% d: |! l+ F# s' t; f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" k* m2 p" i: j+ T7 ?
  38.                 return -1;- P3 z$ g3 L/ u
  39.         }4 u4 m' k; i4 u- i4 e/ ?4 f( T6 F
  40.         memcpy(mac, buf, 6);1 |3 i9 K  R: [, V. s/ ~
  41.         memcpy(stbid, &buf[6], 18);' Q: |  _% ^) ?7 ]4 k1 u9 z
  42.         stbid[18] = '\0';. q1 m. G3 ^! x5 z0 \

  43. ) J2 K0 ^; T! u- [3 }2 x
  44.         return 0;6 o" t" J9 G( ]1 u2 D8 a/ P% o5 U
  45. }' U* T+ {2 ]0 Z; b

  46. , `7 g  X" C+ v1 F, ?9 z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 o" \; X& c6 q+ W- E+ p5 h
  48. {9 Z# T$ S' m- v! B1 C+ t
  49.         int fd, ret;8 e0 h3 m, x4 h8 R
  50.         e2prom_s_cmd arg;
    / W$ q8 J  a3 C
  51.         unsigned char buf[0x18];
    : p+ O# R4 y0 e% j. `0 [: ]3 a
  52. ) [; k& ]/ t8 v
  53.         memcpy(buf, mac, 6);
    2 t+ v0 h: Y+ b/ F) z) l
  54.         memcpy(&buf[6], stbid, 18);; i" F$ H0 H( |+ o. r3 F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);/ k' i3 r% U  Q5 s! w& k, \' j
  56.         if (fd  < 0) {
    9 Y% a- j3 Z8 t% }. g# P5 q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 ]. f$ s! L0 Y* d5 O* m6 U
  58.                 return -1;
    - D1 Q! u) P8 I- t
  59.         }9 p- E# Y' r2 Q& b: l$ N
  60.         arg.sub_addr_count      = 2;
    + y" D. y% q& E2 M. j. N
  61.         arg.data_count          = 0x18;
    $ k3 E2 v  o% T* r0 R
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 X) C; |* J2 @
  63.         arg.e2prom_cmd_data     = buf;3 s( E1 y) r2 M; {; l% Q2 y% o/ M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " z' w* v- h6 M  ^5 A6 n( l) [$ ^
  65.         if (ret != 0) {
    2 U4 s  _; Q: b# C
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 j) O, s2 W) F% K
  67.                 return -1;
    6 L3 e7 d: N! y6 r. d8 ]1 I* y8 Z
  68.         }( _7 E# H; ]& W( f9 F1 f

  69. / ^4 b/ z% a9 S/ _# D& H1 U$ [
  70.         return 0;
    & q" v* r  d) b: l* s* x' Z
  71. }
    2 L3 a) Q0 P( n$ C& d0 ], e' P
  72. ; _2 i: P1 W* ]' ?- E9 ^' @( b" `4 Z
  73. int main()0 [- i, U" R; D7 O$ Y9 \" P
  74. {5 [8 T9 v, _7 F4 B" w, Y: L% }1 a
  75.         char c;
    & b% ~- C% w: W  ~+ g5 H* {( `2 n
  76.         int i, macs[6];
    1 n$ j2 C% N+ ?( M0 P
  77.         unsigned char mac[6];
    ! C' ~. j1 v* U0 _  X+ q' W
  78.         unsigned char stbid[256];
    6 H+ O; }. m. S6 Y/ @

  79. & X6 ]$ |% t7 d0 Q! h1 x
  80.         if (readparam(mac, stbid) < 0)
    / k7 P$ u0 t2 `% t0 f
  81.                 return 1;
    * n7 O! P. L- E9 q: {/ Q  c

  82. 7 k7 G, y+ z5 e9 J6 k+ l
  83.         printf("Current parameters: \n");$ y+ H; x$ y8 a5 w" W5 M
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      Z$ g6 n9 y1 a
  85.         printf("  STBID: %s\n", stbid);
    . h) |% p- V) `+ {# \6 O: K
  86.         5 i% O  t+ V" U: @/ n% n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% W' d) B' Y0 I) F
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ V) d$ ?' O7 f& x' b5 b
  89.                 printf("Input MAC error\n");( n: b/ u% r" q% @9 n
  90.                 return 1;, ~6 i8 D0 a& ~; f
  91.         }
    2 [! Z% |, ]; w2 _% v9 K* n& e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 [* K. z& ~; ^! ~7 u6 o* E+ R
  93.         printf("\nPlease input new STBID: ");
    , g, p* x1 }  Y
  94.         scanf("%s", stbid);! O4 r( b, c  o# F/ l8 b
  95.         if (strlen(stbid) != 18) {
    5 |1 Y0 Q0 Z- w
  96.                 printf("Invalid stbid\n");
    - ]6 Q: H4 H; |6 M  t7 J* v
  97.                 return 1;2 l2 a+ f/ r3 R9 I
  98.         }8 a5 t7 k( ^: l# r  p
  99.         printf("\nNew parameters: \n");
    ! Z; O% A% ]& S0 d1 A! {4 W) s
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 o" V0 K. [2 Y7 {' G# u5 H
  101.         printf("  STBID: %s\n", stbid);- ]3 S, K% F& w- b  q

  102. . m3 e% o$ R9 _! z
  103.         printf("\nDo you want to change paramemters? (y/N) ");( e, L( u2 V2 y( m1 ^9 f
  104.         for (;;) {0 ~1 _2 ?- G5 d+ V" E( v
  105.                 c = getchar();
      k. V6 j* x, P( t
  106.                 if (c == 'y' || c == 'Y'); E. r5 w, Y! M# Y0 s
  107.                         break;
    , o+ o- {0 O5 Z
  108.                 if (c == 'n' || c == 'N') {' T8 e, i& o$ P- @) x6 E
  109.                         printf("\nAborted.\n");
    ' e, k" V% B: ^. D5 a
  110.                         return 1;4 ]2 s3 v7 D$ L
  111.                 }7 R5 k, v1 T. |4 `1 D' X
  112.         }
    $ `; _1 ~7 |6 g) D5 x, e4 i. N1 ~  p
  113.         if (writeparam(mac, stbid) == 0) 8 F' q# I5 c' @6 V. o3 m5 m; f7 M3 a
  114.                 printf("Parameters changed.\n");( e6 X* {/ @9 z  R# ^7 S8 C

  115. 0 F& k* M- g0 d/ r4 U$ ~; z
  116.         return 0;& u% j' T; `2 i
  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
" w) B# X; H# M7 E3 ^+ E在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 \5 F& |& m- I* j8 \
你用的编译命令行格式是什么?
6 X1 @& d0 }9 c! |8 o& b
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-13 11:06 , Processed in 0.036148 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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