查看: 15916|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* V$ K* T) Q% E' o- q& |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 F! M$ v8 C  h: u% _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; N" z4 c& k/ P. w0 P+ f
usage: himr <address> <value>. sample: himr 0x80040000 0x0% I& `1 B* H' \6 G
* H. R! F! P) S+ X% i, t* l
5 G/ w2 J* ]1 k  }* s) b3 z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 l7 ~# O: j  {4 j" [
: c+ c. r5 e+ j, m' X: R
补充内容 (2012-3-8 09:42):
' w( W' X9 h; j2 hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' P5 q0 k: G8 [3 Y5 J. U* l  e, c- g9 b
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! F6 J# ]- `- P( v# a+ a- |
+ x( s3 K3 l" E6 ?" q: ~" f. x
himr <address> <value>. sample: himr 0x80040000 0x0( a: o3 }- E' m( E3 C/ B# _! a
7 L6 z  ^7 `1 ^" r" w+ x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) e1 V0 C; w4 K  t' H& l4 ]# u+ f/ {himr 0x80040000 0x00. ^! I; K0 T  v) e. }4 u
himr 0x80040001 0x116 B9 E( r* h/ P- t
himr 0x80040002 0x224 r, j% u* w/ E& C1 d4 m5 [; ]9 M! _
himr 0x80040003 0x33
+ U( @' j' j7 {# @6 v+ Y7 z  {himr 0x80040004 0x44
; x" |' e) G8 G2 h* W) A. q, s  Phimr 0x80040005 0x55" L/ a9 J3 c2 |
& I& T( ?; t0 ?! P& D8 J5 b
SN也是类似。% E# F0 j0 R( N+ Q( h& ~. n" ^

/ J# D- Y" t" c" i' ~0 }( I; d+ q现在主要是,谁告诉我们MAC和SN的地址?! T4 y: ~! Y. n$ R  C7 a
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' N2 O9 r. K* _" R0 g: {6 B
一直想找到运程修改MAC和SN的办法,苦于无解啊

, L+ t1 B) B4 Q5 ]( |% ]% K8 [: a源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- c& g( q4 }9 H. e9 A
* U+ E4 U: L3 n% S2 }: A- U修改的代码早有了。到今天不会编译。- _, q% R" Q9 F1 Y  s' Y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 |, F0 Q- z: s5 a7 i7 U9 ~; d, A* @- C
  2. #include <malloc.h>
    - x" {! _: g! Z! O- V' m$ m
  3. #include <sys/types.h>% D. Y( }7 h# U* ^2 V- W$ c; @0 i
  4. #include <sys/stat.h>
    $ ~0 n4 z2 D0 `+ E2 h# |4 ]
  5. #include <sys/ioctl.h>
    0 A# R3 R8 P" z& Q8 T
  6. #include <stdio.h>
    * e* L* C/ m) I
  7. #include <string.h>
    ! b( j) ^! g* O6 @8 h6 V
  8. 0 g1 Q" U8 x( ~- _, A5 [' r
  9. typedef struct {
    - O/ c2 x# K& n& c
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 R. K% J- u* y# N, @6 p
  11.         unsigned int        sub_addr_count;* o3 V8 t' H* p9 x
  12.         unsigned char*        e2prom_cmd_data;& y$ b: i% o: Z0 ?, g# g" l
  13.         unsigned int        data_count;
    . ?4 A8 Z/ ?1 R9 _; o
  14. } e2prom_s_cmd;6 l, z5 p5 N, q# W: `$ H
  15. 5 y( T! B* N6 u. p$ U7 _
  16. #define E2PROM_CMD_READ 1! J+ M8 w0 l' ~' G
  17. #define E2PROM_CMD_WRITE 2
    ; k7 Z3 Z# ?5 C" p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % {9 ]7 I& B5 L5 a
  19. # ^% {  S; c& G  {* p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ Y7 Y' b' `, C6 [
  21. {
      M* \) @. V+ q1 E: W
  22.         int fd, ret;
    8 \" G  z2 \1 x4 y
  23.         e2prom_s_cmd arg;
    5 o  l6 _4 J3 N  n4 r& z1 j
  24.         unsigned char buf[0x18];4 `2 c# G1 G/ K+ i

  25. ' p3 J0 v) w/ I; o, v% f- O$ r+ S
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - M( R+ _- }; w+ a5 V
  27.         if (fd  < 0) {. O$ k9 C2 [' A. \& c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ Y0 I- [( n; q5 ~$ f
  29.                 return -1;7 a1 l' |1 q5 h$ f
  30.         }) c7 n! p7 p  b! {( x& T# [: O+ S
  31.         arg.sub_addr_count      = 2;  l4 Q+ g% T! O% I( {# H2 ~
  32.         arg.data_count          = 0x18;
    , ?/ n! }+ q8 H7 ~7 W, }
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & ]+ [5 o5 L8 C/ _
  34.         arg.e2prom_cmd_data     = buf;, Y) q9 u. o* H; J+ d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 q7 S* k! v0 t. q$ B
  36.         if (ret != 0) {
    & d. ~" z4 E& e6 d# \1 |& F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 ^7 N8 c( o3 A' p
  38.                 return -1;
    / ]! C- s/ S/ }# c5 t- k
  39.         }. b  T5 X* f- \, T
  40.         memcpy(mac, buf, 6);
    3 p* n; w1 o) T. ^) g
  41.         memcpy(stbid, &buf[6], 18);
    $ e1 x  ~' ^& h
  42.         stbid[18] = '\0';; }2 M* B7 y( h8 a0 E* D; O

  43. : i& E$ g: j& \% @8 @$ t. d% O; d
  44.         return 0;; c) e7 ~7 ]2 c* K3 X
  45. }! {1 \% J" C# Y0 K4 ?( D. ]/ e

  46. 3 b) Z- j4 j* K# S3 j6 ]  d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" B0 W: \: m- l% z0 S# l
  48. {
    & d7 @8 ~5 k& B
  49.         int fd, ret;& J& }3 [1 x3 Q
  50.         e2prom_s_cmd arg;) h! _* _( J0 L8 {5 r
  51.         unsigned char buf[0x18];
    7 \& v. p0 V& p  K6 F
  52. 5 e& `8 Q2 H; ]7 v  ^3 G# C4 a
  53.         memcpy(buf, mac, 6);( _4 J; A* s1 ^+ k: _4 c5 c
  54.         memcpy(&buf[6], stbid, 18);
    # j" b( w3 ^4 ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 h  p/ }3 d+ M  q4 c  t# L6 n/ A& v
  56.         if (fd  < 0) {
      f" L9 o0 H8 W2 n' ?  P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! Y8 a% c( W- }  \# O. w
  58.                 return -1;
      L4 C  ~5 m7 L- i: k* `4 t
  59.         }
      b# S1 u5 B8 c, G/ b7 c5 i
  60.         arg.sub_addr_count      = 2;7 r$ ^% m2 Q  Q- y+ B& l; M% s0 @
  61.         arg.data_count          = 0x18;
    5 U. f! y8 n" O2 _- I3 U. [; E* u
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & L) p/ g5 Y5 V: _! ]/ ?( j6 F
  63.         arg.e2prom_cmd_data     = buf;- m$ z% A. F- z( R& w: f1 o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . s  ]$ S, c! |- i& q& E
  65.         if (ret != 0) {
    6 p' [" \5 \  C* S9 O* C" W. M0 t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- J9 n6 y+ g) V- \) I( l
  67.                 return -1;9 H2 o: b) o; O8 n7 h9 m
  68.         }
    5 [5 j# e8 p; d* D' n

  69. 4 A" \8 r8 s! o- G
  70.         return 0;
    4 G; d5 \% ?7 g3 N
  71. }
    ; m- Z$ N+ X% e* X- _

  72. 3 _( x$ x0 d! ^: Q& ]; p- d
  73. int main(). R5 S# k( D+ [( y8 E
  74. {% }# S! S+ k8 T5 T4 o+ W
  75.         char c;
    ! Z8 G1 E; m$ i: `0 h9 F
  76.         int i, macs[6];
    " @6 v5 T% W9 F8 B) m8 L* l; s
  77.         unsigned char mac[6];* {/ r* f$ b0 b' Y
  78.         unsigned char stbid[256];2 ^  `; y* l- G  h" W" \
  79. & e+ J  K( _0 D+ W( Z6 A$ @
  80.         if (readparam(mac, stbid) < 0)" X! Z* A: Q, K  [7 G0 k
  81.                 return 1;* e- I! D$ m9 t

  82. : n/ n$ Y5 y( d  @; |
  83.         printf("Current parameters: \n");8 }1 h" E  Q8 @1 h8 z' p- @
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 K7 @% k! a! y+ H
  85.         printf("  STBID: %s\n", stbid);
    * M  T6 s; B  t" {4 K, r& o$ W
  86.         ( P* s8 r) i  V8 \8 K5 v
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" s2 k0 W; C6 Z# D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 J1 k$ L/ F: A1 R7 h
  89.                 printf("Input MAC error\n");/ r. [+ E' ^! W: N. D) E
  90.                 return 1;% k% R. V1 t" P" p
  91.         }: {4 |6 {& O! s2 |9 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: X( h- C, c$ ?& N# n
  93.         printf("\nPlease input new STBID: ");
    2 O4 m( z. l/ r9 G) M' V
  94.         scanf("%s", stbid);
    ! c+ f) y8 V- y1 q
  95.         if (strlen(stbid) != 18) {
    ) N$ l( p- k$ {  F  H; b: t
  96.                 printf("Invalid stbid\n");
      t+ b# G0 T+ Z! V8 {
  97.                 return 1;
    # X; Z, a; i1 A
  98.         }
    $ H1 M+ g8 `9 x, f5 S
  99.         printf("\nNew parameters: \n");
    6 y  w6 O. H, |& ~* g( A6 K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " }. Z+ U, o! }* U1 @
  101.         printf("  STBID: %s\n", stbid);
      i/ v6 c/ A4 N3 r  e( k5 E. U

  102. 9 ?& N1 ]' T  O
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # a: z8 J* P9 u
  104.         for (;;) {( f: T9 @5 z" y8 f$ t# J0 \* F1 y
  105.                 c = getchar();
    + R- p  q6 ?# q% ]3 k
  106.                 if (c == 'y' || c == 'Y')$ Z  p7 x8 P/ v; o( E9 E
  107.                         break;8 S  l( z' ]7 l* J/ m
  108.                 if (c == 'n' || c == 'N') {
    $ h6 i' A! K9 i4 [
  109.                         printf("\nAborted.\n");
    + ^/ y. y- B9 _( f! Z1 Z
  110.                         return 1;# {$ l, C+ m" L' ]
  111.                 }
    + d$ {8 C# u; C* q1 @
  112.         }+ H, z7 {5 w; _8 ^. |! E& x
  113.         if (writeparam(mac, stbid) == 0)
    ' N% C7 o- _' ^+ \
  114.                 printf("Parameters changed.\n");! r) ]5 w8 ]; S5 v

  115. ' A4 z4 i. l& L
  116.         return 0;- m; ]. d5 r" B7 q& g* K
  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
% R+ c: u/ d# v/ m: f/ u在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

' ]% |: ?7 D) j. o$ q你用的编译命令行格式是什么?
0 m8 ]4 @- b8 Y! x
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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